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

Reply via email to