#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 |
<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 _GNU_SOURCE |
Definition at line 33 of file gtkSearchWnd.c.
GtkWidget* create_search_wnd | ( | GtkWidget * | parent | ) |
Create search options window
parent | Gtk object |
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 }
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 }
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 }
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 }
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 }
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 }
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 }
swSearch_t g_wnd [static] |
Definition at line 69 of file gtkSearchWnd.c.