(trunk gtk,qt) more o/c simplification of the prefs dialog

This commit is contained in:
Charles Kerr 2009-06-27 05:23:13 +00:00
parent 8c812ca086
commit 0861ca3908
5 changed files with 73 additions and 59 deletions

View File

@ -376,7 +376,7 @@ updateBlocklistText( GtkWidget * w, TrCore * core )
/* prefs dialog is being destroyed, so stop listening to blocklist updates */
static void
peerPageDestroyed( gpointer gdata, GObject * dead UNUSED )
privacyPageDestroyed( gpointer gdata, GObject * dead UNUSED )
{
struct blocklist_data * data = gdata;
if( data->updateBlocklistTag > 0 )
@ -487,7 +487,7 @@ new_encryption_combo( GObject * core, const char * key )
}
static GtkWidget*
peerPage( GObject * core )
privacyPage( GObject * core )
{
int row = 0;
const char * s;
@ -544,16 +544,8 @@ peerPage( GObject * core )
hig_workarea_add_wide_control( t, &row, w );
#endif
hig_workarea_add_section_divider( t, &row );
hig_workarea_add_section_title( t, &row, _( "Limits" ) );
w = new_spin_button( TR_PREFS_KEY_PEER_LIMIT_TORRENT, core, 1, 300, 5 );
hig_workarea_add_row( t, &row, _( "Maximum peers per _torrent:" ), w, NULL );
w = new_spin_button( TR_PREFS_KEY_PEER_LIMIT_GLOBAL, core, 1, 3000, 5 );
hig_workarea_add_row( t, &row, _( "Maximum peers _overall:" ), w, NULL );
hig_workarea_finish( t, &row );
g_object_weak_ref( G_OBJECT( t ), peerPageDestroyed, data );
g_object_weak_ref( G_OBJECT( t ), privacyPageDestroyed, data );
return t;
}
@ -1281,7 +1273,7 @@ onCorePrefsChanged( TrCore * core UNUSED, const char * key, gpointer gdata )
}
static void
networkPageDestroyed( gpointer gdata, GObject * dead UNUSED )
peerPageDestroyed( gpointer gdata, GObject * dead UNUSED )
{
struct network_page_data * data = gdata;
if( data->prefsTag > 0 )
@ -1313,7 +1305,7 @@ onPortTest( GtkButton * button UNUSED, gpointer vdata )
}
static GtkWidget*
networkPage( GObject * core )
peerPage( GObject * core )
{
int row = 0;
const char * s;
@ -1339,12 +1331,12 @@ networkPage( GObject * core )
l = data->portLabel = gtk_label_new( _( "Status unknown" ) );
gtk_misc_set_alignment( GTK_MISC( l ), 0.0f, 0.5f );
gtk_box_pack_start( GTK_BOX( h ), l, TRUE, TRUE, 0 );
w = data->portButton = gtk_button_new_with_mnemonic( _( "_Test Port" ) );
w = data->portButton = gtk_button_new_with_mnemonic( _( "Te_st Port" ) );
gtk_box_pack_end( GTK_BOX( h ), w, FALSE, FALSE, 0 );
g_signal_connect( w, "clicked", G_CALLBACK(onPortTest), data );
hig_workarea_add_row( t, &row, NULL, h, NULL );
data->prefsTag = g_signal_connect( TR_CORE( core ), "prefs-changed", G_CALLBACK( onCorePrefsChanged ), data );
g_object_weak_ref( G_OBJECT( t ), networkPageDestroyed, data );
g_object_weak_ref( G_OBJECT( t ), peerPageDestroyed, data );
s = _( "Use UPnP or NAT-PMP port _forwarding from my router" );
w = new_check_button( s, TR_PREFS_KEY_PORT_FORWARDING, core );
@ -1354,6 +1346,14 @@ networkPage( GObject * core )
w = new_check_button( s, TR_PREFS_KEY_PEER_PORT_RANDOM_ON_START, core );
hig_workarea_add_wide_control( t, &row, w );
hig_workarea_add_section_divider( t, &row );
hig_workarea_add_section_title( t, &row, _( "Limits" ) );
w = new_spin_button( TR_PREFS_KEY_PEER_LIMIT_TORRENT, core, 1, 300, 5 );
hig_workarea_add_row( t, &row, _( "Maximum peers per _torrent:" ), w, NULL );
w = new_spin_button( TR_PREFS_KEY_PEER_LIMIT_GLOBAL, core, 1, 3000, 5 );
hig_workarea_add_row( t, &row, _( "Maximum peers _overall:" ), w, NULL );
hig_workarea_finish( t, &row );
return t;
}
@ -1386,15 +1386,15 @@ tr_prefs_dialog_new( GObject * core,
gtk_notebook_append_page( GTK_NOTEBOOK( n ),
torrentPage( core ),
gtk_label_new ( _( "Torrents" ) ) );
gtk_notebook_append_page( GTK_NOTEBOOK( n ),
peerPage( core ),
gtk_label_new ( _( "Peers" ) ) );
gtk_notebook_append_page( GTK_NOTEBOOK( n ),
bandwidthPage( core ),
gtk_label_new ( _( "Speed" ) ) );
gtk_notebook_append_page( GTK_NOTEBOOK( n ),
networkPage( core ),
gtk_label_new ( _( "Network" ) ) );
privacyPage( core ),
gtk_label_new ( _( "Privacy" ) ) );
gtk_notebook_append_page( GTK_NOTEBOOK( n ),
peerPage( core ),
gtk_label_new ( _( "Peers" ) ) );
gtk_notebook_append_page( GTK_NOTEBOOK( n ),
desktopPage( core ),
gtk_label_new ( _( "Desktop" ) ) );

View File

@ -270,7 +270,9 @@ prefsChanged( TrCore * core UNUSED,
{
tr_window_update( (TrWindow*)wind );
}
else if( !strcmp( key, TR_PREFS_KEY_ALT_SPEED_ENABLED ) )
else if( !strcmp( key, TR_PREFS_KEY_ALT_SPEED_ENABLED ) ||
!strcmp( key, TR_PREFS_KEY_ALT_SPEED_UP ) ||
!strcmp( key, TR_PREFS_KEY_ALT_SPEED_DOWN ) )
{
syncAltSpeedButton( p );
}
@ -324,18 +326,23 @@ status_menu_toggled_cb( GtkCheckMenuItem * menu_item,
static void
syncAltSpeedButton( PrivateData * p )
{
const char * tip;
char u[32];
char d[32];
char buf[128];
const char * fmt;
const gboolean b = pref_flag_get( TR_PREFS_KEY_ALT_SPEED_ENABLED );
GtkWidget * w = p->alt_speed_button;
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( w ), b );
tr_strlspeed( u, pref_int_get( TR_PREFS_KEY_ALT_SPEED_UP ), sizeof( u ) );
tr_strlspeed( d, pref_int_get( TR_PREFS_KEY_ALT_SPEED_DOWN ), sizeof( d ) );
fmt = b ? _( "Click to disable Temporary Speed Limits\n(%1$s down, %2$s up)" )
: _( "Click to enable Temporary Speed Limits\n(%1$s down, %2$s up)" );
g_snprintf( buf, sizeof( buf ), fmt, d, u );
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( w ), b );
gtk_button_set_image( GTK_BUTTON( w ), p->alt_speed_image[b?1:0] );
gtk_button_set_alignment( GTK_BUTTON( w ), 0.5, 0.5 );
tip = b ? _( "Click to disable Temporary Speed Limits" )
: _( "Click to enable Temporary Speed Limits" );
gtr_widget_set_tooltip_text( w, tip );
gtr_widget_set_tooltip_text( w, buf );
}
static void

View File

@ -1003,12 +1003,19 @@ TrMainWindow :: refreshPref( int key )
break;
case Prefs :: ALT_SPEED_LIMIT_ENABLED:
case Prefs :: ALT_SPEED_LIMIT_UP:
case Prefs :: ALT_SPEED_LIMIT_DOWN: {
b = myPrefs.getBool( key );
myAltSpeedButton->setChecked( b );
myAltSpeedButton->setIcon( b ? mySpeedModeOnIcon : mySpeedModeOffIcon );
myAltSpeedButton->setToolTip( b ? tr( "Click to disable Temporary Speed Limits" )
: tr( "Click to enable Temporary Speed Limits" ) );
const QString fmt = b ? tr( "Click to disable Temporary Speed Limits\n(%1 down, %2 up)" )
: tr( "Click to enable Temporary Speed Limits\n(%1 down, %2 up)" );
const Speed d = Speed::fromKbps( myPrefs.getInt( Prefs::ALT_SPEED_LIMIT_DOWN ) );
const Speed u = Speed::fromKbps( myPrefs.getInt( Prefs::ALT_SPEED_LIMIT_UP ) );
myAltSpeedButton->setToolTip( fmt.arg( Utils::speedToString( d ) )
.arg( Utils::speedToString( u ) ) );
break;
}
default:
break;

View File

@ -260,7 +260,7 @@ PrefsDialog :: altSpeedDaysEdited( int i )
QWidget *
PrefsDialog :: createBandwidthTab( )
PrefsDialog :: createSpeedTab( )
{
QWidget *l, *r;
HIG * hig = new HIG( this );
@ -360,26 +360,31 @@ PrefsDialog :: onPortTest( )
}
QWidget *
PrefsDialog :: createNetworkTab( )
PrefsDialog :: createPeersTab( )
{
HIG * hig = new HIG( this );
hig->addSectionTitle( tr( "Incoming Peers" ) );
QSpinBox * s = spinBoxNew( Prefs::PEER_PORT, 1, 65535, 1 );
QHBoxLayout * h = new QHBoxLayout( );
QPushButton * b = myPortButton = new QPushButton( tr( "&Test Port" ) );
QLabel * l = myPortLabel = new QLabel( tr( "Status unknown" ) );
h->addWidget( l );
h->addSpacing( HIG :: PAD_BIG );
h->addWidget( b );
h->setStretchFactor( l, 1 );
connect( b, SIGNAL(clicked(bool)), this, SLOT(onPortTest()));
connect( &mySession, SIGNAL(portTested(bool)), this, SLOT(onPortTested(bool)));
QSpinBox * s = spinBoxNew( Prefs::PEER_PORT, 1, 65535, 1 );
QHBoxLayout * h = new QHBoxLayout( );
QPushButton * b = myPortButton = new QPushButton( tr( "&Test Port" ) );
QLabel * l = myPortLabel = new QLabel( tr( "Status unknown" ) );
h->addWidget( l );
h->addSpacing( HIG :: PAD_BIG );
h->addWidget( b );
h->setStretchFactor( l, 1 );
connect( b, SIGNAL(clicked(bool)), this, SLOT(onPortTest()));
connect( &mySession, SIGNAL(portTested(bool)), this, SLOT(onPortTested(bool)));
hig->addRow( tr( "&Port for incoming connections:" ), s );
hig->addRow( "", h, 0 );
hig->addWideControl( checkBoxNew( tr( "Use UPnP or NAT-PMP port &forwarding from my router" ), Prefs::PORT_FORWARDING ) );
hig->addWideControl( checkBoxNew( tr( "Pick a &random port every time Transmission is started" ), Prefs :: PEER_PORT_RANDOM_ON_START ) );
hig->addRow( tr( "&Port for incoming connections:" ), s );
hig->addRow( "", h, 0 );
hig->addWideControl( checkBoxNew( tr( "Use UPnP or NAT-PMP port &forwarding from my router" ), Prefs::PORT_FORWARDING ) );
hig->addWideControl( checkBoxNew( tr( "Pick a &random port every time Transmission is started" ), Prefs :: PEER_PORT_RANDOM_ON_START ) );
hig->addSectionDivider( );
hig->addSectionTitle( tr( "Limits" ) );
hig->addRow( tr( "Maximum peers per &torrent:" ), spinBoxNew( Prefs::PEER_LIMIT_TORRENT, 1, 300, 5 ) );
hig->addRow( tr( "Maximum peers &overall:" ), spinBoxNew( Prefs::PEER_LIMIT_GLOBAL, 1, 3000, 5 ) );
hig->finish( );
return hig;
@ -439,7 +444,7 @@ PrefsDialog :: encryptionEdited( int i )
}
QWidget *
PrefsDialog :: createPeersTab( )
PrefsDialog :: createPrivacyTab( )
{
HIG * hig = new HIG( this );
hig->addSectionTitle( tr( "Blocklist" ) );
@ -470,11 +475,6 @@ PrefsDialog :: createPeersTab( )
hig->addWideControl( checkBoxNew( tr( "Use PE&X to find more peers" ), Prefs::PEX_ENABLED ) );
hig->addWideControl( checkBoxNew( tr( "Use &DHT to find more peers" ), Prefs::DHT_ENABLED ) );
hig->addSectionDivider( );
hig->addSectionTitle( tr( "Limits" ) );
hig->addRow( tr( "Maximum peers per &torrent:" ), spinBoxNew( Prefs::PEER_LIMIT_TORRENT, 1, 300, 5 ) );
hig->addRow( tr( "Maximum peers &overall:" ), spinBoxNew( Prefs::PEER_LIMIT_GLOBAL, 1, 3000, 5 ) );
hig->finish( );
updateBlocklistCheckBox( );
return hig;
@ -575,12 +575,12 @@ PrefsDialog :: PrefsDialog( Session& session, Prefs& prefs, QWidget * parent ):
setWindowTitle( tr( "Transmission Preferences" ) );
QTabWidget * t = new QTabWidget( this );
t->addTab( createTorrentsTab( ), tr( "Torrents" ) );
t->addTab( createPeersTab( ), tr( "Peers" ) );
t->addTab( createBandwidthTab( ), tr( "Speed" ) );
t->addTab( createNetworkTab( ), tr( "Network" ) );
t->addTab( createWebTab( session ), tr( "Web" ) );
//t->addTab( createTrackerTab( ), tr( "Trackers" ) );
t->addTab( createTorrentsTab( ), tr( "Torrents" ) );
t->addTab( createSpeedTab( ), tr( "Speed" ) );
t->addTab( createPrivacyTab( ), tr( "Privacy" ) );
t->addTab( createPeersTab( ), tr( "Peers" ) );
t->addTab( createWebTab( session ), tr( "Web" ) );
//t->addTab( createTrackerTab( ), tr( "Trackers" ) );
myLayout->addWidget( t );
QDialogButtonBox * buttons = new QDialogButtonBox( QDialogButtonBox::Close, Qt::Horizontal, this );

View File

@ -79,8 +79,8 @@ class PrefsDialog: public QDialog
bool isAllowed( int key ) const;
QWidget * createTorrentsTab( );
QWidget * createPeersTab( );
QWidget * createNetworkTab( );
QWidget * createBandwidthTab( );
QWidget * createPrivacyTab( );
QWidget * createSpeedTab( );
QWidget * createWebTab( Session& );
QWidget * createTrackerTab( );