r2854 - trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src
abraxa at sita.openmoko.org
abraxa at sita.openmoko.org
Thu Aug 30 08:19:31 CEST 2007
Author: abraxa
Date: 2007-08-30 08:19:25 +0200 (Thu, 30 Aug 2007)
New Revision: 2854
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/editor_page.c
trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/guitools.c
trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/guitools.h
trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/main.c
trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/main.h
trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/main_page.c
trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/persistent.c
trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/persistent.h
trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/playback.c
trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/playback.h
trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/playlist.c
trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/playlist_page.c
Log:
Cleared dialog titles
Added fade-in on session resume
Improved gstreamer error handling
Various minor improvements/bugfixes
Modified: trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/editor_page.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/editor_page.c 2007-08-29 23:17:36 UTC (rev 2853)
+++ trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/editor_page.c 2007-08-30 06:19:25 UTC (rev 2854)
@@ -193,8 +193,6 @@
renderer = gtk_cell_renderer_pixbuf_new();
g_object_set(G_OBJECT(renderer), "pixbuf", track_icon, NULL);
column = gtk_tree_view_column_new_with_attributes("", renderer, NULL);
- gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED);
- gtk_tree_view_column_set_fixed_width(column, BUTTON_PIXMAP_SIZE);
gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), column);
renderer = gtk_cell_renderer_text_new();
@@ -252,7 +250,7 @@
hbox = gtk_hbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER(button), GTK_WIDGET(hbox));
- image = gtk_image_new_from_icon_name("gtk-file", BUTTON_PIXMAP_SIZE);
+ image = gtk_image_new_from_icon_name("gtk-file", GTK_ICON_SIZE_BUTTON);
gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(image), TRUE, TRUE, 0);
alignment = label_create(&label, "Sans 6", "black", 0, 0, 0, 0, 0);
Modified: trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/guitools.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/guitools.c 2007-08-29 23:17:36 UTC (rev 2853)
+++ trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/guitools.c 2007-08-30 06:19:25 UTC (rev 2854)
@@ -24,6 +24,8 @@
* Various helper functions to aid with GUI creation and handling
*/
+#include <gtk/gtk.h>
+
#include "guitools.h"
/// Absolute path to the UI pixmaps
@@ -129,6 +131,25 @@
}
/**
+ * Presents a simple modal error dialog to the user
+ */
+void
+error_dialog(gchar *message)
+{
+ GtkWidget *dialog;
+
+ dialog = gtk_message_dialog_new(0,
+ GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
+ "%s", message);
+
+ // We don't want a title of "<unnamed>"
+ gtk_window_set_title(GTK_WINDOW(dialog), " ");
+
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+}
+
+/**
* Loads an image from disk and adds it to a given container, returning a reference to the image as well
*/
void
Modified: trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/guitools.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/guitools.h 2007-08-29 23:17:36 UTC (rev 2853)
+++ trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/guitools.h 2007-08-30 06:19:25 UTC (rev 2854)
@@ -39,6 +39,8 @@
gfloat xalign, gfloat yalign, gfloat xscale, gfloat yscale, gint max_char_count);
GtkWidget *button_create_with_image(gchar *image_name, GtkWidget **image, GCallback callback);
+void error_dialog(gchar *message);
+
void container_add_image_with_ref(GtkContainer *container, gchar *image_name, GtkWidget **image);
void container_add_image(GtkContainer *container, gchar *image_name);
Modified: trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/main.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/main.c 2007-08-29 23:17:36 UTC (rev 2853)
+++ trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/main.c 2007-08-30 06:19:25 UTC (rev 2854)
@@ -64,13 +64,17 @@
// Forces the window to the native size of the Neo1973's screen area if enabled
//define EMULATE_SIZE
-GtkWidget *omp_window = NULL; ///< Application's main window
-GtkWidget *omp_notebook = NULL; ///< GtkNotebook containing the pages making up the UI
-struct _omp_notebook_tab_ids *omp_notebook_tab_ids = NULL; ///< Holds numerical IDs of the notebook tabs, used for gtk_notebook_set_current_page()
-struct _omp_notebook_tabs *omp_notebook_tabs = NULL; ///< Holds the GtkWidget handles of the notebook tabs so they can be hidden/shown
+/// Application's main window
+GtkWidget *omp_window = NULL;
+/// GtkNotebook containing the pages making up the UI
+GtkWidget *omp_notebook = NULL;
+/// Holds the tab widgets of the GtkNotebook
+GtkWidget *omp_notebook_tabs[OMP_TABS];
+
+
/**
* Terminate the entire program normally
*/
@@ -177,10 +181,11 @@
/**
* Makes sure only one instance of the media player is running at a time
+ * @return TRUE if lock is in place, FALSE if it wasn't
* @todo Single-instance mechanism needs to be improved
*/
-void
-handle_locking()
+gboolean
+check_lock()
{
gchar *lock_file = "/tmp/mediaplayer.lock";
pid_t pid;
@@ -190,10 +195,11 @@
{
g_printf(_("Already running an instance of the Media Player, bringing that to the front instead.\n"));
kill(pid, SIGUSR1);
- return;
+ return TRUE;
}
set_lock(lock_file);
+ return FALSE;
}
/**
@@ -219,7 +225,7 @@
g_signal_connect(G_OBJECT(omp_window), "destroy", G_CALLBACK(omp_close), NULL);
#ifdef EMULATE_SIZE
- gtk_widget_set_size_request(GTK_WIDGET(omp_window), 480, 620);
+ gtk_widget_set_size_request(GTK_WIDGET(omp_window), 480, 600);
#endif
}
@@ -231,7 +237,6 @@
omp_window_create_pages()
{
GtkWidget *page;
- guint page_id = 0;
// Create and set up the notebook that contains the individual UI pages
omp_notebook = gtk_notebook_new();
@@ -240,47 +245,59 @@
gtk_container_add(GTK_CONTAINER(omp_window), GTK_WIDGET(omp_notebook));
gtk_widget_show(omp_notebook);
- omp_notebook_tab_ids = g_new0(struct _omp_notebook_tab_ids, 1);
- omp_notebook_tabs = g_new0(struct _omp_notebook_tabs, 1);
-
// Add main page
page = omp_main_page_create();
notebook_add_page_with_icon(omp_notebook, page, MOKO_STOCK_SPEAKER, 0);
- omp_notebook_tab_ids->main = page_id++;
- omp_notebook_tabs->main = page;
+ omp_notebook_tabs[OMP_TAB_MAIN] = page;
// Add playlist page
page = omp_playlist_page_create();
notebook_add_page_with_icon(omp_notebook, page, MOKO_STOCK_VIEW, 0);
- omp_notebook_tab_ids->playlists = page_id++;
- omp_notebook_tabs->playlists = page;
+ omp_notebook_tabs[OMP_TAB_PLAYLISTS] = page;
// Add playlist editor page
page = omp_editor_page_create();
notebook_add_page_with_icon(omp_notebook, page, "gtk-index", 0);
- omp_notebook_tab_ids->editor = page_id++;
- omp_notebook_tabs->editor = page;
+ omp_notebook_tabs[OMP_TAB_PLAYLIST_EDITOR] = page;
+ gtk_widget_hide(page); // We show the page once a playlist was loaded
}
/**
- * Frees all resources used by the main window
+ * Displays the main window and all widgets it contains
*/
void
-omp_window_free()
+omp_window_show()
{
- g_free(omp_notebook_tab_ids);
+ gtk_widget_show(omp_window);
}
/**
- * Displays the main window and all widgets it contains
+ * Makes one of the UI tabs visible on the notebook
+ * @param tab_id An ID taken from the omp_notebook_tabs enum
+ * @see omp_notebook_tabs
*/
void
-omp_window_show()
+omp_show_tab(guint tab_id)
{
- gtk_widget_show(omp_window);
+ g_return_if_fail(tab_id < OMP_TABS);
+
+ gtk_widget_show(GTK_WIDGET(omp_notebook_tabs[tab_id]));
}
/**
+ * Hides one of the UI tabs from the notebook
+ * @param tab_id An ID taken from the omp_notebook_tabs enum
+ * @see omp_notebook_tabs
+ */
+void
+omp_hide_tab(guint tab_id)
+{
+ g_return_if_fail(tab_id < OMP_TABS);
+
+ gtk_widget_hide(GTK_WIDGET(omp_notebook_tabs[tab_id]));
+}
+
+/**
* If only I knew what this is
*/
gint
@@ -330,7 +347,7 @@
}
// Make sure we have only one instance running
- handle_locking();
+ if (check_lock()) return EXIT_SUCCESS;
// Initialize gstreamer, must be last in the chain of command line parameter processors
if (!gst_init_check(&argc, &argv, &error))
@@ -354,7 +371,7 @@
// Initialize playback, playlist and UI handling
omp_config_init();
omp_window_create();
- omp_playback_init();
+ if (!omp_playback_init()) return EXIT_FAILURE;
omp_playlist_init();
omp_window_create_pages();
@@ -370,7 +387,6 @@
omp_playback_save_state();
omp_playback_free();
omp_playlist_free();
- omp_window_free();
gst_deinit();
g_free(ui_image_path);
Modified: trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/main.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/main.h 2007-08-29 23:17:36 UTC (rev 2853)
+++ trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/main.h 2007-08-30 06:19:25 UTC (rev 2854)
@@ -29,9 +29,6 @@
#include <gtk/gtk.h>
-// This size is valid for the entire application and determines the size of the button's icons
-#define BUTTON_PIXMAP_SIZE 36
-
// Where to find application-specific images relative to $DATA_DIR (/usr/share/openmoko-mediaplayer)?
#define RELATIVE_UI_IMAGE_PATH "/images"
@@ -41,22 +38,20 @@
// What file to save/load session data to/from? File name is relative to user's home directory
#define SESSION_FILE_NAME "/.openmoko-mediaplayer"
-
-struct _omp_notebook_tab_ids
+enum omp_notebook_tabs
{
- guint main, playlists, editor, files;
+ OMP_TAB_MAIN = 0,
+ OMP_TAB_PLAYLISTS,
+ OMP_TAB_PLAYLIST_EDITOR,
+ OMP_TABS
};
-struct _omp_notebook_tabs
-{
- GtkWidget *main, *playlists, *editor, *files;
-};
-
-extern struct _omp_notebook_tab_ids *omp_notebook_tab_ids;
-extern struct _omp_notebook_tabs *omp_notebook_tabs;
extern GtkWidget *omp_notebook;
extern GtkWidget *omp_window;
void omp_application_terminate();
+void omp_show_tab(guint tab_id);
+void omp_hide_tab(guint tab_id);
+
#endif
Modified: trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/main_page.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/main_page.c 2007-08-29 23:17:36 UTC (rev 2853)
+++ trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/main_page.c 2007-08-30 06:19:25 UTC (rev 2854)
@@ -92,7 +92,7 @@
g_object_set(G_OBJECT(button), "xalign", (gfloat)0.37, "yalign", (gfloat)0.37, NULL);
- *image = gtk_image_new_from_icon_name(image_name, BUTTON_PIXMAP_SIZE);
+ *image = gtk_image_new_from_icon_name(image_name, GTK_ICON_SIZE_BUTTON);
gtk_container_add(GTK_CONTAINER(button), GTK_WIDGET(*image));
return button;
@@ -744,12 +744,12 @@
if (omp_playback_get_state() == OMP_PLAYBACK_STATE_PAUSED)
{
gtk_image_set_from_icon_name(GTK_IMAGE(main_widgets.play_pause_button_image),
- "gtk-media-play-ltr", BUTTON_PIXMAP_SIZE);
+ "gtk-media-play-ltr", GTK_ICON_SIZE_BUTTON);
} else {
gtk_image_set_from_icon_name(GTK_IMAGE(main_widgets.play_pause_button_image),
- "gtk-media-pause", BUTTON_PIXMAP_SIZE);
+ "gtk-media-pause", GTK_ICON_SIZE_BUTTON);
}
}
Modified: trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/persistent.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/persistent.c 2007-08-29 23:17:36 UTC (rev 2853)
+++ trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/persistent.c 2007-08-30 06:19:25 UTC (rev 2854)
@@ -332,3 +332,12 @@
omp_session->volume = volume;
omp_session_save();
}
+
+/**
+ * Returns the number of milliseconds defining the duration of a volume fade
+ */
+guint
+omp_session_get_fade_speed()
+{
+ return omp_session->fade_speed;
+}
Modified: trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/persistent.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/persistent.h 2007-08-29 23:17:36 UTC (rev 2853)
+++ trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/persistent.h 2007-08-30 06:19:25 UTC (rev 2854)
@@ -85,4 +85,6 @@
void omp_session_set_track_id(guint track_id);
void omp_session_set_volume(guint volume);
+guint omp_session_get_fade_speed();
+
#endif
Modified: trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/playback.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/playback.c 2007-08-29 23:17:36 UTC (rev 2853)
+++ trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/playback.c 2007-08-30 06:19:25 UTC (rev 2854)
@@ -24,19 +24,34 @@
* Playback engine interface
*/
+#include <glib/gi18n.h>
#include <gst/gst.h>
-
#include <uriparser/Uri.h>
#include "playback.h"
+#include "guitools.h"
+#include "main.h"
#include "persistent.h"
-#include "main.h"
-GstElement *omp_gst_playbin = NULL; ///< Our ticket to the gstreamer world
-guint omp_playback_ui_timeout = 0; ///< Handle of the UI-updating timeout
-gboolean omp_playback_ui_timeout_halted; ///< Flag that tells the UI-updating timeout to exit if set
-gulong omp_playback_pending_position = 0; ///< Since we can't set a new position if element is not paused or playing we store the position here and set it when it reached either state
+/// Our ticket to the gstreamer world
+GstElement *omp_gst_playbin = NULL;
+/// Handle of the UI-updating timeout
+guint omp_playback_ui_timeout = 0;
+
+/// Flag that tells the UI-updating timer to exit if set
+gboolean omp_playback_ui_timeout_halted;
+
+/// Since we can't set a new position if element is not paused or playing we
+/// store the position here and set it when it reached either state
+gulong omp_playback_pending_position = 0;
+
+/// Contains the final volume when fading (-1 means "not fading")
+guint omp_playback_fade_final_vol = -1;
+
+/// Holds the volume increment per UI-update timer call
+guint omp_playback_fade_increment = 0;
+
// Some private forward declarations
static gboolean omp_gst_message_eos(GstBus *bus, GstMessage *message, gpointer data);
static gboolean omp_gst_message_state_changed(GstBus *bus, GstMessage *message, gpointer data);
@@ -48,8 +63,9 @@
/**
* Initializes gstreamer by setting up pipe, message hooks and bins
+ * @return TRUE on success, FAIL if an error occured
*/
-void
+gboolean
omp_playback_init()
{
GstBus *bus;
@@ -57,7 +73,7 @@
// Bail if everything is already set up
if (omp_gst_playbin)
{
- return;
+ return TRUE;
}
// Create the signals we'll emit
@@ -92,6 +108,13 @@
// Set up gstreamer pipe and bins
omp_gst_playbin = gst_element_factory_make("playbin", "play");
+ if (!omp_gst_playbin)
+ {
+ error_dialog(_("Error: gstreamer failed to initialize.\nPlease make sure gstreamer and its modules are properly installed."));
+
+ return FALSE;
+ }
+
// Set up message hooks
bus = gst_pipeline_get_bus(GST_PIPELINE(omp_gst_playbin));
@@ -103,6 +126,8 @@
g_signal_connect(bus, "message::tag", G_CALLBACK(omp_gst_message_tag), NULL);
gst_object_unref(bus);
+
+ return TRUE;
}
/**
@@ -179,6 +204,24 @@
static gboolean
omp_playback_ui_timeout_callback(gpointer data)
{
+ guint volume;
+
+ // Fade in if needed
+ if (omp_playback_fade_final_vol != -1)
+ {
+ volume = omp_playback_get_volume()+omp_playback_fade_increment;
+
+ if (volume > omp_playback_fade_final_vol)
+ {
+ omp_playback_set_volume(omp_playback_fade_final_vol);
+ omp_playback_fade_final_vol = -1;
+
+ } else {
+
+ omp_playback_set_volume(volume);
+ }
+ }
+
g_signal_emit_by_name(G_OBJECT(omp_window), OMP_EVENT_PLAYBACK_POSITION_CHANGED);
if (omp_playback_ui_timeout_halted)
@@ -367,9 +410,13 @@
// Set playbin volume which ranges from 0.0 to 1.0
g_object_set(G_OBJECT(omp_gst_playbin), "volume", volume/100.0, NULL);
- omp_session_set_volume(volume);
+ // Volume fading shouldn't be visible to the user
+ if (omp_playback_fade_final_vol == -1)
+ {
+ omp_session_set_volume(volume);
- g_signal_emit_by_name(G_OBJECT(omp_window), OMP_EVENT_PLAYBACK_VOLUME_CHANGED);
+ g_signal_emit_by_name(G_OBJECT(omp_window), OMP_EVENT_PLAYBACK_VOLUME_CHANGED);
+ }
}
/**
@@ -391,6 +438,14 @@
void
omp_playback_fade_volume()
{
+ omp_playback_fade_final_vol = omp_playback_get_volume();
+ omp_playback_set_volume(0);
+
+ omp_playback_fade_increment =
+ omp_playback_fade_final_vol / (omp_session_get_fade_speed()/PLAYBACK_UI_UPDATE_INTERVAL);
+
+ if (omp_playback_fade_increment == 0)
+ omp_playback_fade_increment = 1;
}
/**
@@ -445,13 +500,18 @@
static gboolean
omp_gst_message_error(GstBus *bus, GstMessage *message, gpointer data)
{
- #ifdef DEBUG
- GError *error;
- gst_message_parse_error(message, &error, NULL);
- g_printerr("gstreamer error: %s\n", error->message);
- g_error_free(error);
- #endif
+ GError *error;
+ gchar *text;
+ gst_message_parse_error(message, &error, NULL);
+ g_printerr("gstreamer error: %s\n", error->message);
+
+ text = g_strdup_printf("gstreamer error:\n%s", error->message);
+ error_dialog(text);
+ g_free(text);
+
+ g_error_free(error);
+
return TRUE;
}
@@ -461,13 +521,18 @@
static gboolean
omp_gst_message_warning(GstBus *bus, GstMessage *message, gpointer data)
{
- #ifdef DEBUG
- GError *error;
- gst_message_parse_warning(message, &error, NULL);
- g_printerr("gstreamer warning: %s\n", error->message);
- g_error_free(error);
- #endif
+ GError *error;
+ gchar *text;
+ gst_message_parse_warning(message, &error, NULL);
+ g_printerr("gstreamer warning: %s\n", error->message);
+
+ text = g_strdup_printf("gstreamer warning:\n%s", error->message);
+ error_dialog(text);
+ g_free(text);
+
+ g_error_free(error);
+
return TRUE;
}
Modified: trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/playback.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/playback.h 2007-08-29 23:17:36 UTC (rev 2853)
+++ trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/playback.h 2007-08-30 06:19:25 UTC (rev 2854)
@@ -44,7 +44,7 @@
// The UI will be updated at this interval when a track is playing (in ms)
#define PLAYBACK_UI_UPDATE_INTERVAL 1000
-void omp_playback_init();
+gboolean omp_playback_init();
void omp_playback_free();
void omp_playback_save_state();
void omp_playback_reset();
Modified: trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/playlist.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/playlist.c 2007-08-29 23:17:36 UTC (rev 2853)
+++ trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/playlist.c 2007-08-30 06:19:25 UTC (rev 2854)
@@ -33,6 +33,7 @@
#include <string.h>
#include "playlist.h"
+#include "guitools.h"
#include "omp_spiff_c.h"
#include "main.h"
#include "playback.h"
@@ -138,8 +139,7 @@
gboolean
omp_playlist_load(gchar *playlist_file, gboolean do_state_reset)
{
- GtkWidget *dialog;
- gchar *title;
+ gchar *title, *text;
// Free the track history's memory by deleting the first element until the list is empty
while (omp_track_history)
@@ -188,6 +188,9 @@
g_signal_emit_by_name(G_OBJECT(omp_window), OMP_EVENT_PLAYLIST_LOADED, title);
g_free(title);
+ // Show playlist editor
+ omp_show_tab(OMP_TAB_PLAYLIST_EDITOR);
+
} else {
omp_playlist_current_track_id = -1;
@@ -198,12 +201,9 @@
#endif
// Notify user
- dialog = gtk_message_dialog_new(0,
- GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
- _("\nCould not load playlist '%s'"), playlist_file);
-
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
+ text = g_strdup_printf(_("\nCould not load playlist '%s'"), playlist_file);
+ error_dialog(text);
+ g_free(text);
}
return omp_playlist ? TRUE : FALSE;
Modified: trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/playlist_page.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/playlist_page.c 2007-08-29 23:17:36 UTC (rev 2853)
+++ trunk/src/target/OM-2007.2/applications/openmoko-mediaplayer2/src/playlist_page.c 2007-08-30 06:19:25 UTC (rev 2854)
@@ -29,6 +29,8 @@
#include <libmokoui2/moko-finger-scroll.h>
#include <libmokoui2/moko-stock.h>
+#include <string.h>
+
#include "playlist_page.h"
#include "main.h"
#include "guitools.h"
@@ -71,17 +73,15 @@
GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
_("Load playlist '%s'?"), playlist_name);
+ // We don't want a title of "<unnamed>"
+ gtk_window_set_title(GTK_WINDOW(dialog), " ");
+
dialog_result = gtk_dialog_run(GTK_DIALOG(dialog));
if (dialog_result == GTK_RESPONSE_YES)
{
// Load playlist with state reset to have sane playlist values
- if (omp_playlist_load(playlist_file_abs, TRUE))
- {
- // Switch back to main UI page
-/* gtk_notebook_set_current_page(GTK_NOTEBOOK(omp_notebook),
- omp_notebook_tab_ids->main); */
- }
+ omp_playlist_load(playlist_file_abs, TRUE);
}
// Clean up
@@ -104,6 +104,9 @@
GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
_("Delete playlist '%s'?"), playlist_name);
+ // We don't want a title of "<unnamed>"
+ gtk_window_set_title(GTK_WINDOW(dialog), " ");
+
dialog_result = gtk_dialog_run(GTK_DIALOG(dialog));
if (dialog_result == GTK_RESPONSE_YES)
@@ -191,7 +194,7 @@
gchar *path, *file_name;
const gchar *name = gtk_entry_get_text(GTK_ENTRY(omp_playlist_page_entry));
- g_return_if_fail(name);
+ g_return_if_fail(strcmp(name, "") != 0);
// Playlist path is relative to user's home dir
path = g_build_path("/", g_get_home_dir(), RELATIVE_PLAYLIST_PATH, NULL);
@@ -285,8 +288,6 @@
renderer = gtk_cell_renderer_pixbuf_new();
g_object_set(G_OBJECT(renderer), "stock-id", MOKO_STOCK_VIEW, NULL);
column = gtk_tree_view_column_new_with_attributes("", renderer, NULL);
- gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED);
- gtk_tree_view_column_set_fixed_width(column, BUTTON_PIXMAP_SIZE);
gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), column);
renderer = gtk_cell_renderer_text_new();
@@ -300,8 +301,6 @@
renderer = gtk_cell_renderer_pixbuf_new();
g_object_set(G_OBJECT(renderer), "stock-id", "gtk-delete", NULL);
column = gtk_tree_view_column_new_with_attributes("", renderer, NULL);
- gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED);
- gtk_tree_view_column_set_fixed_width(column, 1*BUTTON_PIXMAP_SIZE);
gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), column);
// Add playlist view to container
@@ -342,7 +341,7 @@
input_box = gtk_hbox_new(FALSE, 0);
omp_playlist_page_entry = gtk_entry_new();
button = gtk_button_new();
- image = gtk_image_new_from_icon_name("gtk-add", BUTTON_PIXMAP_SIZE);
+ image = gtk_image_new_from_icon_name("gtk-add", GTK_ICON_SIZE_BUTTON);
gtk_container_add(GTK_CONTAINER(button), GTK_WIDGET(image));
g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(omp_playlist_page_add_list), NULL);
More information about the commitlog
mailing list