(trunk gtk) launchpad bug #338046: XDG_DOWNLOAD_DIR isn't honored in gtk client
This commit is contained in:
parent
e3fe892c0a
commit
68448d18ea
112
gtk/conf.c
112
gtk/conf.c
|
@ -39,6 +39,7 @@
|
|||
#include <libtransmission/platform.h>
|
||||
|
||||
#include "conf.h"
|
||||
#include "tr-prefs.h"
|
||||
#include "util.h"
|
||||
|
||||
#define MY_NAME "transmission"
|
||||
|
@ -143,6 +144,71 @@ cf_lock( tr_lockfile_state_t *tr_state,
|
|||
****
|
||||
***/
|
||||
|
||||
static void cf_check_older_configs( void );
|
||||
|
||||
/**
|
||||
* This is where we initialize the preferences file with the default values.
|
||||
* If you add a new preferences key, you /must/ add a default value here.
|
||||
*/
|
||||
static void
|
||||
tr_prefs_init_defaults( tr_benc * d )
|
||||
{
|
||||
const char * str;
|
||||
|
||||
cf_check_older_configs( );
|
||||
|
||||
#ifdef HAVE_GIO
|
||||
str = NULL;
|
||||
if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DOWNLOAD );
|
||||
if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DESKTOP );
|
||||
if( !str ) str = tr_getDefaultDownloadDir( );
|
||||
tr_bencDictAddStr( d, PREF_KEY_DIR_WATCH, str );
|
||||
tr_bencDictAddInt( d, PREF_KEY_DIR_WATCH_ENABLED, FALSE );
|
||||
#endif
|
||||
|
||||
tr_bencDictAddInt( d, PREF_KEY_INHIBIT_HIBERNATION, FALSE );
|
||||
tr_bencDictAddInt( d, PREF_KEY_BLOCKLIST_UPDATES_ENABLED, TRUE );
|
||||
|
||||
tr_bencDictAddStr( d, PREF_KEY_OPEN_DIALOG_FOLDER, g_get_home_dir( ) );
|
||||
|
||||
tr_bencDictAddInt( d, PREF_KEY_TOOLBAR, TRUE );
|
||||
tr_bencDictAddInt( d, PREF_KEY_FILTERBAR, TRUE );
|
||||
tr_bencDictAddInt( d, PREF_KEY_STATUSBAR, TRUE );
|
||||
tr_bencDictAddInt( d, PREF_KEY_SHOW_TRAY_ICON, FALSE );
|
||||
tr_bencDictAddInt( d, PREF_KEY_SHOW_DESKTOP_NOTIFICATION, TRUE );
|
||||
tr_bencDictAddStr( d, PREF_KEY_STATUSBAR_STATS, "total-ratio" );
|
||||
|
||||
tr_bencDictAddInt( d, PREF_KEY_SCHED_LIMIT_ENABLED, FALSE );
|
||||
tr_bencDictAddInt( d, PREF_KEY_SCHED_BEGIN, 60 * 23 ); /* 11pm */
|
||||
tr_bencDictAddInt( d, PREF_KEY_SCHED_END, 60 * 7 ); /* 7am */
|
||||
tr_bencDictAddInt( d, PREF_KEY_SCHED_DL_LIMIT, 200 ); /* 2x the other limit */
|
||||
tr_bencDictAddInt( d, PREF_KEY_SCHED_UL_LIMIT, 100 ); /* 2x the other limit */
|
||||
|
||||
tr_bencDictAddInt( d, PREF_KEY_OPTIONS_PROMPT, TRUE );
|
||||
|
||||
tr_bencDictAddInt( d, PREF_KEY_MAIN_WINDOW_HEIGHT, 500 );
|
||||
tr_bencDictAddInt( d, PREF_KEY_MAIN_WINDOW_WIDTH, 300 );
|
||||
tr_bencDictAddInt( d, PREF_KEY_MAIN_WINDOW_X, 50 );
|
||||
tr_bencDictAddInt( d, PREF_KEY_MAIN_WINDOW_Y, 50 );
|
||||
tr_bencDictAddStr( d, PREF_KEY_MAIN_WINDOW_LAYOUT_ORDER, "menu,toolbar,filter,list,statusbar" );
|
||||
|
||||
str = NULL;
|
||||
#if GLIB_CHECK_VERSION( 2, 14, 0 )
|
||||
if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DOWNLOAD );
|
||||
#endif
|
||||
if( !str ) str = tr_getDefaultDownloadDir( );
|
||||
tr_bencDictAddStr( d, TR_PREFS_KEY_DOWNLOAD_DIR, str );
|
||||
|
||||
tr_bencDictAddInt( d, PREF_KEY_ASKQUIT, TRUE );
|
||||
|
||||
tr_bencDictAddStr( d, PREF_KEY_SORT_MODE, "sort-by-name" );
|
||||
tr_bencDictAddInt( d, PREF_KEY_SORT_REVERSED, FALSE );
|
||||
tr_bencDictAddInt( d, PREF_KEY_MINIMAL_VIEW, FALSE );
|
||||
|
||||
tr_bencDictAddInt( d, PREF_KEY_START, TRUE );
|
||||
tr_bencDictAddInt( d, PREF_KEY_TRASH_ORIGINAL, FALSE );
|
||||
}
|
||||
|
||||
static char*
|
||||
getPrefsFilename( void )
|
||||
{
|
||||
|
@ -159,6 +225,7 @@ getPrefs( void )
|
|||
if( !loaded )
|
||||
{
|
||||
tr_bencInitDict( &settings, 0 );
|
||||
tr_prefs_init_defaults( &settings );
|
||||
tr_sessionLoadSettings( &settings, gl_confdir, MY_NAME );
|
||||
loaded = TRUE;
|
||||
}
|
||||
|
@ -192,14 +259,6 @@ pref_int_set( const char * key,
|
|||
tr_bencDictAddInt( getPrefs( ), key, value );
|
||||
}
|
||||
|
||||
void
|
||||
pref_int_set_default( const char * key,
|
||||
int64_t value )
|
||||
{
|
||||
if( !tr_bencDictFind( getPrefs( ), key ) )
|
||||
pref_int_set( key, value );
|
||||
}
|
||||
|
||||
double
|
||||
pref_double_get( const char * key )
|
||||
{
|
||||
|
@ -216,14 +275,6 @@ pref_double_set( const char * key,
|
|||
tr_bencDictAddDouble( getPrefs( ), key, value );
|
||||
}
|
||||
|
||||
void
|
||||
pref_double_set_default( const char * key,
|
||||
double value )
|
||||
{
|
||||
if ( !tr_bencDictFind( getPrefs( ), key ) )
|
||||
pref_double_set( key, value );
|
||||
}
|
||||
|
||||
/***
|
||||
****
|
||||
***/
|
||||
|
@ -261,13 +312,6 @@ pref_flag_set( const char * key,
|
|||
pref_int_set( key, value != 0 );
|
||||
}
|
||||
|
||||
void
|
||||
pref_flag_set_default( const char * key,
|
||||
gboolean value )
|
||||
{
|
||||
pref_int_set_default( key, value != 0 );
|
||||
}
|
||||
|
||||
/***
|
||||
****
|
||||
***/
|
||||
|
@ -276,26 +320,16 @@ const char*
|
|||
pref_string_get( const char * key )
|
||||
{
|
||||
const char * str = NULL;
|
||||
|
||||
tr_bencDictFindStr( getPrefs( ), key, &str );
|
||||
return str;
|
||||
}
|
||||
|
||||
void
|
||||
pref_string_set( const char * key,
|
||||
const char * value )
|
||||
pref_string_set( const char * key, const char * value )
|
||||
{
|
||||
tr_bencDictAddStr( getPrefs( ), key, value );
|
||||
}
|
||||
|
||||
void
|
||||
pref_string_set_default( const char * key,
|
||||
const char * value )
|
||||
{
|
||||
if( !tr_bencDictFind( getPrefs( ), key ) )
|
||||
pref_string_set( key, value );
|
||||
}
|
||||
|
||||
/***
|
||||
****
|
||||
***/
|
||||
|
@ -470,7 +504,7 @@ translate_keyfile_to_json( const char * old_file,
|
|||
tr_bencFree( &dict );
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
cf_check_older_configs( void )
|
||||
{
|
||||
char * filename = getPrefsFilename( );
|
||||
|
@ -483,18 +517,19 @@ cf_check_older_configs( void )
|
|||
|
||||
if( g_file_test( key1, G_FILE_TEST_IS_REGULAR ) )
|
||||
{
|
||||
g_message( _( "Importing \"%s\"" ), key1 );
|
||||
translate_keyfile_to_json( key1, filename );
|
||||
}
|
||||
else if( g_file_test( key2, G_FILE_TEST_IS_REGULAR ) )
|
||||
{
|
||||
g_message( _( "Importing \"%s\"" ), key2 );
|
||||
translate_keyfile_to_json( key2, filename );
|
||||
}
|
||||
else if( g_file_test( benc, G_FILE_TEST_IS_REGULAR ) )
|
||||
{
|
||||
char * tmpfile;
|
||||
int fd =
|
||||
g_file_open_tmp( "transmission-prefs-XXXXXX", &tmpfile,
|
||||
NULL );
|
||||
int fd = g_file_open_tmp( "transmission-prefs-XXXXXX", &tmpfile, NULL );
|
||||
g_message( _( "Importing \"%s\"" ), benc );
|
||||
if( fd != -1 ) close( fd );
|
||||
translate_08_to_09( benc, tmpfile );
|
||||
translate_keyfile_to_json( tmpfile, filename );
|
||||
|
@ -508,4 +543,3 @@ cf_check_older_configs( void )
|
|||
|
||||
g_free( filename );
|
||||
}
|
||||
|
||||
|
|
|
@ -30,19 +30,15 @@
|
|||
|
||||
int64_t pref_int_get ( const char * key );
|
||||
void pref_int_set ( const char * key, int64_t value );
|
||||
void pref_int_set_default ( const char * key, int64_t value );
|
||||
|
||||
double pref_double_get ( const char * key );
|
||||
void pref_double_set ( const char * key, double value );
|
||||
void pref_double_set_default( const char * key, double value );
|
||||
|
||||
gboolean pref_flag_get ( const char * key );
|
||||
void pref_flag_set ( const char * key, gboolean value );
|
||||
void pref_flag_set_default ( const char * key, gboolean value );
|
||||
|
||||
const char* pref_string_get ( const char * key );
|
||||
void pref_string_set ( const char * key, const char * value );
|
||||
void pref_string_set_default( const char * key, const char * value );
|
||||
|
||||
void pref_save ( tr_session * );
|
||||
struct tr_benc* pref_get_all ( void );
|
||||
|
@ -74,6 +70,4 @@ gboolean cf_init( const char *confdir,
|
|||
gboolean cf_lock( tr_lockfile_state_t *tr_state,
|
||||
char ** errstr );
|
||||
|
||||
void cf_check_older_configs( void );
|
||||
|
||||
#endif /* TG_CONF_H */
|
||||
|
|
|
@ -393,7 +393,6 @@ main( int argc,
|
|||
|
||||
tr_notify_init( );
|
||||
didinit = cf_init( configDir, NULL ); /* must come before actions_init */
|
||||
tr_prefs_init_defaults( );
|
||||
|
||||
myUIManager = gtk_ui_manager_new ( );
|
||||
actions_init ( myUIManager, cbdata );
|
||||
|
|
|
@ -28,69 +28,6 @@
|
|||
#include "tr-prefs.h"
|
||||
#include "util.h"
|
||||
|
||||
/**
|
||||
* This is where we initialize the preferences file with the default values.
|
||||
* If you add a new preferences key, you /must/ add a default value here.
|
||||
*/
|
||||
void
|
||||
tr_prefs_init_defaults( void )
|
||||
{
|
||||
const char * str;
|
||||
|
||||
cf_check_older_configs( );
|
||||
|
||||
#ifdef HAVE_GIO
|
||||
str = NULL;
|
||||
if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DOWNLOAD );
|
||||
if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DESKTOP );
|
||||
if( !str ) str = tr_getDefaultDownloadDir( );
|
||||
pref_string_set_default ( PREF_KEY_DIR_WATCH, str );
|
||||
pref_flag_set_default ( PREF_KEY_DIR_WATCH_ENABLED, FALSE );
|
||||
#endif
|
||||
|
||||
pref_flag_set_default ( PREF_KEY_INHIBIT_HIBERNATION, FALSE );
|
||||
pref_flag_set_default ( PREF_KEY_BLOCKLIST_UPDATES_ENABLED, TRUE );
|
||||
|
||||
pref_string_set_default ( PREF_KEY_OPEN_DIALOG_FOLDER, g_get_home_dir( ) );
|
||||
|
||||
pref_flag_set_default ( PREF_KEY_TOOLBAR, TRUE );
|
||||
pref_flag_set_default ( PREF_KEY_FILTERBAR, TRUE );
|
||||
pref_flag_set_default ( PREF_KEY_STATUSBAR, TRUE );
|
||||
pref_flag_set_default ( PREF_KEY_SHOW_TRAY_ICON, FALSE );
|
||||
pref_flag_set_default ( PREF_KEY_SHOW_DESKTOP_NOTIFICATION, TRUE );
|
||||
pref_string_set_default ( PREF_KEY_STATUSBAR_STATS, "total-ratio" );
|
||||
|
||||
pref_flag_set_default ( PREF_KEY_SCHED_LIMIT_ENABLED, FALSE );
|
||||
pref_int_set_default ( PREF_KEY_SCHED_BEGIN, 60 * 23 ); /* 11pm */
|
||||
pref_int_set_default ( PREF_KEY_SCHED_END, 60 * 7 ); /* 7am */
|
||||
pref_int_set_default ( PREF_KEY_SCHED_DL_LIMIT, 200 ); /* 2x the other limit */
|
||||
pref_int_set_default ( PREF_KEY_SCHED_UL_LIMIT, 100 ); /* 2x the other limit */
|
||||
|
||||
pref_flag_set_default ( PREF_KEY_OPTIONS_PROMPT, TRUE );
|
||||
|
||||
pref_int_set_default ( PREF_KEY_MAIN_WINDOW_HEIGHT, 500 );
|
||||
pref_int_set_default ( PREF_KEY_MAIN_WINDOW_WIDTH, 300 );
|
||||
pref_int_set_default ( PREF_KEY_MAIN_WINDOW_X, 50 );
|
||||
pref_int_set_default ( PREF_KEY_MAIN_WINDOW_Y, 50 );
|
||||
pref_string_set_default ( PREF_KEY_MAIN_WINDOW_LAYOUT_ORDER, "menu,toolbar,filter,list,statusbar" );
|
||||
|
||||
str = NULL;
|
||||
#if GLIB_CHECK_VERSION( 2, 14, 0 )
|
||||
if( !str ) str = g_get_user_special_dir( G_USER_DIRECTORY_DOWNLOAD );
|
||||
#endif
|
||||
if( !str ) str = tr_getDefaultDownloadDir( );
|
||||
pref_string_set_default ( TR_PREFS_KEY_DOWNLOAD_DIR, str );
|
||||
|
||||
pref_flag_set_default ( PREF_KEY_ASKQUIT, TRUE );
|
||||
|
||||
pref_string_set_default ( PREF_KEY_SORT_MODE, "sort-by-name" );
|
||||
pref_flag_set_default ( PREF_KEY_SORT_REVERSED, FALSE );
|
||||
pref_flag_set_default ( PREF_KEY_MINIMAL_VIEW, FALSE );
|
||||
|
||||
pref_flag_set_default ( PREF_KEY_START, TRUE );
|
||||
pref_flag_set_default ( PREF_KEY_TRASH_ORIGINAL, FALSE );
|
||||
}
|
||||
|
||||
/**
|
||||
***
|
||||
**/
|
||||
|
|
|
@ -50,6 +50,4 @@ GtkWidget * tr_prefs_dialog_new( GObject * core,
|
|||
#define PREF_KEY_MAIN_WINDOW_X "main-window-x"
|
||||
#define PREF_KEY_MAIN_WINDOW_Y "main-window-y"
|
||||
|
||||
void tr_prefs_init_defaults( void );
|
||||
|
||||
#endif
|
||||
|
|
|
@ -315,11 +315,17 @@ tr_sessionLoadSettings( tr_benc * d, const char * configDir, const char * appNam
|
|||
{
|
||||
char * filename;
|
||||
tr_benc fileSettings;
|
||||
tr_benc sessionDefaults;
|
||||
tr_benc tmp;
|
||||
|
||||
assert( tr_bencIsDict( d ) );
|
||||
|
||||
/* get the defaults */
|
||||
tr_sessionGetDefaultSettings( d );
|
||||
/* initializing the defaults: caller may have passed in some app-level defaults.
|
||||
* preserve those and use the session defaults to fill in any missing gaps. */
|
||||
tr_bencInitDict( &sessionDefaults, 0 );
|
||||
tr_sessionGetDefaultSettings( &sessionDefaults );
|
||||
tr_bencMergeDicts( &sessionDefaults, d );
|
||||
tmp = *d; *d = sessionDefaults; sessionDefaults = tmp;
|
||||
|
||||
/* if caller didn't specify a config dir, use the default */
|
||||
if( !configDir || !*configDir )
|
||||
|
@ -333,6 +339,7 @@ tr_sessionLoadSettings( tr_benc * d, const char * configDir, const char * appNam
|
|||
}
|
||||
|
||||
/* cleanup */
|
||||
tr_bencFree( &sessionDefaults );
|
||||
tr_free( filename );
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue