summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2009-11-07 17:51:41 +0100
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2009-11-07 17:51:41 +0100
commit6b3fb74a165d626dc96489497ec3ebf754873b7d (patch)
treeb7ab3cb7747ba3d642d6e6cc4e0739537ab614fb
parentda7470b473f0eb55af70e7c124b1cbafb0aa64b4 (diff)
moved all session crap to common config
-rw-r--r--callbacks.c32
-rw-r--r--gtkplaylist.c2
-rw-r--r--gtksession.c17
-rw-r--r--main.c11
-rw-r--r--playlist.c19
-rw-r--r--playlist.h6
-rw-r--r--session.c107
-rw-r--r--session.h38
-rw-r--r--volume.c6
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 <config.h>
#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 <stdint.h>
-void
-session_reset (void);
-
int
session_save (const char *fname);
@@ -34,42 +31,7 @@ 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 <math.h>
#include <stdio.h>
#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