Commit ab6c2357 authored by Emmanuel Lepage's avatar Emmanuel Lepage
parents 74c5fa82 292be9d5
......@@ -53,7 +53,7 @@ void
calltab_select_call(calltab_t* tab, callable_obj_t * c)
{
g_assert(tab);
DEBUG("CallTab: Select call %s", c ? c->_callID : "");
DEBUG("Select call %s", c ? c->_callID : "");
tab->selectedType = A_CALL;
tab->selectedCall = c;
......@@ -65,7 +65,7 @@ void
calltab_select_conf(calltab_t *tab, conference_obj_t * c)
{
g_assert(tab);
DEBUG("CallTab: Selected conf %s", c ? c->_confID : "");
DEBUG("Selected conf %s", c ? c->_confID : "");
tab->selectedType = A_CONFERENCE;
tab->selectedConf = c;
......
......@@ -79,15 +79,6 @@ static GtkTargetEntry 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
*/
......@@ -100,7 +91,7 @@ popup_menu(GtkWidget *widget,
}
/* Returns TRUE if row contains a conference object pointer */
static gboolean
gboolean
is_conference(GtkTreeModel *model, GtkTreeIter *iter)
{
gboolean result = FALSE;
......
......@@ -106,4 +106,16 @@ calltree_display (calltab_t *);
gboolean
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
......@@ -44,7 +44,7 @@ static gint is_confID_confstruct(gconstpointer a, gconstpointer b)
void conferencelist_init(calltab_t *tab)
{
if (tab == NULL) {
ERROR("ConferenceList: Error: Call tab is NULL");
ERROR("Call tab is NULL");
return;
}
......@@ -55,7 +55,7 @@ void conferencelist_init(calltab_t *tab)
void conferencelist_clean(calltab_t *tab)
{
if (tab == NULL) {
ERROR("ConferenceList: Error: Calltab tab is NULL");
ERROR("Calltab tab is NULL");
return;
}
......@@ -65,7 +65,7 @@ void conferencelist_clean(calltab_t *tab)
void conferencelist_reset(calltab_t *tab)
{
if (tab == NULL) {
ERROR("ConferenceList: Error: Calltab tab is NULL");
ERROR("Calltab tab is NULL");
return;
}
......@@ -77,12 +77,12 @@ void conferencelist_reset(calltab_t *tab)
void conferencelist_add(calltab_t *tab, const conference_obj_t* conf)
{
if (conf == NULL) {
ERROR("ConferenceList: Error: Conference is NULL");
ERROR("Conference is NULL");
return;
}
if (tab == NULL) {
ERROR("ConferenceList: Error: Tab is NULL");
ERROR("Tab is NULL");
return;
}
......@@ -96,15 +96,15 @@ void conferencelist_add(calltab_t *tab, const conference_obj_t* conf)
void conferencelist_remove(calltab_t *tab, const gchar* const conf_id)
{
DEBUG("ConferenceList: Remove conference %s", conf_id);
DEBUG("Remove conference %s", conf_id);
if (conf_id == NULL) {
ERROR("ConferenceList: Error: Conf id is NULL");
ERROR("Conf id is NULL");
return;
}
if (tab == NULL) {
ERROR("ConferenceList: Error: Calltab is NULL");
ERROR("Calltab is NULL");
return;
}
......@@ -118,10 +118,10 @@ void conferencelist_remove(calltab_t *tab, const gchar* const conf_id)
conference_obj_t* conferencelist_get(calltab_t *tab, const gchar* const conf_id)
{
DEBUG("ConferenceList: Conference list get %s", conf_id);
DEBUG("Conference list get %s", conf_id);
if (tab == NULL) {
ERROR("ConferenceList: Error: Calltab is NULL");
ERROR("Calltab is NULL");
return NULL;
}
......@@ -136,14 +136,14 @@ conference_obj_t* conferencelist_get(calltab_t *tab, const gchar* const conf_id)
conference_obj_t* conferencelist_get_nth(calltab_t *tab, guint n)
{
if (tab == NULL) {
ERROR("ConferenceList: Error: Calltab is NULL");
ERROR("Calltab is NULL");
return NULL;
}
conference_obj_t *c = g_queue_peek_nth(tab->conferenceQueue, n);
if (c == NULL) {
ERROR("ConferenceList: Error: Could not fetch conference %d", n);
ERROR("Could not fetch conference %d", n);
return NULL;
}
......@@ -153,7 +153,7 @@ conference_obj_t* conferencelist_get_nth(calltab_t *tab, guint n)
conference_obj_t *conferencelist_pop_head(calltab_t *tab)
{
if (tab == NULL) {
ERROR("ConferenceList: Error: Tab is NULL");
ERROR("Tab is NULL");
return NULL;
}
......@@ -163,7 +163,7 @@ conference_obj_t *conferencelist_pop_head(calltab_t *tab)
guint conferencelist_get_size(calltab_t *tab)
{
if (tab == NULL) {
ERROR("ConferenceList: Error: Calltab is NULL");
ERROR("Calltab is NULL");
return 0;
}
......
......@@ -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)
{
gboolean ret = TRUE;
callable_obj_t *history_entry = NULL;
const gchar *text = NULL;
/* Skip conferences */
if (is_conference(model, iter))
return TRUE;
// Fetch the call description
GValue val;
memset(&val, 0, sizeof val);
gtk_tree_model_get_value(GTK_TREE_MODEL(model), iter, 1, &val);
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);
const gchar *text = NULL;
const gchar *id = NULL;
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);
gboolean ret = TRUE;
if (text && history_entry) {
// Filter according to the type of call
// MISSED, INCOMING, OUTGOING, ALL
const gchar* search = gtk_entry_get_text(history_searchbar_widget);
if (!search || !*search)
goto end;
return TRUE;
SearchType search_type = get_current_history_search_type();
ret = g_regex_match_simple(search, text, G_REGEX_CASELESS, 0);
if (search_type == SEARCH_ALL)
goto end;
return ret;
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);
}
end:
g_value_unset(&val);
return ret;
}
......
......@@ -230,6 +230,9 @@ update_toolbar_for_call(callable_obj_t *selectedCall, gboolean instant_messaging
case CALL_STATE_CURRENT:
{
DEBUG("Call State Current");
g_signal_handler_block(transferToolbar_, transferButtonConnId_);
g_signal_handler_block(recordWidget_, recordButtonConnId_);
gtk_action_set_sensitive(hangUpAction_, TRUE);
gtk_action_set_sensitive(recordAction_, TRUE);
gtk_action_set_sensitive(muteAction_, TRUE);
......@@ -249,11 +252,10 @@ update_toolbar_for_call(callable_obj_t *selectedCall, gboolean instant_messaging
if (instant_messaging_enabled) {
add_to_toolbar(toolbar_, imToolbar_, pos++);
g_signal_handler_block(transferToolbar_, transferButtonConnId_);
gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(transferToolbar_), FALSE);
g_signal_handler_unblock(transferToolbar_, transferButtonConnId_);
g_signal_handler_block(recordWidget_, recordButtonConnId_);
gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(recordWidget_), FALSE);
g_signal_handler_unblock(transferToolbar_, transferButtonConnId_);
g_signal_handler_unblock(recordWidget_, recordButtonConnId_);
break;
}
......@@ -261,6 +263,9 @@ update_toolbar_for_call(callable_obj_t *selectedCall, gboolean instant_messaging
case CALL_STATE_RECORD:
{
DEBUG("Call State Record");
g_signal_handler_block(transferToolbar_, transferButtonConnId_);
g_signal_handler_block(recordWidget_, recordButtonConnId_);
gtk_action_set_sensitive(hangUpAction_, TRUE);
gtk_action_set_sensitive(recordAction_, TRUE);
gtk_action_set_sensitive(muteAction_, TRUE);
......@@ -280,11 +285,10 @@ update_toolbar_for_call(callable_obj_t *selectedCall, gboolean instant_messaging
if (instant_messaging_enabled)
add_to_toolbar(toolbar_, imToolbar_, pos++);
g_signal_handler_block(transferToolbar_, transferButtonConnId_);
gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(transferToolbar_), FALSE);
g_signal_handler_unblock(transferToolbar_, transferButtonConnId_);
g_signal_handler_block(recordWidget_, recordButtonConnId_);
gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(recordWidget_), TRUE);
g_signal_handler_unblock(transferToolbar_, transferButtonConnId_);
g_signal_handler_unblock(recordWidget_, recordButtonConnId_);
break;
}
......@@ -337,11 +341,11 @@ update_toolbar_for_conference(conference_obj_t * selectedConf, gboolean instant_
case CONFERENCE_STATE_ACTIVE_ATTACHED:
case CONFERENCE_STATE_ACTIVE_DETACHED:
DEBUG("Conference State Active");
g_signal_handler_block(recordWidget_, recordButtonConnId_);
if (active_calltree_tab == current_calls_tab) {
gtk_action_set_sensitive(hangUpAction_, TRUE);
gtk_widget_set_sensitive(holdToolbar_, TRUE);
gtk_action_set_sensitive(recordAction_, TRUE);
gtk_widget_set_sensitive(recordWidget_, TRUE);
pos = 1;
add_to_toolbar(toolbar_, hangUpWidget_, pos++);
add_to_toolbar(toolbar_, holdToolbar_, pos++);
......@@ -360,15 +364,16 @@ update_toolbar_for_conference(conference_obj_t * selectedConf, gboolean instant_
add_to_toolbar(toolbar_, playRecordWidget_, pos);
}
}
g_signal_handler_unblock(recordWidget_, recordButtonConnId_);
break;
case CONFERENCE_STATE_ACTIVE_ATTACHED_RECORD:
case CONFERENCE_STATE_ACTIVE_DETACHED_RECORD: {
g_signal_handler_block(recordWidget_, recordButtonConnId_);
pos = 1;
DEBUG("Conference State Record");
gtk_action_set_sensitive(hangUpAction_, TRUE);
gtk_widget_set_sensitive(holdToolbar_, TRUE);
gtk_action_set_sensitive(recordAction_, TRUE);
gtk_widget_set_sensitive(recordWidget_, TRUE);
add_to_toolbar(toolbar_, hangUpWidget_, pos++);
add_to_toolbar(toolbar_, holdToolbar_, pos++);
add_to_toolbar(toolbar_, recordWidget_, pos++);
......@@ -377,16 +382,17 @@ update_toolbar_for_conference(conference_obj_t * selectedConf, gboolean instant_
gtk_action_set_sensitive(imAction_, TRUE);
add_to_toolbar(toolbar_, imToolbar_, pos);
}
g_signal_handler_unblock(recordWidget_, recordButtonConnId_);
break;
}
case CONFERENCE_STATE_HOLD:
case CONFERENCE_STATE_HOLD_RECORD: {
DEBUG("Conference State Hold");
g_signal_handler_block(recordWidget_, recordButtonConnId_);
pos = 1;
gtk_action_set_sensitive(hangUpAction_, TRUE);
gtk_widget_set_sensitive(offHoldToolbar_, TRUE);
gtk_action_set_sensitive(recordAction_, TRUE);
gtk_widget_set_sensitive(recordWidget_, TRUE);
add_to_toolbar(toolbar_, hangUpWidget_, pos++);
add_to_toolbar(toolbar_, offHoldToolbar_, pos++);
add_to_toolbar(toolbar_, recordWidget_, pos++);
......@@ -395,6 +401,7 @@ update_toolbar_for_conference(conference_obj_t * selectedConf, gboolean instant_
gtk_action_set_sensitive(imAction_, TRUE);
add_to_toolbar(toolbar_, imToolbar_, pos);
}
g_signal_handler_unblock(recordWidget_, recordButtonConnId_);
break;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment