Enlightenment CVS committal Author : lok Project : e17 Module : apps/emphasis
Dir : e17/apps/emphasis/src/bin Modified Files: Makefile.am emphasis_callbacks.c emphasis_callbacks.h emphasis_config.c emphasis_convert.c emphasis_cover_db.c emphasis_data_list.c emphasis_gui.c emphasis_gui.h emphasis_media.c emphasis_media.h emphasis_misc.c emphasis_misc.h emphasis_mpc.c emphasis_mpc.h emphasis_player.c emphasis_player.h Log Message: *Aji's new sub-mode "tiny", works with small mode: - Tiny and Small mode: . A right-click on cover or textview switch to tiny/small mode. - Tiny mode: . A left-click on cover or textview show/hide concurrent window. . Close window hide it, close both to quit. . A middle-click on cover or textview show/hide medialib window. . Special Cover Zone: , A left-click at bottom-left corner play prev song. , A left-click at bottom-middle zone play/pause song. , A left-click at bootom-right corner play next zone. *Some autotfoo corrections *No more scary warnings *Various fixes =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/Makefile.am,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- Makefile.am 30 Dec 2006 13:46:38 -0000 1.6 +++ Makefile.am 9 Mar 2007 18:23:18 -0000 1.7 @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in AM_CFLAGS = \ --Wall -W -g -D_GNU_SOURCE $(my_includes) +-Wall -W -g -D_GNU_SOURCE @ECORE_CFLAGS@ @ETK_CFLAGS@ @ENHANCE_CFLAGS@ @libmpd_CFLAGS@ @XML2_CFLAGS@ bin_PROGRAMS = emphasis @@ -37,6 +37,6 @@ emphasis_data_list.c \ emphasis_search.c -emphasis_LDADD = @my_libs@ +emphasis_LDADD = @ECORE_LIBS@ @ETK_LIBS@ @ENHANCE_LIBS@ @libmpd_LIBS@ @XML2_LIBS@ MAINTAINERCLEANFILES = Makefile.in =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/emphasis_callbacks.c,v retrieving revision 1.22 retrieving revision 1.23 diff -u -3 -r1.22 -r1.23 --- emphasis_callbacks.c 9 Mar 2007 05:09:53 -0000 1.22 +++ emphasis_callbacks.c 9 Mar 2007 18:23:18 -0000 1.23 @@ -19,37 +19,44 @@ /* Save the current config settings */ config = config_load(); - etk_widget_geometry_get(ETK_WIDGET(player->full.window), - &(config->geometry.x), &(config->geometry.y), - &(config->geometry.w), &(config->geometry.h)); - - etk_widget_geometry_get(ETK_WIDGET(player->media.window), - NULL, NULL, - &(config->geometry.media_w), - &(config->geometry.media_h)); - - config->colwidth.title = - etk_tree_col_width_get(ETK_TREE_COL_GET(player->media.pls, 0)); - config->colwidth.time = - etk_tree_col_width_get(ETK_TREE_COL_GET(player->media.pls, 1)); - config->colwidth.artist = - etk_tree_col_width_get(ETK_TREE_COL_GET(player->media.pls, 2)); - config->colwidth.album = - etk_tree_col_width_get(ETK_TREE_COL_GET(player->media.pls, 3)); - config->media_paned = etk_paned_position_get(ETK_PANED(player->media.paned)); - - config->mode = player->state; - config->pls_show = - etk_toggle_button_active_get(ETK_TOGGLE_BUTTON(player->small.media)); - config->crossfade = mpc_get_crossfade(); - - if(config->stop_on_exit) + if(config) { - cb_button_stop_clicked(NULL, NULL); - } + if(player) + { + etk_widget_geometry_get(ETK_WIDGET(player->full.window), + &(config->geometry.x), &(config->geometry.y), + &(config->geometry.w), &(config->geometry.h)); + + etk_widget_geometry_get(ETK_WIDGET(player->media.window), + NULL, NULL, + &(config->geometry.media_w), + &(config->geometry.media_h)); + + config->colwidth.title = + etk_tree_col_width_get(ETK_TREE_COL_GET(player->media.pls, 0)); + config->colwidth.time = + etk_tree_col_width_get(ETK_TREE_COL_GET(player->media.pls, 1)); + config->colwidth.artist = + etk_tree_col_width_get(ETK_TREE_COL_GET(player->media.pls, 2)); + config->colwidth.album = + etk_tree_col_width_get(ETK_TREE_COL_GET(player->media.pls, 3)); + config->media_paned = + etk_paned_position_get(ETK_PANED(player->media.paned)); + + config->mode = player->state; + config->pls_show = + etk_toggle_button_active_get(ETK_TOGGLE_BUTTON(player->small.media)); + } /* if player */ + config->crossfade = mpc_get_crossfade(); + + if(config->stop_on_exit) + { + cb_button_stop_clicked(NULL, NULL); + } - config_save(config); - config_free(config); + config_save(config); + config_free(config); + } /* if config */ mpc_disconnect(); ecore_config_shutdown(); @@ -65,12 +72,54 @@ Emphasis_Player_Gui *player; player = data; - etk_toggle_button_toggle(ETK_TOGGLE_BUTTON(player->small.media)); + if(data) etk_toggle_button_toggle(ETK_TOGGLE_BUTTON(player->small.media)); etk_widget_hide(ETK_WIDGET(object)); return ETK_TRUE; } +Etk_Bool +cb_pack_quit(Etk_Object *object, void *data) +{ + Emphasis_Player_Gui *player; + player = data; + + if(data && player->small.packed == ETK_FALSE) + { + Etk_Widget *win = NULL; + + win = (object == (Etk_Object*)player->small.cov.window) ? + player->small.ctr.window : player->small.cov.window; + if (etk_widget_is_visible(win) == ETK_TRUE) + { return cb_window_hide(object, data); } + + etk_widget_hide(player->small.cov.window); + etk_widget_hide(player->small.ctr.window); + + etk_container_remove(ETK_CONTAINER(player->small.cov.window), + player->small.cov.root); + etk_container_remove(ETK_CONTAINER(player->small.ctr.window), + player->small.ctr.root); + + etk_box_append(ETK_BOX(player->small.root), player->small.cov.root, + ETK_BOX_START, ETK_BOX_FILL, 0); + etk_box_append(ETK_BOX(player->small.root), player->small.ctr.root, + ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0); + + if(player->state == EMPHASIS_SMALL) + { cb_quit(NULL, player); } + } + return ETK_FALSE; +} + +Etk_Bool +cb_window_hide(Etk_Object *object, void *data) +{ + UNUSED(data); + etk_widget_hide(ETK_WIDGET(object)); + return ETK_TRUE; +} + /** * @brief Stop the playing */ @@ -138,6 +187,8 @@ Emphasis_Player_Gui *player; player = data; + if(!data) return; + if (player->state == EMPHASIS_FULL) { cb_switch_small(object, data); @@ -157,6 +208,8 @@ Etk_Bool checked; player = data; + if(!data) return; + checked = etk_toggle_button_active_get(ETK_TOGGLE_BUTTON(object)); @@ -180,6 +233,8 @@ Etk_Widget *progress; int x_click, widget_width; + if(event->button != 1) { return; } + progress = ETK_WIDGET(object); x_click = event->widget.x; @@ -196,7 +251,11 @@ UNUSED(event); Emphasis_Player_Gui *player; + if(event->button != 1) { return; } + player = data; + if(!data) return; + if (ETK_WIDGET(object) == player->full.sound_low || ETK_WIDGET(object) == player->small.sound_low) { @@ -235,6 +294,7 @@ char *artist; player = data; + if(!data) return; artist_sel = etk_tree_selected_rows_get(ETK_TREE(player->media.artist)); artist = etk_tree_row_data_get(evas_list_data(artist_sel)); @@ -278,7 +338,7 @@ char *artist_tag; player = data; - + if(!data) return; album_sel = etk_tree_selected_rows_get(ETK_TREE(player->media.album)); album_tag = etk_tree_row_data_get(evas_list_data(album_sel)); @@ -310,7 +370,6 @@ } /* FIXME wait for tree2 to support dnd */ -#if 0 /** * @brief Set a drag widget from a list of artist selected * @param data A common drag widget @@ -318,6 +377,7 @@ void cb_drag_artist(Etk_Object *object, void *data) { +#if 0 Etk_Widget *drag_menu, *menu_item; Etk_Drag *drag; Etk_Tree *tree; @@ -327,6 +387,8 @@ unsigned int num_types; Evas_List *playlist = NULL, *tmplist; + if(!data) return; + tree = ETK_TREE(object); drag = ETK_DRAG((ETK_WIDGET(tree))->drag); rowlist = etk_tree_selected_rows_get(tree); @@ -344,7 +406,7 @@ } else { - menu_item = etk_menu_item_new_with_label("All"); + menu_item = etk_menu_item_new_with_label(LABEL_MLIB_ALL); } etk_menu_shell_append(ETK_MENU_SHELL(drag_menu), @@ -365,6 +427,7 @@ evas_list_free(rowlist); types = calloc(1, sizeof(char)); + if(!types) return; num_types = 1; types[0] = strdup("Emphasis_Playlist"); @@ -373,6 +436,7 @@ etk_container_add(ETK_CONTAINER(drag), drag_menu); ((Emphasis_Player_Gui*)data)->media.drag = ETK_WIDGET(drag); +#endif } /** @@ -382,6 +446,7 @@ void cb_drag_album(Etk_Object *object, void *data) { +#if 0 Etk_Widget *drag_menu, *menu_item; Etk_Drag *drag; Etk_Tree *tree; @@ -391,6 +456,8 @@ unsigned int num_types; Evas_List *playlist = NULL, *tmplist; + if(!data) return; + tree = ETK_TREE(object); drag = ETK_DRAG((ETK_WIDGET(object))->drag); rowlist = etk_tree_selected_rows_get(tree); @@ -410,7 +477,7 @@ } else { - menu_item = etk_menu_item_new_with_label("All"); + menu_item = etk_menu_item_new_with_label(LABEL_MLIB_ALL); } etk_menu_shell_append(ETK_MENU_SHELL(drag_menu), @@ -444,6 +511,7 @@ } types = calloc(1, sizeof(char)); + if(!types) return; num_types = 1; types[0] = strdup("Emphasis_Playlist"); @@ -453,6 +521,7 @@ etk_container_add(ETK_CONTAINER(drag), drag_menu); ((Emphasis_Player_Gui*)data)->media.drag = ETK_WIDGET(drag); +#endif } /** @@ -463,6 +532,7 @@ void cb_drag_track(Etk_Object *object, void *data) { +#if 0 Etk_Widget *drag_menu, *menu_item; Etk_Drag *drag; Etk_Tree *tree; @@ -472,6 +542,8 @@ unsigned int num_types; Evas_List *playlist; + if(!data) return; + tree = ETK_TREE(object); drag = ETK_DRAG((ETK_WIDGET(object))->drag); @@ -492,6 +564,7 @@ } types = calloc(1, sizeof(char)); + if(!types) return; num_types = 1; types[0] = strdup("Emphasis_Playlist"); @@ -504,8 +577,8 @@ etk_container_add(ETK_CONTAINER(drag), drag_menu); ((Emphasis_Player_Gui*)data)->media.drag = ETK_WIDGET(drag); -} #endif +} /** * @brief Get the playlist draged. Add it to the current playlist. @@ -515,11 +588,14 @@ void cb_drop_song(Etk_Object *object, void *event, void *data) { +#if 0 UNUSED(event) Etk_Tree *tree; Etk_Drag *drag; Evas_List *list; + if(!data) return; + tree = ETK_TREE(object); drag = ETK_DRAG(((Emphasis_Player_Gui*)data)->media.drag); @@ -548,6 +624,7 @@ evaslist = evas_list_next(evaslist); } */ +#endif } /** @@ -561,6 +638,8 @@ Emphasis_Type et; char *str; + if(!data) return; + player = data; et = (Emphasis_Type) etk_object_data_get(object, "Emphasis_Type"); if ((event->button == 1) && (event->flags == ETK_MOUSE_DOUBLE_CLICK)) @@ -646,7 +725,7 @@ Emphasis_Player_Gui *player; char *str; - if (!event->string) + if (!event->string || !data) return; tree = ETK_TREE(object); @@ -655,6 +734,7 @@ if (!strcmp(event->key, "a") && event->modifiers == ETK_MODIFIER_CTRL) { + /* CTRL+a select all rows */ etk_tree_select_all(tree); if (object == ETK_OBJECT(player->media.track)) @@ -676,14 +756,12 @@ if (!strcmp(event->key, "r") && event->modifiers == ETK_MODIFIER_CTRL) { - int i, r; + int r; + /* selected randomly a row */ + /* We need an accessor here */ r = xrand(0, ETK_TREE(tree)->total_rows); - row = etk_tree_first_row_get(tree); - for (i=0; i<r; i++) - { - row = etk_tree_row_next_get(row); - } + row = etk_tree_nth_row_get(tree, r); etk_tree_row_select(row); etk_tree_row_scroll_to(row, ETK_TRUE); return; @@ -695,7 +773,8 @@ col = etk_tree_nth_col_get(tree, 0); -/**/ +/**/ + /* fast search section */ const char *cur_title, *base_title; char *title, *filter = NULL; int length; @@ -707,7 +786,23 @@ cur_title = etk_tree_col_title_get(col); type = (Emphasis_Type) etk_object_data_get(ETK_OBJECT(tree), "Emphasis_Type"); + if (!strcmp("Return", event->keyname)) + { + /* add selected songs to pls */ + Emphasis_Type et; + + et = (Emphasis_Type)etk_object_data_get(object, "Emphasis_Type"); + if(!et) { return; } + emphasis_playlist_append_selected(tree, et); + mpc_play_if_stopped(); + emphasis_tree_mlib_init(player, type); + if (strcmp(base_title, cur_title)) + { etk_tree_col_title_set(col, base_title); } + return; + } + /* FIXME & > < */ + /* Fast Research */ if (!strcmp(base_title, cur_title)) { /* FIXME, works with kenjins-like? */ @@ -734,17 +829,7 @@ } else if (!strcmp("Escape", event->keyname)) { - emphasis_tree_mlib_init(player, type); - etk_tree_col_title_set(col, base_title); - return; - } - else if (!strcmp("Return", event->keyname)) - { - Emphasis_Type et; - - et = (Emphasis_Type)etk_object_data_get(object, "Emphasis_Type"); - emphasis_playlist_append_selected(tree, et); - mpc_play_if_stopped(); + /* quit fast search */ emphasis_tree_mlib_init(player, type); etk_tree_col_title_set(col, base_title); return; @@ -762,13 +847,14 @@ row = etk_tree_first_row_get(tree); while (row) { + /* show corresponding rows */ row_next = etk_tree_row_next_get(row); etk_tree_row_fields_get(row, col, &str, NULL); if (!strncasecmp("The ", str, 4)) { str = str + 4; } - if (!strcmp("All", str) || (strncasecmp(filter, str, length) != 0)) + if (!strcmp(LABEL_MLIB_ALL, str) || (strncasecmp(filter, str, length) != 0)) etk_tree_row_delete(row); row = row_next; } @@ -788,6 +874,8 @@ UNUSED(object); Emphasis_Gui *gui; + if(!data) return; + gui = data; if (event->button == 3) { @@ -833,6 +921,7 @@ Evas_List *rowlist; Evas_List *list; + if(!data) return; player = data; if (!strcmp(event->key, "d") || !strcmp(event->key, "Delete")) @@ -852,12 +941,10 @@ { cb_playlist_shuffle(NULL,NULL); } - /* else if(!strcmp(event->key, "u")) { cb_database_update(NULL, data); } - */ } /** @@ -871,6 +958,7 @@ Evas_List *rowlist; Evas_List *list; + if(!data) return; player = data; rowlist = etk_tree_selected_rows_get(ETK_TREE(player->media.pls)); @@ -887,6 +975,8 @@ { UNUSED(object); Emphasis_Player_Gui *player; + + if(!data) return; player = data; mpc_database_update(); @@ -907,6 +997,7 @@ int w = 0; UNUSED(object); + if(!data) return; player = data; etk_window_geometry_get(ETK_WINDOW(player->small.window), @@ -924,6 +1015,7 @@ UNUSED(object); Emphasis_Player_Gui *player; + if(!data) return; player = data; if(player->state == EMPHASIS_FULL) @@ -934,6 +1026,8 @@ etk_widget_hide(player->small.window); etk_widget_hide(player->media.window); + etk_widget_hide(player->small.cov.window); + etk_widget_hide(player->small.ctr.window); etk_container_remove(ETK_CONTAINER(player->media.window), player->media.root); etk_box_append(ETK_BOX(player->full.root), @@ -952,6 +1046,7 @@ UNUSED(object); Emphasis_Player_Gui *player; + if(!data) return; player = data; if(player->state == EMPHASIS_SMALL) @@ -969,7 +1064,13 @@ { etk_widget_show(player->media.window); } - etk_widget_show(player->small.window); + if(player->small.packed) + { etk_widget_show(player->small.window); } + else + { + etk_widget_show(player->small.cov.window); + etk_widget_show(player->small.ctr.window); + } } void @@ -980,6 +1081,7 @@ Emphasis_Player_Gui *player; player = data; + if(!data) return; etk_notebook_current_page_set(ETK_NOTEBOOK(player->media.notebook), 0); } @@ -992,6 +1094,7 @@ Emphasis_Player_Gui *player; player = data; + if(!data) return; etk_notebook_current_page_set(ETK_NOTEBOOK(player->media.notebook), 1); } @@ -1004,6 +1107,7 @@ Emphasis_Player_Gui *player; player = data; + if(!data) return; etk_notebook_current_page_set(ETK_NOTEBOOK(player->media.notebook), 2); emphasis_pls_list_init(player); @@ -1017,6 +1121,7 @@ Emphasis_Player_Gui *player; player = data; + if(!data) return; etk_notebook_current_page_set(ETK_NOTEBOOK(player->media.notebook), 3); } @@ -1028,11 +1133,13 @@ Emphasis_Config_Gui *configgui; UNUSED(object); + if(!data) return; gui = data; if(gui->config_gui == NULL) { gui->config_gui = malloc(sizeof(Emphasis_Config_Gui)); + if(!gui->config_gui) return; emphasis_init_configgui(gui->config_gui); gui->config_gui->data = data; } @@ -1048,6 +1155,7 @@ Emphasis_Config_Gui *configgui; UNUSED(object); + if(!data) return ETK_TRUE; configgui = data; etk_widget_hide_all(configgui->window); @@ -1060,10 +1168,10 @@ { Emphasis_Config_Gui *configgui; + if(!data) return; configgui = data; emphasis_configgui_save(configgui); - //emphasis_try_connect(configgui->data); cb_config_hide(object, data); } @@ -1077,6 +1185,7 @@ Etk_Tree_Col *col; char *playlist_name; + if(!data) return; player = data; if (event->button == 1) { @@ -1103,12 +1212,13 @@ cb_media_pls_save_clicked(Etk_Object *object, void *data) { UNUSED(object); -#if defined(LIBMPD_0_12_4) Emphasis_Player_Gui *player; Etk_Widget *entry; - + + if(!data) return; player = data; entry = player->media.pls_entry_save; + if(!entry) return; if (etk_widget_is_visible(entry)) { if (etk_entry_text_get(ETK_ENTRY(entry))) @@ -1124,25 +1234,22 @@ etk_widget_focus(entry); } emphasis_pls_list_init(player); -#else - UNUSED(data); -#endif } void cb_media_pls_load_clicked(Etk_Object *object, void *data) { UNUSED(object); -#if defined(LIBMPD_0_12_4) Emphasis_Player_Gui *player; Etk_Tree_Col *col; Etk_Tree_Row *row; char *playlist_name; + if(!data) return; player = data; col = etk_tree_nth_col_get(ETK_TREE(player->media.pls_list), 0); row = etk_tree_selected_row_get(ETK_TREE(player->media.pls_list)); - if (!row) return; + if(!row) return; etk_tree_row_fields_get(row, ETK_FALSE, col, &playlist_name, NULL); mpc_playlist_clear(); @@ -1152,21 +1259,18 @@ EMPHASIS_TRACK); etk_tree_unselect_all(ETK_TREE(player->media.pls_content)); mpc_play_if_stopped(); -#else - UNUSED(data); -#endif } void cb_media_pls_del_clicked(Etk_Object *object, void *data) { UNUSED(object); -#if defined(LIBMPD_0_12_4) Emphasis_Player_Gui *player; Etk_Tree_Col *col; Etk_Tree_Row *row; char *playlist_name; + if(!data) return; player = data; col = etk_tree_nth_col_get(ETK_TREE(player->media.pls_list), 0); row = etk_tree_selected_row_get(ETK_TREE(player->media.pls_list)); @@ -1174,9 +1278,6 @@ mpc_delete_playlist(playlist_name); emphasis_pls_list_init(player); -#else - UNUSED(data); -#endif } void @@ -1199,6 +1300,8 @@ Evas_List *list; Etk_Tree_Col *col; const char *file; + + if(!data) return; player = data; row = etk_tree_selected_rows_get(ETK_TREE(player->media.search_tree)); @@ -1223,6 +1326,7 @@ UNUSED(object); Emphasis_Player_Gui *player; + if(!data) return; player = data; cb_playlist_clear(NULL,NULL,NULL); cb_media_search_btn_add_clicked(object, data); @@ -1234,6 +1338,7 @@ UNUSED(object); Emphasis_Player_Gui *player; + if(!data) return; player = data; emphasis_search_row_add(player); } @@ -1245,6 +1350,7 @@ Etk_Widget *search_query_row; Etk_Widget *button; + if(!data) return; search_root = data; button = ETK_WIDGET(object); search_query_row = etk_widget_parent_get(button); @@ -1292,6 +1398,7 @@ Etk_Widget *widget; int index; + if(!data) return; player = data; children = etk_container_children_get(ETK_CONTAINER(player->media.search_root)); @@ -1331,4 +1438,123 @@ /* ^ freed results */ evas_list_free(query); +} + +void +cb_small_pack(Etk_Object *object, Etk_Event_Mouse_Down *event, void *data) +{ + Emphasis_Player_Gui *player; + UNUSED(object); + + if(!data) { return; } + + player = data; + + if(event->button == 1) /* left-click, */ + { + /* show/hide concurrent window */ + Etk_Widget *win = NULL; + + if(player->small.packed == ETK_TRUE) { return; } + + if(object == (Etk_Object*)player->small.cover) + { + int w, h; + etk_widget_inner_geometry_get + (player->small.cov.window, NULL, NULL, &w, &h); + + if( event->widget.y >= h - 30) + { + /* special sensible cover zone (bottom) */ + if(event->widget.x <= w * 0.33) + { + /* left zone */ + mpc_prev(); + } + else if(event->widget.x >= ( w - w * 0.33 )) + { + /* middle zone */ + mpc_next(); + } + else + { + /* right zone */ + mpc_toggle_play_pause(); + } + return; /* no show/hide */ + } + win = player->small.ctr.window; + } + else + if(object == (Etk_Object*)player->small.info) + { + win = player->small.cov.window; + } + else + { return; } + + + if(etk_widget_is_visible(win) == ETK_TRUE) + { etk_widget_hide(win); } + else + { etk_widget_show(win); } + } + else if(event->button == 2) /* middle-click */ + { + /* show/hide mlib window */ + Etk_Widget *toggle = player->small.media; + + cb_toggle_media(ETK_OBJECT(toggle), player); + etk_toggle_button_active_set(ETK_TOGGLE_BUTTON(toggle), + !etk_toggle_button_active_get + (ETK_TOGGLE_BUTTON(toggle))); + } + else if(event->button == 3) /* right-click */ + { + /* switch small<->tiny */ + if(player->small.packed == ETK_TRUE) + { + /* packing */ + etk_widget_hide(player->small.window); + + etk_container_add(ETK_CONTAINER(player->small.cov.window), + player->small.cov.root); + etk_container_add(ETK_CONTAINER(player->small.ctr.window), + player->small.ctr.root); + + etk_widget_size_request_set(player->small.cover, + player->small.cover_size_w, + player->small.cover_size_w); + + etk_widget_show(player->small.cov.window); + etk_widget_show(player->small.ctr.window); + } + else + { + /* unpacking */ + etk_widget_hide(player->small.cov.window); + etk_widget_hide(player->small.ctr.window); + + etk_container_remove(ETK_CONTAINER(player->small.cov.window), + player->small.cov.root); + etk_container_remove(ETK_CONTAINER(player->small.ctr.window), + player->small.ctr.root); + + etk_box_append(ETK_BOX(player->small.root), player->small.cov.root, + ETK_BOX_START, ETK_BOX_FILL, 0); + etk_box_append(ETK_BOX(player->small.root), player->small.ctr.root, + ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0); + + etk_widget_size_request_set(player->small.cover, + player->small.cover_size_w, + player->small.cover_size_h); + + etk_widget_show(player->small.window); + } + + etk_textblock_cursor_visible_set + (etk_text_view_textblock_get(ETK_TEXT_VIEW(player->small.info)), + ETK_FALSE); + player->small.packed = !player->small.packed; + } } =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/emphasis_callbacks.h,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- emphasis_callbacks.h 17 Jan 2007 01:30:09 -0000 1.10 +++ emphasis_callbacks.h 9 Mar 2007 18:23:18 -0000 1.11 @@ -8,6 +8,8 @@ */ Etk_Bool cb_quit(Etk_Object *object, void *data); Etk_Bool cb_media_quit(Etk_Object *object, void *data); +Etk_Bool cb_window_hide(Etk_Object *object, void *data); +Etk_Bool cb_pack_quit(Etk_Object *object, void *data); void cb_button_stop_clicked(Etk_Object *object, void *data); void cb_button_prev_clicked(Etk_Object *object, void *data); =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/emphasis_config.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- emphasis_config.c 30 Dec 2006 13:46:38 -0000 1.5 +++ emphasis_config.c 9 Mar 2007 18:23:18 -0000 1.6 @@ -37,6 +37,7 @@ Emphasis_Config *config; config = malloc(sizeof(Emphasis_Config)); + if(!config) return NULL; set_defaults(); ecore_config_load(); =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/emphasis_convert.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- emphasis_convert.c 30 Dec 2006 13:46:38 -0000 1.2 +++ emphasis_convert.c 9 Mar 2007 18:23:18 -0000 1.3 @@ -10,6 +10,7 @@ return NULL; dest = malloc(sizeof(Emphasis_Song)); + if(!dest) return NULL; dest->file = strdupnull(src->file); dest->artist = strdupnull(src->artist); =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/emphasis_cover_db.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- emphasis_cover_db.c 14 Jan 2007 19:27:43 -0000 1.4 +++ emphasis_cover_db.c 9 Mar 2007 18:23:18 -0000 1.5 @@ -35,7 +35,7 @@ cover_path = emphasis_cover_db_search(artist, album); emphasis_player_cover_set(gui->player, cover_path); if (cover_path != NULL) { free(cover_path); } - emphasis_player_cover_size_update(gui->player); + //emphasis_player_cover_size_update(gui->player); free(artist); free(album); @@ -122,7 +122,7 @@ char *cover_path = NULL; char *key; int size; - void *cover; + void *cover = NULL; Eet_File *ef; asprintf(&config_path, "%s/.e/apps/emphasis/cover.eet", getenv("HOME")); =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/emphasis_data_list.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- emphasis_data_list.c 30 Dec 2006 13:46:38 -0000 1.2 +++ emphasis_data_list.c 9 Mar 2007 18:23:18 -0000 1.3 @@ -7,6 +7,7 @@ Emphasis_Data *data; data = malloc(sizeof(Emphasis_Data)); + if(!data) return NULL; data->song = NULL; data->tag = NULL; data->directory = NULL; =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/emphasis_gui.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- emphasis_gui.c 27 Feb 2007 22:30:11 -0000 1.13 +++ emphasis_gui.c 9 Mar 2007 18:23:18 -0000 1.14 @@ -10,6 +10,11 @@ emphasis_init_gui(Emphasis_Gui *gui) { gui->player = malloc(sizeof(Emphasis_Player_Gui)); + if(!gui->player) + { + fprintf(stderr, "Memory full\n"); + exit(1); + } /* TODO : check player */ /* TODO ; check config, state, etc */ @@ -79,6 +84,7 @@ ETK_CALLBACK(cb_pls_contextual_menu), gui); etk_signal_connect("mouse_down", ETK_OBJECT(player->media.track), ETK_CALLBACK(cb_pls_contextual_menu), gui); + } /** @@ -163,6 +169,7 @@ Cover_Info *old; ci = malloc(sizeof(Cover_Info)); + if(ci == NULL) { return; } ci->artist = strdupnull(artist); ci->album = strdupnull(album); =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/emphasis_gui.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- emphasis_gui.h 30 Dec 2006 13:46:38 -0000 1.4 +++ emphasis_gui.h 9 Mar 2007 18:23:18 -0000 1.5 @@ -14,7 +14,7 @@ typedef enum _Emphasis_Type Emphasis_Type; enum _Emphasis_Type { - EMPHASIS_ARTIST, + EMPHASIS_ARTIST = 1, EMPHASIS_ALBUM, EMPHASIS_TRACK }; =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/emphasis_media.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- emphasis_media.c 17 Jan 2007 01:30:09 -0000 1.6 +++ emphasis_media.c 9 Mar 2007 18:23:18 -0000 1.7 @@ -41,10 +41,11 @@ if (tag != NULL) { album_tag = malloc(sizeof(char *) * 2); + if(!album_tag) return; album_tag[0] = NULL; album_tag[1] = tag; } - row = etk_tree_row_append(tree, NULL, etk_tree_nth_col_get(tree, 0), "All", NULL); + row = etk_tree_row_append(tree, NULL, etk_tree_nth_col_get(tree, 0), LABEL_MLIB_ALL, NULL); etk_tree_row_data_set(row, album_tag); } if (list) @@ -87,6 +88,7 @@ if (et == EMPHASIS_ALBUM) { album_tag = malloc(sizeof(char *) * 2); + if(!album_tag) return; album_tag[0] = strdupnull(data->tag); album_tag[1] = strdupnull(tag); etk_tree_row_data_set(row, album_tag); @@ -254,14 +256,9 @@ pls_list = ETK_TREE(player->media.pls_list); etk_tree_clear(pls_list); -#if defined(LIBMPD_0_12_4) emphasis_tree_mlib_append(pls_list, (mpc_list_playlists()), MPD_DATA_TYPE_PLAYLIST, NULL); -#else - etk_tree_row_append(pls_list, NULL, etk_tree_nth_col_get(pls_list, 0), - "You need libmpd 0.12.4 in order to use mpd playlists", NULL); -#endif } =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/emphasis_media.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- emphasis_media.h 17 Jan 2007 01:30:09 -0000 1.4 +++ emphasis_media.h 9 Mar 2007 18:23:18 -0000 1.5 @@ -14,4 +14,7 @@ void emphasis_pls_mark_current(Etk_Tree *tree, int id); void emphasis_pls_list_init(Emphasis_Player_Gui *player); + +#define LABEL_MLIB_ALL "<b>All</b>" + #endif /* EMPHASIS_MEDIA_H_ */ =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/emphasis_misc.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- emphasis_misc.c 17 Jan 2007 01:30:09 -0000 1.8 +++ emphasis_misc.c 9 Mar 2007 18:23:18 -0000 1.9 @@ -45,8 +45,10 @@ row = evas_list_data(rowlist); data = calloc(1, sizeof(Emphasis_Data)); + if(!data) return NULL; data->type = MPD_DATA_TYPE_SONG; data->song = calloc(1, sizeof(Emphasis_Song)); + if(!data->song) { free(data); return NULL; } data->song->file = strdup(etk_tree_row_data_get(row)); list = evas_list_append(list, data); @@ -82,8 +84,10 @@ id = (int) etk_tree_row_data_get(row); data = malloc(sizeof(Emphasis_Data)); + if(!data) return NULL; data->type = MPD_DATA_TYPE_SONG; data->song = malloc(sizeof(Emphasis_Song)); + if(!data->song) { free(data); return NULL; } data->song->id = id; list = evas_list_append(list, data); @@ -326,6 +330,7 @@ size = strlen(str)+1; escaped = malloc(sizeof(char)*size); + if(!escaped) return NULL; for( i=0, j=0, c=str[0] ; c!='\0' ; i++, j++, c=str[i]) { @@ -410,4 +415,79 @@ } return unselected_rows; +} + +Etk_Bool +etk_image_has_error(Etk_Image *widget) +{ + Evas_Object *obj = NULL; + + if(!widget) { return ETK_FALSE; } + + obj = etk_image_evas_object_get(widget); + if( obj && !evas_object_image_load_error_get(obj)) + { return ETK_FALSE; } + else + { return ETK_TRUE; } +} + +void +etk_textblock_cursor_visible_set(Etk_Textblock *tb, Etk_Bool visible) +{ + Evas_Object *tbo = NULL; + + if(!tb) { return; } + + tbo = evas_list_data(tb->evas_objects); + + if(!tbo) { return; } + + etk_textblock_object_cursor_visible_set(tbo, visible); +} + +Etk_Bool +etk_textblock_cursor_visible_get(Etk_Textblock *tb) +{ + Evas_Object *tbo = NULL; + + if(!tb) { return ETK_FALSE; } + + tbo = evas_list_data(tb->evas_objects); + + if(!tbo) { return ETK_FALSE; } + + return etk_textblock_object_cursor_visible_get(tbo); +} + +Etk_Tree_Row* +etk_tree_nth_row_get(Etk_Tree *tree, int n) +{ + Etk_Tree_Row *row; + int i; + int len; + + /* TODO modulo list? */ + if(!tree || (n<0) || (n >= tree->total_rows )) { return NULL; } + len = tree->total_rows; + + if(n > len/2) + { + for(i = len - 1, row = etk_tree_last_row_get(tree) ; + row ; + i-- , row = etk_tree_row_prev_get(row)) + { + if (i == n) return row; + } + } + else + { + for(i = 0 , row = etk_tree_first_row_get(tree) ; + row ; + i++ , row = etk_tree_row_next_get(row)) + { + if (i == n) return row; + } + } + + return NULL; } =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/emphasis_misc.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- emphasis_misc.h 17 Jan 2007 01:30:09 -0000 1.7 +++ emphasis_misc.h 9 Mar 2007 18:23:18 -0000 1.8 @@ -25,8 +25,14 @@ void etk_container_inspect(Etk_Container *container, int lvl, int *to_trace); char *etk_strescape(const char *str); + +/* ETK functions++ */ Evas_List *etk_tree_selected_rows_get(Etk_Tree *tree); Evas_List *etk_tree_unselected_rows_get(Etk_Tree *tree); +Etk_Bool etk_image_has_error(Etk_Image *widget); +void etk_textblock_cursor_visible_set(Etk_Textblock *tb, Etk_Bool visible); +Etk_Bool etk_textblock_cursor_visible_get(Etk_Textblock *tb); +Etk_Tree_Row* etk_tree_nth_row_get(Etk_Tree *tree, int n); /** @} */ #endif /* EMPHASIS_MISC_H_ */ =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/emphasis_mpc.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- emphasis_mpc.c 27 Feb 2007 22:30:11 -0000 1.15 +++ emphasis_mpc.c 9 Mar 2007 18:23:18 -0000 1.16 @@ -264,17 +264,20 @@ void mpc_connection_changed(MpdObj * mo, int connect, void *data) { - UNUSED(mo) + UNUSED(mo); Emphasis_Gui *gui; + static int refresh_info = 1; gui = data; if (!connect) { - emphasis_player_info_set(gui->player, NULL, "Not connected to MPD"); + if(refresh_info) + emphasis_player_info_set(gui->player, NULL, "Not connected to MPD"); ecore_timer_del(gui->timer); gui->timer = ecore_timer_add(0.2, emphasis_try_connect, data); } + else refresh_info = 0; } /** @@ -557,7 +560,7 @@ { song = mpd_playlist_get_changes(mo, mpd_playlist_get_old_playlist_id(mo)); - if (!song) return; + if(!song) return; mpc_play_id(song->song->id); mpd_data_free(song); } @@ -641,7 +644,6 @@ Evas_List * mpc_list_playlists(void) { -#if defined(LIBMPD_0_12_4) MpdData *data; Evas_List *list; @@ -650,15 +652,11 @@ mpd_data_free(data); return list; -#else - return NULL; -#endif } Evas_List * mpc_get_playlist_content(char *playlist_name) { -#if defined(LIBMPD_0_12_4) MpdData *data; Evas_List *list; @@ -667,16 +665,11 @@ mpd_data_free(data); return list; -#else - UNUSED(playlist_name); - return NULL; -#endif } void mpc_save_playlist(char *playlist_name) { -#if defined(LIBMPD_0_12_4) int mpd_error; mpd_error = mpd_database_save_playlist(mo, playlist_name); @@ -687,15 +680,11 @@ fprintf(stderr, "A playlist with the same name already exist.\n"); } } -#else - UNUSED(playlist_name); -#endif } void mpc_delete_playlist(char *playlist_name) { -#if defined(LIBMPD_0_12_4) int mpd_error; mpd_error = mpd_database_delete_playlist(mo, playlist_name); @@ -703,12 +692,8 @@ { fprintf(stderr, "An error occur during the playlist deleting\n"); } -#else - UNUSED(playlist_name); -#endif } -#if defined(LIBMPD_0_12_4) MpdData *mpd_database_list_playlist(MpdObj *mi) { MpdData *data = NULL; @@ -746,7 +731,6 @@ } return mpd_data_get_first(data); } -#endif Evas_List * mpc_find(Evas_List *query, int exact) =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/emphasis_mpc.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- emphasis_mpc.h 14 Jan 2007 19:27:43 -0000 1.9 +++ emphasis_mpc.h 9 Mar 2007 18:23:18 -0000 1.10 @@ -63,10 +63,8 @@ Evas_List *mpc_find(Evas_List *query, int exact); -#if defined(LIBMPD_0_12_4) #include <libmpd/libmpd-internal.h> MpdData *mpd_database_list_playlist(MpdObj *mi); -#endif /** @} */ #endif /* EMPHASIS_MPC_H_ */ =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/emphasis_player.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- emphasis_player.c 17 Jan 2007 01:30:09 -0000 1.8 +++ emphasis_player.c 9 Mar 2007 18:23:18 -0000 1.9 @@ -11,7 +11,7 @@ enhance_var_get(en,id) static void _emphasis_enhance_callbacks(Emphasis_Player_Gui *player); - +static void _emphasis_init_player_small(Emphasis_Player_Gui *player); /* TODO : documentation */ void emphasis_init_player(Emphasis_Player_Gui *player) @@ -35,8 +35,13 @@ /* TODO : check widget? */ EN_VAR_GET(en, player, window); + etk_widget_hide(player->small.window); + etk_widget_hide(player->full.window); EN_VAR_GET(en, player, root); - + + player->small.ctr.root = enhance_var_get(en, "small_root_ctrl"); + player->small.cov.root = enhance_var_get(en, "small_root_cover"); + _emphasis_init_player_small(player); EN_VAR_GET(en, player, cover); EN_VAR_GET(en, player, stop); @@ -47,7 +52,8 @@ EN_VAR_GET(en, player, info); EN_VAR_GET(en, player, progress); - EN_VAR_GET(en, player, time); + //EN_VAR_GET(en, player, time); + player->full.time = enhance_var_get(en, "full_time"); EN_VAR_GET(en, player, sound_slider); EN_VAR_GET(en, player, sound_low); @@ -196,6 +202,36 @@ } static void +_emphasis_init_player_small(Emphasis_Player_Gui *player) +{ + Etk_Widget *wid; + + /* controls */ + wid = etk_window_new(); + etk_window_wmclass_set(ETK_WINDOW(wid), + "emphasis", "Emphasis"); + etk_window_title_set(ETK_WINDOW(wid), "Controls"); + etk_window_resize(ETK_WINDOW(wid), 10, 180); + etk_widget_hide(wid); + etk_signal_connect("delete_event", ETK_OBJECT(wid), + ETK_CALLBACK(cb_pack_quit), player); + player->small.ctr.window = wid; + + /* controls */ + wid = etk_window_new(); + etk_window_wmclass_set(ETK_WINDOW(wid), + "emphasis", "Emphasis"); + etk_window_title_set(ETK_WINDOW(wid), "Cover"); + etk_window_resize(ETK_WINDOW(wid), 10, 10); + etk_widget_hide(wid); + etk_signal_connect("delete_event", ETK_OBJECT(wid), + ETK_CALLBACK(cb_pack_quit), player); + player->small.cov.window = wid; + + player->small.packed = ETK_TRUE; +} + +static void _emphasis_enhance_callbacks(Emphasis_Player_Gui *player) { Enhance *en; @@ -266,16 +302,28 @@ enhance_callback_data_set(en, "cb_tree_mlib_clicked" , player); enhance_callback_data_set(en, "cb_media_pls_save_key_down" , player); + enhance_callback_data_set(en, "cb_small_pack", player); } + /* TODO : documentation */ void emphasis_player_cover_set(Emphasis_Player_Gui *player, const char *path) { - if(!path) { path = emphasis_cover_haricotmagique(); } + const char *cover; + if(!path) { cover = emphasis_cover_haricotmagique(); } + else { cover = path; } + + etk_image_set_from_file(ETK_IMAGE(player->full.cover) , cover, NULL); + etk_image_set_from_file(ETK_IMAGE(player->small.cover), cover, NULL); + + if(!path) { return; } - etk_image_set_from_file(ETK_IMAGE(player->full.cover) , path, NULL); - etk_image_set_from_file(ETK_IMAGE(player->small.cover), path, NULL); + if( etk_image_has_error(ETK_IMAGE(player->full.cover)) == ETK_TRUE || + etk_image_has_error(ETK_IMAGE(player->small.cover)) == ETK_TRUE ) + { + emphasis_player_cover_set(player, NULL); + } } /* TODO : documentation */ @@ -363,7 +411,7 @@ title, artist, album, msg); asprintf(&info_textblock, "<b><font size=16>%s </font size></b>\n" - "<font size=11>(%s)</font size>\n" + "<font size=10> (%s)</font size>\n" "<font size=11><i>by</i></font size> " "<font size=13>%s </font size>\n" "<font size=11><i>in</i></font size> " @@ -397,10 +445,9 @@ } } - - etk_textblock_object_cursor_visible_set - (evas_list_data(ETK_TEXT_VIEW(player->small.info)->textblock->evas_objects), - ETK_FALSE); + + etk_textblock_cursor_visible_set + (etk_text_view_textblock_get(ETK_TEXT_VIEW(player->small.info)), ETK_FALSE); } /* TODO : update doc */ @@ -427,7 +474,8 @@ total_time % 60); etk_label_set(ETK_LABEL(player->full.time) , time); - etk_label_set(ETK_LABEL(player->small.time), time); +// etk_label_set(ETK_LABEL(player->small.time), time); + etk_progress_bar_text_set(ETK_PROGRESS_BAR(player->small.progress), time); free(time); } =================================================================== RCS file: /cvs/e/e17/apps/emphasis/src/bin/emphasis_player.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- emphasis_player.h 14 Jan 2007 19:27:43 -0000 1.4 +++ emphasis_player.h 9 Mar 2007 18:23:18 -0000 1.5 @@ -29,6 +29,17 @@ Etk_Widget *window; Etk_Widget *root; + struct + { + Etk_Widget *window; + Etk_Widget *root; + } ctr; + struct + { + Etk_Widget *window; + Etk_Widget *root; + } cov; + Etk_Widget *cover; int cover_size_w; int cover_size_h; @@ -41,7 +52,6 @@ Etk_Widget *info; Etk_Widget *progress; - Etk_Widget *time; Etk_Widget *sound_slider; Etk_Widget *sound_low; @@ -51,6 +61,8 @@ Etk_Widget *repeat; Etk_Widget *full; Etk_Widget *media; + + Etk_Bool packed; }small; struct /* full mode */ ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs