contentLister/src/gtkSearchWnd.c File Reference

gtkSearchWnd - eReader search options window More...

#include <string.h>
#include <sys/types.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtkbutton.h>
#include <gtk/gtk.h>
#include <liberdm/display.h>
#include <liberdm/erdm.h>
#include <liberipc/eripctoolbar.h>
#include <libermanifest/ermanifest.h>
#include <libergtk/erGtkEntry.h>
#include <libergtk/erGtkToggleButton.h>
#include "contentListerLog.h"
#include "erConnect.h"
#include "system.h"
#include "gtkPincodeScreen.h"
#include "control.h"
#include "displayUpdate.h"
#include "erbusy.h"
#include "erMdsContent.h"
#include "gtkSearchWnd.h"
#include "languages.h"
#include "pagebar.h"
#include "search_files.h"
#include "toolbar.h"

Go to the source code of this file.

Defines

#define _GNU_SOURCE

Functions

static gboolean delayed_on_searchbutton_toggled (gpointer data)
static void on_changed (GtkEditable *widget, gpointer data)
static gboolean on_expose (GtkWidget *widget, GdkEventExpose *event, gpointer data)
static void on_searchbutton_toggled_event (GtkToggleButton *button, gpointer ptr)
static void createPatternItem (GtkWidget *parent)
static void createSearchButtonItem (GtkWidget *parent)
GtkWidget * create_search_wnd (GtkWidget *parent)
void search_wnd_set_text ()

Variables

static swSearch_t g_wnd


Detailed Description

gtkSearchWnd - eReader search options window

<File description>=""> The eReader content metadata editor provides gtk widgets to enable user change content title and description. Which are created and updated with the following API

Definition in file gtkSearchWnd.c.


Define Documentation

#define _GNU_SOURCE

Definition at line 33 of file gtkSearchWnd.c.


Function Documentation

GtkWidget* create_search_wnd ( GtkWidget *  parent  ) 

Create search options window

Parameters:
parent Gtk object
Returns:
instance pointer of window. Return NULL if failed.

Definition at line 255 of file gtkSearchWnd.c.

00256 {
00257     CL_SEARCHPRINTF("entry");
00258 
00259     // main window
00260     g_wnd.window = parent;
00261     g_signal_connect(G_OBJECT(g_wnd.window), "expose-event", G_CALLBACK(on_expose), NULL);
00262 
00263     // background
00264     GtkWidget* background = gtk_event_box_new();
00265     gtk_widget_set_name(GTK_WIDGET(background), "search_wnd_background");
00266     gtk_widget_set_size_request(GTK_WIDGET(background), SEARCH_BK_IMG_WIDTH, SEARCH_BK_IMG_HEIGHT);
00267     gtk_container_add(GTK_CONTAINER(parent), background);
00268     gtk_widget_show(background);
00269         
00270     // alignment
00271     GtkWidget* alignment = gtk_alignment_new(0.0, 0.0, 0.0, 0.0);
00272     gtk_alignment_set_padding( GTK_ALIGNMENT(alignment), 
00273                                SEARCH_VBORDER, 
00274                                SEARCH_VBORDER, 
00275                                SEARCH_HBORDER, 
00276                                SEARCH_HBORDER );
00277     gtk_container_add(GTK_CONTAINER(background), alignment);
00278     gtk_widget_show(alignment);
00279 
00280     // vbox
00281     GtkWidget*vbox = gtk_vbox_new(FALSE, SEARCH_WND_ITEM_SPACING);
00282     gtk_container_add(GTK_CONTAINER(alignment), vbox);
00283     gtk_widget_show(vbox);
00284    
00285     // pattern item
00286     createPatternItem(vbox);
00287 
00288     // search item
00289     createSearchButtonItem(vbox);
00290 
00291     return background;
00292 }

Here is the call graph for this function:

static void createPatternItem ( GtkWidget *  parent  )  [static]

Definition at line 174 of file gtkSearchWnd.c.

00175 {
00176     GtkWidget* widget;
00177 
00178     CL_SEARCHPRINTF("entry");    
00179 
00180     // pattern tag
00181     widget = gtk_label_new("");
00182     gtk_widget_set_name(GTK_WIDGET(widget), "search_wnd_text_bold");
00183     gtk_widget_set_size_request(GTK_WIDGET(widget), SEARCH_ITEM_WIDTH, SEARCH_TAG_HEIGHT);
00184     gtk_misc_set_alignment(GTK_MISC(widget), 0, 1.0);
00185     gtk_box_pack_start(GTK_BOX(parent), widget, FALSE, FALSE, 0);
00186     gtk_widget_show(widget);
00187     g_wnd.patternTag = widget;
00188 
00189     // patternEdit
00190     widget = ergtk_entry_new();
00191     gtk_widget_set_size_request(widget, SEARCH_ITEM_WIDTH, SEARCH_NAME_HEIGHT);
00192     g_signal_connect_after(G_OBJECT(widget), "changed-stable", G_CALLBACK(on_changed), NULL);
00193     gtk_box_pack_start(GTK_BOX(parent), widget, FALSE, FALSE, 0);    
00194     gtk_widget_show(widget);
00195     g_wnd.patternEntry = widget;
00196 
00197     // pattern explanation
00198     widget = gtk_label_new("");
00199     gtk_widget_set_name(GTK_WIDGET(widget), "search_wnd_text");
00200     gtk_widget_set_size_request(GTK_WIDGET(widget), SEARCH_ITEM_WIDTH, SEARCH_NAME_EXPL_HEIGHT);
00201     gtk_label_set_single_line_mode(GTK_LABEL(widget), FALSE);
00202     gtk_label_set_line_wrap(GTK_LABEL(widget), TRUE);
00203     gtk_misc_set_alignment(GTK_MISC(widget), 0, 0.0);
00204     gtk_box_pack_start(GTK_BOX(parent), widget, FALSE, FALSE, 0);
00205     gtk_widget_show(widget);
00206     g_wnd.patternExpl = widget;
00207 }

Here is the call graph for this function:

static void createSearchButtonItem ( GtkWidget *  parent  )  [static]

Definition at line 215 of file gtkSearchWnd.c.

00216 {
00217     GtkWidget* widget;
00218     GtkWidget* alignment;
00219 
00220     CL_SEARCHPRINTF("entry");
00221 
00222     // pattern tag
00223     widget = gtk_label_new("");
00224     gtk_widget_set_name(GTK_WIDGET(widget), "search_wnd_text_bold");
00225     gtk_widget_set_size_request(GTK_WIDGET(widget), SEARCH_ITEM_WIDTH, SEARCH_TAG_HEIGHT);
00226     gtk_misc_set_alignment(GTK_MISC(widget), 0, 1.0);
00227     gtk_box_pack_start(GTK_BOX(parent), widget, FALSE, FALSE, 0);
00228     gtk_widget_show(widget);
00229     g_wnd.searchTag = widget;
00230 
00231     // alignment
00232     widget = gtk_alignment_new(1.0, 0.5, 0.0, 0.0);
00233     gtk_widget_set_size_request(GTK_WIDGET(widget), -1, SEARCH_BUTTON_AREA_HEIGHT);
00234     gtk_container_add(GTK_CONTAINER(parent), widget);
00235     gtk_widget_show(widget);
00236     alignment = widget;
00237 
00238     // button    
00239     widget = ergtk_toggle_button_new_with_label("");
00240     gtk_widget_set_size_request(GTK_WIDGET(widget), SEARCH_BUTTON_WIDTH, SEARCH_BUTTON_HEIGHT);
00241     g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(on_searchbutton_toggled_event), NULL);
00242     gtk_container_add(GTK_CONTAINER(alignment), widget);
00243     gtk_widget_show(widget);
00244     g_wnd.searchButton = widget;
00245 }

Here is the call graph for this function:

static gboolean delayed_on_searchbutton_toggled ( gpointer  data  )  [static]

Definition at line 138 of file gtkSearchWnd.c.

00139 {
00140     CL_SEARCHPRINTF("entry");
00141 
00142     GtkToggleButton* button = GTK_TOGGLE_BUTTON(data);
00143     const char*      pattern = "";
00144     
00145     // get search string
00146     if (g_wnd.patternEntry)
00147     {
00148         pattern = gtk_entry_get_text(GTK_ENTRY(g_wnd.patternEntry));
00149     }
00150     
00151     // get current location, start search
00152     char  root[ERMDS_MAX_FILENAME_SIZE] = "";
00153     const char* sCurrPath = ctrl_get_abscurr_location(root, sizeof(root));    
00154     execSearch(sCurrPath, pattern);
00155 
00156     // show the search result
00157     display_update_increase_level(LISTER_EXPOSE_LEVEL);
00158     gtk_toggle_button_set_active(button, FALSE);
00159     ctrl_hide_search_wnd();
00160     ctrl_display_search_result();
00161 
00162     return FALSE;  // don't call me anymore
00163 }

Here is the call graph for this function:

static void on_changed ( GtkEditable *  widget,
gpointer  data 
) [static]

Definition at line 79 of file gtkSearchWnd.c.

00080 {
00081     CL_SEARCHPRINTF("entry");
00082 
00083     // check for illegal characters in search pattern
00084     const char* illegal_chars = ILLEGAL_FILENAME_CHARS;
00085     const char* pattern = gtk_entry_get_text(GTK_ENTRY(widget));
00086     //
00087     char* new_pattern = alloca( strlen(pattern) + 1 );
00088     strcpy(new_pattern, pattern);
00089     //
00090     gboolean found = FALSE;
00091     char* cp = new_pattern;
00092     while (*cp)
00093     {
00094         if ( strchr(illegal_chars, *cp) )
00095         {
00096             *cp = '-';
00097             found = TRUE;
00098         }
00099         cp++;
00100     }
00101     if (found)
00102     {
00103         CL_SEARCHPRINTF("illegal pattern [%s] new pattern [%s]", pattern, new_pattern);
00104         gtk_entry_set_text(GTK_ENTRY(widget), new_pattern);
00105     }
00106 }

static gboolean on_expose ( GtkWidget *  widget,
GdkEventExpose *  event,
gpointer  data 
) [static]

Definition at line 108 of file gtkSearchWnd.c.

00109 {
00110     CL_SEARCHPRINTF("entry");
00111 
00112     gtk_widget_grab_focus(GTK_WIDGET(g_wnd.patternEntry));
00113 
00114     // select all characters, cursor at end of input field
00115     gtk_editable_select_region(GTK_EDITABLE(g_wnd.patternEntry), 0, -1);
00116 
00117     display_update_request_screen_refresh(LISTER_EXPOSE_LEVEL);
00118 
00119     return FALSE;
00120 }

Here is the call graph for this function:

static void on_searchbutton_toggled_event ( GtkToggleButton *  button,
gpointer  ptr 
) [static]

Definition at line 124 of file gtkSearchWnd.c.

00125 {
00126     CL_SEARCHPRINTF("entry");
00127     
00128     gboolean active = gtk_toggle_button_get_active(button);
00129     if (active)
00130     {
00131         erbusy_blink();
00132 
00133         // wait for button shown selected, then start seach
00134         g_timeout_add(200, delayed_on_searchbutton_toggled, button);
00135     }
00136 }

Here is the call graph for this function:

void search_wnd_set_text ( void   ) 

Set constant text in search window

Definition at line 295 of file gtkSearchWnd.c.

00296 {
00297     CL_SEARCHPRINTF("entry");
00298 
00299     // pattern item
00300     gtk_label_set_text( GTK_LABEL(g_wnd.patternTag),  _("Step 1: Please enter the search pattern") );
00301     gtk_label_set_text( GTK_LABEL(g_wnd.patternExpl), _("Multiple search strings can be separated with a space.\n"
00302                                                         "Search strings containing spaces should be enclosed in double quotes (\").\n"
00303                                                         "Narrow your search results by clicking the 'Search' icon again.") );
00304 
00305     // search item
00306     gtk_label_set_text( GTK_LABEL(g_wnd.searchTag), _("Step 2: Please click on the 'Search' button to start your enquiry") );
00307     gtk_button_set_label( GTK_BUTTON(g_wnd.searchButton), _("Search") );
00308 }


Variable Documentation

swSearch_t g_wnd [static]

Definition at line 69 of file gtkSearchWnd.c.


Generated on Sun Dec 14 17:13:33 2008 by  doxygen 1.5.6