diff options
author | Alexey Yakovenko <wakeroid@gmail.com> | 2009-09-06 18:50:41 +0200 |
---|---|---|
committer | Alexey Yakovenko <wakeroid@gmail.com> | 2009-09-06 18:50:41 +0200 |
commit | 494d90094d3bdfafb51aaf899ad43ed887e14605 (patch) | |
tree | eb3e1ccecf90a53f9632efd4ce3883ba7fc9b7f9 /session.c | |
parent | 9ea67a087997dec52b631174324c69fa9b28a25f (diff) |
added basic session management for column widths
Diffstat (limited to 'session.c')
-rw-r--r-- | session.c | 96 |
1 files changed, 94 insertions, 2 deletions
@@ -22,7 +22,9 @@ #include "session.h" #include "common.h" -#define SESS_CURRENT_VER 2 +#define SESS_CURRENT_VER 3 +// changelog: +// version 3 adds column widths // NOTE: dont forget to update session_reset when changing that char session_dir[2048]; @@ -31,6 +33,12 @@ 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 }; +#define PL_MAX_COLUMNS 5 +static int session_main_colwidths[PL_MAX_COLUMNS] = { 50, 150, 50, 150, 50 }; +static int session_main_numcols = 5; +static int session_search_colwidths[PL_MAX_COLUMNS] = { 0, 150, 50, 150, 50 };; +static int session_search_numcols = 5; + static uint8_t sessfile_magic[] = { 0xdb, 0xef, 0x5e, 0x55 }; // dbefsess in hexspeak void @@ -45,6 +53,16 @@ session_reset (void) { session_win_attrs[2] = 500; session_win_attrs[3] = 300; session_win_attrs[4] = 0; + { + session_main_numcols = 5; + int colwidths[] = { 50, 150, 50, 150, 50 }; + memcpy (session_main_colwidths, colwidths, sizeof (colwidths)); + } + { + session_search_numcols = 5; + int colwidths[] = { 0, 150, 50, 150, 50 }; + memcpy (session_search_colwidths, colwidths, sizeof (colwidths)); + } } static int @@ -162,6 +180,32 @@ session_save (const char *fname) { goto session_save_fail; } } + { + // main column widths + uint8_t cl = session_main_numcols; + if (fwrite (&cl, 1, 1, fp) != 1) { + goto session_save_fail; + } + for (int i = 0; i < cl; i++) { + int16_t w = session_main_colwidths[i]; + if (fwrite (&w, 1, sizeof (w), fp) != sizeof (w)) { + goto session_save_fail; + } + } + } + { + // search column widths + uint8_t cl = session_search_numcols; + if (fwrite (&cl, 1, 1, fp) != 1) { + goto session_save_fail; + } + for (int i = 0; i < cl; i++) { + int16_t w = session_search_colwidths[i]; + if (fwrite (&w, 1, sizeof (w), fp) != sizeof (w)) { + goto session_save_fail; + } + } + } fclose (fp); return 0; session_save_fail: @@ -188,7 +232,7 @@ session_load (const char *fname) { if (fread (&version, 1, 1, fp) != 1) { goto session_load_fail; } - if (version != SESS_CURRENT_VER) { + if (version < 2 || version > SESS_CURRENT_VER) { goto session_load_fail; } uint16_t l; @@ -225,6 +269,44 @@ session_load (const char *fname) { goto session_load_fail; } } + if (version >= 3) { + { + // main column widths + uint8_t l; + if (fread (&l, 1, 1, fp) != 1) { + goto session_load_fail; + } + if (l > PL_MAX_COLUMNS) { + goto session_load_fail; + } + session_main_numcols = l; + for (int i = 0; i < l; i++) { + int16_t w; + if (fread (&w, 1, sizeof (w), fp) != sizeof (w)) { + goto session_load_fail; + } + session_main_colwidths[i] = w; + } + } + { + // search column widths + uint8_t l; + if (fread (&l, 1, 1, fp) != 1) { + goto session_load_fail; + } + if (l > PL_MAX_COLUMNS) { + goto session_load_fail; + } + session_search_numcols = l; + for (int i = 0; i < l; i++) { + int16_t w; + if (fread (&w, 1, sizeof (w), fp) != sizeof (w)) { + goto session_load_fail; + } + session_search_colwidths[i] = w; + } + } + } // printf ("dir: %s\n", session_dir); // 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]); @@ -286,3 +368,13 @@ int session_get_scroll_follows_playback (void) { return session_scroll_follows_playback; } + +int * +session_get_main_colwidths_ptr (void) { + return session_main_colwidths; +} + +int * +session_get_search_colwidths_ptr (void) { + return session_search_colwidths; +} |