Re: [evolution-patches] [addressbook] Patch for Bug #273799:missing category filter in the "choose contact dialog"
- From: Devashish <sdevashish novell com>
- To: Sushma Rai <rsushma novell com>
- Cc: patches <evolution-patches gnome org>
- Subject: Re: [evolution-patches] [addressbook] Patch for Bug #273799:missing category filter in the "choose contact dialog"
- Date: Wed, 28 Sep 2005 21:20:40 +0530
Hi,
Sending the revised patch with changes done.
Category List is now sorted.
Category will be reset only when the composer is started again, because
the name_selector_dialog is initialized when the composer gets
initialized.
On Wed, 2005-09-28 at 18:37 +0530, Sushma Rai wrote:
> Hi,
>
> category list is not freed. and also
> category list needs to be sorted.
>
> And once the name selector dialog is closed, category is
> not reset to "AnyCategory"
>
> Can you resend the patch with these changes?
>
> Thanks,
> Sushma.
>
> On Thu, 2005-09-22 at 15:07 +0530, Devashish wrote:
> > Hi ,
> >
> > The attached patch fixes 273799.
> >
> > thanks
> > Devashish Sharma
> > _______________________________________________
> > Evolution-patches mailing list
> > Evolution-patches gnome org
> > http://mail.gnome.org/mailman/listinfo/evolution-patches
Index: libedataserverui/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution-data-server/libedataserverui/ChangeLog,v
retrieving revision 1.62
diff -u -p -r1.62 ChangeLog
--- libedataserverui/ChangeLog 26 Aug 2005 11:44:47 -0000 1.62
+++ libedataserverui/ChangeLog 22 Sep 2005 09:31:59 -0000
@@ -1,3 +1,11 @@
+2005-09-22 Devashish Sharma <sdevashish novell com>
+
+ * e-name-selector-dialog.c: Added the missing category filter in
+ name_selector_dialog.
+ * e-name-selector-dialog.glade: Added the UI component for category
+ filter.
+ Fixes #273799.
+
2005-08-26 Harish Krishnaswamy <kharish novell com>
* e-name-selector-dialog.c: (e_name_selector_dialog_init):
Index: libedataserverui/e-name-selector-dialog.glade
===================================================================
RCS file: /cvs/gnome/evolution-data-server/libedataserverui/e-name-selector-dialog.glade,v
retrieving revision 1.3
diff -u -p -r1.3 e-name-selector-dialog.glade
--- libedataserverui/e-name-selector-dialog.glade 28 Jan 2005 03:02:36 -0000 1.3
+++ libedataserverui/e-name-selector-dialog.glade 22 Sep 2005 09:31:45 -0000
@@ -74,7 +74,7 @@
<child>
<widget class="GtkTable" id="show_contacts_table">
<property name="visible">True</property>
- <property name="n_rows">2</property>
+ <property name="n_rows">3</property>
<property name="n_columns">2</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
@@ -104,6 +104,93 @@
<property name="y_options"></property>
</packing>
</child>
+
+ <child>
+ <widget class="GtkLabel" id="label31">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">C_ategory:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkCombo" id="combo-category">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="value_in_list">False</property>
+ <property name="allow_empty">True</property>
+ <property name="case_sensitive">False</property>
+ <property name="enable_arrow_keys">True</property>
+ <property name="enable_arrows_always">False</property>
+
+ <child internal-child="entry">
+ <widget class="GtkEntry" id="entry-category">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char" translatable="yes">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ </child>
+
+ <child internal-child="list">
+ <widget class="GtkList" id="convertwidget1">
+ <property name="visible">True</property>
+ <property name="selection_mode">GTK_SELECTION_BROWSE</property>
+
+ <child>
+ <widget class="GtkListItem" id="convertwidget2">
+ <property name="visible">True</property>
+
+ <child>
+ <widget class="GtkLabel" id="convertwidget3">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">fill</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
<child>
<widget class="GtkHBox" id="hbox1">
@@ -139,8 +226,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
</packing>
</child>
@@ -162,8 +249,8 @@
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
Index: libedataserverui/e-name-selector-dialog.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/libedataserverui/e-name-selector-dialog.c,v
retrieving revision 1.20
diff -u -p -r1.20 e-name-selector-dialog.c
--- libedataserverui/e-name-selector-dialog.c 31 Aug 2005 04:26:10 -0000 1.20
+++ libedataserverui/e-name-selector-dialog.c 28 Sep 2005 15:51:13 -0000
@@ -37,6 +37,7 @@
#include <libedataserverui/e-contact-store.h>
#include <libedataserverui/e-book-auth-util.h>
#include <libedataserver/e-sexp.h>
+#include <libedataserver/e-categories.h>
#include "e-name-selector-dialog.h"
typedef struct {
@@ -93,6 +94,33 @@ e_name_selector_dialog_set_property (GOb
{
}
+static int
+compare_func (const void *voida, const void *voidb)
+{
+ const char *stringa = voida;
+ const char *stringb = voidb;
+ return strcoll (stringa, stringb);
+}
+
+static void
+e_name_selector_dialog_populate_categories(ENameSelectorDialog *name_selector_dialog)
+{
+ GtkCombo *combo;
+ GtkEntry *entry;
+ combo = (GtkCombo *) glade_xml_get_widget (name_selector_dialog->gui, "combo-category");
+ GList *list = NULL;
+
+ list = e_categories_get_list() ;
+ list = g_list_prepend(list, "Any Category");
+ g_list_sort (list, compare_func);
+ gtk_combo_set_popdown_strings (combo, list);
+
+ entry = GTK_ENTRY(glade_xml_get_widget(name_selector_dialog->gui, "entry-category"));
+ g_signal_connect_swapped (entry, "changed", G_CALLBACK (search_changed), name_selector_dialog);
+ g_list_free (list);
+
+}
+
static void
e_name_selector_dialog_init (ENameSelectorDialog *name_selector_dialog)
{
@@ -185,6 +213,8 @@ e_name_selector_dialog_init (ENameSelect
container = glade_xml_get_widget (name_selector_dialog->gui, "source-menu-box");
gtk_box_pack_start (GTK_BOX (container), widget, TRUE, TRUE, 0);
+ e_name_selector_dialog_populate_categories (name_selector_dialog);
+
/* Set up search-as-you-type signal */
widget = glade_xml_get_widget (name_selector_dialog->gui, "search");
@@ -210,7 +240,7 @@ e_name_selector_dialog_init (ENameSelect
gtk_container_set_border_width (GTK_CONTAINER (name_selector_dialog), 4);
gtk_window_set_title (GTK_WINDOW (name_selector_dialog), _("Select Contacts from Address Book"));
}
-
+
/* Partial, repeatable destruction. Release references. */
static void
e_name_selector_dialog_dispose (GObject *object)
@@ -650,21 +680,41 @@ static void
search_changed (ENameSelectorDialog *name_selector_dialog)
{
EContactStore *contact_store;
- EBookQuery *book_query;
+ EBookQuery *book_query;
+ GtkEntry *entry;
const gchar *text;
gchar *text_escaped;
gchar *query_string;
+ const gchar *category;
+ gchar *category_escaped;
+
+ entry = GTK_ENTRY(glade_xml_get_widget(name_selector_dialog->gui, "entry-category"));
+ category = gtk_entry_get_text (entry);
+ category_escaped = escape_sexp_string (category);
text = gtk_entry_get_text (name_selector_dialog->search_entry);
text_escaped = escape_sexp_string (text);
- query_string = g_strdup_printf ("(or (beginswith \"file_as\" %s) "
- " (beginswith \"full_name\" %s) "
- " (beginswith \"email\" %s) "
- " (beginswith \"nickname\" %s))",
- text_escaped, text_escaped, text_escaped, text_escaped);
+
+ if ( !strcmp (category,"Any Category")) {
+ query_string = g_strdup_printf ("(or (beginswith \"file_as\" %s) "
+ " (beginswith \"full_name\" %s) "
+ " (beginswith \"email\" %s) "
+ " (beginswith \"nickname\" %s)))",
+ text_escaped, text_escaped, text_escaped, text_escaped);
+ }
+ else {
+ query_string = g_strdup_printf ("(and (is \"category_list\" %s) "
+ "(or (beginswith \"file_as\" %s) "
+ " (beginswith \"full_name\" %s) "
+ " (beginswith \"email\" %s) "
+ " (beginswith \"nickname\" %s)))",
+ category_escaped,text_escaped, text_escaped, text_escaped, text_escaped);
+ }
+
book_query = e_book_query_from_string (query_string);
g_free (query_string);
g_free (text_escaped);
+ g_free (category_escaped);
contact_store = e_name_selector_model_peek_contact_store (name_selector_dialog->name_selector_model);
e_contact_store_set_query (contact_store, book_query);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]