Skip to content
Snippets Groups Projects
Commit 292be9d5 authored by Tristan Matthews's avatar Tristan Matthews
Browse files

* #11207: fixed history search bar

parent 6f1a61e2
Branches
No related tags found
No related merge requests found
...@@ -79,15 +79,6 @@ static GtkTargetEntry target_list[] = { ...@@ -79,15 +79,6 @@ static GtkTargetEntry target_list[] = {
static const guint n_targets = G_N_ELEMENTS(target_list); static const guint n_targets = G_N_ELEMENTS(target_list);
enum {
COLUMN_ACCOUNT_PIXBUF = 0,
COLUMN_ACCOUNT_DESC,
COLUMN_ACCOUNT_SECURITY_PIXBUF,
COLUMN_ID,
COLUMN_IS_CONFERENCE,
COLUMNS_IN_TREE_STORE
};
/** /**
* Show popup menu * Show popup menu
*/ */
...@@ -100,7 +91,7 @@ popup_menu(GtkWidget *widget, ...@@ -100,7 +91,7 @@ popup_menu(GtkWidget *widget,
} }
/* Returns TRUE if row contains a conference object pointer */ /* Returns TRUE if row contains a conference object pointer */
static gboolean gboolean
is_conference(GtkTreeModel *model, GtkTreeIter *iter) is_conference(GtkTreeModel *model, GtkTreeIter *iter)
{ {
gboolean result = FALSE; gboolean result = FALSE;
......
...@@ -106,4 +106,16 @@ calltree_display (calltab_t *); ...@@ -106,4 +106,16 @@ calltree_display (calltab_t *);
gboolean gboolean
calltree_update_clock(gpointer); calltree_update_clock(gpointer);
gboolean
is_conference(GtkTreeModel *model, GtkTreeIter *iter);
enum {
COLUMN_ACCOUNT_PIXBUF = 0,
COLUMN_ACCOUNT_DESC,
COLUMN_ACCOUNT_SECURITY_PIXBUF,
COLUMN_ID,
COLUMN_IS_CONFERENCE,
COLUMNS_IN_TREE_STORE
};
#endif #endif
...@@ -54,45 +54,34 @@ search_type_matches_state(SearchType type, const gchar *state) ...@@ -54,45 +54,34 @@ search_type_matches_state(SearchType type, const gchar *state)
static gboolean history_is_visible(GtkTreeModel* model, GtkTreeIter* iter, gpointer data UNUSED) static gboolean history_is_visible(GtkTreeModel* model, GtkTreeIter* iter, gpointer data UNUSED)
{ {
gboolean ret = TRUE; /* Skip conferences */
callable_obj_t *history_entry = NULL; if (is_conference(model, iter))
const gchar *text = NULL; return TRUE;
// Fetch the call description // Fetch the call description
GValue val; const gchar *text = NULL;
memset(&val, 0, sizeof val); const gchar *id = NULL;
gtk_tree_model_get_value(GTK_TREE_MODEL(model), iter, 1, &val); gtk_tree_model_get(model, iter, COLUMN_ACCOUNT_DESC, &text, COLUMN_ID, &id, -1);
callable_obj_t *history_entry = calllist_get_call(history_tab, id);
if (G_VALUE_HOLDS_STRING(&val))
text = (gchar *) g_value_get_string(&val);
// Fetch the call type
GValue obj;
memset(&obj, 0, sizeof obj);
gtk_tree_model_get_value(GTK_TREE_MODEL(model), iter, 3, &obj);
if (G_VALUE_HOLDS_POINTER(&obj))
history_entry = (gpointer) g_value_get_pointer(&obj);
gboolean ret = TRUE;
if (text && history_entry) { if (text && history_entry) {
// Filter according to the type of call // Filter according to the type of call
// MISSED, INCOMING, OUTGOING, ALL // MISSED, INCOMING, OUTGOING, ALL
const gchar* search = gtk_entry_get_text(history_searchbar_widget); const gchar* search = gtk_entry_get_text(history_searchbar_widget);
if (!search || !*search) if (!search || !*search)
goto end; return TRUE;
SearchType search_type = get_current_history_search_type(); SearchType search_type = get_current_history_search_type();
ret = g_regex_match_simple(search, text, G_REGEX_CASELESS, 0); ret = g_regex_match_simple(search, text, G_REGEX_CASELESS, 0);
if (search_type == SEARCH_ALL) if (search_type == SEARCH_ALL)
goto end; return ret;
else // We need a match on the history_state and the current search type else // We need a match on the history_state and the current search type
ret = ret && search_type_matches_state(search_type, history_entry->_history_state); ret = ret && search_type_matches_state(search_type, history_entry->_history_state);
} }
end:
g_value_unset(&val);
return ret; return ret;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment