(gtk) remember between sessions which column is used for sorting in the main window's torrent list
This commit is contained in:
parent
3210f92085
commit
31646bcfb9
|
@ -650,6 +650,7 @@ initializeFromPrefs( struct cbdata * cbdata )
|
|||
PREF_KEY_NAT,
|
||||
PREF_KEY_PEX,
|
||||
PREF_KEY_SYSTRAY,
|
||||
PREF_KEY_SORT_COLUMN,
|
||||
PREF_KEY_ENCRYPTED_ONLY
|
||||
};
|
||||
|
||||
|
@ -711,6 +712,10 @@ prefschanged( TrCore * core UNUSED, const char * key, gpointer data )
|
|||
cbdata->icon = NULL;
|
||||
}
|
||||
}
|
||||
else if( !strcmp( key, PREF_KEY_SORT_COLUMN ) )
|
||||
{
|
||||
tr_core_set_sort_column_from_prefs( cbdata->core );
|
||||
}
|
||||
else if( !strcmp( key, PREF_KEY_PEX ) )
|
||||
{
|
||||
gboolean enabled = pref_flag_get( key );
|
||||
|
|
|
@ -236,6 +236,48 @@ compareProgress( GtkTreeModel * model,
|
|||
return 0;
|
||||
}
|
||||
|
||||
#define STR_REVERSE "reverse-"
|
||||
#define STR_PROGRESS "progress"
|
||||
#define STR_NAME "name"
|
||||
|
||||
static void
|
||||
onSortColumnChanged( GtkTreeSortable * sortable, gpointer unused UNUSED )
|
||||
{
|
||||
int column;
|
||||
GtkSortType order;
|
||||
if( gtk_tree_sortable_get_sort_column_id( sortable, &column, &order ) )
|
||||
{
|
||||
GString * gstr = g_string_new( NULL );
|
||||
switch( column ) {
|
||||
case MC_PROG_D: g_string_assign( gstr, STR_PROGRESS ); break;
|
||||
default: g_string_assign( gstr, STR_NAME ); break;
|
||||
}
|
||||
if( order == GTK_SORT_DESCENDING )
|
||||
g_string_prepend( gstr, STR_REVERSE );
|
||||
pref_string_set( PREF_KEY_SORT_COLUMN, gstr->str );
|
||||
g_string_free( gstr, TRUE );
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
tr_core_set_sort_column_from_prefs( TrCore * core )
|
||||
{
|
||||
char * val = pref_string_get( PREF_KEY_SORT_COLUMN );
|
||||
char * freeme = val;
|
||||
gint column;
|
||||
GtkSortType order = GTK_SORT_ASCENDING;
|
||||
if( g_str_has_prefix( val, STR_REVERSE ) ) {
|
||||
order = GTK_SORT_DESCENDING;
|
||||
val += strlen( STR_REVERSE );
|
||||
}
|
||||
if( !strcmp( val, STR_PROGRESS ) )
|
||||
column = MC_PROG_D;
|
||||
else /* default */
|
||||
column = MC_NAME;
|
||||
gtk_tree_sortable_set_sort_column_id ( GTK_TREE_SORTABLE( core->model ), column, order );
|
||||
g_free( freeme );
|
||||
}
|
||||
|
||||
static void
|
||||
tr_core_init( GTypeInstance * instance, gpointer g_class SHUTUP )
|
||||
{
|
||||
|
@ -265,6 +307,7 @@ tr_core_init( GTypeInstance * instance, gpointer g_class SHUTUP )
|
|||
/* create the model used to store torrent data */
|
||||
g_assert( ALEN( types ) == MC_ROW_COUNT );
|
||||
store = gtk_list_store_newv( MC_ROW_COUNT, types );
|
||||
g_signal_connect( store, "sort-column-changed", G_CALLBACK(onSortColumnChanged), NULL );
|
||||
|
||||
gtk_tree_sortable_set_sort_func( GTK_TREE_SORTABLE(store),
|
||||
MC_PROG_D,
|
||||
|
|
|
@ -180,6 +180,9 @@ tr_core_set_pref_bool( TrCore * self, const char * key, gboolean val );
|
|||
void
|
||||
tr_core_set_pref_int( TrCore * self, const char * key, int val );
|
||||
|
||||
void
|
||||
tr_core_set_sort_column_from_prefs( TrCore * core );
|
||||
|
||||
/* column names for the model used to store torrent information */
|
||||
/* keep this in sync with the type array in tr_core_init() in tr_core.c */
|
||||
enum {
|
||||
|
|
|
@ -47,6 +47,8 @@ tr_prefs_init_global( void )
|
|||
|
||||
pref_int_set_default ( PREF_KEY_MSGLEVEL, TR_MSG_INF );
|
||||
|
||||
pref_string_set_default ( PREF_KEY_SORT_COLUMN, "name" );
|
||||
|
||||
pref_save( NULL );
|
||||
}
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@ GtkWidget * tr_prefs_dialog_new( GObject * core, GtkWindow * parent );
|
|||
#define PREF_KEY_ASKQUIT "prompt-before-exit"
|
||||
#define PREF_KEY_ENCRYPTED_ONLY "encrypted-connections-only"
|
||||
#define PREF_KEY_MSGLEVEL "debug-message-level"
|
||||
#define PREF_KEY_SORT_COLUMN "sort-column"
|
||||
|
||||
void tr_prefs_init_global( void );
|
||||
|
||||
|
|
|
@ -173,7 +173,7 @@ makeview( PrivateData * p )
|
|||
GtkCellRenderer * namerend, * progrend;
|
||||
char * str;
|
||||
|
||||
view = gtk_tree_view_new();
|
||||
view = gtk_tree_view_new();
|
||||
|
||||
p->selection = gtk_tree_view_get_selection( GTK_TREE_VIEW(view) );
|
||||
namerend = gtk_cell_renderer_text_new();
|
||||
|
|
Loading…
Reference in New Issue