Mercurial > audlegacy-plugins
annotate src/streambrowser/gui/streambrowser_win.c @ 2889:6c53f9fa9029
Backed out changeset 59ff744e1e23
| author | Matti Hamalainen <ccr@tnsp.org> |
|---|---|
| date | Tue, 12 Aug 2008 20:29:49 +0300 |
| parents | e883536cefe0 |
| children | 113454baecf8 |
| rev | line source |
|---|---|
| 2735 | 1 |
|
2795
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
2 #include <stdlib.h> |
| 2735 | 3 #include <string.h> |
|
2795
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
4 #include <ctype.h> |
| 2735 | 5 #include <glib.h> |
| 6 #include <gtk/gtk.h> | |
|
2782
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
7 #include <gdk/gdkkeysyms.h> |
| 2735 | 8 |
| 9 #include "../streambrowser.h" | |
| 10 #include "streambrowser_win.h" | |
| 11 | |
| 12 | |
| 13 typedef struct { | |
| 14 | |
|
2795
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
15 streamdir_t* streamdir; |
| 2735 | 16 GtkWidget* table; |
| 17 GtkWidget* tree_view; | |
| 18 | |
| 19 } streamdir_gui_t; | |
| 20 | |
| 21 | |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
22 void (* update_function) (streamdir_t *streamdir, category_t *category, streaminfo_t *streaminfo, gboolean add_to_playlist); |
| 2735 | 23 |
| 24 static GtkWidget* gtk_label_new_with_icon(gchar *icon_filename, gchar *label_text); | |
| 25 static GtkWidget* gtk_streamdir_tree_view_new(); | |
| 26 static GtkWidget* gtk_streamdir_table_new(GtkWidget *tree_view); | |
| 27 | |
| 28 static gboolean on_notebook_switch_page(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer data); | |
| 29 static gboolean on_tree_view_cursor_changed(GtkTreeView *tree_view, gpointer data); | |
| 30 static gboolean on_add_button_clicked(GtkButton *button, gpointer data); | |
|
2782
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
31 static gboolean on_search_entry_key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data); |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
32 static gboolean on_tree_view_key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data); |
|
2797
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
33 static gboolean on_tree_view_button_pressed(GtkWidget *widget, GdkEventButton *event, gpointer data); |
| 2735 | 34 |
|
2795
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
35 static streamdir_gui_t* find_streamdir_gui_by_name(gchar *name); |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
36 //static streamdir_gui_t* find_streamdir_gui_by_tree_view(GtkTreeView *tree_view); todo: remove this |
|
2795
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
37 static streamdir_gui_t* find_streamdir_gui_by_table(GtkTable *table); |
|
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
38 static streamdir_gui_t* find_streamdir_gui_by_streamdir(streamdir_t *streamdir); |
|
2782
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
39 static gboolean tree_view_search_equal_func(GtkTreeModel *model, gint column, const gchar *key, GtkTreeIter *iter, gpointer data); |
| 2735 | 40 |
| 41 static GtkWidget* notebook; | |
| 42 static GtkWidget* search_entry; | |
| 43 static GtkWidget* add_button; | |
| 44 static GtkWidget* streambrowser_window; | |
| 45 static GList* streamdir_gui_list; | |
|
2795
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
46 static GtkCellRenderer* cell_renderer_pixbuf; |
|
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
47 static GtkCellRenderer* cell_renderer_text; |
| 2735 | 48 |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
49 static gboolean tree_view_button_pressed = FALSE; |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
50 |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
51 |
| 2735 | 52 |
| 53 void streambrowser_win_init() | |
| 54 { | |
| 55 /* notebook */ | |
| 56 notebook = gtk_notebook_new(); | |
| 57 g_signal_connect(G_OBJECT(notebook), "switch-page", G_CALLBACK(on_notebook_switch_page), NULL); | |
| 58 gtk_widget_show(notebook); | |
| 59 | |
|
2764
d45b4beadf6c
Made "bluetooth" and "streambrowser" plugins translatable.
Stany HENRY <StrassBoy@gmail.com>
parents:
2757
diff
changeset
|
60 GtkWidget *search_label = gtk_label_new(_("Search:")); |
| 2735 | 61 gtk_widget_show(search_label); |
| 62 | |
| 63 /* search entry */ | |
| 64 search_entry = gtk_entry_new(); | |
|
2782
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
65 g_signal_connect(G_OBJECT(search_entry), "key-press-event", G_CALLBACK(on_search_entry_key_pressed), NULL); |
| 2735 | 66 gtk_widget_show(search_entry); |
| 67 | |
| 68 GtkWidget *hbox1 = gtk_hbox_new(FALSE, 0); | |
| 69 gtk_box_pack_start(GTK_BOX(hbox1), search_label, FALSE, TRUE, 3); | |
| 70 gtk_box_pack_start(GTK_BOX(hbox1), search_entry, TRUE, TRUE, 3); | |
| 71 gtk_widget_show(hbox1); | |
| 72 | |
| 73 /* add button */ | |
| 74 add_button = gtk_button_new_from_stock(GTK_STOCK_ADD); | |
| 75 g_signal_connect(G_OBJECT(add_button), "clicked", G_CALLBACK(on_add_button_clicked), NULL); | |
| 76 gtk_widget_show(add_button); | |
| 77 | |
| 78 GtkWidget *vbox1 = gtk_vbox_new(FALSE, 3); | |
| 79 gtk_box_pack_start(GTK_BOX(vbox1), notebook, TRUE, TRUE, 0); | |
| 80 gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, TRUE, 0); | |
| 81 gtk_box_pack_start(GTK_BOX(vbox1), add_button, FALSE, TRUE, 0); | |
| 82 gtk_widget_show(vbox1); | |
| 83 | |
| 84 /* streambrowser window */ | |
| 85 streambrowser_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
|
2764
d45b4beadf6c
Made "bluetooth" and "streambrowser" plugins translatable.
Stany HENRY <StrassBoy@gmail.com>
parents:
2757
diff
changeset
|
86 gtk_window_set_title(GTK_WINDOW(streambrowser_window), _("Stream browser")); |
| 2735 | 87 gtk_window_set_position(GTK_WINDOW(streambrowser_window), GTK_WIN_POS_CENTER); |
| 88 gtk_window_set_default_size(GTK_WINDOW(streambrowser_window), 700, 400); | |
|
2791
f9c6a9cb442e
streambrowser has now an icon
Calin Crisan ccrisan@gmail.com
parents:
2790
diff
changeset
|
89 gtk_window_set_icon_from_file(GTK_WINDOW(streambrowser_window), STREAMBROWSER_ICON, NULL); |
| 2735 | 90 g_signal_connect(G_OBJECT(streambrowser_window), "delete-event", G_CALLBACK(gtk_widget_hide_on_delete), streambrowser_window); |
| 91 gtk_container_add(GTK_CONTAINER(streambrowser_window), vbox1); | |
| 92 | |
| 93 /* others */ | |
| 94 cell_renderer_pixbuf = gtk_cell_renderer_pixbuf_new(); | |
| 95 cell_renderer_text = gtk_cell_renderer_text_new(); | |
| 96 } | |
| 97 | |
| 98 void streambrowser_win_done() | |
| 99 { | |
| 100 } | |
| 101 | |
| 102 void streambrowser_win_show() | |
| 103 { | |
| 104 gtk_widget_show(streambrowser_window); | |
| 105 } | |
| 106 | |
| 107 void streambrowser_win_hide() | |
| 108 { | |
| 109 gtk_widget_hide(streambrowser_window); | |
| 110 } | |
| 111 | |
| 112 void streambrowser_win_set_streamdir(streamdir_t *streamdir, gchar *icon_filename) | |
| 113 { | |
| 114 GtkWidget *tree_view = NULL; | |
| 115 | |
| 116 /* search for an old instance of this streamdir and replace it */ | |
| 117 streamdir_gui_t *streamdir_gui = find_streamdir_gui_by_name(streamdir->name); | |
| 118 if (streamdir_gui != NULL) { | |
| 119 streamdir_delete(streamdir_gui->streamdir); | |
| 120 streamdir_gui->streamdir = streamdir; | |
| 121 tree_view = streamdir_gui->tree_view; | |
| 122 } | |
| 123 /* if no older instance of this streamdir has been found, we add a brand new one */ | |
| 124 else { | |
| 125 streamdir_gui = g_malloc(sizeof(streamdir_gui_t)); | |
| 126 | |
| 127 tree_view = gtk_streamdir_tree_view_new(); | |
| 128 | |
| 129 GtkWidget *table = gtk_streamdir_table_new(tree_view); | |
| 130 gtk_widget_show_all(table); | |
| 131 | |
| 132 GtkWidget *label = gtk_label_new_with_icon(icon_filename, streamdir->name); | |
| 133 gtk_widget_show_all(label); | |
| 134 | |
| 135 streamdir_gui->streamdir = streamdir; | |
| 136 streamdir_gui->tree_view = tree_view; | |
| 137 streamdir_gui->table = table; | |
| 138 | |
| 139 streamdir_gui_list = g_list_append(streamdir_gui_list, streamdir_gui); | |
| 140 | |
| 141 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table, label); | |
| 142 } | |
| 143 | |
| 144 /* fill the tree with categories */ | |
| 145 GtkTreeIter iter; | |
| 146 GtkTreeStore *store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(tree_view))); | |
| 147 | |
| 148 gtk_tree_store_clear(store); | |
| 149 | |
| 150 int i, count = category_get_count(streamdir); | |
| 151 category_t *category; | |
| 152 for (i = 0; i < count; i++) { | |
| 153 category = category_get_by_index(streamdir, i); | |
| 154 | |
| 155 gtk_tree_store_append(store, &iter, NULL); | |
|
2790
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
156 gtk_tree_store_set(store, &iter, 0, "gtk-directory", 1, category->name, 2, "", -1); |
| 2735 | 157 } |
| 158 } | |
| 159 | |
| 160 void streambrowser_win_set_category(streamdir_t *streamdir, category_t *category) | |
| 161 { | |
| 162 streamdir_gui_t *streamdir_gui = find_streamdir_gui_by_name(streamdir->name); | |
| 163 if (streamdir_gui == NULL) { | |
| 164 failure("gui: streambrowser_win_set_category() called with non-existent streamdir\n"); | |
| 165 return; | |
| 166 } | |
| 167 | |
| 168 GtkTreeView *tree_view = GTK_TREE_VIEW(streamdir_gui->tree_view); | |
| 169 GtkTreeStore *store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(tree_view))); | |
| 170 GtkTreePath *path; | |
| 171 GtkTreeIter iter, new_iter; | |
| 172 | |
| 173 /* clear all the previously added streaminfo in this category */ | |
| 174 path = gtk_tree_path_new_from_indices(category_get_index(streamdir, category), 0, -1); | |
| 175 if (gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path)) { | |
| 176 while (gtk_tree_store_remove(store, &iter)) | |
| 177 ; | |
| 178 } | |
| 179 | |
| 180 /* find the corresponding category tree iter */ | |
| 181 path = gtk_tree_path_new_from_indices(category_get_index(streamdir, category), -1); | |
| 182 if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path)) | |
| 183 return; | |
| 184 | |
| 185 /* append the new streaminfos to the current category / iter */ | |
| 186 int i, count = streaminfo_get_count(category); | |
| 187 streaminfo_t *streaminfo; | |
| 188 for (i = 0; i < count; i++) { | |
| 189 streaminfo = streaminfo_get_by_index(category, i); | |
| 190 | |
| 191 gtk_tree_store_append(store, &new_iter, &iter); | |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
192 gtk_tree_store_set(store, &new_iter, 0, "gtk-media-play", 1, streaminfo->name, 2, streaminfo->current_track, -1); |
| 2735 | 193 } |
|
2815
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
194 |
|
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
195 gtk_tree_path_free(path); |
| 2735 | 196 } |
| 197 | |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
198 void streambrowser_win_set_streaminfo(streamdir_t *streamdir, category_t *category, streaminfo_t *streaminfo) |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
199 { |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
200 streamdir_gui_t *streamdir_gui = find_streamdir_gui_by_name(streamdir->name); |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
201 if (streamdir_gui == NULL) { |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
202 failure("gui: streambrowser_win_set_category() called with non-existent streamdir\n"); |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
203 return; |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
204 } |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
205 |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
206 GtkTreeView *tree_view = GTK_TREE_VIEW(streamdir_gui->tree_view); |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
207 GtkTreeStore *store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(tree_view))); |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
208 GtkTreePath *path; |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
209 GtkTreeIter iter, new_iter; |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
210 |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
211 /* find the corresponding streaminfo tree iter */ |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
212 path = gtk_tree_path_new_from_indices(category_get_index(streamdir, category), streaminfo_get_index(category, streaminfo), -1); |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
213 if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path)) |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
214 return; |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
215 |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
216 /* update the streaminfo*/ |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
217 gtk_tree_store_set(store, &new_iter, 0, "gtk-media-play", 1, streaminfo->name, 2, streaminfo->current_track, -1); |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
218 |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
219 gtk_tree_path_free(path); |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
220 } |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
221 |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
222 void streambrowser_win_set_update_function(void (*function) (streamdir_t *streamdir, category_t *category, streaminfo_t *streaminfo, gboolean add_to_playlist)) |
| 2735 | 223 { |
| 224 update_function = function; | |
| 225 } | |
| 226 | |
|
2790
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
227 void streambrowser_win_set_category_state(streamdir_t *streamdir, category_t *category, gboolean fetching) |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
228 { |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
229 streamdir_gui_t *streamdir_gui = find_streamdir_gui_by_streamdir(streamdir); |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
230 GtkTreeView *tree_view = GTK_TREE_VIEW(streamdir_gui->tree_view); |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
231 GtkTreeStore *store = GTK_TREE_STORE(gtk_tree_view_get_model(tree_view)); |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
232 GtkTreePath *path; |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
233 GtkTreeIter iter; |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
234 |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
235 /* find the corresponding category tree iter */ |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
236 path = gtk_tree_path_new_from_indices(category_get_index(streamdir, category), -1); |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
237 if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path)) |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
238 return; |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
239 |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
240 if (fetching) { |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
241 gchar temp[DEF_STRING_LEN]; |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
242 sprintf(temp, "<span style='italic' weight='heavy'>%s</span>", category->name); |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
243 gtk_tree_store_set(store, &iter, 0, "gtk-refresh", 1, temp, 2, "", -1); |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
244 } |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
245 else { |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
246 gtk_tree_store_set(store, &iter, 0, "gtk-directory", 1, category->name, 2, "", -1); |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
247 } |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
248 } |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
249 |
|
2797
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
250 void streambrowser_win_set_streaminfo_state(streamdir_t *streamdir, category_t *category, streaminfo_t *streaminfo, gboolean fetching) |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
251 { |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
252 streamdir_gui_t *streamdir_gui = find_streamdir_gui_by_streamdir(streamdir); |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
253 GtkTreeView *tree_view = GTK_TREE_VIEW(streamdir_gui->tree_view); |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
254 GtkTreeStore *store = GTK_TREE_STORE(gtk_tree_view_get_model(tree_view)); |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
255 GtkTreePath *path; |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
256 GtkTreeIter iter; |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
257 |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
258 /* find the corresponding category tree iter */ |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
259 path = gtk_tree_path_new_from_indices(category_get_index(streamdir, category), streaminfo_get_index(category, streaminfo), -1); |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
260 if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, path)) |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
261 return; |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
262 |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
263 if (fetching) { |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
264 gchar temp[DEF_STRING_LEN]; |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
265 sprintf(temp, "<span style='italic' weight='heavy'>%s</span>", streaminfo->name); |
|
2819
2f7194224392
streams no longer disappear when added to playlist
Calin Crisan ccrisan@gmail.com
parents:
2817
diff
changeset
|
266 |
|
2f7194224392
streams no longer disappear when added to playlist
Calin Crisan ccrisan@gmail.com
parents:
2817
diff
changeset
|
267 gtk_tree_store_set(store, &iter, 0, "gtk-refresh", 1, temp, 2, streaminfo->current_track, -1); |
|
2797
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
268 } |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
269 else { |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
270 gtk_tree_store_set(store, &iter, 0, "gtk-media-play", 1, streaminfo->name, 2, streaminfo->current_track, -1); |
|
2797
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
271 } |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
272 } |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
273 |
| 2735 | 274 static GtkWidget* gtk_label_new_with_icon(gchar *icon_filename, gchar *label_text) |
| 275 { | |
| 276 GtkWidget *hbox = gtk_hbox_new(FALSE, 1); | |
| 277 GtkWidget *label = gtk_label_new(label_text); | |
| 278 GtkWidget *icon = gtk_image_new_from_file(icon_filename); | |
| 279 | |
| 280 gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, TRUE, 0); | |
| 281 gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); | |
| 282 | |
| 283 return hbox; | |
| 284 } | |
| 285 | |
| 286 static GtkWidget *gtk_streamdir_tree_view_new() | |
| 287 { | |
| 288 GtkWidget *tree_view = gtk_tree_view_new(); | |
|
2757
4ec0e13208de
added shoutcast icon; fixed some small bugs
Calin Crisan ccrisan@gmail.com
parents:
2735
diff
changeset
|
289 |
|
2790
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
290 GtkTreeStore *store = gtk_tree_store_new(3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); |
| 2735 | 291 gtk_tree_view_set_model(GTK_TREE_VIEW(tree_view), GTK_TREE_MODEL(store)); |
| 292 | |
|
2757
4ec0e13208de
added shoutcast icon; fixed some small bugs
Calin Crisan ccrisan@gmail.com
parents:
2735
diff
changeset
|
293 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree_view), TRUE); |
|
2782
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
294 gtk_tree_view_set_search_entry(GTK_TREE_VIEW(tree_view), GTK_ENTRY(search_entry)); |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
295 gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(tree_view), tree_view_search_equal_func, NULL, NULL); |
|
2795
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
296 gtk_tree_view_set_search_column(GTK_TREE_VIEW(tree_view), 1); |
|
2782
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
297 g_signal_connect(G_OBJECT(tree_view), "key-press-event", G_CALLBACK(on_tree_view_key_pressed), NULL); |
|
2795
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
298 g_signal_connect(G_OBJECT(tree_view), "cursor-changed", G_CALLBACK(on_tree_view_cursor_changed), NULL); |
|
2797
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
299 g_signal_connect(G_OBJECT(tree_view), "button-press-event", G_CALLBACK(on_tree_view_button_pressed), NULL); |
| 2735 | 300 |
|
2783
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
301 GtkTreeViewColumn *column = gtk_tree_view_column_new(); |
|
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
302 gtk_tree_view_column_pack_start(column, cell_renderer_pixbuf, TRUE); |
|
2790
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
303 gtk_tree_view_column_add_attribute(column, cell_renderer_pixbuf, "stock-id", 0); |
|
2783
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
304 gtk_tree_view_column_set_resizable(column, TRUE); |
|
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
305 gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), column); |
|
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
306 |
|
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
307 column = gtk_tree_view_column_new(); |
|
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
308 gtk_tree_view_column_pack_start(column, cell_renderer_text, TRUE); |
|
2790
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
309 gtk_tree_view_column_add_attribute(column, cell_renderer_text, "markup", 1); |
|
2783
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
310 gtk_tree_view_column_set_resizable(column, TRUE); |
|
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
311 gtk_tree_view_column_set_title(column, _("Stream name")); |
|
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
312 gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), column); |
|
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
313 |
|
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
314 column = gtk_tree_view_column_new(); |
|
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
315 gtk_tree_view_column_pack_start(column, cell_renderer_text, TRUE); |
|
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
316 gtk_tree_view_column_add_attribute(column, cell_renderer_text, "text", 2); |
|
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
317 gtk_tree_view_column_set_resizable(column, TRUE); |
|
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
318 gtk_tree_view_column_set_title(column, _("Now playing")); |
|
8be380729806
made columns resizable in streambrowser's main win
Calin Crisan ccrisan@gmail.com
parents:
2782
diff
changeset
|
319 gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), column); |
|
2757
4ec0e13208de
added shoutcast icon; fixed some small bugs
Calin Crisan ccrisan@gmail.com
parents:
2735
diff
changeset
|
320 |
| 2735 | 321 return tree_view; |
| 322 } | |
| 323 | |
| 324 static GtkWidget* gtk_streamdir_table_new(GtkWidget *tree_view) | |
| 325 { | |
| 326 GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL); | |
| 327 gtk_container_add(GTK_CONTAINER(scrolled_window), tree_view); | |
| 328 | |
| 329 GtkWidget *table = gtk_table_new(1, 1, FALSE); | |
| 330 gtk_table_attach(GTK_TABLE(table), scrolled_window, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); | |
| 331 | |
| 332 return table; | |
| 333 } | |
| 334 | |
| 335 static gboolean on_notebook_switch_page(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer data) | |
| 336 { | |
| 337 if (page_num < 0) | |
| 338 return FALSE; | |
|
2815
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
339 |
|
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
340 /* only enable searching in the current tree (tab) */ |
| 2735 | 341 |
|
2815
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
342 streamdir_gui_t *streamdir_gui; |
|
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
343 int i; |
|
2757
4ec0e13208de
added shoutcast icon; fixed some small bugs
Calin Crisan ccrisan@gmail.com
parents:
2735
diff
changeset
|
344 |
|
2815
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
345 for (i = 0; i < g_list_length(streamdir_gui_list); i++) { |
|
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
346 streamdir_gui = g_list_nth_data(streamdir_gui_list, i); |
|
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
347 |
|
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
348 if (i == page_num) |
|
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
349 gtk_tree_view_set_search_column(GTK_TREE_VIEW(streamdir_gui->tree_view), 1); |
|
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
350 else |
|
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
351 gtk_tree_view_set_search_column(GTK_TREE_VIEW(streamdir_gui->tree_view), -1); |
|
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
352 } |
|
2757
4ec0e13208de
added shoutcast icon; fixed some small bugs
Calin Crisan ccrisan@gmail.com
parents:
2735
diff
changeset
|
353 |
|
4ec0e13208de
added shoutcast icon; fixed some small bugs
Calin Crisan ccrisan@gmail.com
parents:
2735
diff
changeset
|
354 /* clear the search box */ |
|
4ec0e13208de
added shoutcast icon; fixed some small bugs
Calin Crisan ccrisan@gmail.com
parents:
2735
diff
changeset
|
355 gtk_entry_set_text(GTK_ENTRY(search_entry), ""); |
| 2735 | 356 |
| 357 return TRUE; | |
| 358 } | |
| 359 | |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
360 |
| 2735 | 361 static gboolean on_tree_view_cursor_changed(GtkTreeView *tree_view, gpointer data) |
| 362 { | |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
363 /* only do the refresh if this cursor change occured due to a mouse click */ |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
364 if (!tree_view_button_pressed) |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
365 return FALSE; |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
366 |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
367 tree_view_button_pressed = FALSE; |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
368 |
| 2735 | 369 GtkTreePath *path; |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
370 GtkTreeViewColumn *focus_column; |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
371 |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
372 /* get the currently selected tree view */ |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
373 GtkWidget *table = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook))); |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
374 streamdir_gui_t *streamdir_gui = find_streamdir_gui_by_table(GTK_TABLE(table)); |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
375 if (streamdir_gui == NULL) |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
376 return FALSE; |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
377 |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
378 /* get the currently selected path in the tree */ |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
379 gtk_tree_view_get_cursor(tree_view, &path, &focus_column); |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
380 |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
381 if (path == NULL || gtk_tree_path_get_depth(path) == 0) |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
382 return FALSE; |
| 2735 | 383 |
| 384 gint *indices = gtk_tree_path_get_indices(path); | |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
385 int category_index = indices[0]; |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
386 streamdir_t *streamdir = streamdir_gui->streamdir; |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
387 category_t *category = category_get_by_index(streamdir_gui->streamdir, category_index); |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
388 |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
389 /* if the selected item is a category */ |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
390 if (gtk_tree_path_get_depth(path) == 1) { |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
391 if (!gtk_tree_view_row_expanded(tree_view, path)) { |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
392 gtk_entry_set_text(GTK_ENTRY(search_entry), ""); |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
393 update_function(streamdir, category, NULL, FALSE); |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
394 } |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
395 |
| 2735 | 396 gtk_tree_path_free(path); |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
397 } |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
398 /* if the selected item is a streaminfo */ |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
399 else { |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
400 int streaminfo_index = indices[1]; |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
401 |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
402 gtk_tree_path_free(path); |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
403 |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
404 /* get the currently selected stream (info) */ |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
405 streaminfo_t *streaminfo = streaminfo_get_by_index(category, streaminfo_index); |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
406 |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
407 gtk_entry_set_text(GTK_ENTRY(search_entry), ""); |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
408 update_function(streamdir, category, streaminfo, FALSE); |
| 2735 | 409 } |
| 410 | |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
411 return FALSE; |
| 2735 | 412 } |
| 413 | |
|
2797
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
414 static gboolean on_tree_view_button_pressed(GtkWidget *widget, GdkEventButton *event, gpointer data) |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
415 { |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
416 /* double click adds the currently selected stream to the playlist */ |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
417 if (event->type == GDK_2BUTTON_PRESS) { |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
418 tree_view_button_pressed = FALSE; |
|
2797
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
419 on_add_button_clicked(NULL, NULL); |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
420 } |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
421 /* single click triggers a refresh of the selected item */ |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
422 else { |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
423 // todo: separate single from double click somehow |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
424 tree_view_button_pressed = TRUE; |
|
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
425 } |
|
2797
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
426 |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
427 return FALSE; |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
428 } |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
429 |
| 2735 | 430 static gboolean on_add_button_clicked(GtkButton *button, gpointer data) |
| 431 { | |
| 432 GtkTreePath *path; | |
| 433 GtkTreeViewColumn *focus_column; | |
| 434 | |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
435 /* get the currently selected tree view */ |
| 2735 | 436 GtkWidget *table = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook))); |
| 437 streamdir_gui_t *streamdir_gui = find_streamdir_gui_by_table(GTK_TABLE(table)); | |
| 438 if (streamdir_gui == NULL) | |
| 439 return TRUE; | |
| 440 | |
|
2797
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
441 GtkTreeView *tree_view = GTK_TREE_VIEW(streamdir_gui->tree_view); |
| 2735 | 442 |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
443 /* get the currently selected path in the tree */ |
|
2797
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
444 gtk_tree_view_get_cursor(tree_view, &path, &focus_column); |
| 2735 | 445 |
| 446 if (path == NULL) | |
| 447 return TRUE; | |
| 448 | |
| 449 gint *indices = gtk_tree_path_get_indices(path); | |
|
2797
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
450 if (gtk_tree_path_get_depth(path) == 1) { |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
451 if (gtk_tree_view_row_expanded(tree_view, path)) |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
452 gtk_tree_view_collapse_row(tree_view, path); |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
453 else |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
454 gtk_tree_view_expand_row(tree_view, path, FALSE); |
|
11fb1503ee4b
double click adds stream to playlist; visual feedback when adding streams
Calin Crisan ccrisan@gmail.com
parents:
2795
diff
changeset
|
455 |
| 2735 | 456 gtk_tree_path_free(path); |
| 457 return TRUE; | |
| 458 } | |
| 459 | |
| 460 int category_index = indices[0]; | |
| 461 int streaminfo_index = indices[1]; | |
| 462 | |
| 463 gtk_tree_path_free(path); | |
| 464 | |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
465 /* get the currently selected stream (info) */ |
| 2735 | 466 streamdir_t *streamdir = streamdir_gui->streamdir; |
| 467 category_t *category = category_get_by_index(streamdir_gui->streamdir, category_index); | |
| 468 streaminfo_t *streaminfo = streaminfo_get_by_index(category, streaminfo_index); | |
| 469 | |
|
2795
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
470 gtk_entry_set_text(GTK_ENTRY(search_entry), ""); |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
471 update_function(streamdir, category, streaminfo, TRUE); |
| 2735 | 472 |
| 473 return TRUE; | |
| 474 } | |
| 475 | |
|
2782
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
476 static gboolean on_search_entry_key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data) |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
477 { |
|
2795
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
478 if (event->keyval == GDK_Return || event->keyval == GDK_KP_Enter) { |
|
2782
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
479 on_add_button_clicked(GTK_BUTTON(add_button), NULL); |
|
2822
e883536cefe0
implemented xiph categories/genres, xiph is now usable
Calin Crisan ccrisan@gmail.com
parents:
2819
diff
changeset
|
480 return TRUE; |
|
2795
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
481 } |
|
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
482 |
|
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
483 if (event->keyval == GDK_Escape) { |
|
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
484 gtk_entry_set_text(GTK_ENTRY(search_entry), ""); |
|
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
485 return FALSE; |
|
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
486 } |
|
2782
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
487 |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
488 return FALSE; |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
489 } |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
490 |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
491 static gboolean on_tree_view_key_pressed(GtkWidget *widget, GdkEventKey *event, gpointer data) |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
492 { |
|
2817
779125caa3ac
added xiph icon; smaller icons for streamdirs; fetch queue fix; up/down keys in tree view no longer focus the search entry
Calin Crisan ccrisan@gmail.com
parents:
2815
diff
changeset
|
493 if (event->keyval == GDK_Down || event->keyval == GDK_Up) |
|
779125caa3ac
added xiph icon; smaller icons for streamdirs; fetch queue fix; up/down keys in tree view no longer focus the search entry
Calin Crisan ccrisan@gmail.com
parents:
2815
diff
changeset
|
494 return FALSE; |
|
2822
e883536cefe0
implemented xiph categories/genres, xiph is now usable
Calin Crisan ccrisan@gmail.com
parents:
2819
diff
changeset
|
495 else |
|
e883536cefe0
implemented xiph categories/genres, xiph is now usable
Calin Crisan ccrisan@gmail.com
parents:
2819
diff
changeset
|
496 if (event->keyval == GDK_Return || event->keyval == GDK_KP_Enter) { |
|
e883536cefe0
implemented xiph categories/genres, xiph is now usable
Calin Crisan ccrisan@gmail.com
parents:
2819
diff
changeset
|
497 on_add_button_clicked(GTK_BUTTON(add_button), NULL); |
|
e883536cefe0
implemented xiph categories/genres, xiph is now usable
Calin Crisan ccrisan@gmail.com
parents:
2819
diff
changeset
|
498 return FALSE; |
|
e883536cefe0
implemented xiph categories/genres, xiph is now usable
Calin Crisan ccrisan@gmail.com
parents:
2819
diff
changeset
|
499 } |
|
2817
779125caa3ac
added xiph icon; smaller icons for streamdirs; fetch queue fix; up/down keys in tree view no longer focus the search entry
Calin Crisan ccrisan@gmail.com
parents:
2815
diff
changeset
|
500 |
|
2782
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
501 gtk_widget_grab_focus(search_entry); |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
502 on_search_entry_key_pressed(widget, event, data); |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
503 |
|
2817
779125caa3ac
added xiph icon; smaller icons for streamdirs; fetch queue fix; up/down keys in tree view no longer focus the search entry
Calin Crisan ccrisan@gmail.com
parents:
2815
diff
changeset
|
504 return TRUE; |
|
2782
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
505 } |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
506 |
| 2735 | 507 static streamdir_gui_t *find_streamdir_gui_by_name(gchar *name) |
| 508 { | |
| 509 GList *iterator; | |
| 510 streamdir_gui_t *streamdir_gui; | |
| 511 | |
| 512 for (iterator = g_list_first(streamdir_gui_list); iterator != NULL; iterator = g_list_next(iterator)) { | |
| 513 streamdir_gui = iterator->data; | |
| 514 | |
| 515 if (strcmp(streamdir_gui->streamdir->name, name) == 0) | |
| 516 return streamdir_gui; | |
| 517 } | |
| 518 | |
| 519 return NULL; | |
| 520 } | |
| 521 | |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
522 /* todo: remove this |
| 2735 | 523 static streamdir_gui_t *find_streamdir_gui_by_tree_view(GtkTreeView *tree_view) |
| 524 { | |
| 525 GList *iterator; | |
| 526 streamdir_gui_t *streamdir_gui; | |
| 527 | |
| 528 for (iterator = g_list_first(streamdir_gui_list); iterator != NULL; iterator = g_list_next(iterator)) { | |
| 529 streamdir_gui = iterator->data; | |
| 530 | |
| 531 if ((void *) streamdir_gui->tree_view == (void *) tree_view) | |
| 532 return streamdir_gui; | |
| 533 } | |
| 534 | |
| 535 return NULL; | |
| 536 } | |
|
2889
6c53f9fa9029
Backed out changeset 59ff744e1e23
Matti Hamalainen <ccr@tnsp.org>
parents:
2822
diff
changeset
|
537 */ |
| 2735 | 538 |
| 539 static streamdir_gui_t *find_streamdir_gui_by_table(GtkTable *table) | |
| 540 { | |
| 541 GList *iterator; | |
| 542 streamdir_gui_t *streamdir_gui; | |
| 543 | |
| 544 for (iterator = g_list_first(streamdir_gui_list); iterator != NULL; iterator = g_list_next(iterator)) { | |
| 545 streamdir_gui = iterator->data; | |
| 546 | |
| 547 if ((void *) streamdir_gui->table == (void *) table) | |
| 548 return streamdir_gui; | |
| 549 } | |
| 550 | |
| 551 return NULL; | |
| 552 } | |
| 553 | |
|
2790
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
554 static streamdir_gui_t* find_streamdir_gui_by_streamdir(streamdir_t *streamdir) |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
555 { |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
556 GList *iterator; |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
557 streamdir_gui_t *streamdir_gui; |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
558 |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
559 for (iterator = g_list_first(streamdir_gui_list); iterator != NULL; iterator = g_list_next(iterator)) { |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
560 streamdir_gui = iterator->data; |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
561 |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
562 if ((void *) streamdir_gui->streamdir == (void *) streamdir) |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
563 return streamdir_gui; |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
564 } |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
565 |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
566 return NULL; |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
567 } |
|
c156102069ae
background fetching of streaming info is now indicated in gui
Calin Crisan ccrisan@gmail.com
parents:
2783
diff
changeset
|
568 |
|
2782
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
569 static gboolean tree_view_search_equal_func(GtkTreeModel *model, gint column, const gchar *key, GtkTreeIter *iter, gpointer data) |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
570 { |
|
2815
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
571 if (column == -1) |
|
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
572 return TRUE; |
|
cc6f02424609
added initial support for xiph streaming directory; small bug fixes & code cleanups
Calin Crisan ccrisan@gmail.com
parents:
2797
diff
changeset
|
573 |
|
2782
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
574 GValue value = {0, }; |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
575 gboolean ret; |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
576 |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
577 gtk_tree_model_get_value(model, iter, column, &value); |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
578 const gchar *string = g_value_get_string(&value); |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
579 |
|
2795
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
580 if (string == NULL || string[0] == '\0' || key == NULL || key[0] == '\0') |
|
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
581 ret = TRUE; |
|
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
582 |
|
4c9db0b2194f
added strcasestr implementation; improved searching and updating
Calin Crisan ccrisan@gmail.com
parents:
2791
diff
changeset
|
583 ret = !mystrcasestr(string, key); |
|
2782
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
584 |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
585 g_value_unset(&value); |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
586 |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
587 return ret; |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
588 } |
|
c5005707a575
added basic search functionality
Calin Crisan ccrisan@gmail.com
parents:
2764
diff
changeset
|
589 |
