From 6b3fb74a165d626dc96489497ec3ebf754873b7d Mon Sep 17 00:00:00 2001 From: Alexey Yakovenko Date: Sat, 7 Nov 2009 17:51:41 +0100 Subject: moved all session crap to common config --- callbacks.c | 32 +++++++----------- gtkplaylist.c | 2 +- gtksession.c | 17 ++++++---- main.c | 11 +++--- playlist.c | 19 ++++------- playlist.h | 6 ---- session.c | 107 +++++++++++++++++++++------------------------------------- session.h | 38 --------------------- volume.c | 6 ++-- 9 files changed, 76 insertions(+), 162 deletions(-) diff --git a/callbacks.c b/callbacks.c index 213e4b32..6f756b32 100644 --- a/callbacks.c +++ b/callbacks.c @@ -307,12 +307,12 @@ on_open_activate (GtkMenuItem *menuitem, gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dlg), TRUE); // restore folder - gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dlg), session_get_directory ()); + gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dlg), conf_get_str ("filechooser.lastdir", "")); int response = gtk_dialog_run (GTK_DIALOG (dlg)); // store folder gchar *folder = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dlg)); if (folder) { - session_set_directory (folder); + conf_set_str ("filechooser.lastdir", folder); g_free (folder); } if (response == GTK_RESPONSE_OK) @@ -341,12 +341,12 @@ on_add_files_activate (GtkMenuItem *menuitem, gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dlg), TRUE); // restore folder - gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dlg), session_get_directory ()); + gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dlg), conf_get_str ("filechooser.lastdir", "")); int response = gtk_dialog_run (GTK_DIALOG (dlg)); // store folder gchar *folder = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dlg)); if (folder) { - session_set_directory (folder); + conf_set_str ("filechooser.lastdir", folder); g_free (folder); } if (response == GTK_RESPONSE_OK) @@ -372,12 +372,12 @@ on_add_folders_activate (GtkMenuItem *menuitem, gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (dlg), TRUE); // restore folder - gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dlg), session_get_directory ()); + gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dlg), conf_get_str ("filechooser.lastdir", "")); int response = gtk_dialog_run (GTK_DIALOG (dlg)); // store folder gchar *folder = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dlg)); if (folder) { - session_set_directory (folder); + conf_set_str ("filechooser.lastdir", folder); g_free (folder); } if (response == GTK_RESPONSE_OK) @@ -732,8 +732,7 @@ void on_order_linear_activate (GtkMenuItem *menuitem, gpointer user_data) { - session_set_playlist_order (0); - pl_set_order (0); + conf_set_int ("playback.order", 0); } @@ -741,8 +740,7 @@ void on_order_shuffle_activate (GtkMenuItem *menuitem, gpointer user_data) { - session_set_playlist_order (1); - pl_set_order (1); + conf_set_int ("playback.order", 1); } @@ -750,8 +748,7 @@ void on_order_random_activate (GtkMenuItem *menuitem, gpointer user_data) { - session_set_playlist_order (2); - pl_set_order (2); + conf_set_int ("playback.order", 2); } @@ -759,8 +756,7 @@ void on_loop_all_activate (GtkMenuItem *menuitem, gpointer user_data) { - session_set_playlist_looping (0); - pl_set_loop_mode (0); + conf_set_int ("playback.loop", 0); } @@ -768,8 +764,7 @@ void on_loop_single_activate (GtkMenuItem *menuitem, gpointer user_data) { - session_set_playlist_looping (2); - pl_set_loop_mode (2); + conf_set_int ("playback.loop", 2); } @@ -777,8 +772,7 @@ void on_loop_disable_activate (GtkMenuItem *menuitem, gpointer user_data) { - session_set_playlist_looping (1); - pl_set_loop_mode (1); + conf_set_int ("playback.loop", 1); } void @@ -1253,7 +1247,7 @@ void on_scroll_follows_playback_activate (GtkMenuItem *menuitem, gpointer user_data) { - session_set_scroll_follows_playback (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (menuitem))); + conf_set_int ("playlist.scroll.followplayback", gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (menuitem))); } diff --git a/gtkplaylist.c b/gtkplaylist.c index 90dfe9f0..95a82964 100644 --- a/gtkplaylist.c +++ b/gtkplaylist.c @@ -938,7 +938,7 @@ void gtkpl_songchanged (gtkplaylist_t *ps, int from, int to) { if (!dragwait && to != -1) { GtkWidget *widget = ps->playlist; - if (session_get_scroll_follows_playback ()) { + if (conf_get_int ("playlist.scroll.followplayback", 0)) { if (to < ps->scrollpos || to >= ps->scrollpos + ps->nvisiblefullrows) { gtk_range_set_value (GTK_RANGE (ps->scrollbar), to - ps->nvisiblerows/2); } diff --git a/gtksession.c b/gtksession.c index 45a320f0..e24706b6 100644 --- a/gtksession.c +++ b/gtksession.c @@ -22,20 +22,23 @@ # include #endif #include "session.h" +#include "conf.h" void session_capture_window_attrs (uintptr_t window) { GtkWindow *wnd = GTK_WINDOW (window); - extern int session_win_attrs[5]; - gtk_window_get_position (wnd, &session_win_attrs[0], &session_win_attrs[1]); - gtk_window_get_size (wnd, &session_win_attrs[2], &session_win_attrs[3]); - //printf ("attrs: %d %d %d %d\n", session_win_attrs[0], session_win_attrs[1], session_win_attrs[2], session_win_attrs[3]); + int win_attrs[4]; + gtk_window_get_position (wnd, &win_attrs[0], &win_attrs[1]); + gtk_window_get_size (wnd, &win_attrs[2], &win_attrs[3]); + conf_set_int ("mainwin.geometry.x", win_attrs[0]); + conf_set_int ("mainwin.geometry.y", win_attrs[1]); + conf_set_int ("mainwin.geometry.w", win_attrs[2]); + conf_set_int ("mainwin.geometry.h", win_attrs[3]); } void session_restore_window_attrs (uintptr_t window) { GtkWindow *wnd = GTK_WINDOW (window); - extern int session_win_attrs[5]; - gtk_window_move (wnd, session_win_attrs[0], session_win_attrs[1]); - gtk_window_resize (wnd, session_win_attrs[2], session_win_attrs[3]); + gtk_window_move (wnd, conf_get_int ("mainwin.geometry.x", 40), conf_get_int ("mainwin.geometry.y", 40)); + gtk_window_resize (wnd, conf_get_int ("mainwin.geometry.w", 500), conf_get_int ("mainwin.geometry.h", 300)); } diff --git a/main.c b/main.c index 13967195..a97475a8 100644 --- a/main.c +++ b/main.c @@ -661,7 +661,6 @@ main (int argc, char *argv[]) { conf_load (); plug_load_all (); pl_load (defpl); - session_reset (); session_load (sessfile); messagepump_init (); codec_init_locking (); @@ -701,18 +700,16 @@ main (int argc, char *argv[]) { gdk_pixbuf_unref (mainwin_icon_pixbuf); } session_restore_window_attrs ((uintptr_t)mainwin); - volume_set_db (session_get_volume ()); + volume_set_db (conf_get_float ("playback.volume", 0)); // order and looping const char *orderwidgets[3] = { "order_linear", "order_shuffle", "order_random" }; const char *loopingwidgets[3] = { "loop_all", "loop_disable", "loop_single" }; const char *w; - w = orderwidgets[session_get_playlist_order ()]; + w = orderwidgets[conf_get_int ("playback.order", 0)]; gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (lookup_widget (mainwin, w)), TRUE); - pl_set_order (session_get_playlist_order ()); - w = loopingwidgets[session_get_playlist_looping ()]; + w = loopingwidgets[conf_get_int ("playback.loop", 0)]; gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (lookup_widget (mainwin, w)), TRUE); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (lookup_widget (mainwin, "scroll_follows_playback")), session_get_scroll_follows_playback () ? TRUE : FALSE); - pl_set_loop_mode (session_get_playlist_looping ()); + gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (lookup_widget (mainwin, "scroll_follows_playback")), conf_get_int ("playlist.scroll.followplayback", 0) ? TRUE : FALSE); searchwin = create_searchwin (); gtk_window_set_transient_for (GTK_WINDOW (searchwin), GTK_WINDOW (mainwin)); diff --git a/playlist.c b/playlist.c index 4416d2fa..1a502254 100644 --- a/playlist.c +++ b/playlist.c @@ -34,6 +34,7 @@ #include "plugins.h" #include "junklib.h" #include "vfs.h" +#include "conf.h" // 1.0->1.1 changelog: // added sample-accurate seek positions for sub-tracks @@ -52,8 +53,8 @@ playItem_t *playlist_tail[PL_MAX_ITERATORS]; playItem_t *playlist_current_ptr; int pl_count = 0; float pl_totaltime = 0; -static int pl_order = 0; // 0 = linear, 1 = shuffle, 2 = random -static int pl_loop_mode = 0; // 0 = loop, 1 = don't loop, 2 = loop single +//static int pl_order = 0; // 0 = linear, 1 = shuffle, 2 = random +//static int pl_loop_mode = 0; // 0 = loop, 1 = don't loop, 2 = loop single void pl_free (void) { @@ -900,6 +901,8 @@ pl_prevsong (void) { streamer_set_nextsong (-2, 1); return 0; } + int pl_order = conf_get_int ("playback.order", 0); + int pl_loop_mode = conf_get_int ("playback.loop", 0); if (pl_order == 1) { // shuffle if (!playlist_current_ptr) { return pl_nextsong (1); @@ -971,6 +974,8 @@ pl_nextsong (int reason) { streamer_set_nextsong (-2, 1); return 0; } + int pl_order = conf_get_int ("playback.order", 0); + int pl_loop_mode = conf_get_int ("playback.loop", 0); if (pl_order == 1) { // shuffle if (!curr) { // find minimal notplayed @@ -1175,16 +1180,6 @@ pl_crop_selected (void) { } } -void -pl_set_order (int order) { - pl_order = order; -} - -void -pl_set_loop_mode (int mode) { - pl_loop_mode = mode; -} - int pl_save (const char *fname) { const char magic[] = "DBPL"; diff --git a/playlist.h b/playlist.h index 21c4752e..e7498599 100644 --- a/playlist.h +++ b/playlist.h @@ -145,12 +145,6 @@ pl_delete_selected (void); void pl_crop_selected (void); -void -pl_set_order (int order); - -void -pl_set_loop_mode (int mode); - int pl_save (const char *fname); diff --git a/session.c b/session.c index 6822fdba..a757c469 100644 --- a/session.c +++ b/session.c @@ -26,31 +26,16 @@ #define SESS_CURRENT_VER 4 // changelog: +// version 5 everything moved to common config // version 4 column settings moved to common config // version 3 adds column widths // NOTE: dont forget to update session_reset when changing that -char session_dir[2048]; -float session_volume; -int8_t session_playlist_order; -int8_t session_playlist_looping; -int8_t session_scroll_follows_playback = 1; -int session_win_attrs[5] = { 40, 40, 500, 300, 0 }; -static uint8_t sessfile_magic[] = { 0xdb, 0xef, 0x5e, 0x55 }; // dbefsess in hexspeak +static const uint8_t sessfile_magic[] = { 0xdb, 0xef, 0x5e, 0x55 }; // dbefsess in hexspeak void session_reset (void) { - session_volume = 0; - session_dir[0] = 0; - session_playlist_looping = 0; - session_playlist_order = 0; - session_scroll_follows_playback = 1; - session_win_attrs[0] = 40; - session_win_attrs[1] = 40; - session_win_attrs[2] = 500; - session_win_attrs[3] = 300; - session_win_attrs[4] = 0; } static int @@ -131,6 +116,8 @@ read_i32_be (uint32_t *pval, FILE *fp) { int session_save (const char *fname) { + unlink (fname); +#if 0 FILE *fp = fopen (fname, "w+b"); if (!fp) { fprintf (stderr, "failed to save session, file %s could not be opened\n"); @@ -174,10 +161,29 @@ session_save_fail: fprintf (stderr, "failed to save session, seems to be a disk error\n"); fclose (fp); return -1; +#endif } int session_load (const char *fname) { + char session_dir[2048]; + float session_volume; + int8_t session_playlist_order; + int8_t session_playlist_looping; + int8_t session_scroll_follows_playback = 1; + int session_win_attrs[5] = { 40, 40, 500, 300, 0 }; + + session_volume = 0; + session_dir[0] = 0; + session_playlist_looping = 0; + session_playlist_order = 0; + session_scroll_follows_playback = 1; + session_win_attrs[0] = 40; + session_win_attrs[1] = 40; + session_win_attrs[2] = 500; + session_win_attrs[3] = 300; + session_win_attrs[4] = 0; + FILE *fp = fopen (fname, "r+b"); if (!fp) { return -1; @@ -309,61 +315,24 @@ session_load (const char *fname) { // printf ("volume: %f\n", session_volume); // printf ("win: %d %d %d %d %d\n", session_win_attrs[0], session_win_attrs[1], session_win_attrs[2], session_win_attrs[3], session_win_attrs[4]); fclose (fp); + + if (version <= 4) { + // move everything to common config + conf_set_str ("filechooser.lastdir", session_dir); + conf_set_int ("playback.loop", session_playlist_looping); + conf_set_int ("playback.order", session_playlist_order); + conf_set_float ("playback.volume", session_volume); + conf_set_int ("playlist.scroll.followplayback", session_scroll_follows_playback); + conf_set_int ("mainwin.geometry.x", session_win_attrs[0]); + conf_set_int ("mainwin.geometry.y", session_win_attrs[1]); + conf_set_int ("mainwin.geometry.w", session_win_attrs[2]); + conf_set_int ("mainwin.geometry.h", session_win_attrs[3]); + } + return 0; session_load_fail: fprintf (stderr, "failed to load session, session file is corrupt\n"); fclose (fp); - session_reset (); +// session_reset (); return -1; } - -void -session_set_directory (const char *path) { - strncpy (session_dir, path, 2048); -} - -void -session_set_volume (float vol) { - session_volume = vol; -} - -const char * -session_get_directory (void) { - return session_dir; -} - -float -session_get_volume (void) { - return session_volume; -} - -void -session_set_playlist_order (int order) { - session_playlist_order = order; -} - -int -session_get_playlist_order (void) { - return session_playlist_order; -} - -void -session_set_playlist_looping (int looping) { - session_playlist_looping = looping; -} - -int -session_get_playlist_looping (void) { - return session_playlist_looping; -} - -void -session_set_scroll_follows_playback (int on) { - session_scroll_follows_playback = on; -} - -int -session_get_scroll_follows_playback (void) { - return session_scroll_follows_playback; -} - diff --git a/session.h b/session.h index 7a8ceea7..06d0e407 100644 --- a/session.h +++ b/session.h @@ -21,9 +21,6 @@ #include -void -session_reset (void); - int session_save (const char *fname); @@ -33,43 +30,8 @@ session_load (const char *fname); void session_capture_window_attrs (uintptr_t window); -void -session_set_directory (const char *path); - -void -session_set_volume (float vol); - void session_restore_window_attrs (uintptr_t window); -const char * -session_get_directory (void); - -float -session_get_volume (void); - -void -session_set_playlist_order (int order); - -int -session_get_playlist_order (void); - -void -session_set_scroll_follows_playback (int on); - -int -session_get_scroll_follows_playback (void); - -void -session_set_playlist_looping (int looping); - -int -session_get_playlist_looping (void); - -int * -session_get_main_colwidths_ptr (void); - -int * -session_get_search_colwidths_ptr (void); #endif // __SESSION_H diff --git a/volume.c b/volume.c index 24e876ff..c1d372c5 100644 --- a/volume.c +++ b/volume.c @@ -19,7 +19,7 @@ #include #include #include "volume.h" -#include "session.h" +#include "conf.h" #define VOLUME_MIN (-50.f) @@ -34,7 +34,7 @@ volume_set_db (float dB) { if (dB > 0) { dB = 0; } - session_set_volume (dB); + conf_set_float ("playback.volume", dB); volume_db = dB; volume_amp = dB > VOLUME_MIN ? db_to_amp (dB) : 0; } @@ -54,7 +54,7 @@ volume_set_amp (float amp) { } volume_amp = amp; volume_db = amp > 0 ? amp_to_db (amp) : VOLUME_MIN; - session_set_volume (volume_db); + conf_set_float ("playback.volume", volume_db); } float -- cgit v1.2.3