EmpathyChat *
empathy_chat_window_find_chat (McAccount   *account,
			       const gchar *id)
{
	GList *l;

	g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
	g_return_val_if_fail (!G_STR_EMPTY (id), NULL);

	for (l = chat_windows; l; l = l->next) {
		EmpathyChatWindowPriv *priv;
		EmpathyChatWindow     *window;
		GList                *ll;

		window = l->data;
		priv = GET_PRIV (window);

		for (ll = priv->chats; ll; ll = ll->next) {
			EmpathyChat *chat;

			chat = ll->data;

			if (empathy_account_equal (account, empathy_chat_get_account (chat)) &&
			    !tp_strdiff (id, empathy_chat_get_id (chat))) {
				return chat;
			}
		}
	}

	return NULL;
}
Exemple #2
0
GList *
empathy_log_manager_get_last_messages (EmpathyLogManager *manager,
				       McAccount         *account,
				       const gchar       *chat_id,
				       gboolean           chatroom)
{
	GList *messages = NULL;
	GList *dates;
	GList *l;

	g_return_val_if_fail (EMPATHY_IS_LOG_MANAGER (manager), NULL);
	g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
	g_return_val_if_fail (chat_id != NULL, NULL);

	dates = empathy_log_manager_get_dates (manager, account, chat_id, chatroom);

	l = g_list_last (dates);
	if (l) {
		messages = empathy_log_manager_get_messages_for_date (manager,
								      account,
								      chat_id,
								      chatroom,
								      l->data);
	}

	g_list_foreach (dates, (GFunc) g_free, NULL);
	g_list_free (dates);

	return messages;
}
GtkWidget *
empathy_account_widget_generic_new (McAccount *account)
{
	GladeXML  *glade;
	GtkWidget *widget;
	GtkWidget *table_common_settings;
	GtkWidget *table_advanced_settings;
	gchar     *filename;

	g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);

	filename = empathy_file_lookup ("empathy-account-widget-generic.glade",
					"libempathy-gtk");
	glade = empathy_glade_get_file (filename,
					"vbox_generic_settings",
					NULL,
					"vbox_generic_settings", &widget,
					"table_common_settings", &table_common_settings,
					"table_advanced_settings", &table_advanced_settings,
					NULL);
	g_free (filename);

	accounts_widget_generic_setup (account, table_common_settings, table_advanced_settings);

	g_object_unref (glade);

	gtk_widget_show_all (widget);

	return widget;
}
Exemple #4
0
EmpathyChatroom *
empathy_chatroom_new (McAccount *account)
{
	g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);

	return g_object_new (EMPATHY_TYPE_CHATROOM,
			     "account", account,
			     NULL);
}
Exemple #5
0
GList *
empathy_log_manager_get_dates (EmpathyLogManager *manager,
			       McAccount         *account,
			       const gchar       *chat_id,
			       gboolean           chatroom)
{
	GList       *dates = NULL;
	gchar       *date;
	gchar       *directory;
	GDir        *dir;
	const gchar *filename;
	const gchar *p;

	g_return_val_if_fail (EMPATHY_IS_LOG_MANAGER (manager), NULL);
	g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
	g_return_val_if_fail (chat_id != NULL, NULL);

	directory = log_manager_get_dir (manager, account, chat_id, chatroom);
	dir = g_dir_open (directory, 0, NULL);
	if (!dir) {
		DEBUG ("Could not open directory:'%s'", directory);
		g_free (directory);
		return NULL;
	}

	DEBUG ("Collating a list of dates in:'%s'", directory);

	while ((filename = g_dir_read_name (dir)) != NULL) {
		if (!g_str_has_suffix (filename, LOG_FILENAME_SUFFIX)) {
			continue;
		}

		p = strstr (filename, LOG_FILENAME_SUFFIX);
		date = g_strndup (filename, p - filename);
		if (!date) {
			continue;
		}

		if (!g_regex_match_simple ("\\d{8}", date, 0, 0)) {
			continue;
		}

		dates = g_list_insert_sorted (dates, date, (GCompareFunc) strcmp);
	}

	g_free (directory);
	g_dir_close (dir);

	DEBUG ("Parsed %d dates", g_list_length (dates));

	return dates;
}
gboolean
empathy_account_chooser_filter_is_connected (McAccount *account,
					     gpointer   user_data)
{
	MissionControl     *mc;
	TpConnectionStatus  status;

	g_return_val_if_fail (MC_IS_ACCOUNT (account), FALSE);

	mc = empathy_mission_control_new ();
	status = mission_control_get_connection_status (mc, account, NULL);
	g_object_unref (mc);

	return status == TP_CONNECTION_STATUS_CONNECTED;
}
void
empathy_account_widget_handle_params (McAccount   *account,
				      GtkBuilder  *gui,
				      const gchar *first_widget,
				      ...)
{
	va_list args;

	g_return_if_fail (MC_IS_ACCOUNT (account));
	g_return_if_fail (GTK_IS_BUILDER (gui));

	va_start (args, first_widget);
	account_widget_handle_params_valist (account, gui, first_widget, args);
	va_end (args);
}
Exemple #8
0
EmpathyChatroom *
empathy_chatroom_new_full (McAccount   *account,
			  const gchar *room,
			  const gchar *name,
			  gboolean     auto_connect)
{
	g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
	g_return_val_if_fail (room != NULL, NULL);

	return g_object_new (EMPATHY_TYPE_CHATROOM,
			     "account", account,
			     "room", room,
			     "name", name,
			     "auto_connect", auto_connect,
			     NULL);
}
void
empathy_account_widget_handle_params (McAccount   *account,
				      GladeXML    *gui,
				      const gchar *first_widget_name,
				      ...)
{
	va_list args;

	g_return_if_fail (MC_IS_ACCOUNT (account));

	va_start (args, first_widget_name);
	account_widget_handle_params_valist (account, gui,
					     first_widget_name,
					     args);
	va_end (args);
}
/**
 * empathy_account_manager_get_connection:
 * @manager: a #EmpathyAccountManager
 * @account: a #McAccount
 *
 * Get the connection of the accounts, or NULL if account is offline or the
 * connection is not yet ready. This function does not return a new ref.
 *
 * Returns: the connection of the accounts.
 **/
TpConnection *
empathy_account_manager_get_connection (EmpathyAccountManager *manager,
                                        McAccount *account)
{
  EmpathyAccountManagerPriv *priv;
  AccountData *data;

  g_return_val_if_fail (EMPATHY_IS_ACCOUNT_MANAGER (manager), NULL);
  g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);

  priv = GET_PRIV (manager);

  data = g_hash_table_lookup (priv->accounts, account);
  if (data && data->connection && tp_connection_is_ready (data->connection))
    return data->connection;

  return NULL;
}
Exemple #11
0
GList *
empathy_log_manager_get_messages_for_date (EmpathyLogManager *manager,
					   McAccount         *account,
					   const gchar       *chat_id,
					   gboolean           chatroom,
					   const gchar       *date)
{
	gchar *filename;
	GList *messages;

	g_return_val_if_fail (EMPATHY_IS_LOG_MANAGER (manager), NULL);
	g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);
	g_return_val_if_fail (chat_id != NULL, NULL);

	filename = log_manager_get_filename_for_date (manager, account, chat_id, chatroom, date);
	messages = empathy_log_manager_get_messages_for_file (manager, filename);
	g_free (filename);

	return messages;
}
Exemple #12
0
void
empathy_chatroom_set_account (EmpathyChatroom *chatroom,
			     McAccount      *account)
{
	EmpathyChatroomPriv *priv;

	g_return_if_fail (EMPATHY_IS_CHATROOM (chatroom));
	g_return_if_fail (MC_IS_ACCOUNT (account));

	priv = GET_PRIV (chatroom);

	if (account == priv->account) {
		return;
	}
	if (priv->account) {
		g_object_unref (priv->account);
	}
	priv->account = g_object_ref (account);

	g_object_notify (G_OBJECT (chatroom), "account");
}
Exemple #13
0
EmpathyTpRoomlist *
empathy_tp_roomlist_new (McAccount *account)
{
	EmpathyTpRoomlist *list;
	MissionControl    *mc;
	TpConnection      *connection;

	g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);

	mc = empathy_mission_control_dup_singleton ();
	connection = mission_control_get_tpconnection (mc, account, NULL);

	list = g_object_new (EMPATHY_TYPE_TP_ROOMLIST,
			     "connection", connection,
			     NULL);

	g_object_unref (mc);
	g_object_unref (connection);

	return list;
}
GtkWidget *
empathy_account_widget_generic_new (McAccount *account)
{
	GtkBuilder *gui;
	GtkWidget *widget;
	GtkWidget *table_common_settings;
	GtkWidget *table_advanced_settings;
	gchar     *filename;

	g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL);

	filename = empathy_file_lookup ("empathy-account-widget-generic.ui",
					"libempathy-gtk");
	gui = empathy_builder_get_file (filename,
					"vbox_generic_settings", &widget,
					"table_common_settings", &table_common_settings,
					"table_advanced_settings", &table_advanced_settings,
					NULL);
	g_free (filename);

	accounts_widget_generic_setup (account, table_common_settings, table_advanced_settings);

	return empathy_builder_unref_and_keep_widget (gui, widget);
}