Enlightenment CVS committal

Author  : lok
Project : e17
Module  : proto

Dir     : e17/proto/emphasis/src/bin


Modified Files:
        Makefile.am emphasis.c emphasis.h emphasis_callbacks.c 
        emphasis_callbacks.h emphasis_config_gui.c 
        emphasis_config_gui.h emphasis_cover_db.c emphasis_gui.c 
        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:
Make it build.
Handle mpd playlists.
Config panel is now a glade.
Pre-build eap added.
Added a quick made cover editor (read the README).

===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/Makefile.am,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- Makefile.am 21 Jul 2006 04:05:27 -0000      1.4
+++ Makefile.am 20 Aug 2006 22:48:49 -0000      1.5
@@ -36,3 +36,5 @@
 emphasis_data_list.c 
 
 emphasis_LDADD = @my_libs@
+
+MAINTAINERCLEANFILES = Makefile.in
===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- emphasis.c  2 Aug 2006 05:53:58 -0000       1.7
+++ emphasis.c  20 Aug 2006 22:48:49 -0000      1.8
@@ -6,7 +6,7 @@
   Emphasis_Gui *gui;
  
   /* void */ enhance_init();
-  if (!etk_init(&argc, &argv))
+  if(!etk_init(&argc, &argv))
     {
       fprintf(stderr, "Unable to init etk\n");
       return 1;
@@ -32,7 +32,7 @@
 
   etk_main();
 
-  /* enhance_free(gui->player->en); *HUM* *HUM* */
+  enhance_free(gui->player->en);
 
   return 0;
 }
@@ -62,7 +62,7 @@
   etk_tree_col_width_set(ETK_TREE_COL_GET(player->media.pls, 3),
                          config->colwidth.album);
 
-  emphasis_player_mode_set(player, config->mode);
+  emphasis_player_force_mode_set(player, config->mode);
   emphasis_player_info_set(player, NULL, "Not connected to MPD");
 
   config_free(config);
===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- emphasis.h  21 Jul 2006 04:05:27 -0000      1.4
+++ emphasis.h  20 Aug 2006 22:48:49 -0000      1.5
@@ -8,6 +8,7 @@
 #include "config.h"
 
 #include <libmpd/libmpd.h>
+#include <libmpd/libmpd-internal.h>
 
 #include <Ecore.h>
 #include <Evas.h>
===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_callbacks.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- emphasis_callbacks.c        15 Aug 2006 18:31:45 -0000      1.8
+++ emphasis_callbacks.c        20 Aug 2006 22:48:49 -0000      1.9
@@ -5,7 +5,7 @@
 /**
  * @brief Quit the main loop
  */
-void
+Etk_Bool
 cb_quit(Etk_Object *object, void *data)
 {
   /* TODO :
@@ -40,8 +40,10 @@
   config_free(config);
   
   mpc_disconnect();
-  /* ecore_config_shutdown() *HUM* *HUM* */
+  ecore_config_shutdown();
   etk_main_quit();
+
+  return ETK_TRUE;
 }
 
 /* TODO : doc */
@@ -138,6 +140,7 @@
 void
 cb_toggle_media(Etk_Object *object, void *data)
 {
+  /* Okay, now I have an ETK_FALSE. */
   Emphasis_Player_Gui *player;
   Etk_Bool checked;
   player = data;
@@ -145,13 +148,13 @@
   checked =
    etk_toggle_button_active_get(ETK_TOGGLE_BUTTON(object));
   
-  if(checked == ETK_TRUE)
+  if(checked == ETK_FALSE)
     {
-      etk_widget_show_all(player->media.window);
+      etk_widget_show(player->media.window);
     }
   else
     {
-      etk_widget_hide_all(player->media.window);
+      etk_widget_hide(player->media.window);
     }
 }
 
@@ -178,7 +181,7 @@
                      Etk_Event_Mouse_Up_Down *event,
                      void *data)
 {
-  UNUSED(event)
+  UNUSED(event);
   Emphasis_Player_Gui *player;
 
   player = data;
@@ -202,6 +205,7 @@
 {
   UNUSED(object)
   UNUSED(data)
+  
   mpc_change_vol(value);
 }
 
@@ -519,26 +523,23 @@
 cb_tree_mlib_clicked(Etk_Object *object, Etk_Tree_Row *row,
                      Etk_Event_Mouse_Up_Down *event, void *data)
 {
-  Etk_Widget *widget, *tree;
+  Emphasis_Player_Gui *player;
+  Emphasis_Type et;
   char *str;
 
+  player = data;
+  et = (Emphasis_Type) etk_object_data_get(object, "Emphasis_Type");
   if ((event->button == 1) && (event->flags & EVAS_BUTTON_DOUBLE_CLICK))
     {
-      emphasis_playlist_append_selected(ETK_TREE(object),
-                                        (Emphasis_Type) data);
+      emphasis_playlist_append_selected(ETK_TREE(object), et);
       mpc_play_if_stopped();
     }
   if (event->button == 2)
     {
-      widget = etk_widget_parent_get(ETK_WIDGET(object));
-      widget = etk_widget_parent_get(ETK_WIDGET(widget));
-      tree = etk_paned_child2_get(ETK_PANED(widget));
-
       etk_tree_row_fields_get(row, etk_tree_nth_col_get(ETK_TREE(object), 0),
                               &str, NULL);
 
-      emphasis_playlist_search_and_delete(ETK_TREE(tree), str,
-                                          (Emphasis_Type) data);
+      emphasis_playlist_search_and_delete(ETK_TREE(player->media.pls), str, 
et);
     }
 }
 
@@ -736,6 +737,7 @@
   if (event->button == 3)
     {
       etk_menu_popup(ETK_MENU(gui->menu));
+      etk_widget_show_all(gui->menu);
     }
 }
 
@@ -815,6 +817,8 @@
   etk_tree_col_title_set(ETK_TREE_COL_GET(player->media.artist, 0), "Artist");
   etk_tree_col_title_set(ETK_TREE_COL_GET(player->media.album , 0), "Album");
   etk_tree_col_title_set(ETK_TREE_COL_GET(player->media.track , 0), "Track");
+
+  /* TODO redraw */
 }
 
 void
@@ -822,6 +826,7 @@
 {
   /* TODO : this function ;) */
   UNUSED(object);
+//  int x, y, w, h;
 
   Emphasis_Player_Gui *player;
   player = data;
@@ -832,17 +837,20 @@
     }
   player->state = EMPHASIS_FULL;
 
-  etk_widget_hide_all(player->small.window);
-  etk_widget_hide_all(player->media.window);
+//  etk_window_geometry_get(ETK_WINDOW(player->small.window), &x, &y, &w, &h);
+  etk_widget_hide(player->small.window);
+  etk_widget_hide(player->media.window);
   
   etk_container_remove(ETK_CONTAINER(player->media.window), 
player->media.root);
   etk_box_append(ETK_BOX(player->full.root),
                      player->media.root,
-                     ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
+                     ETK_BOX_START,
+                     ETK_BOX_EXPAND_FILL, 0);
  
   emphasis_player_toggle_full(player, ETK_TRUE);
 
-  etk_widget_show_all(player->full.window);
+  etk_widget_show(player->full.window);
+//  etk_window_move(ETK_WINDOW(player->full.window), x, y);
 }
 
 void
@@ -850,20 +858,231 @@
 {
   /* TODO : this function ;) */
   UNUSED(object);
+//  int x, y, w, h;
 
   Emphasis_Player_Gui *player;
   player = data;
 
+  if(player->state == EMPHASIS_SMALL)
+    {
+      return;
+    }
   player->state = EMPHASIS_SMALL;
 
-  etk_widget_hide_all(player->full.window);
+//  etk_window_geometry_get(ETK_WINDOW(player->full.window), &x, &y, &w, &h);
+  etk_widget_hide(player->full.window);
 
   etk_container_add(ETK_CONTAINER(player->media.window), player->media.root);
   emphasis_player_toggle_full(player, ETK_FALSE);
 
   if(etk_toggle_button_active_get(ETK_TOGGLE_BUTTON(player->small.media)))
     {
-      etk_widget_show_all(player->media.window);
+      etk_widget_show(player->media.window);
+    }
+  etk_widget_show(player->small.window);
+//  etk_window_move(ETK_WINDOW(player->small.window), x, y);
+}
+
+void
+cb_media_button_lib_clicked(Etk_Object *object, 
+                            void *data)
+{
+  UNUSED(object);
+
+  Emphasis_Player_Gui *player;
+  player = data;
+
+  etk_notebook_current_page_set(ETK_NOTEBOOK(player->media.notebook), 0);
+}
+
+void
+cb_media_button_search_clicked(Etk_Object *object, 
+                               void *data)
+{
+  UNUSED(object);
+
+  Emphasis_Player_Gui *player;
+  player = data;
+
+  etk_notebook_current_page_set(ETK_NOTEBOOK(player->media.notebook), 1);
+}
+
+void
+cb_media_button_playlists_clicked(Etk_Object *object, 
+                                  void *data)
+{
+  UNUSED(object);
+
+  Emphasis_Player_Gui *player;
+  player = data;
+
+  etk_notebook_current_page_set(ETK_NOTEBOOK(player->media.notebook), 2);
+  emphasis_pls_list_init(player);
+}
+
+void
+cb_media_button_stats_clicked(Etk_Object *object, 
+                              void *data)
+{
+  UNUSED(object);
+
+  Emphasis_Player_Gui *player;
+  player = data;
+
+  etk_notebook_current_page_set(ETK_NOTEBOOK(player->media.notebook), 3);
+}
+
+void
+cb_config_show(Etk_Object *object, void *data)
+{
+  Emphasis_Gui *gui;
+  Emphasis_Config_Gui *configgui;
+  UNUSED(object);
+
+  gui = data;
+
+  if(gui->config_gui == NULL)
+    {
+      gui->config_gui = malloc(sizeof(Emphasis_Config_Gui));
+      emphasis_init_configgui(gui->config_gui);
+      gui->config_gui->data = data;
+    }
+  configgui = gui->config_gui;
+
+  emphasis_configgui_autoset(configgui);
+  etk_widget_show_all(configgui->window);
+}
+
+Etk_Bool
+cb_config_hide(Etk_Object *object, void *data)
+{
+  Emphasis_Config_Gui *configgui;
+  UNUSED(object);
+
+  configgui = data;
+
+  etk_widget_hide_all(configgui->window);
+  return ETK_FALSE;
+}
+
+void
+cb_config_ok(Etk_Object *object, void *data)
+{
+  Emphasis_Config_Gui *configgui;
+
+  configgui = data;
+
+  emphasis_configgui_save(configgui);
+  emphasis_try_connect(configgui->data);
+
+  cb_config_hide(object, data);
+}
+
+void
+cb_media_pls_list_row_clicked(Etk_Object *object, Etk_Tree_Row *row, 
+                              Etk_Event_Mouse_Up_Down *event, void *data)
+{
+  Emphasis_Player_Gui *player;
+  Etk_Tree *tree;
+  Etk_Tree_Col *col;
+  char *playlist_name;
+
+  player = data;
+  if (event->button == 1)
+    {
+      if (event->flags == EVAS_BUTTON_NONE)
+        {
+          tree = ETK_TREE(object);
+          col = etk_tree_nth_col_get(tree, 0);
+
+          etk_tree_clear(ETK_TREE(player->media.pls_content));
+          etk_tree_row_fields_get(row, col, &playlist_name, NULL);
+          emphasis_tree_mlib_append(ETK_TREE(player->media.pls_content), 
+                                    (mpc_get_playlist_content(playlist_name)),
+                                    MPD_DATA_TYPE_SONG,
+                                    NULL);
+        }
+      else if (event->flags == EVAS_BUTTON_DOUBLE_CLICK)
+        {
+          cb_media_pls_load_clicked(NULL, data);
+        }
+    }
+}
+
+void
+cb_media_pls_save_clicked(Etk_Object *object, void *data)
+{
+  UNUSED(object);
+  Emphasis_Player_Gui *player;
+  Etk_Widget *entry;
+  
+  player = data;
+  entry = player->media.pls_entry_save;
+  if (etk_widget_is_visible(entry)) 
+    {
+      if (etk_entry_text_get(ETK_ENTRY(entry)))
+        {
+          mpc_save_playlist((char *) etk_entry_text_get(ETK_ENTRY(entry)));
+        }
+      etk_entry_text_set(ETK_ENTRY(entry), "");
+      etk_widget_hide(entry);
+    }
+  else
+    {
+      etk_widget_show(entry);
+      etk_widget_focus(entry);
+    }
+  emphasis_pls_list_init(player);
+}
+
+void
+cb_media_pls_load_clicked(Etk_Object *object, void *data)
+{
+  UNUSED(object);
+  Emphasis_Player_Gui *player;
+  Etk_Tree_Col *col;
+  Etk_Tree_Row *row;
+  char *playlist_name;
+
+  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));
+  etk_tree_row_fields_get(row, col, &playlist_name, NULL);
+
+  mpc_playlist_clear();
+  etk_tree_multiple_select_set(ETK_TREE(player->media.pls_content), ETK_TRUE);
+  etk_tree_select_all(ETK_TREE(player->media.pls_content));
+  emphasis_playlist_append_selected(ETK_TREE(player->media.pls_content),
+                                    EMPHASIS_TRACK);
+  etk_tree_unselect_all(ETK_TREE(player->media.pls_content));
+  mpc_play_if_stopped();
+}
+
+void
+cb_media_pls_del_clicked(Etk_Object *object, void *data)
+{
+  UNUSED(object);
+  Emphasis_Player_Gui *player;
+  Etk_Tree_Col *col;
+  Etk_Tree_Row *row;
+  char *playlist_name;
+
+  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));
+  etk_tree_row_fields_get(row, col, &playlist_name, NULL);
+
+  mpc_delete_playlist(playlist_name);
+  emphasis_pls_list_init(player);
+}
+
+void
+cb_media_pls_save_key_down(Etk_Object *object, Etk_Event_Key_Up_Down *event,
+                           void *data)
+{
+  if (!strcmp(event->key, "Return"))
+    {
+      etk_widget_unfocus(ETK_WIDGET(object));
+      cb_media_pls_save_clicked(NULL, data);
     }
-  etk_widget_show_all(player->small.window);
 }
===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_callbacks.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- emphasis_callbacks.h        21 Jul 2006 04:05:27 -0000      1.4
+++ emphasis_callbacks.h        20 Aug 2006 22:48:49 -0000      1.5
@@ -6,7 +6,7 @@
  * @defgroup callbacks
  * @{
  */
-void cb_quit(Etk_Object *object, void *data);
+Etk_Bool cb_quit(Etk_Object *object, void *data);
 Etk_Bool cb_media_quit(Etk_Object *object, void *data);
 
 void cb_button_stop_clicked(Etk_Object *object, void *data);
@@ -55,5 +55,21 @@
 
 void cb_switch_small(Etk_Object *object, void *data);
 void cb_switch_full(Etk_Object *object, void *data);
+
+void cb_media_button_lib_clicked(Etk_Object *object, void *data); 
+void cb_media_button_search_clicked(Etk_Object *object, void *data); 
+void cb_media_button_playlists_clicked(Etk_Object *object, void *data); 
+void cb_media_button_stats_clicked(Etk_Object *object, void *data);
+void cb_config_show(Etk_Object *object, void *data);
+void cb_config_ok(Etk_Object *object, void *data);
+Etk_Bool cb_config_hide(Etk_Object *object, void *data);
+
+void cb_media_pls_list_row_clicked(Etk_Object *object, Etk_Tree_Row *row, 
+                                   Etk_Event_Mouse_Up_Down *event, void *data);
+void cb_media_pls_save_clicked(Etk_Object *object, void *data);
+void cb_media_pls_load_clicked(Etk_Object *object, void *data);
+void cb_media_pls_del_clicked(Etk_Object *object, void *data);
+void cb_media_pls_save_key_down(Etk_Object *object, 
+                                Etk_Event_Key_Up_Down *event, void *data);
 /** @} */
 #endif /* EMPHASIS_CALLBACKS_H_ */
===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_config_gui.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- emphasis_config_gui.c       15 Aug 2006 18:31:45 -0000      1.2
+++ emphasis_config_gui.c       20 Aug 2006 22:48:49 -0000      1.3
@@ -1,157 +1,77 @@
 #include "emphasis.h"
 #include "emphasis_config_gui.h"
 
-Emphasis_Config_Gui *
-config_gui_init(void)
-{
-  Emphasis_Config_Gui *gui;
-  gui = malloc(sizeof(Emphasis_Config_Gui));
+/* TODO : all docs */
 
-  gui->window = etk_window_new();
-  etk_window_title_set(ETK_WINDOW(gui->window), "Emphasis Configuration");
-  etk_window_wmclass_set(ETK_WINDOW(gui->window), 
-                         "Emphasis Configuration", "emphasis");
-  etk_container_border_width_set(ETK_CONTAINER(gui->window), 2);
-
-  gui->vbox = etk_vbox_new(ETK_FALSE, 0);
-  etk_container_add(ETK_CONTAINER(gui->window), gui->vbox);
-
-  gui->connection_frame = etk_frame_new("Connection settings");
-  etk_box_append(ETK_BOX(gui->vbox), gui->connection_frame, 
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
-
-  gui->connection_vbox = etk_vbox_new(ETK_TRUE, 5);
-  etk_container_add(ETK_CONTAINER(gui->connection_frame), 
gui->connection_vbox);
-
-  gui->hostname_hbox = etk_hbox_new(ETK_TRUE, 0);
-  gui->hostname_label = etk_label_new("Hostname :");
-  gui->hostname_entry = etk_entry_new();
-  etk_box_append(ETK_BOX(gui->hostname_hbox), gui->hostname_label,
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
-  etk_box_append(ETK_BOX(gui->hostname_hbox), gui->hostname_entry,
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
-  etk_box_append(ETK_BOX(gui->connection_vbox), gui->hostname_hbox,
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
-
-  gui->port_hbox = etk_hbox_new(ETK_TRUE, 0);
-  gui->port_label = etk_label_new("Port :");
-// gui->port_spin = etk_spin_button_new(0, 65536, 1); 
-  etk_box_append(ETK_BOX(gui->port_hbox), gui->port_label, 
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
-/* etk_box_append(ETK_BOX(gui->port_hbox), gui->port_spin, 
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0); */
-  etk_box_append(ETK_BOX(gui->connection_vbox), gui->port_hbox, 
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
-
-  gui->password_hbox = etk_hbox_new(ETK_TRUE, 0);
-  gui->password_label = etk_label_new("password :");
-  gui->password_entry = etk_entry_new();
-  etk_entry_password_set(ETK_ENTRY(gui->password_entry), ETK_TRUE);
-  etk_box_append(ETK_BOX(gui->password_hbox), gui->password_label,
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
-  etk_box_append(ETK_BOX(gui->password_hbox), gui->password_entry,
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
-  etk_box_append(ETK_BOX(gui->connection_vbox), gui->password_hbox,
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
-
-/**/ 
-  gui->interface_frame = etk_frame_new("Interface settings");
-  etk_box_append(ETK_BOX(gui->vbox), gui->interface_frame, 
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
-
-  gui->interface_vbox = etk_vbox_new(ETK_TRUE, 5);
-  etk_container_add(ETK_CONTAINER(gui->interface_frame), gui->interface_vbox);
-
-  gui->rowheight_hbox = etk_hbox_new(ETK_TRUE, 0);
-  gui->rowheight_label = etk_label_new("Row Height :");
-//  gui->rowheight_spin = etk_spin_button_new(0, 50, 1);
-  etk_box_append(ETK_BOX(gui->rowheight_hbox), gui->rowheight_label,
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
-/* etk_box_append(ETK_BOX(gui->rowheight_hbox), gui->rowheight_spin, 
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0); */
-  etk_box_append(ETK_BOX(gui->interface_vbox), gui->rowheight_hbox,
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
-/**/ 
-  gui->buttons_box_hbox = etk_hbox_new(ETK_TRUE, 5);
-  gui->buttons_box_ok = etk_button_new_with_label("Ok");
-  gui->buttons_box_apply = etk_button_new_with_label("Apply");
-  gui->buttons_box_cancel = etk_button_new_with_label("Cancel");
-  etk_box_append(ETK_BOX(gui->buttons_box_hbox), gui->buttons_box_ok,
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
-  etk_box_append(ETK_BOX(gui->buttons_box_hbox), gui->buttons_box_apply,
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
-  etk_box_append(ETK_BOX(gui->buttons_box_hbox), gui->buttons_box_cancel,
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
-  etk_box_append(ETK_BOX(gui->vbox), gui->buttons_box_hbox, 
-                 ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
-  return gui;
-}
+static void
+_emphasis_enhance_callbacks(Emphasis_Config_Gui *configgui);
 
 void
-config_gui_set(Emphasis_Config_Gui *gui, Emphasis_Config *config)
+emphasis_init_configgui(Emphasis_Config_Gui *configgui)
 {
-//  char *port;
-  etk_entry_text_set(ETK_ENTRY(gui->hostname_entry), config->hostname);
-//  asprintf(&port, "%d", config->port);
-//  etk_entry_text_set(ETK_ENTRY(gui->port_spin), port);
-  if (config->password != NULL && strlen(config->password) != 0)
-    etk_entry_text_set(ETK_ENTRY(gui->password_entry), config->password);
+  Enhance *en;
+  en = enhance_new();
+
+  if(en==NULL)
+    {
+      fprintf(stderr, "enhance new failed\n");
+      exit(1);
+    }
+  configgui->en = en;
+
+  _emphasis_enhance_callbacks(configgui);
+  enhance_file_load(en, "Config", PACKAGE_DATA_DIR EMPHASIS_CONFIG_GLADE);
+
+  configgui->window   = enhance_var_get(en, "window");
+  configgui->hostname = enhance_var_get(en, "hostname");
+  //configgui->port     = enhance_var_get(en, "port");
+  configgui->password = enhance_var_get(en, "password");
+
+  etk_window_wmclass_set(ETK_WINDOW(configgui->window), "emphasis", 
"Emphasis");
 }
 
-void
-cb_config_show(Etk_Object *object, void *data)
+static void
+_emphasis_enhance_callbacks(Emphasis_Config_Gui *configgui)
 {
-  UNUSED(object)
-  Emphasis_Gui *gui;
-  Emphasis_Config *config;
+  Enhance *en;
 
-  gui = data;
-  gui->config_gui = config_gui_init();
-  config = config_load();
-  config_gui_set(gui->config_gui, config);
-  etk_widget_show_all(gui->config_gui->window);
+  en = configgui->en;
 
-  etk_signal_connect("clicked", 
-                     ETK_OBJECT(gui->config_gui->buttons_box_ok),
-                     ETK_CALLBACK(cb_config_write), gui);
-  etk_signal_connect("clicked",
-                     ETK_OBJECT(gui->config_gui->buttons_box_apply),
-                     ETK_CALLBACK(cb_config_write), gui);
-  etk_signal_connect("clicked",
-                     ETK_OBJECT(gui->config_gui->buttons_box_cancel),
-                     ETK_CALLBACK(cb_config_hide), gui->config_gui);
+  enhance_callback_data_set(en, "cb_config_hide", configgui);
+  enhance_callback_data_set(en, "cb_config_ok"  , configgui);
+  enhance_callback_data_set(en, "cb_config_hide", configgui);
 }
 
 void
-cb_config_hide(Etk_Object *object, void *data)
+emphasis_configgui_autoset(Emphasis_Config_Gui *configgui)
 {
-  UNUSED(object)
-  Emphasis_Config_Gui *gui;
+  Emphasis_Config *config;
+
+  config = config_load();
+
+  etk_entry_text_set(ETK_ENTRY(configgui->hostname),
+                     config->hostname);
+  if(config->password)
+    {
+      etk_entry_text_set(ETK_ENTRY(configgui->password),
+                         config->password);
+    }
 
-  gui = data;
-  etk_widget_hide(ETK_WIDGET(gui->window));
+  config_free(config);
 }
 
 void
-cb_config_write(Etk_Object *object, void *data)
+emphasis_configgui_save(Emphasis_Config_Gui *configgui)
 {
-  UNUSED(object)
   Emphasis_Config *config;
-  Emphasis_Gui *gui;
-/*  const char *port; */
 
   config = config_load();
-  gui = data;
 
   config->hostname =
-    (char *) etk_entry_text_get(ETK_ENTRY(gui->config_gui->hostname_entry));
-/*  port = etk_entry_text_get(ETK_ENTRY(gui->config_gui->port_spin)); */
-/*  config->port = atoi(port); */
+   (char*)etk_entry_text_get(ETK_ENTRY(configgui->hostname));
   config->password =
-    (char *) etk_entry_text_get(ETK_ENTRY(gui->config_gui->password_entry));
+   (char*)etk_entry_text_get(ETK_ENTRY(configgui->password));
 
   config_save(config);
-  cb_config_hide(NULL, gui->config_gui);
-  emphasis_try_connect(gui);
+  config_free(config);
 }
-
===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_config_gui.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- emphasis_config_gui.h       21 Jul 2006 04:05:27 -0000      1.1
+++ emphasis_config_gui.h       20 Aug 2006 22:48:49 -0000      1.2
@@ -1,46 +1,23 @@
 #ifndef EMPHASIS_CONFIG_GUI_H_
 #define EMPHASIS_CONFIG_GUI_H_
 
+#define EMPHASIS_CONFIG_GLADE "/config.glade"
+
+typedef struct _Emphasis_Config_Gui Emphasis_Config_Gui;
 struct _Emphasis_Config_Gui
 {
-  Etk_Widget *window;
-  Etk_Widget *vbox;
-
-  Etk_Widget *connection_frame;
-  Etk_Widget *connection_vbox;
-
-  Etk_Widget *hostname_hbox;
-  Etk_Widget *hostname_label;
-  Etk_Widget *hostname_entry;
-
-  Etk_Widget *port_hbox;
-  Etk_Widget *port_label;
-  Etk_Widget *port_spin;
-
-  Etk_Widget *password_hbox;
-  Etk_Widget *password_label;
-  Etk_Widget *password_entry;
+  Enhance *en;
 
-  Etk_Widget *buttons_box_hbox;
-  Etk_Widget *buttons_box_ok;
-  Etk_Widget *buttons_box_apply;
-  Etk_Widget *buttons_box_cancel;
-
-  Etk_Widget *interface_frame;
-  Etk_Widget *interface_vbox;
+  Etk_Widget *window;
+  Etk_Widget *hostname;
+  Etk_Widget *password;
+  Etk_Widget *port;
 
-  Etk_Widget *rowheight_hbox;
-  Etk_Widget *rowheight_label;
-  Etk_Widget *rowheight_spin;
+  void *data;
 };
 
-typedef struct _Emphasis_Config_Gui Emphasis_Config_Gui;
-
-Emphasis_Config_Gui *config_gui_init(void);
-void config_gui_set(Emphasis_Config_Gui *gui, Emphasis_Config *config);
-
-void cb_config_show(Etk_Object *object, void *data);
-void cb_config_hide(Etk_Object *object, void *data);
-void cb_config_write(Etk_Object *object, void *data);
-
+void emphasis_init_configgui   (Emphasis_Config_Gui *configgui);
+void emphasis_configgui_autoset(Emphasis_Config_Gui *configgui);
+void emphasis_configgui_save   (Emphasis_Config_Gui *configgui);
+;
 #endif /* EMPHASIS_CONFIG_GUI_H_ */
===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_cover_db.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- emphasis_cover_db.c 21 Jul 2006 04:05:27 -0000      1.1
+++ emphasis_cover_db.c 20 Aug 2006 22:48:49 -0000      1.2
@@ -42,7 +42,7 @@
             {
               emphasis_player_cover_set(gui->player, cover_path);
             }
-          emphasis_player_cover_size_set(gui->player, 100, 100);
+          emphasis_player_cover_size_update(gui->player);
 
           free(artist);
           free(album);
===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_gui.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- emphasis_gui.c      21 Jul 2006 04:05:27 -0000      1.7
+++ emphasis_gui.c      20 Aug 2006 22:48:49 -0000      1.8
@@ -18,10 +18,11 @@
 
   
if(!etk_toggle_button_active_get(ETK_TOGGLE_BUTTON(gui->player->small.media)))
     {
-      etk_widget_hide_all(gui->player->media.window);
+      etk_widget_hide(gui->player->media.window);
     }
 
   gui->cover_queue = NULL;
+  gui->config_gui  = NULL;
 }
 
 
@@ -40,21 +41,15 @@
 }
 
 /* TODO : documentation */
-/* TODO : enhanced? pfffffffffffffff */
 void
 emphasis_init_menu(Emphasis_Gui *gui)
 {
-  gui->config_gui = malloc(sizeof(Emphasis_Config_Gui));
   Emphasis_Player_Gui *player;
        
   /* playlist menu setup*/
-
   gui->menu = etk_menu_new();
   player = gui->player;
        
-  Etk_Widget *separator, *radio_item=NULL;
-
-
   emphasis_menu_append(gui->menu,
                        "clear",
                        ETK_STOCK_EDIT_CLEAR, cb_playlist_clear, NULL,
@@ -65,22 +60,8 @@
                        "config",
                        ETK_STOCK_PREFERENCES_SYSTEM, cb_config_show, gui,
                        NULL);
-  separator = etk_menu_item_separator_new();
-  etk_menu_shell_append(ETK_MENU_SHELL(gui->menu), ETK_MENU_ITEM(separator));
-
-  radio_item = etk_menu_item_radio_new_with_label_from_widget("full", NULL);
-  etk_menu_shell_append(ETK_MENU_SHELL(gui->menu), ETK_MENU_ITEM(radio_item));
-  etk_signal_connect("activated",
-                     ETK_OBJECT(radio_item),
-                     ETK_CALLBACK(cb_switch_full), player);
-  radio_item = etk_menu_item_radio_new_with_label_from_widget
-                       ("small", ETK_MENU_ITEM_RADIO(radio_item));
-  etk_menu_shell_append(ETK_MENU_SHELL(gui->menu), ETK_MENU_ITEM(radio_item));
-  etk_signal_connect("activated",
-                     ETK_OBJECT(radio_item),
-                     ETK_CALLBACK(cb_switch_small), player);
-
-       /* Do we need all this connect ? */
+       
+  /* Do we need all this connect ? */
        etk_signal_connect("mouse_down", ETK_OBJECT(player->full.window), 
                           ETK_CALLBACK(cb_pls_contextual_menu), gui);
   etk_signal_connect("mouse_down", ETK_OBJECT(player->small.window), 
===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_media.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- emphasis_media.c    21 Jul 2006 04:05:27 -0000      1.1
+++ emphasis_media.c    20 Aug 2006 22:48:49 -0000      1.2
@@ -75,6 +75,7 @@
 
   first_list = list;
 
+  etk_tree_freeze(tree);
   if (mpd_type == MPD_DATA_TYPE_TAG)
     {
       et = (Emphasis_Type) etk_object_data_get(ETK_OBJECT(tree),
@@ -113,6 +114,18 @@
               list = evas_list_next(list);
             }
         }
+      else
+        {
+          if (mpd_type == MPD_DATA_TYPE_PLAYLIST)
+            {
+              while (list)
+                {
+                  data = evas_list_data(list);
+                  etk_tree_append(tree, col, data->playlist, NULL);
+                  list = evas_list_next(list);
+                }
+            }
+        }
     }
 
   etk_tree_thaw(tree);
@@ -141,6 +154,7 @@
   etk_tree_freeze(tree);
   row = etk_tree_first_row_get(tree);
 
+  /* LEAK : playlist and on NULL */
   while (row && playlist)
     {
       data = evas_list_data(playlist);
@@ -229,3 +243,19 @@
 
   etk_tree_thaw(tree);
 }
+
+
+/* Pane 3 : Playlists */
+void
+emphasis_pls_list_init(Emphasis_Player_Gui *player)
+{
+  Etk_Tree *pls_list;
+
+  pls_list = ETK_TREE(player->media.pls_list);
+  etk_tree_clear(pls_list); 
+  emphasis_tree_mlib_append(pls_list, 
+                            (mpc_list_playlists()),
+                            MPD_DATA_TYPE_PLAYLIST,
+                            NULL);
+}
+
===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_media.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- emphasis_media.h    21 Jul 2006 04:05:27 -0000      1.1
+++ emphasis_media.h    20 Aug 2006 22:48:49 -0000      1.2
@@ -12,4 +12,6 @@
 void emphasis_tree_pls_set(Etk_Tree *tree, Evas_List *playlist);
 
 void emphasis_pls_mark_current(Etk_Tree *tree, int id);
+
+void emphasis_pls_list_init(Emphasis_Player_Gui *player);
 #endif /* EMPHASIS_MEDIA_H_ */
===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_misc.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- emphasis_misc.c     21 Jul 2006 04:05:27 -0000      1.3
+++ emphasis_misc.c     20 Aug 2006 22:48:49 -0000      1.4
@@ -250,3 +250,80 @@
       i++;
     }
 }
+
+void 
+pack_in_vbox(Etk_Widget *child, void *data)
+{
+  Etk_Widget *vbox;
+  vbox = data;
+  etk_box_append(ETK_BOX(vbox), child, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
+}
+
+void
+etk_button_make_vertical(Etk_Widget *button)
+{
+  Etk_Widget *align;
+  Etk_Widget *hbox;
+  Etk_Widget *vbox;
+
+  align = evas_list_data(etk_container_children_get(ETK_CONTAINER(button)));
+  hbox  = evas_list_data(etk_container_children_get(ETK_CONTAINER(align)));
+
+  etk_container_remove(ETK_CONTAINER(button), align);
+  etk_container_remove(ETK_CONTAINER(align),  hbox);
+
+  vbox = etk_vbox_new(ETK_FALSE, 0);
+  etk_widget_show(vbox);
+  etk_container_for_each_data(ETK_CONTAINER(hbox), pack_in_vbox, (void *)vbox);
+  etk_container_add(ETK_CONTAINER(align),  vbox);
+  etk_container_add(ETK_CONTAINER(button), align);
+
+  etk_widget_pass_mouse_events_set(align, ETK_TRUE);
+  etk_object_destroy(ETK_OBJECT(hbox));
+}
+
+/* Used for debug tiem to time */
+void etk_container_inspect(Etk_Container *container, int lvl, int *to_trace)
+{ 
+#define PRINTF_TYPE_NAME(widget) printf("%s\n", \
+                                          etk_type_name_get( \
+                                            etk_object_object_type_get( \
+                                              ETK_OBJECT(widget))));
+  Evas_List *children;
+  Etk_Widget *widget;
+  int i = 0;
+
+  if (lvl == 0)
+    PRINTF_TYPE_NAME(ETK_WIDGET(container));
+
+  children = etk_container_children_get(ETK_CONTAINER(container));
+  
+  while (children)
+    {
+      widget = evas_list_data(children);
+      for (i=0; i<=lvl; i++)
+        {
+          if (to_trace[i])
+            printf("|    ");
+          else
+            printf("     ");
+        }
+      printf("'");
+      printf("----");
+      PRINTF_TYPE_NAME(widget);
+
+      if ((int) sizeof(to_trace) < lvl+3)
+        to_trace = realloc(to_trace, sizeof(int) * (lvl+3));
+      if (evas_list_next(children) && ETK_IS_CONTAINER(widget))
+        to_trace[lvl+1] = 1;
+      else
+        to_trace[lvl+1] = 0;
+
+      if (ETK_IS_CONTAINER(widget)) 
+        {
+            etk_container_inspect(ETK_CONTAINER(widget), lvl+1, to_trace);
+        }
+      children = evas_list_next(children);
+    }
+}
+
===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_misc.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- emphasis_misc.h     21 Jul 2006 04:05:27 -0000      1.3
+++ emphasis_misc.h     20 Aug 2006 22:48:49 -0000      1.4
@@ -19,5 +19,9 @@
 void strescape(char *str);
 Evas_List *evas_list_concatenate(Evas_List *head, Evas_List *tail);
 
+void go_in_vbox(Etk_Widget *child, void *data);
+void etk_button_make_vertical(Etk_Widget *button);
+
+void etk_container_inspect(Etk_Container *container, int lvl, int *to_trace);
 /** @} */
 #endif /* EMPHASIS_MISC_H_ */
===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_mpc.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- emphasis_mpc.c      21 Jul 2006 04:05:27 -0000      1.6
+++ emphasis_mpc.c      20 Aug 2006 22:48:49 -0000      1.7
@@ -24,6 +24,13 @@
       timer = NULL;
     }
 
+  if (!mpd_server_check_version(mo, 0, 12, 0))
+    {
+      fprintf(stderr, "Wrong server version. Emphasis require MPD 0.12.0\n");
+      mpc_disconnect();
+      exit(-1);
+    }
+
   return timer;
 }
 
@@ -473,3 +480,95 @@
 {
   mpd_free(mo);
 }
+
+Evas_List *
+mpc_list_playlists(void)
+{
+  MpdData *data;
+  Evas_List *list;
+
+  data = mpd_database_list_playlist(mo);
+  list = convert_mpd_data(data);
+
+  mpd_data_free(data);
+  return list;
+}
+
+Evas_List *
+mpc_get_playlist_content(char *playlist_name)
+{
+  MpdData *data;
+  Evas_List *list;
+  
+  data = mpd_database_get_playlist_content (mo, playlist_name);
+  list = convert_mpd_data(data);
+
+  mpd_data_free(data);
+  return list;
+}
+
+void
+mpc_save_playlist(char *playlist_name)
+{
+  int mpd_error;
+
+  mpd_error = mpd_database_save_playlist(mo, playlist_name);
+  if (mpd_error != MPD_OK)
+    {
+      if (mpd_error == MPD_DATABASE_PLAYLIST_EXIST)
+        {
+          fprintf(stderr, "A playlist with the same name already exist.\n");
+        }
+    }
+}
+
+void
+mpc_delete_playlist(char *playlist_name)
+{
+  int mpd_error;
+
+  mpd_error = mpd_database_delete_playlist(mo, playlist_name);
+  if (mpd_error != MPD_OK)
+    {
+      fprintf(stderr, "An error occur during the playlist deleting\n");
+    }
+}
+
+MpdData *mpd_database_list_playlist()
+{
+       MpdData *data = NULL;
+       mpd_InfoEntity *ent = NULL;
+
+       if(!mpd_check_connected(mo))
+       {
+               return NULL;
+       }
+       if(mpd_lock_conn(mo))
+       {
+               return NULL;
+       }
+
+       mpd_sendLsInfoCommand(mo->connection, "");
+
+       while((ent = mpd_getNextInfoEntity(mo->connection))) 
+       {
+               if(ent->type == MPD_INFO_ENTITY_TYPE_PLAYLISTFILE) 
+               {
+                       data = mpd_new_data_struct_append(data);
+                       data->type = MPD_DATA_TYPE_PLAYLIST;
+                       data->playlist = ent->info.playlistFile->path;
+      ent->info.playlistFile->path=NULL;
+               }
+               mpd_freeInfoEntity(ent);
+       }
+
+       mpd_finishCommand(mo->connection);
+
+       mpd_unlock_conn(mo);
+       if(data == NULL)
+       {
+               return NULL;
+       }
+       return mpd_data_get_first(data);
+}
+
===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_mpc.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- emphasis_mpc.h      21 Jul 2006 04:05:27 -0000      1.4
+++ emphasis_mpc.h      20 Aug 2006 22:48:49 -0000      1.5
@@ -46,6 +46,14 @@
 void mpc_change_vol(int value);
 void mpc_database_update(void);
 void mpc_disconnect(void);
+
+Evas_List *mpc_list_playlists(void);
+Evas_List *mpc_get_playlist_content(char *playlist_name);
+void mpc_save_playlist(char *playlist_name);
+void mpc_load_playlist(char *playlist_name);
+void mpc_delete_playlist(char *playlist_name);
+
+MpdData *mpd_database_list_playlist();
 /** @} */
 
 #endif /* EMPHASIS_MPC_H_ */
===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_player.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- emphasis_player.c   21 Jul 2006 04:05:27 -0000      1.1
+++ emphasis_player.c   20 Aug 2006 22:48:49 -0000      1.2
@@ -1,6 +1,26 @@
 #include "emphasis.h"
 #include "emphasis_player.h"
 
+/* XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX */
+#ifndef EMPHASIS_LOCAL_PATH
+
+# if   defined(__lok__)
+#   define EMPHASIS_LOCAL_PATH "/home/lok/projects/"
+# elif defined(__any__)
+#   define EMPHASIS_LOCAL_PATH "./"
+# elif defined(__aji__)
+#   define EMPHASIS_LOCAL_PATH "/home/aji/src/"
+# else
+#   define EMPHASIS_LOCAL_PATH "./"
+# endif
+
+#endif
+
+#undef ICON_TEST
+#define ICON_TEST "emphasis/src/pict/haricot_eap-test3.png"
+/* XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX */
+
+
 #undef  EN_VAR_GET
 #define EN_VAR_GET(en,root,id) \
  (root)->small.id=ENHANCE_VAR_GET(en,"small_"#id);\
@@ -59,15 +79,39 @@
   player->small.media  = enhance_var_get(en, "small_media");
 
 
-  player->media.window = enhance_var_get(en, "media_window");
-  player->media.root   = enhance_var_get(en, "media_root");
+  player->media.window   = enhance_var_get(en, "media_window");
+  player->media.root     = enhance_var_get(en, "media_root");
 
-  player->media.pls    = enhance_var_get(en, "media_pls");
+  player->media.notebook = enhance_var_get(en, "media_notebook");
 
-  player->media.artist = enhance_var_get(en, "media_artist");
-  player->media.album  = enhance_var_get(en, "media_album");
-  player->media.track  = enhance_var_get(en, "media_track");
+  player->media.pls      = enhance_var_get(en, "media_pls");
 
+  player->media.artist   = enhance_var_get(en, "media_artist");
+  player->media.album    = enhance_var_get(en, "media_album");
+  player->media.track    = enhance_var_get(en, "media_track");
+
+  player->media.pls_list    = enhance_var_get(en, "media_pls_list");
+  player->media.pls_content = enhance_var_get(en, "media_pls_content");
+
+  player->media.pls_entry_save = enhance_var_get(en, "media_pls_entry_save");
+
+  /* Mediabox buttons init */
+  player->media.toolbar          = enhance_var_get(en, "media_toolbar");
+  player->media.button_lib       = enhance_var_get(en, "media_button_lib");
+  player->media.button_search    = enhance_var_get(en, "media_button_search");
+  player->media.button_playlists = enhance_var_get(en, "media_button_pls");
+  player->media.button_stats     = enhance_var_get(en, "media_button_stats");
+
+  /* TODO : finish the special theme  
+  etk_widget_theme_file_set(ETK_WIDGET(player->media.button_lib),
+                            PACKAGE_DATA_DIR "/widgets/media_tab_button.edj");
+  etk_widget_theme_file_set(ETK_WIDGET(player->media.button_search),
+                            PACKAGE_DATA_DIR "/widgets/media_tab_button.edj");
+  etk_widget_theme_file_set(ETK_WIDGET(player->media.button_playlists),
+                            PACKAGE_DATA_DIR "/widgets/media_tab_button.edj");
+  etk_widget_theme_file_set(ETK_WIDGET(player->media.button_stats),
+                            PACKAGE_DATA_DIR "/widgets/media_tab_button.edj");
+  */
   /* enhance completion : col def */
   etk_tree_multiple_select_set(ETK_TREE(player->media.artist), ETK_TRUE);
   etk_tree_multiple_select_set(ETK_TREE(player->media.album) , ETK_TRUE);
@@ -104,6 +148,15 @@
                    "Album",
                    etk_tree_model_text_new(ETK_TREE(player->media.pls)),
                    120);
+  /* playlists page */
+  etk_tree_col_new(ETK_TREE(player->media.pls_list),
+                   "Playlists",
+                   etk_tree_model_text_new(ETK_TREE(player->media.pls_list)),
+                   120);
+  etk_tree_col_new(ETK_TREE(player->media.pls_content),
+                   "Preview",
+                   
etk_tree_model_text_new(ETK_TREE(player->media.pls_content)),
+                   120);
   /**/
  
   etk_object_data_set(ETK_OBJECT(player->media.artist), "title", "Artist");
@@ -128,17 +181,22 @@
 
   etk_signal_connect("row_clicked", ETK_OBJECT(player->media.artist),
                      ETK_CALLBACK(cb_tree_mlib_clicked),
-                     (void*)EMPHASIS_ARTIST);
+                     player);
   etk_signal_connect("row_clicked", ETK_OBJECT(player->media.album ),
                      ETK_CALLBACK(cb_tree_mlib_clicked),
-                     (void*)EMPHASIS_ALBUM);
+                     player);
   etk_signal_connect("row_clicked", ETK_OBJECT(player->media.track ),
                      ETK_CALLBACK(cb_tree_mlib_clicked),
-                     (void*)EMPHASIS_TRACK);
+                     player);
   etk_signal_connect("row_clicked", ETK_OBJECT(player->media.pls   ),
                      ETK_CALLBACK(cb_tree_pls_clicked),
                      NULL);
 
+  /* Media pls init */
+  etk_object_data_set(ETK_OBJECT(player->media.pls_content),
+                      "Emphasis_Type",
+                      (void*)EMPHASIS_TRACK);
+
   /* enhance complection : images */
   /* TODO : use cover_haricotmagique() */
   emphasis_player_cover_set(player, PACKAGE_DATA_DIR EMPHASIS_LOGO);
@@ -146,13 +204,18 @@
   emphasis_player_vol_image_set(player, 0, PACKAGE_DATA_DIR EMPHASIS_SOUNDL);
   emphasis_player_vol_image_set(player, 1, PACKAGE_DATA_DIR EMPHASIS_SOUNDR);
 
+  player->small.cover_size_w = player->small.cover->requested_size.w;
+  player->small.cover_size_h = player->small.cover->requested_size.h;
+  player->full.cover_size_w  = player->full.cover->requested_size.w;
+  player->full.cover_size_h  = player->full.cover->requested_size.h;
+
   /* TEMP configuration, need to add this to enhance */
   etk_window_wmclass_set(ETK_WINDOW(player->full.window),
-                         "Emphasis", "emphasis");
+                         "emphasis", "Emphasis");
   etk_window_wmclass_set(ETK_WINDOW(player->small.window),
-                         "Emphasis", "emphasis");
+                         "emphasis", "Emphasis");
   etk_window_wmclass_set(ETK_WINDOW(player->media.window),
-                         "Emphasis", "emphasis");
+                         "emphasis", "Emphasis");
   etk_container_border_width_set(ETK_CONTAINER(player->full.window), 5);
 }
 
@@ -164,7 +227,7 @@
   en = player->en;
 
   /* destroyed */
-  enhance_callback_data_set(en, "cb_quit", player);
+  enhance_callback_data_set(en, "cb_quit"      , player);
   enhance_callback_data_set(en, "cb_media_quit", player);
 
   /* clicked */
@@ -201,6 +264,21 @@
   /* row_selected */
   enhance_callback_data_set(en, "cb_tree_artist_selected", player);
   enhance_callback_data_set(en, "cb_tree_album_selected" , player);
+
+  /* media buttonbox */
+  enhance_callback_data_set(en, "cb_media_button_lib_clicked"      , player);
+  enhance_callback_data_set(en, "cb_media_button_search_clicked"   , player);
+  enhance_callback_data_set(en, "cb_media_button_playlists_clicked", player);
+  enhance_callback_data_set(en, "cb_media_button_stats_clicked"    , player);
+
+  enhance_callback_data_set(en, "cb_media_pls_list_row_clicked"    , player);
+  enhance_callback_data_set(en, "cb_media_pls_save_clicked"        , player);
+  enhance_callback_data_set(en, "cb_media_pls_load_clicked"        , player);
+  enhance_callback_data_set(en, "cb_media_pls_del_clicked"         , player);
+
+  enhance_callback_data_set(en, "cb_media_pls_list_row_clicked"    , player);
+  enhance_callback_data_set(en, "cb_tree_mlib_clicked"             , player);
+  enhance_callback_data_set(en, "cb_media_pls_save_key_down"       , player);
 }
 
 /* TODO : documentation */
@@ -219,6 +297,19 @@
   etk_widget_size_request_set(player->full.cover , w, h);
 }
 
+/* TODO : documentation */
+void
+emphasis_player_cover_size_update(Emphasis_Player_Gui *player)
+{
+  etk_widget_size_request_set(player->small.cover,
+                              player->small.cover_size_w,
+                              player->small.cover_size_h);
+
+  etk_widget_size_request_set(player->full.cover,
+                              player->full.cover_size_w,
+                              player->full.cover_size_h);
+}
+
 /* TODO : update doc */
 /**
  * @brief Set the message in th textblock
@@ -230,40 +321,87 @@
 emphasis_player_info_set(Emphasis_Player_Gui *player,
                          mpd_Song * song, char *msg)
 {
-  char *info;
+  char *info_label;
+  char *info_textblock;
 
   if (song)
     {
       char **table[] = {&(song->artist), &(song->title), &(song->album), NULL};
       emphasis_unknow_if_null(table);
 
-      asprintf(&info, "\n<b><font size=16>%s</font></b> \n \n"
-               "<font size=11><i>by</i></font>  <font size=13>%s</font>  "
-               "<font size=11><i>in</i></font>  <font size=13>%s</font> \n \n",
-               song->title, song->artist, song->album);
-      if (msg)
+      /* TEMP */
+      if (!msg)
         {
-          asprintf(&info, "%s <font size=11>(%s)</font>", info, msg);
+          asprintf(&info_label,
+                   "<left_margin=10>"
+                   "<b><font_size=16>%s</font_size></b>"
+                   "<br><br>"
+                   "<font_size=11><i>by</i></font_size>  "
+                   "<font_size=13>%s</font_size>  "
+                   "<font_size=11><i>in</i></font_size>  "
+                   "<font_size=13>%s</font_size>"
+                   "</left_margin>",
+                   song->title, song->artist, song->album);
+           asprintf(&info_textblock,
+                    "<b><font size=16>%s</font size></b>"
+                    "\n\n"
+                    "<font size=11><i>by</i></font size>  "
+                    "<font size=13>%s</font size>\n"
+                    "<font size=11><i>in</i></font size>  "
+                    "<font size=13>%s</font size>",
+                    song->title, song->artist, song->album);
         }
-      etk_textblock_text_set(ETK_TEXT_VIEW(player->full.info)->textblock,  
info,
-                             ETK_TRUE);
-      etk_textblock_text_set(ETK_TEXT_VIEW(player->small.info)->textblock, 
info,
+      else
+        {
+          asprintf(&info_label,
+                   "<left_margin=10>"
+                   "<b><font_size=16>%s</font_size></b>"
+                   "<br><br>"
+                   "<font_size=11><i>by</i></font_size>  "
+                   "<font_size=13>%s</font_size>  "
+                   "<font_size=11><i>in</i></font_size>  "
+                   "<font_size=13>%s</font_size>"
+                   "<font_size=11>   (%s)</font_size>"
+                   "</left_margin>",
+                   song->title, song->artist, song->album, msg);
+          asprintf(&info_textblock,
+                   "<b><font size=16>%s</font size></b>"
+                   "\n\n"
+                   "<font size=11><i>by</i></font size>  "
+                   "<font size=13>%s</font size>\n"
+                   "<font size=11><i>in</i></font size>  "
+                   "<font size=13>%s</font size>"
+                   "<font size=11>(%s)</font size>",
+                   song->title, song->artist, song->album, msg);
+        }
+      
+      etk_label_set(ETK_LABEL(player->full.info), info_label);
+      etk_textblock_text_set(ETK_TEXT_VIEW(player->small.info)->textblock,
+                             info_textblock,
                              ETK_TRUE);
-
-      free(info);
+      free(info_label);
+      free(info_textblock);
     }
   else
     {
       if (msg)
         {
-          asprintf(&info, "%s", msg);
-          etk_textblock_text_set(ETK_TEXT_VIEW(player->full.info)->textblock,
-                                 info, ETK_TRUE);
+          asprintf(&info_label, "%s", msg);
+          asprintf(&info_textblock, "%s", msg);
+
+          etk_label_set(ETK_LABEL(player->full.info), info_label);
           etk_textblock_text_set(ETK_TEXT_VIEW(player->small.info)->textblock,
-                                 info, ETK_TRUE);
-          free(info);
+                                 info_textblock, ETK_TRUE);
+
+          free(info_label);
+          free(info_textblock);
+          
         }
     }
+  
+  etk_textblock_object_cursor_visible_set
+   (ETK_TEXT_VIEW(player->small.info)->textblock->evas_objects->data,
+    ETK_FALSE);
 }
 
 /* TODO : update doc */
@@ -408,4 +546,12 @@
       cb_switch_small(NULL, player);
       break;
     }
+}
+
+void
+emphasis_player_force_mode_set(Emphasis_Player_Gui *player,
+                               Emphasis_Mode state)
+{
+  player->state = (state == EMPHASIS_SMALL) ? EMPHASIS_FULL : EMPHASIS_SMALL;
+  emphasis_player_mode_set(player, state);
 }
===================================================================
RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_player.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- emphasis_player.h   21 Jul 2006 04:05:27 -0000      1.1
+++ emphasis_player.h   20 Aug 2006 22:48:49 -0000      1.2
@@ -4,7 +4,7 @@
 
 #define EMPHASIS_GLADE  "/emphasis.glade"
 
-#define EMPHASIS_LOGO   "/images/haricot_musique-grrrr.png"
+#define EMPHASIS_LOGO   "/images/haricot_musique.png"
 #define EMPHASIS_SOUNDL "/images/sound_low.png"
 #define EMPHASIS_SOUNDR "/images/sound_high.png"
 
@@ -30,6 +30,8 @@
       Etk_Widget *root;
 
       Etk_Widget *cover;
+      int         cover_size_w;
+      int         cover_size_h;
 
       Etk_Widget *play;
       Etk_Widget *stop;
@@ -57,6 +59,8 @@
       Etk_Widget *root;
 
       Etk_Widget *cover;
+      int         cover_size_w;
+      int         cover_size_h;
 
       Etk_Widget *play;
       Etk_Widget *stop;
@@ -82,12 +86,26 @@
       Etk_Widget *window;
       Etk_Widget *root;
 
+      Etk_Widget *button_lib;
+      Etk_Widget *button_search;
+      Etk_Widget *button_playlists;
+      Etk_Widget *button_stats;
+
+      Etk_Widget *notebook;
+      Etk_Widget *toolbar;
+
+      /* Pane 1 content */
       Etk_Widget *pls;
 
       Etk_Widget *artist;
       Etk_Widget *album;
       Etk_Widget *track;
 
+      /* Pane 3 content */
+      Etk_Widget *pls_list;
+      Etk_Widget *pls_content;
+      Etk_Widget *pls_entry_save;
+
       Etk_Widget *drag;
     } media;
 
@@ -101,6 +119,8 @@
 
 void emphasis_player_cover_size_set(Emphasis_Player_Gui *player, int w, int h);
 
+void emphasis_player_cover_size_update(Emphasis_Player_Gui *player);
+
 void emphasis_player_info_set(Emphasis_Player_Gui *player,
                               mpd_Song * song, char *msg);
 void emphasis_player_progress_set(Emphasis_Player_Gui *player,
@@ -120,6 +140,9 @@
                                    const char *path);
 void emphasis_player_mode_set(Emphasis_Player_Gui *player,
                               Emphasis_Mode state);
+
+void emphasis_player_force_mode_set(Emphasis_Player_Gui *player,
+                                    Emphasis_Mode state);
 
 /** @} */
 #endif /* EMPHASIS_PLAYER_H_ */



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to