From 0861ca39083c6439bdc3eb3af54a69e2a2b3005c Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Sat, 27 Jun 2009 05:23:13 +0000 Subject: [PATCH] (trunk gtk,qt) more o/c simplification of the prefs dialog --- gtk/tr-prefs.c | 40 ++++++++++++++++----------------- gtk/tr-window.c | 21 +++++++++++------ qt/mainwin.cc | 11 +++++++-- qt/prefs-dialog.cc | 56 +++++++++++++++++++++++----------------------- qt/prefs-dialog.h | 4 ++-- 5 files changed, 73 insertions(+), 59 deletions(-) diff --git a/gtk/tr-prefs.c b/gtk/tr-prefs.c index db25b4db5..578ec0b76 100644 --- a/gtk/tr-prefs.c +++ b/gtk/tr-prefs.c @@ -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" ) ) ); diff --git a/gtk/tr-window.c b/gtk/tr-window.c index 143470bba..02d3012e1 100644 --- a/gtk/tr-window.c +++ b/gtk/tr-window.c @@ -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 diff --git a/qt/mainwin.cc b/qt/mainwin.cc index ea91e7af9..70952a513 100644 --- a/qt/mainwin.cc +++ b/qt/mainwin.cc @@ -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; diff --git a/qt/prefs-dialog.cc b/qt/prefs-dialog.cc index 20a71fa3c..81394b809 100644 --- a/qt/prefs-dialog.cc +++ b/qt/prefs-dialog.cc @@ -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 ); diff --git a/qt/prefs-dialog.h b/qt/prefs-dialog.h index e3d8cae8a..ded4ecbdd 100644 --- a/qt/prefs-dialog.h +++ b/qt/prefs-dialog.h @@ -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( );