re-sync the GTK+ and Qt clients' prefs dialogs.

This commit is contained in:
Jordan Lee 2013-01-16 21:42:03 +00:00
parent c4276d832e
commit c385a1559f
3 changed files with 171 additions and 183 deletions

View File

@ -256,34 +256,52 @@ target_cb (GtkWidget * tb, gpointer target)
****/
static GtkWidget*
downloadPage (GObject * core)
downloadingPage (GObject * core)
{
GtkWidget * t;
GtkWidget * w;
GtkWidget * l;
const char * s;
guint row = 0;
GtkWidget * t;
GtkWidget * w;
GtkWidget * l;
const char * s;
guint row = 0;
t = hig_workarea_create ();
t = hig_workarea_create ();
hig_workarea_add_section_title (t, &row, C_("Gerund", "Adding"));
hig_workarea_add_section_title (t, &row, _("Location"));
s = _("Automatically add .torrent files _from:");
l = new_check_button (s, TR_KEY_watch_dir_enabled, core);
w = new_path_chooser_button (TR_KEY_watch_dir, core);
gtk_widget_set_sensitive (GTK_WIDGET (w), gtr_pref_flag_get (TR_KEY_watch_dir_enabled));
g_signal_connect (l, "toggled", G_CALLBACK (target_cb), w);
hig_workarea_add_row_w (t, &row, l, w, NULL);
s = _("Show the Torrent Options _dialog");
w = new_check_button (s, TR_KEY_show_options_window, core);
hig_workarea_add_wide_control (t, &row, w);
s = _("_Start added torrents");
w = new_check_button (s, TR_KEY_start_added_torrents, core);
hig_workarea_add_wide_control (t, &row, w);
s = _("Mo_ve .torrent file to the trash");
w = new_check_button (s, TR_KEY_trash_original_torrent_files, core);
hig_workarea_add_wide_control (t, &row, w);
w = new_path_chooser_button (TR_KEY_download_dir, core);
hig_workarea_add_row (t, &row, _("Save to _Location:"), w, NULL);
hig_workarea_add_section_divider (t, &row);
hig_workarea_add_section_title (t, &row, _("Queue"));
hig_workarea_add_section_divider (t, &row);
hig_workarea_add_section_title (t, &row, _("Download Queue"));
s = _("Maximum active _downloads:");
s = _("Ma_ximum active downloads:");
w = new_spin_button (TR_KEY_download_queue_size, core, 0, INT_MAX, 1);
hig_workarea_add_row (t, &row, s, w, NULL);
s = _("Downloads sharing data in the last N minutes are _active:");
s = _("Downloads sharing data in the last _N minutes are active:");
w = new_spin_button (TR_KEY_queue_stalled_minutes, core, 1, INT_MAX, 15);
hig_workarea_add_row (t, &row, s, w, NULL);
hig_workarea_add_section_divider (t, &row);
hig_workarea_add_section_title (t, &row, _("Incomplete"));
hig_workarea_add_section_divider (t, &row);
hig_workarea_add_section_title (t, &row, _("Incomplete"));
s = _("Append \"._part\" to incomplete files' names");
w = new_check_button (s, TR_KEY_rename_partial_files, core);
@ -296,14 +314,14 @@ downloadPage (GObject * core)
g_signal_connect (l, "toggled", G_CALLBACK (target_cb), w);
hig_workarea_add_row_w (t, &row, l, w, NULL);
s = _("Call _script when torrent is completed:");
s = _("Call scrip_t when torrent is completed:");
l = new_check_button (s, TR_KEY_script_torrent_done_enabled, core);
w = new_file_chooser_button (TR_KEY_script_torrent_done_filename, core);
gtk_widget_set_sensitive (GTK_WIDGET (w), gtr_pref_flag_get (TR_KEY_script_torrent_done_enabled));
g_signal_connect (l, "toggled", G_CALLBACK (target_cb), w);
hig_workarea_add_row_w (t, &row, l, w, NULL);
return t;
return t;
}
/****
@ -311,39 +329,16 @@ downloadPage (GObject * core)
****/
static GtkWidget*
torrentPage (GObject * core)
seedingPage (GObject * core)
{
const char * s;
GtkWidget * t;
GtkWidget * w;
GtkWidget * w2;
GtkWidget * l;
guint row = 0;
GtkWidget * t;
GtkWidget * w;
GtkWidget * w2;
const char * s;
guint row = 0;
t = hig_workarea_create ();
hig_workarea_add_section_title (t, &row, C_("Gerund", "Adding"));
s = _("_Start when added");
w = new_check_button (s, TR_KEY_start_added_torrents, core);
hig_workarea_add_wide_control (t, &row, w);
s = _("Show _options dialog");
w = new_check_button (s, TR_KEY_show_options_window, core);
hig_workarea_add_wide_control (t, &row, w);
s = _("Mo_ve .torrent file to the trash");
w = new_check_button (s, TR_KEY_trash_original_torrent_files, core);
hig_workarea_add_wide_control (t, &row, w);
s = _("Automatically _add torrents from:");
l = new_check_button (s, TR_KEY_watch_dir_enabled, core);
w = new_path_chooser_button (TR_KEY_watch_dir, core);
gtk_widget_set_sensitive (GTK_WIDGET (w), gtr_pref_flag_get (TR_KEY_watch_dir_enabled));
g_signal_connect (l, "toggled", G_CALLBACK (target_cb), w);
hig_workarea_add_row_w (t, &row, l, w, NULL);
hig_workarea_add_section_divider (t, &row);
hig_workarea_add_section_title (t, &row, C_("Gerund", "Seeding"));
t = hig_workarea_create ();
hig_workarea_add_section_title (t, &row, _("Limits"));
s = _("Stop seeding at _ratio:");
w = new_check_button (s, TR_KEY_ratio_limit_enabled, core);
@ -359,7 +354,7 @@ torrentPage (GObject * core)
g_signal_connect (w, "toggled", G_CALLBACK (target_cb), w2);
hig_workarea_add_row_w (t, &row, w, w2, NULL);
return t;
return t;
}
/****
@ -519,20 +514,27 @@ new_encryption_combo (GObject * core, const tr_quark key)
static GtkWidget*
privacyPage (GObject * core)
{
const char * s;
GtkWidget * t;
GtkWidget * w;
GtkWidget * b;
GtkWidget * h;
GtkWidget * e;
struct blocklist_data * data;
guint row = 0;
const char * s;
GtkWidget * t;
GtkWidget * w;
GtkWidget * b;
GtkWidget * h;
GtkWidget * e;
struct blocklist_data * data;
guint row = 0;
data = g_new0 (struct blocklist_data, 1);
data->core = TR_CORE (core);
data = g_new0 (struct blocklist_data, 1);
data->core = TR_CORE (core);
t = hig_workarea_create ();
hig_workarea_add_section_title (t, &row, _("Blocklist"));
t = hig_workarea_create ();
hig_workarea_add_section_title (t, &row, _("Privacy"));
s = _("_Encryption mode:");
w = new_encryption_combo (core, TR_KEY_encryption);
hig_workarea_add_row (t, &row, s, w, NULL);
hig_workarea_add_section_divider (t, &row);
hig_workarea_add_section_title (t, &row, _("Blocklist"));
b = new_check_button (_("Enable _blocklist:"), TR_KEY_blocklist_enabled, core);
e = new_entry (TR_KEY_blocklist_url, core);
@ -563,37 +565,12 @@ privacyPage (GObject * core)
hig_workarea_add_wide_control (t, &row, w);
g_signal_connect (data->check, "toggled", G_CALLBACK (target_cb), w); target_cb (data->check, w);
hig_workarea_add_section_divider (t, &row);
hig_workarea_add_section_title (t, &row, _("Privacy"));
s = _("_Encryption mode:");
w = new_encryption_combo (core, TR_KEY_encryption);
hig_workarea_add_row (t, &row, s, w, NULL);
s = _("Use PE_X to find more peers");
w = new_check_button (s, TR_KEY_pex_enabled, core);
s = _("PEX is a tool for exchanging peer lists with the peers you're connected to.");
gtk_widget_set_tooltip_text (w, s);
hig_workarea_add_wide_control (t, &row, w);
s = _("Use _DHT to find more peers");
w = new_check_button (s, TR_KEY_dht_enabled, core);
s = _("DHT is a tool for finding peers without a tracker.");
gtk_widget_set_tooltip_text (w, s);
hig_workarea_add_wide_control (t, &row, w);
s = _("Use _Local Peer Discovery to find more peers");
w = new_check_button (s, TR_KEY_lpd_enabled, core);
s = _("LPD is a tool for finding peers on your local network.");
gtk_widget_set_tooltip_text (w, s);
hig_workarea_add_wide_control (t, &row, w);
g_object_weak_ref (G_OBJECT (t), privacyPageDestroyed, data);
return t;
g_object_weak_ref (G_OBJECT (t), privacyPageDestroyed, data);
return t;
}
/****
***** Web Tab
***** Remote Tab
****/
enum
@ -787,7 +764,7 @@ remotePageFree (gpointer gpage)
}
static GtkWidget*
webPage (GObject * core)
remotePage (GObject * core)
{
GtkWidget * t;
GtkWidget * w;
@ -801,10 +778,10 @@ webPage (GObject * core)
t = hig_workarea_create ();
g_object_set_data_full (G_OBJECT (t), "page", page, remotePageFree);
hig_workarea_add_section_title (t, &row, _("Web Client"));
hig_workarea_add_section_title (t, &row, _("Remote Control"));
/* "enabled" checkbutton */
s = _("_Enable web client");
s = _("Allow _remote access");
w = new_check_button (s, TR_KEY_rpc_enabled, core);
page->rpc_tb = GTK_TOGGLE_BUTTON (w);
g_signal_connect (w, "clicked", G_CALLBACK (onRPCToggled), page);
@ -846,7 +823,7 @@ webPage (GObject * core)
page->auth_widgets = g_slist_prepend (page->auth_widgets, w);
/* require authentication */
s = _("Only allow these IP a_ddresses to connect:");
s = _("Only allow these IP a_ddresses:");
w = new_check_button (s, TR_KEY_rpc_whitelist_enabled, core);
hig_workarea_add_wide_control (t, &row, w);
page->whitelist_tb = GTK_TOGGLE_BUTTON (w);
@ -1023,7 +1000,7 @@ new_week_combo (GObject * core, const tr_quark key)
}
static void
bandwidthPageFree (gpointer gpage)
speedPageFree (gpointer gpage)
{
struct BandwidthPage * page = gpage;
@ -1032,7 +1009,7 @@ bandwidthPageFree (gpointer gpage)
}
static GtkWidget*
bandwidthPage (GObject * core)
speedPage (GObject * core)
{
const char * s;
GtkWidget * t;
@ -1063,20 +1040,20 @@ bandwidthPage (GObject * core)
hig_workarea_add_section_divider (t, &row);
h = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, GUI_PAD);
w = gtk_image_new_from_stock ("alt-speed-on", -1);
gtk_box_pack_start (GTK_BOX (h), w, FALSE, FALSE, 0);
g_snprintf (buf, sizeof (buf), "<b>%s</b>", _("Alternative Speed Limits"));
w = gtk_label_new (buf);
gtk_misc_set_alignment (GTK_MISC (w), 0.0f, 0.5f);
gtk_label_set_use_markup (GTK_LABEL (w), TRUE);
gtk_box_pack_start (GTK_BOX (h), w, FALSE, FALSE, 0);
w = gtk_image_new_from_stock ("alt-speed-on", -1);
gtk_box_pack_start (GTK_BOX (h), w, FALSE, FALSE, 0);
hig_workarea_add_section_title_widget (t, &row, h);
s = _("Override normal speed limits manually or at scheduled times");
g_snprintf (buf, sizeof (buf), "<small>%s</small>", s);
w = gtk_label_new (buf);
gtk_label_set_use_markup (GTK_LABEL (w), TRUE);
gtk_misc_set_alignment (GTK_MISC (w), 0.5f, 0.5f);
gtk_misc_set_alignment (GTK_MISC (w), 0.0f, 0.5f);
hig_workarea_add_wide_control (t, &row, w);
g_snprintf (buf, sizeof (buf), _("U_pload (%s):"), _ (speed_K_str));
@ -1109,7 +1086,7 @@ bandwidthPage (GObject * core)
w = hig_workarea_add_row (t, &row, s, w, NULL);
page->sched_widgets = g_slist_prepend (page->sched_widgets, w);
g_object_set_data_full (G_OBJECT (t), "page", page, bandwidthPageFree);
g_object_set_data_full (G_OBJECT (t), "page", page, speedPageFree);
refreshSchedSensitivity (page);
return t;
@ -1240,6 +1217,24 @@ networkPage (GObject * core)
hig_workarea_add_wide_control (t, &row, w);
#endif
s = _("Use PE_X to find more peers");
w = new_check_button (s, TR_KEY_pex_enabled, core);
s = _("PEX is a tool for exchanging peer lists with the peers you're connected to.");
gtk_widget_set_tooltip_text (w, s);
hig_workarea_add_wide_control (t, &row, w);
s = _("Use _DHT to find more peers");
w = new_check_button (s, TR_KEY_dht_enabled, core);
s = _("DHT is a tool for finding peers without a tracker.");
gtk_widget_set_tooltip_text (w, s);
hig_workarea_add_wide_control (t, &row, w);
s = _("Use _Local Peer Discovery to find more peers");
w = new_check_button (s, TR_KEY_lpd_enabled, core);
s = _("LPD is a tool for finding peers on your local network.");
gtk_widget_set_tooltip_text (w, s);
hig_workarea_add_wide_control (t, &row, w);
return t;
}
@ -1265,30 +1260,23 @@ gtr_prefs_dialog_new (GtkWindow * parent, GObject * core)
n = gtk_notebook_new ();
gtk_container_set_border_width (GTK_CONTAINER (n), GUI_PAD);
gtk_notebook_append_page (GTK_NOTEBOOK (n),
torrentPage (core),
gtk_label_new (_("Torrents")));
gtk_notebook_append_page (GTK_NOTEBOOK (n),
downloadPage (core),
gtk_notebook_append_page (GTK_NOTEBOOK (n), speedPage (core),
gtk_label_new (_("Speed")));
gtk_notebook_append_page (GTK_NOTEBOOK (n), downloadingPage (core),
gtk_label_new (C_("Gerund", "Downloading")));
gtk_notebook_append_page (GTK_NOTEBOOK (n),
bandwidthPage (core),
gtk_label_new (_("Speed")));
gtk_notebook_append_page (GTK_NOTEBOOK (n),
privacyPage (core),
gtk_label_new (_("Privacy")));
gtk_notebook_append_page (GTK_NOTEBOOK (n),
networkPage (core),
gtk_label_new (_("Network")));
gtk_notebook_append_page (GTK_NOTEBOOK (n),
desktopPage (core),
gtk_label_new (_("Desktop")));
gtk_notebook_append_page (GTK_NOTEBOOK (n),
webPage (core),
gtk_label_new (_("Web")));
gtk_notebook_append_page (GTK_NOTEBOOK (n), seedingPage (core),
gtk_label_new (C_("Gerund", "Seeding")));
gtk_notebook_append_page (GTK_NOTEBOOK (n), privacyPage (core),
gtk_label_new (_("Privacy")));
gtk_notebook_append_page (GTK_NOTEBOOK (n), networkPage (core),
gtk_label_new (_("Network")));
gtk_notebook_append_page (GTK_NOTEBOOK (n), desktopPage (core),
gtk_label_new (_("Desktop")));
gtk_notebook_append_page (GTK_NOTEBOOK (n), remotePage (core),
gtk_label_new (_("Remote")));
g_signal_connect (d, "response", G_CALLBACK (response_cb), core);
gtr_dialog_set_content (GTK_DIALOG (d), n);
return d;
g_signal_connect (d, "response", G_CALLBACK (response_cb), core);
gtr_dialog_set_content (GTK_DIALOG (d), n);
return d;
}

View File

@ -169,19 +169,19 @@ PrefsDialog :: lineEditNew( int key, int echoMode )
***/
QWidget *
PrefsDialog :: createWebTab( Session& session )
PrefsDialog :: createRemoteTab( Session& session )
{
HIG * hig = new HIG( this );
hig->addSectionTitle( tr( "Web Client" ) );
hig->addSectionTitle( tr( "Remote Control" ) );
QWidget * w;
QHBoxLayout * h = new QHBoxLayout( );
QPushButton * b = new QPushButton( tr( "&Open web client" ) );
connect( b, SIGNAL(clicked()), &session, SLOT(launchWebInterface()) );
h->addWidget( b, 0, Qt::AlignRight );
QWidget * l = checkBoxNew( tr( "&Enable web client" ), Prefs::RPC_ENABLED );
QWidget * l = checkBoxNew( tr( "Allow &remote access" ), Prefs::RPC_ENABLED );
myUnsupportedWhenRemote << l;
hig->addRow( l, h, 0 );
l = hig->addRow( tr( "Listening &port:" ), w = spinBoxNew( Prefs::RPC_PORT, 0, 65535, 1 ) );
l = hig->addRow( tr( "HTTP &port:" ), w = spinBoxNew( Prefs::RPC_PORT, 0, 65535, 1 ) );
myWebWidgets << l << w;
hig->addWideControl( w = checkBoxNew( tr( "Use &authentication" ), Prefs::RPC_AUTH_REQUIRED ) );
myWebWidgets << w;
@ -189,7 +189,7 @@ PrefsDialog :: createWebTab( Session& session )
myWebAuthWidgets << l << w;
l = hig->addRow( tr( "Pass&word:" ), w = lineEditNew( Prefs::RPC_PASSWORD, QLineEdit::Password ) );
myWebAuthWidgets << l << w;
hig->addWideControl( w = checkBoxNew( tr( "Only allow these IP a&ddresses to connect:" ), Prefs::RPC_WHITELIST_ENABLED ) );
hig->addWideControl( w = checkBoxNew( tr( "Only allow these IP a&ddresses:" ), Prefs::RPC_WHITELIST_ENABLED ) );
myWebWidgets << w;
l = hig->addRow( tr( "Addresses:" ), w = lineEditNew( Prefs::RPC_WHITELIST ) );
myWebWhitelistWidgets << l << w;
@ -218,13 +218,13 @@ PrefsDialog :: createSpeedTab( )
hig->addSectionTitle( tr( "Speed Limits" ) );
const QString speed_K_str = Formatter::unitStr( Formatter::SPEED, Formatter::KB );
l = checkBoxNew( tr( "Limit &download speed (%1):" ).arg( speed_K_str ), Prefs::DSPEED_ENABLED );
r = spinBoxNew( Prefs::DSPEED, 0, INT_MAX, 5 );
l = checkBoxNew( tr( "&Upload (%1):" ).arg( speed_K_str ), Prefs::USPEED_ENABLED );
r = spinBoxNew( Prefs::USPEED, 0, INT_MAX, 5 );
hig->addRow( l, r );
enableBuddyWhenChecked( qobject_cast<QCheckBox*>(l), r );
l = checkBoxNew( tr( "Limit &upload speed (%1):" ).arg( speed_K_str ), Prefs::USPEED_ENABLED );
r = spinBoxNew( Prefs::USPEED, 0, INT_MAX, 5 );
l = checkBoxNew( tr( "&Download (%1):" ).arg( speed_K_str ), Prefs::DSPEED_ENABLED );
r = spinBoxNew( Prefs::DSPEED, 0, INT_MAX, 5 );
hig->addRow( l, r );
enableBuddyWhenChecked( qobject_cast<QCheckBox*>(l), r );
@ -244,12 +244,12 @@ PrefsDialog :: createSpeedTab( )
QString s = tr( "<small>Override normal speed limits manually or at scheduled times</small>" );
hig->addWideControl( new QLabel( s ) );
s = tr( "Limit do&wnload speed (%1):" ).arg( speed_K_str );
r = spinBoxNew( Prefs :: ALT_SPEED_LIMIT_DOWN, 0, INT_MAX, 5 );
s = tr( "U&pload (%1):" ).arg( speed_K_str );
r = spinBoxNew( Prefs :: ALT_SPEED_LIMIT_UP, 0, INT_MAX, 5 );
hig->addRow( s, r );
s = tr( "Limit u&pload speed (%1):" ).arg( speed_K_str );
r = spinBoxNew( Prefs :: ALT_SPEED_LIMIT_UP, 0, INT_MAX, 5 );
s = tr( "Do&wnload (%1):" ).arg( speed_K_str );
r = spinBoxNew( Prefs :: ALT_SPEED_LIMIT_DOWN, 0, INT_MAX, 5 );
hig->addRow( s, r );
QCheckBox * c = checkBoxNew( tr( "&Scheduled times:" ), Prefs::ALT_SPEED_LIMIT_TIME_ENABLED );
@ -352,7 +352,7 @@ PrefsDialog :: createNetworkTab( )
hig->addWideControl( checkBoxNew( tr( "Use UPnP or NAT-PMP port &forwarding from my router" ), Prefs::PORT_FORWARDING ) );
hig->addSectionDivider( );
hig->addSectionTitle( tr( "Limits" ) );
hig->addSectionTitle( tr( "Peer Limits" ) );
hig->addRow( tr( "Maximum peers per &torrent:" ), spinBoxNew( Prefs::PEER_LIMIT_TORRENT, 1, FD_SETSIZE, 5 ) );
hig->addRow( tr( "Maximum peers &overall:" ), spinBoxNew( Prefs::PEER_LIMIT_GLOBAL, 1, FD_SETSIZE, 5 ) );
@ -362,6 +362,12 @@ PrefsDialog :: createNetworkTab( )
QWidget * w;
hig->addWideControl( w = checkBoxNew( tr( "Enable &uTP for peer connections" ), Prefs::UTP_ENABLED ) );
w->setToolTip( tr( "uTP is a tool for reducing network congestion." ) );
hig->addWideControl( w = checkBoxNew( tr( "Use PE&X to find more peers" ), Prefs::PEX_ENABLED ) );
w->setToolTip( tr( "PEX is a tool for exchanging peer lists with the peers you're connected to." ) );
hig->addWideControl( w = checkBoxNew( tr( "Use &DHT to find more peers" ), Prefs::DHT_ENABLED ) );
w->setToolTip( tr( "DHT is a tool for finding peers without a tracker." ) );
hig->addWideControl( w = checkBoxNew( tr( "Use &Local Peer Discovery to find more peers" ), Prefs::LPD_ENABLED ) );
w->setToolTip( tr( "LPD is a tool for finding peers on your local network." ) );
hig->finish( );
return hig;
@ -420,6 +426,18 @@ PrefsDialog :: createPrivacyTab( )
QWidget * w;
HIG * hig = new HIG( this );
hig->addSectionTitle( tr( "Encryption" ) );
QComboBox * box = new QComboBox( );
box->addItem( tr( "Allow encryption" ), 0 );
box->addItem( tr( "Prefer encryption" ), 1 );
box->addItem( tr( "Require encryption" ), 2 );
myWidgets.insert( Prefs :: ENCRYPTION, box );
connect( box, SIGNAL(activated(int)), this, SLOT(encryptionEdited(int)));
hig->addRow( tr( "&Encryption mode:" ), box );
hig->addSectionDivider( );
hig->addSectionTitle( tr( "Blocklist" ) );
QWidget * l = checkBoxNew( tr("Enable &blocklist:"), Prefs::BLOCKLIST_ENABLED );
@ -442,24 +460,6 @@ PrefsDialog :: createPrivacyTab( )
myBlockWidgets << l;
hig->addWideControl( l );
hig->addSectionDivider( );
hig->addSectionTitle( tr( "Privacy" ) );
QComboBox * box = new QComboBox( );
box->addItem( tr( "Allow encryption" ), 0 );
box->addItem( tr( "Prefer encryption" ), 1 );
box->addItem( tr( "Require encryption" ), 2 );
myWidgets.insert( Prefs :: ENCRYPTION, box );
connect( box, SIGNAL(activated(int)), this, SLOT(encryptionEdited(int)));
hig->addRow( tr( "&Encryption mode:" ), box );
hig->addWideControl( w = checkBoxNew( tr( "Use PE&X to find more peers" ), Prefs::PEX_ENABLED ) );
w->setToolTip( tr( "PEX is a tool for exchanging peer lists with the peers you're connected to." ) );
hig->addWideControl( w = checkBoxNew( tr( "Use &DHT to find more peers" ), Prefs::DHT_ENABLED ) );
w->setToolTip( tr( "DHT is a tool for finding peers without a tracker." ) );
hig->addWideControl( w = checkBoxNew( tr( "Use &Local Peer Discovery to find more peers" ), Prefs::LPD_ENABLED ) );
w->setToolTip( tr( "LPD is a tool for finding peers on your local network." ) );
hig->finish( );
updateBlocklistLabel( );
return hig;
@ -520,7 +520,7 @@ PrefsDialog :: onLocationSelected( const QString& path, int key )
}
QWidget *
PrefsDialog :: createTorrentsTab( )
PrefsDialog :: createSeedingTab( )
{
const int iconSize( style( )->pixelMetric( QStyle :: PM_SmallIconSize ) );
const QFileIconProvider iconProvider;
@ -531,22 +531,7 @@ PrefsDialog :: createTorrentsTab( )
QWidget *l, *r;
HIG * hig = new HIG( this );
hig->addSectionTitle( tr( "Adding" ) );
hig->addWideControl( checkBoxNew( tr( "Show &options dialog" ), Prefs::OPTIONS_PROMPT ) );
hig->addWideControl( checkBoxNew( tr( "&Start when added" ), Prefs::START ) );
hig->addWideControl( checkBoxNew( tr( "Mo&ve .torrent file to the trash" ), Prefs::TRASH_ORIGINAL ) );
l = checkBoxNew( tr( "Automatically &add torrents from:" ), Prefs::DIR_WATCH_ENABLED );
QPushButton * b = myWatchButton = new QPushButton;
b->setIcon( folderPixmap );
b->setStyleSheet( QString::fromAscii( "text-align: left; padding-left: 5; padding-right: 5" ) );
connect( b, SIGNAL(clicked(bool)), this, SLOT(onWatchClicked(void)) );
hig->addRow( l, b );
enableBuddyWhenChecked( qobject_cast<QCheckBox*>(l), b );
hig->addSectionDivider( );
hig->addSectionTitle( tr( "Seeding Limits" ) );
hig->addSectionTitle( tr( "Limits" ) );
l = checkBoxNew( tr( "Stop seeding at &ratio:" ), Prefs::RATIO_ENABLED );
r = doubleSpinBoxNew( Prefs::RATIO, 0, INT_MAX, 0.5, 2 );
@ -563,7 +548,7 @@ PrefsDialog :: createTorrentsTab( )
}
QWidget *
PrefsDialog :: createDownloadTab( )
PrefsDialog :: createDownloadingTab( )
{
const int iconSize( style( )->pixelMetric( QStyle :: PM_SmallIconSize ) );
const QFileIconProvider iconProvider;
@ -572,21 +557,36 @@ PrefsDialog :: createDownloadTab( )
const QIcon fileIcon = iconProvider.icon( QFileIconProvider::File );
const QPixmap filePixmap = fileIcon.pixmap( iconSize );
QWidget *l;
QWidget * l;
QPushButton * b;
HIG * hig = new HIG( this );
hig->addSectionTitle( tr( "Location" ) );
hig->addSectionTitle( tr( "Adding" ) );
QPushButton * b = myDestinationButton = new QPushButton;
l = checkBoxNew( tr( "Automatically add .torrent files &from:" ), Prefs::DIR_WATCH_ENABLED );
b = myWatchButton = new QPushButton;
b->setIcon( folderPixmap );
b->setStyleSheet( QString::fromAscii( "text-align: left; padding-left: 5; padding-right: 5" ) );
connect( b, SIGNAL(clicked(bool)), this, SLOT(onWatchClicked(void)) );
hig->addRow( l, b );
enableBuddyWhenChecked( qobject_cast<QCheckBox*>(l), b );
hig->addWideControl( checkBoxNew( tr( "Show the Torrent Options &dialog" ), Prefs::OPTIONS_PROMPT ) );
hig->addWideControl( checkBoxNew( tr( "&Start added torrents" ), Prefs::START ) );
hig->addWideControl( checkBoxNew( tr( "Mo&ve the .torrent file to the trash" ), Prefs::TRASH_ORIGINAL ) );
b = myDestinationButton = new QPushButton;
b->setIcon( folderPixmap );
b->setStyleSheet( QString::fromAscii( "text-align: left; padding-left: 5; padding-right: 5" ) );
connect( b, SIGNAL(clicked(bool)), this, SLOT(onDestinationClicked(void)) );
hig->addRow( tr( "Save to &Location:" ), b );
hig->addSectionDivider( );
hig->addSectionTitle( tr( "Queue" ) );
hig->addSectionTitle( tr( "Download Queue" ) );
hig->addRow( tr( "Maximum active &downloads:" ), spinBoxNew( Prefs::DOWNLOAD_QUEUE_SIZE, 1, INT_MAX, 1 ) );
hig->addRow( tr( "Downloads sharing data in the last N minutes are &active:" ), spinBoxNew( Prefs::QUEUE_STALLED_MINUTES, 1, INT_MAX, 10 ) );
hig->addRow( tr( "Ma&ximum active downloads:" ), spinBoxNew( Prefs::DOWNLOAD_QUEUE_SIZE, 1, INT_MAX, 1 ) );
hig->addRow( tr( "Downloads sharing data in the last &N minutes are active:" ), spinBoxNew( Prefs::QUEUE_STALLED_MINUTES, 1, INT_MAX, 10 ) );
hig->addSectionDivider( );
hig->addSectionTitle( tr( "Incomplete" ) );
@ -627,13 +627,13 @@ PrefsDialog :: PrefsDialog( Session& session, Prefs& prefs, QWidget * parent ):
setWindowTitle( tr( "Transmission Preferences" ) );
QTabWidget * t = new QTabWidget( this );
t->addTab( createTorrentsTab( ), tr( "Torrents" ) );
t->addTab( createDownloadTab( ), tr( "Download" ) );
t->addTab( createSpeedTab( ), tr( "Speed" ) );
t->addTab( createDownloadingTab( ), tr( "Downloading" ) );
t->addTab( createSeedingTab( ), tr( "Seeding" ) );
t->addTab( createPrivacyTab( ), tr( "Privacy" ) );
t->addTab( createNetworkTab( ), tr( "Network" ) );
t->addTab( createDesktopTab( ), tr( "Desktop" ) );
t->addTab( createWebTab( session ), tr( "Web" ) );
t->addTab( createRemoteTab(session), tr( "Remote" ) );
myLayout->addWidget( t );
QDialogButtonBox * buttons = new QDialogButtonBox( QDialogButtonBox::Close, Qt::Horizontal, this );

View File

@ -77,13 +77,13 @@ class PrefsDialog: public QDialog
private:
void setPref( int key, const QVariant& v );
bool isAllowed( int key ) const;
QWidget * createTorrentsTab( );
QWidget * createDownloadTab( );
QWidget * createDownloadingTab( );
QWidget * createSeedingTab( );
QWidget * createSpeedTab( );
QWidget * createPrivacyTab( );
QWidget * createNetworkTab( );
QWidget * createDesktopTab( );
QWidget * createWebTab( Session& );
QWidget * createRemoteTab( Session& );
private:
typedef QMap<int,QWidget*> key2widget_t;