Enlightenment CVS committal

Author  : davemds
Project : e17
Module  : libs/etk

Dir     : e17/libs/etk/src/lib


Modified Files:
        etk_combobox_entry.c etk_combobox_entry.h 


Log Message:
removed  etk_combobox_entry_autosearch_enable_set() and void 
etk_combobox_entry_autosearch_column_set()
in favor of
void etk_combobox_entry_autosearch_set(Etk_Combobox_Entry *combobox_entry, int 
col_num, char* (*search_function)(const char *s1, const char *s2));
Now you can also use your own searching function.

===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_combobox_entry.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- etk_combobox_entry.c        15 Jul 2008 01:12:32 -0000      1.15
+++ etk_combobox_entry.c        17 Jul 2008 00:10:53 -0000      1.16
@@ -942,36 +942,54 @@
 }
 
 /**
- * @brief Enable or disable autosearch on the combobox entry.
+ * @brief Set autosearch params on the combobox entry, or disable autosearch.
  * When a combo_Entry is set as searchable typing in the entry will show the 
popup
- * window with a filtered set of option.
+ * window with a filtered set of options.
+ * Setting col_num to < 0 will disable autosearch.
  * @param combobox_entry a combobox_entry
- * @param enable ETK_TRUE = enable, ETK_FALSE = disable
+ * @param col a column number to use for searching, must be a string column. 
Or NULL to disable autosearch
  */
-void etk_combobox_entry_autosearch_enable_set(Etk_Combobox_Entry 
*combobox_entry, int enable)
+void etk_combobox_entry_autosearch_set(Etk_Combobox_Entry *combobox_entry, int 
col_num, char* (*search_function)(const char *s1, const char *s2))
 {
    if (!combobox_entry)
       return;
-   
-   if (enable)
-      etk_signal_connect_by_code(ETK_ENTRY_TEXT_CHANGED_SIGNAL, 
ETK_OBJECT(combobox_entry->entry), 
ETK_CALLBACK(_etk_combobox_entry_entry_text_changed_cb), combobox_entry);
-   else
-      etk_signal_disconnect_by_code(ETK_ENTRY_TEXT_CHANGED_SIGNAL, 
ETK_OBJECT(combobox_entry->entry), 
ETK_CALLBACK(_etk_combobox_entry_entry_text_changed_cb), combobox_entry);      
-   
-   combobox_entry->autosearch_enable = enable ? ETK_TRUE : ETK_FALSE;
-}
 
-/**
- * @brief Set the colum number to use for the search, must be a string column.
- * @param combobox_entry a combobox_entry
- * @param col_num the string column to use for searching
- */
-void etk_combobox_entry_autosearch_column_set(Etk_Combobox_Entry 
*combobox_entry, int col_num)
-{
-   if (!combobox_entry)
+   if (!combobox_entry->built)
+   {
+      ETK_WARNING("Unable to set autosearch to the combobox_entry because the 
combobox_entry isn't built yet");
       return;
+   }
+
+   if (col_num < 0)
+   {
+      etk_signal_disconnect_by_code(ETK_ENTRY_TEXT_CHANGED_SIGNAL, 
ETK_OBJECT(combobox_entry->entry), 
ETK_CALLBACK(_etk_combobox_entry_entry_text_changed_cb), combobox_entry);
+      combobox_entry->autosearch_enable = ETK_FALSE;
+      return;
+   }
+
+   if (col_num > combobox_entry->num_cols - 1)
+   {
+      ETK_WARNING("Unable to set autosearch to the combobox_entry because the 
given column isn't valid");
+      return;
+   }
+   
+   if (combobox_entry->cols[col_num]->type != ETK_COMBOBOX_ENTRY_LABEL)
+   {
+      ETK_WARNING("Unable to set autosearch to the combobox_entry because the 
given column isn't a label column");
+      return;
+   }
    
+       
    combobox_entry->autosearch_column = col_num;
+
+   if (!combobox_entry->autosearch_enable)
+   {
+      etk_signal_connect_by_code(ETK_ENTRY_TEXT_CHANGED_SIGNAL, 
ETK_OBJECT(combobox_entry->entry), 
ETK_CALLBACK(_etk_combobox_entry_entry_text_changed_cb), combobox_entry);
+      combobox_entry->autosearch_enable = ETK_TRUE;
+   }
+
+   if (search_function)
+      combobox_entry->search_function = search_function;
 }
 
 /**************************
@@ -1025,6 +1043,7 @@
    combobox_entry->built = ETK_FALSE;
    combobox_entry->autosearch_column = 0;
    combobox_entry->autosearch_enable = 0;
+   combobox_entry->search_function = strstr;
 
    ETK_WIDGET(combobox_entry)->size_request = _etk_combobox_entry_size_request;
    ETK_WIDGET(combobox_entry)->size_allocate = 
_etk_combobox_entry_size_allocate;
@@ -1581,7 +1600,7 @@
       const char* item_field;
 
       item_field = etk_combobox_entry_item_field_get(item, 
combobox_entry->autosearch_column);
-      if (strcasestr(item_field, entry_text))
+      if (combobox_entry->search_function(item_field, entry_text))
          etk_widget_show(ETK_WIDGET(item));
       else
          etk_widget_hide(ETK_WIDGET(item));
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/lib/etk_combobox_entry.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- etk_combobox_entry.h        15 Jul 2008 00:08:15 -0000      1.9
+++ etk_combobox_entry.h        17 Jul 2008 00:10:53 -0000      1.10
@@ -122,10 +122,12 @@
    Etk_Widget *hbox;
 
    int items_height;
-   Etk_Bool built:1;
-   
-   int autosearch_enable;
+
    int autosearch_column;
+   char* (*search_function)(const char *s1, const char *s2);
+   Etk_Bool autosearch_enable:1;
+
+   Etk_Bool built:1;
 };
 
 
@@ -178,8 +180,7 @@
 void etk_combobox_entry_pop_down(Etk_Combobox_Entry *combobox_entry);
 void etk_combobox_entry_popup_feed(Etk_Combobox_Entry *combobox_entry, 
Etk_Window *window);
 
-void etk_combobox_entry_autosearch_enable_set(Etk_Combobox_Entry 
*combobox_entry, int enable);
-void etk_combobox_entry_autosearch_column_set(Etk_Combobox_Entry 
*combobox_entry, int col_num);
+void etk_combobox_entry_autosearch_set(Etk_Combobox_Entry *combobox_entry, int 
col_num, char* (*search_function)(const char *s1, const char *s2));
 
 /** @} */
 



-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to