示例#1
0
static gchar *
log_manager_get_dir (EmpathyLogManager *manager,
		     McAccount         *account,
		     const gchar       *chat_id,
		     gboolean           chatroom)
{
	const gchar *account_id;
	gchar       *basedir;

	account_id = mc_account_get_unique_name (account);

	if (chatroom) {
		basedir = g_build_path (G_DIR_SEPARATOR_S,
					log_manager_get_basedir (manager),
					account_id,
					LOG_DIR_CHATROOMS,
					chat_id,
					NULL);
	} else {
		basedir = g_build_path (G_DIR_SEPARATOR_S,
					log_manager_get_basedir (manager),
					account_id,
					chat_id,
					NULL);
	}

	return basedir;
}
示例#2
0
EmpathyAccount *
get_test_account (void)
{
  McProfile *profile;
  EmpathyAccountManager *account_manager;
  EmpathyAccount *account;
  GList *accounts;

  account_manager = empathy_account_manager_dup_singleton ();
  profile = mc_profile_lookup ("test");
  accounts = mc_accounts_list_by_profile (profile);
  if (g_list_length (accounts) == 0)
    {
      /* need to create a test account */
      account = empathy_account_manager_create_by_profile (account_manager,
          profile);
    }
  else
    {
      /* reuse an existing test account */
      McAccount *mc_account;
      mc_account = accounts->data;
      account = empathy_account_manager_lookup (account_manager,
        mc_account_get_unique_name (mc_account));
    }
  g_object_unref (account_manager);

  g_object_unref (profile);

  return account;
}
static void
contact_list_view_drag_data_get (GtkWidget        *widget,
				 GdkDragContext   *context,
				 GtkSelectionData *selection,
				 guint             info,
				 guint             time)
{
	EmpathyContactListViewPriv *priv;
	GtkTreePath                *src_path;
	GtkTreeIter                 iter;
	GtkTreeModel               *model;
	EmpathyContact             *contact;
	McAccount                  *account;
	const gchar                *contact_id;
	const gchar                *account_id;
	gchar                      *str;

	priv = GET_PRIV (widget);

	model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
	if (!priv->drag_row) {
		return;
	}

	src_path = gtk_tree_row_reference_get_path (priv->drag_row);
	if (!src_path) {
		return;
	}

	if (!gtk_tree_model_get_iter (model, &iter, src_path)) {
		gtk_tree_path_free (src_path);
		return;
	}

	gtk_tree_path_free (src_path);

	contact = empathy_contact_list_view_get_selected (EMPATHY_CONTACT_LIST_VIEW (widget));
	if (!contact) {
		return;
	}

	account = empathy_contact_get_account (contact);
	account_id = mc_account_get_unique_name (account);
	contact_id = empathy_contact_get_id (contact);
	g_object_unref (contact);
	str = g_strconcat (account_id, "/", contact_id, NULL);

	switch (info) {
	case DND_DRAG_TYPE_CONTACT_ID:
		gtk_selection_data_set (selection, drag_atoms_source[info], 8,
					(guchar*)str, strlen (str) + 1);
		break;
	}

	g_free (str);
}
示例#4
0
GList *
empathy_log_manager_get_chats (EmpathyLogManager *manager,
			       McAccount         *account)
{
	const gchar *basedir;
	gchar       *dir;

	basedir = log_manager_get_basedir (manager);
	dir = g_build_filename (basedir,
				mc_account_get_unique_name (account),
				NULL);

	return log_manager_get_chats (manager, dir, FALSE);
}
static void
empathy_account_manager_init (EmpathyAccountManager *manager)
{
  EmpathyAccountManagerPriv *priv;
  GList *mc_accounts, *l;
  AccountData *data;

  priv = G_TYPE_INSTANCE_GET_PRIVATE (manager,
				      EMPATHY_TYPE_ACCOUNT_MANAGER, EmpathyAccountManagerPriv);
  manager->priv = priv;
  priv->monitor = mc_account_monitor_new ();
  priv->mc = empathy_mission_control_new ();
  priv->connected = priv->connecting = 0;
  priv->dispose_run = FALSE;

  priv->accounts = g_hash_table_new_full (empathy_account_hash,
                                          empathy_account_equal,
                                          g_object_unref, 
                                          (GDestroyNotify) account_data_free);

  mc_accounts = mc_accounts_list ();

  for (l = mc_accounts; l; l = l->next)
    {
      data = account_data_new_default (priv->mc, l->data);

      account_created_cb (priv->monitor, (char *) mc_account_get_unique_name (l->data), manager);
    }

  g_signal_connect (priv->monitor, "account-created",
                    G_CALLBACK (account_created_cb), manager);
  g_signal_connect (priv->monitor, "account-deleted",
                    G_CALLBACK (account_deleted_cb), manager);
  g_signal_connect (priv->monitor, "account-disabled",
                    G_CALLBACK (account_disabled_cb), manager);
  g_signal_connect (priv->monitor, "account-enabled",
                    G_CALLBACK (account_enabled_cb), manager);
  g_signal_connect (priv->monitor, "account-changed",
                    G_CALLBACK (account_changed_cb), manager);

  dbus_g_proxy_connect_signal (DBUS_G_PROXY (priv->mc), "AccountStatusChanged",
                               G_CALLBACK (account_status_changed_cb),
                               manager, NULL);

  mc_accounts_list_free (mc_accounts);
}