]> granicus.if.org Git - transmission/commitdiff
copyediting: modify more files to the new indentation/whitespace formatting
authorJordan Lee <jordan@transmissionbt.com>
Sun, 27 Jan 2013 18:09:49 +0000 (18:09 +0000)
committerJordan Lee <jordan@transmissionbt.com>
Sun, 27 Jan 2013 18:09:49 +0000 (18:09 +0000)
qt/mainwin.cc
qt/mainwin.h

index eed3f84599c5061e685dd0ad8724f17674f8ffad..0a3eb94ff81127a5ca58cc4354357eb973ba884d 100644 (file)
  */
 class ListViewProxyStyle: public QProxyStyle
 {
-    public:
-        int styleHint(StyleHint hint,
-                      const QStyleOption *option = 0,
-                      const QWidget *widget = 0,
-                      QStyleHintReturn *returnData = 0) const
-        {
-            if (hint == QStyle::SH_ItemView_ActivateItemOnSingleClick)
-                return 0;
-            return QProxyStyle::styleHint(hint, option, widget, returnData);
-        }
+  public:
+
+    int styleHint (StyleHint            hint,
+                   const QStyleOption * option = 0,
+                   const QWidget      * widget = 0,
+                   QStyleHintReturn   * returnData = 0) const
+    {
+      if (hint == QStyle::SH_ItemView_ActivateItemOnSingleClick)
+        return 0;
+      return QProxyStyle::styleHint (hint, option, widget, returnData);
+    }
 };
 
 
 QIcon
-TrMainWindow :: getStockIcon( const QString& name, int fallback )
+TrMainWindow :: getStockIcon (const QString& name, int fallback)
 {
-    QIcon icon = QIcon::fromTheme( name );
+  QIcon icon = QIcon::fromTheme (name);
 
-    if( icon.isNull( ) && ( fallback >= 0 ) )
-        icon = style()->standardIcon( QStyle::StandardPixmap( fallback ), 0, this );
+  if (icon.isNull () && (fallback >= 0))
+    icon = style ()->standardIcon (QStyle::StandardPixmap (fallback), 0, this);
 
-    return icon;
+  return icon;
 }
 
 namespace
 {
-    QSize calculateTextButtonSizeHint( QPushButton * button )
+  QSize calculateTextButtonSizeHint (QPushButton * button)
+  {
+    QStyleOptionButton opt;
+    opt.initFrom (button);
+    QString s (button->text ());
+    if (s.isEmpty ())
+      s = QString::fromLatin1 ("XXXX");
+    QFontMetrics fm = button->fontMetrics ();
+    QSize sz = fm.size (Qt::TextShowMnemonic, s);
+    return button->style ()->sizeFromContents (QStyle::CT_PushButton, &opt, sz, button).expandedTo (QApplication::globalStrut ());
+  }
+}
+
+
+TrMainWindow :: TrMainWindow (Session& session, Prefs& prefs, TorrentModel& model, bool minimized):
+  myLastFullUpdateTime (0),
+  mySessionDialog (new SessionDialog (session, prefs, this)),
+  myPrefsDialog (0),
+  myAboutDialog (new AboutDialog (this)),
+  myStatsDialog (new StatsDialog (session, this)),
+  myDetailsDialog (0),
+  myFilterModel (prefs),
+  myTorrentDelegate (new TorrentDelegate (this)),
+  myTorrentDelegateMin (new TorrentDelegateMin (this)),
+  mySession (session),
+  myPrefs (prefs),
+  myModel (model),
+  mySpeedModeOffIcon (":/icons/alt-limit-off.png"),
+  mySpeedModeOnIcon (":/icons/alt-limit-on.png"),
+  myLastSendTime (0),
+  myLastReadTime (0),
+  myNetworkTimer (this),
+  myRefreshTrayIconTimer (this),
+  myRefreshActionSensitivityTimer (this)
+{
+  setAcceptDrops (true);
+
+  QAction * sep = new QAction (this);
+  sep->setSeparator (true);
+
+  ui.setupUi (this);
+
+  QStyle * style = this->style ();
+
+  int i = style->pixelMetric (QStyle::PM_SmallIconSize, 0, this);
+  const QSize smallIconSize (i, i);
+
+  ui.listView->setStyle (new ListViewProxyStyle);
+
+  // icons
+  ui.action_OpenFile->setIcon (getStockIcon ("folder-open", QStyle::SP_DialogOpenButton));
+  ui.action_New->setIcon (getStockIcon ("document-new", QStyle::SP_DesktopIcon));
+  ui.action_Properties->setIcon (getStockIcon ("document-properties", QStyle::SP_DesktopIcon));
+  ui.action_OpenFolder->setIcon (getStockIcon ("folder-open", QStyle::SP_DirOpenIcon));
+  ui.action_Start->setIcon (getStockIcon ("media-playback-start", QStyle::SP_MediaPlay));
+  ui.action_StartNow->setIcon (getStockIcon ("media-playback-start", QStyle::SP_MediaPlay));
+  ui.action_Announce->setIcon (getStockIcon ("network-transmit-receive"));
+  ui.action_Pause->setIcon (getStockIcon ("media-playback-pause", QStyle::SP_MediaPause));
+  ui.action_Remove->setIcon (getStockIcon ("list-remove", QStyle::SP_TrashIcon));
+  ui.action_Delete->setIcon (getStockIcon ("edit-delete", QStyle::SP_TrashIcon));
+  ui.action_StartAll->setIcon (getStockIcon ("media-playback-start", QStyle::SP_MediaPlay));
+  ui.action_PauseAll->setIcon (getStockIcon ("media-playback-pause", QStyle::SP_MediaPause));
+  ui.action_Quit->setIcon (getStockIcon ("application-exit"));
+  ui.action_SelectAll->setIcon (getStockIcon ("edit-select-all"));
+  ui.action_ReverseSortOrder->setIcon (getStockIcon ("view-sort-ascending", QStyle::SP_ArrowDown));
+  ui.action_Preferences->setIcon (getStockIcon ("preferences-system"));
+  ui.action_Contents->setIcon (getStockIcon ("help-contents", QStyle::SP_DialogHelpButton));
+  ui.action_About->setIcon (getStockIcon ("help-about"));
+  ui.action_QueueMoveTop->setIcon (getStockIcon ("go-top"));
+  ui.action_QueueMoveUp->setIcon (getStockIcon ("go-up", QStyle::SP_ArrowUp));
+  ui.action_QueueMoveDown->setIcon (getStockIcon ("go-down", QStyle::SP_ArrowDown));
+  ui.action_QueueMoveBottom->setIcon (getStockIcon ("go-bottom"));
+
+  // ui signals
+  connect (ui.action_Toolbar, SIGNAL (toggled (bool)), this, SLOT (setToolbarVisible (bool)));
+  connect (ui.action_Filterbar, SIGNAL (toggled (bool)), this, SLOT (setFilterbarVisible (bool)));
+  connect (ui.action_Statusbar, SIGNAL (toggled (bool)), this, SLOT (setStatusbarVisible (bool)));
+  connect (ui.action_CompactView, SIGNAL (toggled (bool)), this, SLOT (setCompactView (bool)));
+  connect (ui.action_SortByActivity, SIGNAL (toggled (bool)), this, SLOT (onSortByActivityToggled (bool)));
+  connect (ui.action_SortByAge,      SIGNAL (toggled (bool)), this, SLOT (onSortByAgeToggled (bool)));
+  connect (ui.action_SortByETA,      SIGNAL (toggled (bool)), this, SLOT (onSortByETAToggled (bool)));
+  connect (ui.action_SortByName,     SIGNAL (toggled (bool)), this, SLOT (onSortByNameToggled (bool)));
+  connect (ui.action_SortByProgress, SIGNAL (toggled (bool)), this, SLOT (onSortByProgressToggled (bool)));
+  connect (ui.action_SortByQueue,    SIGNAL (toggled (bool)), this, SLOT (onSortByQueueToggled (bool)));
+  connect (ui.action_SortByRatio,    SIGNAL (toggled (bool)), this, SLOT (onSortByRatioToggled (bool)));
+  connect (ui.action_SortBySize,     SIGNAL (toggled (bool)), this, SLOT (onSortBySizeToggled (bool)));
+  connect (ui.action_SortByState,    SIGNAL (toggled (bool)), this, SLOT (onSortByStateToggled (bool)));
+  connect (ui.action_ReverseSortOrder, SIGNAL (toggled (bool)), this, SLOT (setSortAscendingPref (bool)));
+  connect (ui.action_Start, SIGNAL (triggered ()), this, SLOT (startSelected ()));
+  connect (ui.action_QueueMoveTop,    SIGNAL (triggered ()), this, SLOT (queueMoveTop ()));
+  connect (ui.action_QueueMoveUp,     SIGNAL (triggered ()), this, SLOT (queueMoveUp ()));
+  connect (ui.action_QueueMoveDown,   SIGNAL (triggered ()), this, SLOT (queueMoveDown ()));
+  connect (ui.action_QueueMoveBottom, SIGNAL (triggered ()), this, SLOT (queueMoveBottom ()));
+  connect (ui.action_StartNow, SIGNAL (triggered ()), this, SLOT (startSelectedNow ()));
+  connect (ui.action_Pause, SIGNAL (triggered ()), this, SLOT (pauseSelected ()));
+  connect (ui.action_Remove, SIGNAL (triggered ()), this, SLOT (removeSelected ()));
+  connect (ui.action_Delete, SIGNAL (triggered ()), this, SLOT (deleteSelected ()));
+  connect (ui.action_Verify, SIGNAL (triggered ()), this, SLOT (verifySelected ()));
+  connect (ui.action_Announce, SIGNAL (triggered ()), this, SLOT (reannounceSelected ()));
+  connect (ui.action_StartAll, SIGNAL (triggered ()), this, SLOT (startAll ()));
+  connect (ui.action_PauseAll, SIGNAL (triggered ()), this, SLOT (pauseAll ()));
+  connect (ui.action_OpenFile, SIGNAL (triggered ()), this, SLOT (openTorrent ()));
+  connect (ui.action_AddURL, SIGNAL (triggered ()), this, SLOT (openURL ()));
+  connect (ui.action_New, SIGNAL (triggered ()), this, SLOT (newTorrent ()));
+  connect (ui.action_Preferences, SIGNAL (triggered ()), this, SLOT (openPreferences ()));
+  connect (ui.action_Statistics, SIGNAL (triggered ()), myStatsDialog, SLOT (show ()));
+  connect (ui.action_Donate, SIGNAL (triggered ()), this, SLOT (openDonate ()));
+  connect (ui.action_About, SIGNAL (triggered ()), myAboutDialog, SLOT (show ()));
+  connect (ui.action_Contents, SIGNAL (triggered ()), this, SLOT (openHelp ()));
+  connect (ui.action_OpenFolder, SIGNAL (triggered ()), this, SLOT (openFolder ()));
+  connect (ui.action_CopyMagnetToClipboard, SIGNAL (triggered ()), this, SLOT (copyMagnetLinkToClipboard ()));
+  connect (ui.action_SetLocation, SIGNAL (triggered ()), this, SLOT (setLocation ()));
+  connect (ui.action_Properties, SIGNAL (triggered ()), this, SLOT (openProperties ()));
+  connect (ui.action_SessionDialog, SIGNAL (triggered ()), mySessionDialog, SLOT (show ()));
+
+  connect (ui.listView, SIGNAL (activated (const QModelIndex&)), ui.action_Properties, SLOT (trigger ()));
+
+  // signals
+  connect (ui.action_SelectAll, SIGNAL (triggered ()), ui.listView, SLOT (selectAll ()));
+  connect (ui.action_DeselectAll, SIGNAL (triggered ()), ui.listView, SLOT (clearSelection ()));
+
+  connect (&myFilterModel, SIGNAL (rowsInserted (const QModelIndex&,int,int)), this, SLOT (refreshVisibleCount ()));
+  connect (&myFilterModel, SIGNAL (rowsRemoved (const QModelIndex&,int,int)), this, SLOT (refreshVisibleCount ()));
+  connect (&myFilterModel, SIGNAL (rowsInserted (const QModelIndex&,int,int)), this, SLOT (refreshActionSensitivitySoon ()));
+  connect (&myFilterModel, SIGNAL (rowsRemoved (const QModelIndex&,int,int)), this, SLOT (refreshActionSensitivitySoon ()));
+
+  connect (ui.action_Quit, SIGNAL (triggered ()), QCoreApplication::instance (), SLOT (quit ()));
+
+  // torrent view
+  myFilterModel.setSourceModel (&myModel);
+  connect (&myModel, SIGNAL (modelReset ()), this, SLOT (onModelReset ()));
+  connect (&myModel, SIGNAL (rowsRemoved (const QModelIndex&,int,int)), this, SLOT (onModelReset ()));
+  connect (&myModel, SIGNAL (rowsInserted (const QModelIndex&,int,int)), this, SLOT (onModelReset ()));
+  connect (&myModel, SIGNAL (dataChanged (const QModelIndex&,const QModelIndex&)), this, SLOT (refreshTrayIconSoon ()));
+
+  ui.listView->setModel (&myFilterModel);
+  connect (ui.listView->selectionModel (), SIGNAL (selectionChanged (const QItemSelection&,const QItemSelection&)), this, SLOT (refreshActionSensitivitySoon ()));
+
+  QActionGroup * actionGroup = new QActionGroup (this);
+  actionGroup->addAction (ui.action_SortByActivity);
+  actionGroup->addAction (ui.action_SortByAge);
+  actionGroup->addAction (ui.action_SortByETA);
+  actionGroup->addAction (ui.action_SortByName);
+  actionGroup->addAction (ui.action_SortByProgress);
+  actionGroup->addAction (ui.action_SortByQueue);
+  actionGroup->addAction (ui.action_SortByRatio);
+  actionGroup->addAction (ui.action_SortBySize);
+  actionGroup->addAction (ui.action_SortByState);
+
+  myAltSpeedAction = new QAction (tr ("Speed Limits"), this);
+  myAltSpeedAction->setIcon (myPrefs.get<bool> (Prefs::ALT_SPEED_LIMIT_ENABLED) ? mySpeedModeOnIcon : mySpeedModeOffIcon);
+  connect (myAltSpeedAction, SIGNAL (triggered ()), this, SLOT (toggleSpeedMode ()));
+
+  QMenu * menu = new QMenu ();
+  menu->addAction (ui.action_OpenFile);
+  menu->addAction (ui.action_AddURL);
+  menu->addSeparator ();
+  menu->addAction (ui.action_ShowMainWindow);
+  menu->addAction (ui.action_ShowMessageLog);
+  menu->addAction (ui.action_About);
+  menu->addSeparator ();
+  menu->addAction (ui.action_StartAll);
+  menu->addAction (ui.action_PauseAll);
+  menu->addAction (myAltSpeedAction);
+  menu->addSeparator ();
+  menu->addAction (ui.action_Quit);
+  myTrayIcon.setContextMenu (menu);
+  myTrayIcon.setIcon (QApplication::windowIcon ());
+
+  connect (&myPrefs, SIGNAL (changed (int)), this, SLOT (refreshPref (int)));
+  connect (ui.action_ShowMainWindow, SIGNAL (triggered (bool)), this, SLOT (toggleWindows (bool)));
+  connect (&myTrayIcon, SIGNAL (activated (QSystemTrayIcon::ActivationReason)),
+           this, SLOT (trayActivated (QSystemTrayIcon::ActivationReason)));
+
+  toggleWindows (!minimized);
+  ui.action_TrayIcon->setChecked (minimized || prefs.getBool (Prefs::SHOW_TRAY_ICON));
+
+  ui.verticalLayout->addWidget (createStatusBar ());
+  ui.verticalLayout->insertWidget (0, myFilterBar = new FilterBar (myPrefs, myModel, myFilterModel));
+
+  QList<int> initKeys;
+  initKeys << Prefs :: MAIN_WINDOW_X
+           << Prefs :: SHOW_TRAY_ICON
+           << Prefs :: SORT_REVERSED
+           << Prefs :: SORT_MODE
+           << Prefs :: FILTERBAR
+           << Prefs :: STATUSBAR
+           << Prefs :: STATUSBAR_STATS
+           << Prefs :: TOOLBAR
+           << Prefs :: ALT_SPEED_LIMIT_ENABLED
+           << Prefs :: COMPACT_VIEW
+           << Prefs :: DSPEED
+           << Prefs :: DSPEED_ENABLED
+           << Prefs :: USPEED
+           << Prefs :: USPEED_ENABLED
+           << Prefs :: RATIO
+           << Prefs :: RATIO_ENABLED;
+  foreach (int key, initKeys)
+    refreshPref (key);
+
+  connect (&mySession, SIGNAL (sourceChanged ()), this, SLOT (onSessionSourceChanged ()));
+  connect (&mySession, SIGNAL (statsUpdated ()), this, SLOT (refreshStatusBar ()));
+  connect (&mySession, SIGNAL (sessionUpdated ()), this, SLOT (refreshFreeSpace ()));
+  connect (&mySession, SIGNAL (dataReadProgress ()), this, SLOT (dataReadProgress ()));
+  connect (&mySession, SIGNAL (dataSendProgress ()), this, SLOT (dataSendProgress ()));
+  connect (&mySession, SIGNAL (httpAuthenticationRequired ()), this, SLOT (wrongAuthentication ()));
+
+  if (mySession.isServer ())
     {
-        QStyleOptionButton opt;
-        opt.initFrom( button );
-        QString s( button->text( ) );
-        if( s.isEmpty( ) )
-            s = QString::fromLatin1( "XXXX" );
-        QFontMetrics fm = button->fontMetrics( );
-        QSize sz = fm.size( Qt::TextShowMnemonic, s );
-        return button->style()->sizeFromContents( QStyle::CT_PushButton, &opt, sz, button ).expandedTo( QApplication::globalStrut( ) );
+      myNetworkLabel->hide ();
     }
-}
-
-
-TrMainWindow :: TrMainWindow( Session& session, Prefs& prefs, TorrentModel& model, bool minimized ):
-    myLastFullUpdateTime( 0 ),
-    mySessionDialog( new SessionDialog( session, prefs, this ) ),
-    myPrefsDialog( 0 ),
-    myAboutDialog( new AboutDialog( this ) ),
-    myStatsDialog( new StatsDialog( session, this ) ),
-    myDetailsDialog( 0 ),
-    myFilterModel( prefs ),
-    myTorrentDelegate( new TorrentDelegate( this ) ),
-    myTorrentDelegateMin( new TorrentDelegateMin( this ) ),
-    mySession( session ),
-    myPrefs( prefs ),
-    myModel( model ),
-    mySpeedModeOffIcon( ":/icons/alt-limit-off.png" ),
-    mySpeedModeOnIcon( ":/icons/alt-limit-on.png" ),
-    myLastSendTime( 0 ),
-    myLastReadTime( 0 ),
-    myNetworkTimer( this ),
-    myRefreshTrayIconTimer( this ),
-    myRefreshActionSensitivityTimer( this )
-{
-    setAcceptDrops( true );
-
-    QAction * sep = new QAction( this );
-    sep->setSeparator( true );
-
-    ui.setupUi( this );
-
-    QStyle * style = this->style();
-
-    int i = style->pixelMetric( QStyle::PM_SmallIconSize, 0, this );
-    const QSize smallIconSize( i, i );
-
-    ui.listView->setStyle(new ListViewProxyStyle);
-
-    // icons
-    ui.action_OpenFile->setIcon( getStockIcon( "folder-open", QStyle::SP_DialogOpenButton ) );
-    ui.action_New->setIcon( getStockIcon( "document-new", QStyle::SP_DesktopIcon ) );
-    ui.action_Properties->setIcon( getStockIcon( "document-properties", QStyle::SP_DesktopIcon ) );
-    ui.action_OpenFolder->setIcon( getStockIcon( "folder-open", QStyle::SP_DirOpenIcon ) );
-    ui.action_Start->setIcon( getStockIcon( "media-playback-start", QStyle::SP_MediaPlay ) );
-    ui.action_StartNow->setIcon( getStockIcon( "media-playback-start", QStyle::SP_MediaPlay ) );
-    ui.action_Announce->setIcon( getStockIcon( "network-transmit-receive" ) );
-    ui.action_Pause->setIcon( getStockIcon( "media-playback-pause", QStyle::SP_MediaPause ) );
-    ui.action_Remove->setIcon( getStockIcon( "list-remove", QStyle::SP_TrashIcon ) );
-    ui.action_Delete->setIcon( getStockIcon( "edit-delete", QStyle::SP_TrashIcon ) );
-    ui.action_StartAll->setIcon( getStockIcon( "media-playback-start", QStyle::SP_MediaPlay ) );
-    ui.action_PauseAll->setIcon( getStockIcon( "media-playback-pause", QStyle::SP_MediaPause ) );
-    ui.action_Quit->setIcon( getStockIcon( "application-exit" ) );
-    ui.action_SelectAll->setIcon( getStockIcon( "edit-select-all" ) );
-    ui.action_ReverseSortOrder->setIcon( getStockIcon( "view-sort-ascending", QStyle::SP_ArrowDown ) );
-    ui.action_Preferences->setIcon( getStockIcon( "preferences-system" ) );
-    ui.action_Contents->setIcon( getStockIcon( "help-contents", QStyle::SP_DialogHelpButton ) );
-    ui.action_About->setIcon( getStockIcon( "help-about" ) );
-    ui.action_QueueMoveTop->setIcon( getStockIcon( "go-top" ) );
-    ui.action_QueueMoveUp->setIcon( getStockIcon( "go-up", QStyle::SP_ArrowUp ) );
-    ui.action_QueueMoveDown->setIcon( getStockIcon( "go-down", QStyle::SP_ArrowDown ) );
-    ui.action_QueueMoveBottom->setIcon( getStockIcon( "go-bottom" ) );
-
-    // ui signals
-    connect( ui.action_Toolbar, SIGNAL(toggled(bool)), this, SLOT(setToolbarVisible(bool)));
-    connect( ui.action_Filterbar, SIGNAL(toggled(bool)), this, SLOT(setFilterbarVisible(bool)));
-    connect( ui.action_Statusbar, SIGNAL(toggled(bool)), this, SLOT(setStatusbarVisible(bool)));
-    connect( ui.action_CompactView, SIGNAL(toggled(bool)), this, SLOT(setCompactView(bool)));
-    connect( ui.action_SortByActivity, SIGNAL(toggled(bool)), this, SLOT(onSortByActivityToggled(bool)));
-    connect( ui.action_SortByAge,      SIGNAL(toggled(bool)), this, SLOT(onSortByAgeToggled(bool)));
-    connect( ui.action_SortByETA,      SIGNAL(toggled(bool)), this, SLOT(onSortByETAToggled(bool)));
-    connect( ui.action_SortByName,     SIGNAL(toggled(bool)), this, SLOT(onSortByNameToggled(bool)));
-    connect( ui.action_SortByProgress, SIGNAL(toggled(bool)), this, SLOT(onSortByProgressToggled(bool)));
-    connect( ui.action_SortByQueue,    SIGNAL(toggled(bool)), this, SLOT(onSortByQueueToggled(bool)));
-    connect( ui.action_SortByRatio,    SIGNAL(toggled(bool)), this, SLOT(onSortByRatioToggled(bool)));
-    connect( ui.action_SortBySize,     SIGNAL(toggled(bool)), this, SLOT(onSortBySizeToggled(bool)));
-    connect( ui.action_SortByState,    SIGNAL(toggled(bool)), this, SLOT(onSortByStateToggled(bool)));
-    connect( ui.action_ReverseSortOrder, SIGNAL(toggled(bool)), this, SLOT(setSortAscendingPref(bool)));
-    connect( ui.action_Start, SIGNAL(triggered()), this, SLOT(startSelected()));
-    connect( ui.action_QueueMoveTop,    SIGNAL(triggered()), this, SLOT(queueMoveTop()));
-    connect( ui.action_QueueMoveUp,     SIGNAL(triggered()), this, SLOT(queueMoveUp()));
-    connect( ui.action_QueueMoveDown,   SIGNAL(triggered()), this, SLOT(queueMoveDown()));
-    connect( ui.action_QueueMoveBottom, SIGNAL(triggered()), this, SLOT(queueMoveBottom()));
-    connect( ui.action_StartNow, SIGNAL(triggered()), this, SLOT(startSelectedNow()));
-    connect( ui.action_Pause, SIGNAL(triggered()), this, SLOT(pauseSelected()));
-    connect( ui.action_Remove, SIGNAL(triggered()), this, SLOT(removeSelected()));
-    connect( ui.action_Delete, SIGNAL(triggered()), this, SLOT(deleteSelected()));
-    connect( ui.action_Verify, SIGNAL(triggered()), this, SLOT(verifySelected()) );
-    connect( ui.action_Announce, SIGNAL(triggered()), this, SLOT(reannounceSelected()) );
-    connect( ui.action_StartAll, SIGNAL(triggered()), this, SLOT(startAll()));
-    connect( ui.action_PauseAll, SIGNAL(triggered()), this, SLOT(pauseAll()));
-    connect( ui.action_OpenFile, SIGNAL(triggered()), this, SLOT(openTorrent()));
-    connect( ui.action_AddURL, SIGNAL(triggered()), this, SLOT(openURL()));
-    connect( ui.action_New, SIGNAL(triggered()), this, SLOT(newTorrent()));
-    connect( ui.action_Preferences, SIGNAL(triggered()), this, SLOT(openPreferences()));
-    connect( ui.action_Statistics, SIGNAL(triggered()), myStatsDialog, SLOT(show()));
-    connect( ui.action_Donate, SIGNAL(triggered()), this, SLOT(openDonate()));
-    connect( ui.action_About, SIGNAL(triggered()), myAboutDialog, SLOT(show()));
-    connect( ui.action_Contents, SIGNAL(triggered()), this, SLOT(openHelp()));
-    connect( ui.action_OpenFolder, SIGNAL(triggered()), this, SLOT(openFolder()));
-    connect( ui.action_CopyMagnetToClipboard, SIGNAL(triggered()), this, SLOT(copyMagnetLinkToClipboard()));
-    connect( ui.action_SetLocation, SIGNAL(triggered()), this, SLOT(setLocation()));
-    connect( ui.action_Properties, SIGNAL(triggered()), this, SLOT(openProperties()));
-    connect( ui.action_SessionDialog, SIGNAL(triggered()), mySessionDialog, SLOT(show()));
-
-    connect( ui.listView, SIGNAL(activated(const QModelIndex&)), ui.action_Properties, SLOT(trigger()));
-
-    // signals
-    connect( ui.action_SelectAll, SIGNAL(triggered()), ui.listView, SLOT(selectAll()));
-    connect( ui.action_DeselectAll, SIGNAL(triggered()), ui.listView, SLOT(clearSelection()));
-
-    connect( &myFilterModel, SIGNAL(rowsInserted(const QModelIndex&,int,int)), this, SLOT(refreshVisibleCount()));
-    connect( &myFilterModel, SIGNAL(rowsRemoved(const QModelIndex&,int,int)), this, SLOT(refreshVisibleCount()));
-    connect( &myFilterModel, SIGNAL(rowsInserted(const QModelIndex&,int,int)), this, SLOT(refreshActionSensitivitySoon()));
-    connect( &myFilterModel, SIGNAL(rowsRemoved(const QModelIndex&,int,int)), this, SLOT(refreshActionSensitivitySoon()));
-
-    connect( ui.action_Quit, SIGNAL(triggered()), QCoreApplication::instance(), SLOT(quit()) );
-
-    // torrent view
-    myFilterModel.setSourceModel( &myModel );
-    connect( &myModel, SIGNAL(modelReset()), this, SLOT(onModelReset()));
-    connect( &myModel, SIGNAL(rowsRemoved(const QModelIndex&,int,int)), this, SLOT(onModelReset()));
-    connect( &myModel, SIGNAL(rowsInserted(const QModelIndex&,int,int)), this, SLOT(onModelReset()));
-    connect( &myModel, SIGNAL(dataChanged(const QModelIndex&,const QModelIndex&)), this, SLOT(refreshTrayIconSoon()));
-
-    ui.listView->setModel( &myFilterModel );
-    connect( ui.listView->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&,const QItemSelection&)), this, SLOT(refreshActionSensitivitySoon()));
-
-    QActionGroup * actionGroup = new QActionGroup( this );
-    actionGroup->addAction( ui.action_SortByActivity );
-    actionGroup->addAction( ui.action_SortByAge );
-    actionGroup->addAction( ui.action_SortByETA );
-    actionGroup->addAction( ui.action_SortByName );
-    actionGroup->addAction( ui.action_SortByProgress );
-    actionGroup->addAction( ui.action_SortByQueue );
-    actionGroup->addAction( ui.action_SortByRatio );
-    actionGroup->addAction( ui.action_SortBySize );
-    actionGroup->addAction( ui.action_SortByState );
-
-    myAltSpeedAction = new QAction( tr( "Speed Limits" ), this );
-    myAltSpeedAction->setIcon( myPrefs.get<bool>(Prefs::ALT_SPEED_LIMIT_ENABLED) ? mySpeedModeOnIcon : mySpeedModeOffIcon );
-    connect( myAltSpeedAction, SIGNAL(triggered()), this, SLOT(toggleSpeedMode()) );
-
-    QMenu * menu = new QMenu( );
-    menu->addAction( ui.action_OpenFile );
-    menu->addAction( ui.action_AddURL );
-    menu->addSeparator( );
-    menu->addAction( ui.action_ShowMainWindow );
-    menu->addAction( ui.action_ShowMessageLog );
-    menu->addAction( ui.action_About );
-    menu->addSeparator( );
-    menu->addAction( ui.action_StartAll );
-    menu->addAction( ui.action_PauseAll );
-    menu->addAction( myAltSpeedAction );
-    menu->addSeparator( );
-    menu->addAction( ui.action_Quit );
-    myTrayIcon.setContextMenu( menu );
-    myTrayIcon.setIcon( QApplication::windowIcon( ) );
-
-    connect( &myPrefs, SIGNAL(changed(int)), this, SLOT(refreshPref(int)) );
-    connect( ui.action_ShowMainWindow, SIGNAL(triggered(bool)), this, SLOT(toggleWindows(bool)));
-    connect( &myTrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
-             this, SLOT(trayActivated(QSystemTrayIcon::ActivationReason)));
-
-    toggleWindows( !minimized );
-    ui.action_TrayIcon->setChecked( minimized || prefs.getBool( Prefs::SHOW_TRAY_ICON ) );
-
-    ui.verticalLayout->addWidget( createStatusBar( ) );
-    ui.verticalLayout->insertWidget( 0, myFilterBar = new FilterBar( myPrefs, myModel, myFilterModel ) );
-
-    QList<int> initKeys;
-    initKeys << Prefs :: MAIN_WINDOW_X
-             << Prefs :: SHOW_TRAY_ICON
-             << Prefs :: SORT_REVERSED
-             << Prefs :: SORT_MODE
-             << Prefs :: FILTERBAR
-             << Prefs :: STATUSBAR
-             << Prefs :: STATUSBAR_STATS
-             << Prefs :: TOOLBAR
-             << Prefs :: ALT_SPEED_LIMIT_ENABLED
-             << Prefs :: COMPACT_VIEW
-             << Prefs :: DSPEED
-             << Prefs :: DSPEED_ENABLED
-             << Prefs :: USPEED
-             << Prefs :: USPEED_ENABLED
-             << Prefs :: RATIO
-             << Prefs :: RATIO_ENABLED;
-    foreach( int key, initKeys )
-        refreshPref( key );
-
-    connect( &mySession, SIGNAL(sourceChanged()), this, SLOT(onSessionSourceChanged()) );
-    connect( &mySession, SIGNAL(statsUpdated()), this, SLOT(refreshStatusBar()) );
-    connect( &mySession, SIGNAL(sessionUpdated()), this, SLOT(refreshFreeSpace()) );
-    connect( &mySession, SIGNAL(dataReadProgress()), this, SLOT(dataReadProgress()) );
-    connect( &mySession, SIGNAL(dataSendProgress()), this, SLOT(dataSendProgress()) );
-    connect( &mySession, SIGNAL(httpAuthenticationRequired()), this, SLOT(wrongAuthentication()) );
-
-    if( mySession.isServer( ) )
-        myNetworkLabel->hide( );
-    else {
-        connect( &myNetworkTimer, SIGNAL(timeout()), this, SLOT(onNetworkTimer()));
-        myNetworkTimer.start( 1000 );
+  else
+    {
+      connect (&myNetworkTimer, SIGNAL (timeout ()), this, SLOT (onNetworkTimer ()));
+      myNetworkTimer.start (1000);
     }
 
-    connect( &myRefreshTrayIconTimer, SIGNAL(timeout()), this, SLOT(refreshTrayIcon()) );
-    connect( &myRefreshActionSensitivityTimer, SIGNAL(timeout()), this, SLOT(refreshActionSensitivity()) );
+  connect (&myRefreshTrayIconTimer, SIGNAL (timeout ()), this, SLOT (refreshTrayIcon ()));
+  connect (&myRefreshActionSensitivityTimer, SIGNAL (timeout ()), this, SLOT (refreshActionSensitivity ()));
 
 
-    refreshActionSensitivitySoon( );
-    refreshTrayIconSoon( );
-    refreshStatusBar( );
-    refreshFreeSpace( );
-    refreshTitle( );
-    refreshVisibleCount( );
+  refreshActionSensitivitySoon ();
+  refreshTrayIconSoon ();
+  refreshStatusBar ();
+  refreshFreeSpace ();
+  refreshTitle ();
+  refreshVisibleCount ();
 }
 
-TrMainWindow :: ~TrMainWindow)
+TrMainWindow :: ~TrMainWindow ()
 {
 }
 
@@ -315,19 +319,19 @@ TrMainWindow :: ~TrMainWindow( )
 ****/
 
 void
-TrMainWindow :: onSessionSourceChanged)
+TrMainWindow :: onSessionSourceChanged ()
 {
-    myModel.clear( );
+  myModel.clear ();
 }
 
 void
-TrMainWindow :: onModelReset)
+TrMainWindow :: onModelReset ()
 {
-    refreshTitle( );
-    refreshVisibleCount( );
-    refreshActionSensitivitySoon( );
-    refreshStatusBar( );
-    refreshTrayIconSoon( );
+  refreshTitle ();
+  refreshVisibleCount ();
+  refreshActionSensitivitySoon ();
+  refreshStatusBar ();
+  refreshTrayIconSoon ();
 }
 
 /****
@@ -337,201 +341,204 @@ TrMainWindow :: onModelReset( )
 #define PREF_VARIANTS_KEY "pref-variants-list"
 
 void
-TrMainWindow :: onSetPrefs)
+TrMainWindow :: onSetPrefs ()
 {
-    const QVariantList p = sender()->property( PREF_VARIANTS_KEY ).toList( );
-    assert( ( p.size( ) % 2 ) == 0 );
-    for( int i=0, n=p.size(); i<n; i+=2 )
-        myPrefs.set( p[i].toInt(), p[i+1] );
+  const QVariantList p = sender ()->property (PREF_VARIANTS_KEY).toList ();
+  assert ( (p.size () % 2) == 0);
+  for (int i=0, n=p.size (); i<n; i+=2)
+    myPrefs.set (p[i].toInt (), p[i+1]);
 }
 
 void
-TrMainWindow :: onSetPrefs( bool isChecked )
+TrMainWindow :: onSetPrefs (bool isChecked)
 {
-    if( isChecked )
-        onSetPrefs( );
+  if (isChecked)
+    onSetPrefs ();
 }
 
 #define SHOW_KEY "show-mode"
 
 QWidget *
-TrMainWindow :: createStatusBar( )
-{
-    QMenu * m;
-    QLabel * l;
-    QHBoxLayout * h;
-    QPushButton * p;
-    QActionGroup * a;
-    const int i = style( )->pixelMetric( QStyle::PM_SmallIconSize, 0, this );
-    const QSize smallIconSize( i, i );
-
-    QWidget * top = myStatusBar = new QWidget;
-    h = new QHBoxLayout( top );
-    h->setContentsMargins( HIG::PAD_SMALL, HIG::PAD_SMALL, HIG::PAD_SMALL, HIG::PAD_SMALL );
-    h->setSpacing( HIG::PAD_SMALL );
-
-        p = myOptionsButton = new TrIconPushButton( this );
-        p->setIcon( QIcon( ":/icons/utilities.png" ) );
-        p->setIconSize( QPixmap( ":/icons/utilities.png" ).size() );
-        p->setFlat( true );
-        p->setMenu( createOptionsMenu( ) );
-        h->addWidget( p );
-
-        p = myAltSpeedButton = new QPushButton( this );
-        p->setIcon( myPrefs.get<bool>(Prefs::ALT_SPEED_LIMIT_ENABLED) ? mySpeedModeOnIcon : mySpeedModeOffIcon );
-        p->setIconSize( QPixmap( ":/icons/alt-limit-on.png" ).size() );
-        p->setCheckable( true );
-        p->setFixedWidth( p->height() );
-        p->setFlat( true );
-        h->addWidget( p );
-        connect( p, SIGNAL(clicked()), this, SLOT(toggleSpeedMode()));
-
-        l = myNetworkLabel = new QLabel;
-        h->addWidget( l );
-
-    h->addStretch( 1 );
-
-        l = myVisibleCountLabel = new QLabel( this );
-        h->addWidget( l );
-
-    //h->addStretch( 1 );
-    h->addSpacing ( HIG::PAD_BIG );
-
-        l = myFreeSpaceTextLabel = new QLabel (this);
-        const int minimumFreeSpaceWidth = l->fontMetrics().width( Formatter::sizeToString(1024 * 1024));
-        l->setMinimumWidth( minimumFreeSpaceWidth );
-        h->addWidget( l );
-        l = myFreeSpaceIconLabel = new QLabel (this);
-        l->setPixmap( getStockIcon( "drive-harddisk", QStyle::SP_DriveHDIcon ).pixmap( smallIconSize ) );
-        h->addWidget( l );
-
-    h->addStretch( 1 );
-
-        l = myStatsLabel = new QLabel( this );
-        h->addWidget( l );
-        a = new QActionGroup( this );
-        a->addAction( ui.action_TotalRatio );
-        a->addAction( ui.action_TotalTransfer );
-        a->addAction( ui.action_SessionRatio );
-        a->addAction( ui.action_SessionTransfer );
-        m = new QMenu( );
-        m->addAction( ui.action_TotalRatio );
-        m->addAction( ui.action_TotalTransfer );
-        m->addAction( ui.action_SessionRatio );
-        m->addAction( ui.action_SessionTransfer );
-        connect( ui.action_TotalRatio, SIGNAL(triggered()), this, SLOT(showTotalRatio()));
-        connect( ui.action_TotalTransfer, SIGNAL(triggered()), this, SLOT(showTotalTransfer()));
-        connect( ui.action_SessionRatio, SIGNAL(triggered()), this, SLOT(showSessionRatio()));
-        connect( ui.action_SessionTransfer, SIGNAL(triggered()), this, SLOT(showSessionTransfer()));
-        p = myStatsModeButton = new TrIconPushButton( this );
-        p->setIcon( QIcon( ":/icons/ratio.png" ) );
-        p->setIconSize( QPixmap( ":/icons/ratio.png" ).size() );
-        p->setFlat( true );
-        p->setMenu( m );
-        h->addWidget( p );
-
-    //h->addStretch( 1 );
-    h->addSpacing ( HIG::PAD );
-
-        l = myDownloadSpeedLabel = new QLabel( this );
-        const int minimumSpeedWidth = l->fontMetrics().width( Formatter::speedToString(Speed::fromKBps(999.99)));
-        l->setMinimumWidth( minimumSpeedWidth );
-        l->setAlignment( Qt::AlignRight|Qt::AlignVCenter );
-        h->addWidget( l );
-        l = new QLabel( this );
-        l->setPixmap( getStockIcon( "go-down", QStyle::SP_ArrowDown ).pixmap( smallIconSize ) );
-        h->addWidget( l );
-
-    h->addSpacing ( HIG::PAD );
-
-        l = myUploadSpeedLabel = new QLabel;
-        l->setMinimumWidth( minimumSpeedWidth );
-        l->setAlignment( Qt::AlignRight|Qt::AlignVCenter );
-        h->addWidget( l );
-        l = new QLabel;
-        l->setPixmap( getStockIcon( "go-up", QStyle::SP_ArrowUp ).pixmap( smallIconSize ) );
-        h->addWidget( l );
-
-    return top;
+TrMainWindow :: createStatusBar ()
+{
+  QMenu * m;
+  QLabel * l;
+  QHBoxLayout * h;
+  QPushButton * p;
+  QActionGroup * a;
+  const int i = style ()->pixelMetric (QStyle::PM_SmallIconSize, 0, this);
+  const QSize smallIconSize (i, i);
+
+  QWidget * top = myStatusBar = new QWidget;
+  h = new QHBoxLayout (top);
+  h->setContentsMargins (HIG::PAD_SMALL, HIG::PAD_SMALL, HIG::PAD_SMALL, HIG::PAD_SMALL);
+  h->setSpacing (HIG::PAD_SMALL);
+
+    p = myOptionsButton = new TrIconPushButton (this);
+    p->setIcon (QIcon (":/icons/utilities.png"));
+    p->setIconSize (QPixmap (":/icons/utilities.png").size ());
+    p->setFlat (true);
+    p->setMenu (createOptionsMenu ());
+    h->addWidget (p);
+
+    p = myAltSpeedButton = new QPushButton (this);
+    p->setIcon (myPrefs.get<bool> (Prefs::ALT_SPEED_LIMIT_ENABLED) ? mySpeedModeOnIcon : mySpeedModeOffIcon);
+    p->setIconSize (QPixmap (":/icons/alt-limit-on.png").size ());
+    p->setCheckable (true);
+    p->setFixedWidth (p->height ());
+    p->setFlat (true);
+    h->addWidget (p);
+    connect (p, SIGNAL (clicked ()), this, SLOT (toggleSpeedMode ()));
+
+    l = myNetworkLabel = new QLabel;
+    h->addWidget (l);
+
+  h->addStretch (1);
+
+    l = myVisibleCountLabel = new QLabel (this);
+    h->addWidget (l);
+
+  h->addSpacing (HIG::PAD_BIG);
+
+    l = myFreeSpaceTextLabel = new QLabel (this);
+    const int minimumFreeSpaceWidth = l->fontMetrics ().width (Formatter::sizeToString (1024 * 1024));
+    l->setMinimumWidth (minimumFreeSpaceWidth);
+    h->addWidget (l);
+    l = myFreeSpaceIconLabel = new QLabel (this);
+    l->setPixmap (getStockIcon ("drive-harddisk", QStyle::SP_DriveHDIcon).pixmap (smallIconSize));
+    h->addWidget (l);
+
+  h->addStretch (1);
+
+    l = myStatsLabel = new QLabel (this);
+    h->addWidget (l);
+    a = new QActionGroup (this);
+    a->addAction (ui.action_TotalRatio);
+    a->addAction (ui.action_TotalTransfer);
+    a->addAction (ui.action_SessionRatio);
+    a->addAction (ui.action_SessionTransfer);
+    m = new QMenu ();
+    m->addAction (ui.action_TotalRatio);
+    m->addAction (ui.action_TotalTransfer);
+    m->addAction (ui.action_SessionRatio);
+    m->addAction (ui.action_SessionTransfer);
+    connect (ui.action_TotalRatio, SIGNAL (triggered ()), this, SLOT (showTotalRatio ()));
+    connect (ui.action_TotalTransfer, SIGNAL (triggered ()), this, SLOT (showTotalTransfer ()));
+    connect (ui.action_SessionRatio, SIGNAL (triggered ()), this, SLOT (showSessionRatio ()));
+    connect (ui.action_SessionTransfer, SIGNAL (triggered ()), this, SLOT (showSessionTransfer ()));
+    p = myStatsModeButton = new TrIconPushButton (this);
+    p->setIcon (QIcon (":/icons/ratio.png"));
+    p->setIconSize (QPixmap (":/icons/ratio.png").size ());
+    p->setFlat (true);
+    p->setMenu (m);
+    h->addWidget (p);
+
+  h->addSpacing (HIG::PAD);
+
+    l = myDownloadSpeedLabel = new QLabel (this);
+    const int minimumSpeedWidth = l->fontMetrics ().width (Formatter::speedToString (Speed::fromKBps (999.99)));
+    l->setMinimumWidth (minimumSpeedWidth);
+    l->setAlignment (Qt::AlignRight|Qt::AlignVCenter);
+    h->addWidget (l);
+    l = new QLabel (this);
+    l->setPixmap (getStockIcon ("go-down", QStyle::SP_ArrowDown).pixmap (smallIconSize));
+    h->addWidget (l);
+
+  h->addSpacing (HIG::PAD);
+
+    l = myUploadSpeedLabel = new QLabel;
+    l->setMinimumWidth (minimumSpeedWidth);
+    l->setAlignment (Qt::AlignRight|Qt::AlignVCenter);
+    h->addWidget (l);
+    l = new QLabel;
+    l->setPixmap (getStockIcon ("go-up", QStyle::SP_ArrowUp).pixmap (smallIconSize));
+    h->addWidget (l);
+
+  return top;
 }
 
 QMenu *
-TrMainWindow :: createOptionsMenu( )
-{
-    QMenu * menu;
-    QMenu * sub;
-    QAction * a;
-    QActionGroup * g;
-
-    QList<int> stockSpeeds;
-    stockSpeeds << 5 << 10 << 20 << 30 << 40 << 50 << 75 << 100 << 150 << 200 << 250 << 500 << 750;
-    QList<double> stockRatios;
-    stockRatios << 0.25 << 0.50 << 0.75 << 1 << 1.5 << 2 << 3;
-
-    menu = new QMenu;
-    sub = menu->addMenu( tr( "Limit Download Speed" ) );
-        int currentVal = myPrefs.get<int>( Prefs::DSPEED );
-        g = new QActionGroup( this );
-        a = myDlimitOffAction = sub->addAction( tr( "Unlimited" ) );
-        a->setCheckable( true );
-        a->setProperty( PREF_VARIANTS_KEY, QVariantList() << Prefs::DSPEED_ENABLED << false );
-        g->addAction( a );
-        connect( a, SIGNAL(triggered(bool)), this, SLOT(onSetPrefs(bool)) );
-        a = myDlimitOnAction = sub->addAction( tr( "Limited at %1" ).arg( Formatter::speedToString( Speed::fromKBps( currentVal ) ) ) );
-        a->setCheckable( true );
-        a->setProperty( PREF_VARIANTS_KEY, QVariantList() << Prefs::DSPEED << currentVal << Prefs::DSPEED_ENABLED << true );
-        g->addAction( a );
-        connect( a, SIGNAL(triggered(bool)), this, SLOT(onSetPrefs(bool)) );
-        sub->addSeparator( );
-        foreach( int i, stockSpeeds ) {
-            a = sub->addAction( Formatter::speedToString( Speed::fromKBps( i ) ) );
-            a->setProperty( PREF_VARIANTS_KEY, QVariantList() << Prefs::DSPEED << i << Prefs::DSPEED_ENABLED << true );
-            connect( a, SIGNAL(triggered(bool)), this, SLOT(onSetPrefs()));
-        }
-
-    sub = menu->addMenu( tr( "Limit Upload Speed" ) );
-        currentVal = myPrefs.get<int>( Prefs::USPEED );
-        g = new QActionGroup( this );
-        a = myUlimitOffAction = sub->addAction( tr( "Unlimited" ) );
-        a->setCheckable( true );
-        a->setProperty( PREF_VARIANTS_KEY, QVariantList() << Prefs::USPEED_ENABLED << false );
-        g->addAction( a );
-        connect( a, SIGNAL(triggered(bool)), this, SLOT(onSetPrefs(bool)) );
-        a = myUlimitOnAction = sub->addAction( tr( "Limited at %1" ).arg( Formatter::speedToString( Speed::fromKBps( currentVal ) ) ) );
-        a->setCheckable( true );
-        a->setProperty( PREF_VARIANTS_KEY, QVariantList() << Prefs::USPEED << currentVal << Prefs::USPEED_ENABLED << true );
-        g->addAction( a );
-        connect( a, SIGNAL(triggered(bool)), this, SLOT(onSetPrefs(bool)) );
-        sub->addSeparator( );
-        foreach( int i, stockSpeeds ) {
-            a = sub->addAction( Formatter::speedToString( Speed::fromKBps( i ) ) );
-            a->setProperty( PREF_VARIANTS_KEY, QVariantList() << Prefs::USPEED << i << Prefs::USPEED_ENABLED << true );
-            connect( a, SIGNAL(triggered(bool)), this, SLOT(onSetPrefs()));
-        }
-
-    menu->addSeparator( );
-    sub = menu->addMenu( tr( "Stop Seeding at Ratio" ) );
-
-        double d = myPrefs.get<double>( Prefs::RATIO );
-        g = new QActionGroup( this );
-        a = myRatioOffAction = sub->addAction( tr( "Seed Forever" ) );
-        a->setCheckable( true );
-        a->setProperty( PREF_VARIANTS_KEY, QVariantList() << Prefs::RATIO_ENABLED << false );
-        g->addAction( a );
-        connect( a, SIGNAL(triggered(bool)), this, SLOT(onSetPrefs(bool)) );
-        a = myRatioOnAction = sub->addAction( tr( "Stop at Ratio (%1)" ).arg( Formatter::ratioToString( d ) ) );
-        a->setCheckable( true );
-        a->setProperty( PREF_VARIANTS_KEY, QVariantList() << Prefs::RATIO << d << Prefs::RATIO_ENABLED << true );
-        g->addAction( a );
-        connect( a, SIGNAL(triggered(bool)), this, SLOT(onSetPrefs(bool)) );
-        sub->addSeparator( );
-        foreach( double i, stockRatios ) {
-            a = sub->addAction( Formatter::ratioToString( i ) );
-            a->setProperty( PREF_VARIANTS_KEY, QVariantList() << Prefs::RATIO << i << Prefs::RATIO_ENABLED << true );
-            connect( a, SIGNAL(triggered(bool)), this, SLOT(onSetPrefs()));
-        }
-
-    return menu;
+TrMainWindow :: createOptionsMenu ()
+{
+  QMenu * menu;
+  QMenu * sub;
+  QAction * a;
+  QActionGroup * g;
+
+  QList<int> stockSpeeds;
+  stockSpeeds << 5 << 10 << 20 << 30 << 40 << 50 << 75 << 100 << 150 << 200 << 250 << 500 << 750;
+  QList<double> stockRatios;
+  stockRatios << 0.25 << 0.50 << 0.75 << 1 << 1.5 << 2 << 3;
+
+  menu = new QMenu;
+  sub = menu->addMenu (tr ("Limit Download Speed"));
+
+    int currentVal = myPrefs.get<int> (Prefs::DSPEED);
+    g = new QActionGroup (this);
+    a = myDlimitOffAction = sub->addAction (tr ("Unlimited"));
+    a->setCheckable (true);
+    a->setProperty (PREF_VARIANTS_KEY, QVariantList () << Prefs::DSPEED_ENABLED << false);
+    g->addAction (a);
+    connect (a, SIGNAL (triggered (bool)), this, SLOT (onSetPrefs (bool)));
+    a = myDlimitOnAction = sub->addAction (tr ("Limited at %1").arg (Formatter::speedToString (Speed::fromKBps (currentVal))));
+    a->setCheckable (true);
+    a->setProperty (PREF_VARIANTS_KEY, QVariantList () << Prefs::DSPEED << currentVal << Prefs::DSPEED_ENABLED << true);
+    g->addAction (a);
+    connect (a, SIGNAL (triggered (bool)), this, SLOT (onSetPrefs (bool)));
+    sub->addSeparator ();
+    foreach (int i, stockSpeeds)
+      {
+        a = sub->addAction (Formatter::speedToString (Speed::fromKBps (i)));
+        a->setProperty (PREF_VARIANTS_KEY, QVariantList () << Prefs::DSPEED << i << Prefs::DSPEED_ENABLED << true);
+        connect (a, SIGNAL (triggered (bool)), this, SLOT (onSetPrefs ()));
+      }
+
+  sub = menu->addMenu (tr ("Limit Upload Speed"));
+
+    currentVal = myPrefs.get<int> (Prefs::USPEED);
+    g = new QActionGroup (this);
+    a = myUlimitOffAction = sub->addAction (tr ("Unlimited"));
+    a->setCheckable (true);
+    a->setProperty (PREF_VARIANTS_KEY, QVariantList () << Prefs::USPEED_ENABLED << false);
+    g->addAction (a);
+    connect (a, SIGNAL (triggered (bool)), this, SLOT (onSetPrefs (bool)));
+    a = myUlimitOnAction = sub->addAction (tr ("Limited at %1").arg (Formatter::speedToString (Speed::fromKBps (currentVal))));
+    a->setCheckable (true);
+    a->setProperty (PREF_VARIANTS_KEY, QVariantList () << Prefs::USPEED << currentVal << Prefs::USPEED_ENABLED << true);
+    g->addAction (a);
+    connect (a, SIGNAL (triggered (bool)), this, SLOT (onSetPrefs (bool)));
+    sub->addSeparator ();
+    foreach (int i, stockSpeeds)
+      {
+        a = sub->addAction (Formatter::speedToString (Speed::fromKBps (i)));
+        a->setProperty (PREF_VARIANTS_KEY, QVariantList () << Prefs::USPEED << i << Prefs::USPEED_ENABLED << true);
+        connect (a, SIGNAL (triggered (bool)), this, SLOT (onSetPrefs ()));
+      }
+
+  menu->addSeparator ();
+  sub = menu->addMenu (tr ("Stop Seeding at Ratio"));
+
+    double d = myPrefs.get<double> (Prefs::RATIO);
+    g = new QActionGroup (this);
+    a = myRatioOffAction = sub->addAction (tr ("Seed Forever"));
+    a->setCheckable (true);
+    a->setProperty (PREF_VARIANTS_KEY, QVariantList () << Prefs::RATIO_ENABLED << false);
+    g->addAction (a);
+    connect (a, SIGNAL (triggered (bool)), this, SLOT (onSetPrefs (bool)));
+    a = myRatioOnAction = sub->addAction (tr ("Stop at Ratio (%1)").arg (Formatter::ratioToString (d)));
+    a->setCheckable (true);
+    a->setProperty (PREF_VARIANTS_KEY, QVariantList () << Prefs::RATIO << d << Prefs::RATIO_ENABLED << true);
+    g->addAction (a);
+    connect (a, SIGNAL (triggered (bool)), this, SLOT (onSetPrefs (bool)));
+    sub->addSeparator ();
+    foreach (double i, stockRatios)
+      {
+        a = sub->addAction (Formatter::ratioToString (i));
+        a->setProperty (PREF_VARIANTS_KEY, QVariantList () << Prefs::RATIO << i << Prefs::RATIO_ENABLED << true);
+        connect (a, SIGNAL (triggered (bool)), this, SLOT (onSetPrefs ()));
+      }
+
+  return menu;
 }
 
 /****
@@ -539,24 +546,24 @@ TrMainWindow :: createOptionsMenu( )
 ****/
 
 void
-TrMainWindow :: setSortPref( int i )
+TrMainWindow :: setSortPref (int i)
 {
-    myPrefs.set( Prefs::SORT_MODE, SortMode( i ) );
+  myPrefs.set (Prefs::SORT_MODE, SortMode (i));
 }
-void TrMainWindow :: onSortByActivityToggled ( bool b ) { if( b ) setSortPref( SortMode::SORT_BY_ACTIVITY ); }
-void TrMainWindow :: onSortByAgeToggled      ( bool b ) { if( b ) setSortPref( SortMode::SORT_BY_AGE );      }
-void TrMainWindow :: onSortByETAToggled      ( bool b ) { if( b ) setSortPref( SortMode::SORT_BY_ETA );      }
-void TrMainWindow :: onSortByNameToggled     ( bool b ) { if( b ) setSortPref( SortMode::SORT_BY_NAME );     }
-void TrMainWindow :: onSortByProgressToggled ( bool b ) { if( b ) setSortPref( SortMode::SORT_BY_PROGRESS ); }
-void TrMainWindow :: onSortByQueueToggled    ( bool b ) { if( b ) setSortPref( SortMode::SORT_BY_QUEUE );    }
-void TrMainWindow :: onSortByRatioToggled    ( bool b ) { if( b ) setSortPref( SortMode::SORT_BY_RATIO );    }
-void TrMainWindow :: onSortBySizeToggled     ( bool b ) { if( b ) setSortPref( SortMode::SORT_BY_SIZE );     }
-void TrMainWindow :: onSortByStateToggled    ( bool b ) { if( b ) setSortPref( SortMode::SORT_BY_STATE );    }
+void TrMainWindow :: onSortByActivityToggled (bool b) { if (b) setSortPref (SortMode::SORT_BY_ACTIVITY); }
+void TrMainWindow :: onSortByAgeToggled (bool b) { if (b) setSortPref (SortMode::SORT_BY_AGE); }
+void TrMainWindow :: onSortByETAToggled (bool b) { if (b) setSortPref (SortMode::SORT_BY_ETA); }
+void TrMainWindow :: onSortByNameToggled (bool b) { if (b) setSortPref (SortMode::SORT_BY_NAME); }
+void TrMainWindow :: onSortByProgressToggled (bool b) { if (b) setSortPref (SortMode::SORT_BY_PROGRESS); }
+void TrMainWindow :: onSortByQueueToggled (bool b) { if (b) setSortPref (SortMode::SORT_BY_QUEUE); }
+void TrMainWindow :: onSortByRatioToggled (bool b) { if (b) setSortPref (SortMode::SORT_BY_RATIO); }
+void TrMainWindow :: onSortBySizeToggled (bool b) { if (b) setSortPref (SortMode::SORT_BY_SIZE); }
+void TrMainWindow :: onSortByStateToggled (bool b) { if (b) setSortPref (SortMode::SORT_BY_STATE); }
 
 void
-TrMainWindow :: setSortAscendingPref( bool b )
+TrMainWindow :: setSortAscendingPref (bool b)
 {
-    myPrefs.set( Prefs::SORT_REVERSED, b );
+  myPrefs.set (Prefs::SORT_REVERSED, b);
 }
 
 /****
@@ -564,11 +571,11 @@ TrMainWindow :: setSortAscendingPref( bool b )
 ****/
 
 void
-TrMainWindow :: showEvent( QShowEvent * event )
+TrMainWindow :: showEvent (QShowEvent * event)
 {
-    Q_UNUSED (event);
+  Q_UNUSED (event);
 
-    ui.action_ShowMainWindow->setChecked(true);
+  ui.action_ShowMainWindow->setChecked (true);
 }
 
 /****
@@ -576,12 +583,12 @@ TrMainWindow :: showEvent( QShowEvent * event )
 ****/
 
 void
-TrMainWindow :: hideEvent( QHideEvent * event )
+TrMainWindow :: hideEvent (QHideEvent * event)
 {
-    Q_UNUSED (event);
+  Q_UNUSED (event);
 
-    if (!isVisible())
-        ui.action_ShowMainWindow->setChecked(false);
+  if (!isVisible ())
+    ui.action_ShowMainWindow->setChecked (false);
 }
 
 /****
@@ -589,159 +596,163 @@ TrMainWindow :: hideEvent( QHideEvent * event )
 ****/
 
 void
-TrMainWindow :: onPrefsDestroyed)
+TrMainWindow :: onPrefsDestroyed ()
 {
-    myPrefsDialog = 0;
+  myPrefsDialog = 0;
 }
 
 void
-TrMainWindow :: openPreferences)
+TrMainWindow :: openPreferences ()
 {
-    if( myPrefsDialog == 0 ) {
-        myPrefsDialog = new PrefsDialog( mySession, myPrefs, this );
-        connect( myPrefsDialog, SIGNAL(destroyed(QObject*)), this, SLOT(onPrefsDestroyed()));
+  if (myPrefsDialog == 0)
+    {
+      myPrefsDialog = new PrefsDialog (mySession, myPrefs, this);
+      connect (myPrefsDialog, SIGNAL (destroyed (QObject*)), this, SLOT (onPrefsDestroyed ()));
     }
 
-    myPrefsDialog->show( );
+  myPrefsDialog->show ();
 }
 
 void
-TrMainWindow :: onDetailsDestroyed)
+TrMainWindow :: onDetailsDestroyed ()
 {
-    myDetailsDialog = 0;
+  myDetailsDialog = 0;
 }
 
 void
-TrMainWindow :: openProperties)
+TrMainWindow :: openProperties ()
 {
-    if( myDetailsDialog == 0 ) {
-        myDetailsDialog = new Details( mySession, myPrefs, myModel, this );
-        connect( myDetailsDialog, SIGNAL(destroyed(QObject*)), this, SLOT(onDetailsDestroyed()));
+  if (myDetailsDialog == 0)
+    {
+      myDetailsDialog = new Details (mySession, myPrefs, myModel, this);
+      connect (myDetailsDialog, SIGNAL (destroyed (QObject*)), this, SLOT (onDetailsDestroyed ()));
     }
 
-    myDetailsDialog->setIds( getSelectedTorrents( ) );
-    myDetailsDialog->show( );
+  myDetailsDialog->setIds (getSelectedTorrents ());
+  myDetailsDialog->show ();
 }
 
 void
-TrMainWindow :: setLocation)
+TrMainWindow :: setLocation ()
 {
-    QDialog * d = new RelocateDialog( mySession, myModel, getSelectedTorrents(), this );
-    d->show( );
+  QDialog * d = new RelocateDialog (mySession, myModel, getSelectedTorrents (), this);
+  d->show ();
 }
 
 // Open Folder & select torrent's file or top folder
 #undef HAVE_OPEN_SELECT
-#if defined(Q_OS_WIN)
+#if defined (Q_OS_WIN)
 # define HAVE_OPEN_SELECT
 static
-void openSelect(const QString& path)
+void openSelect (const QString& path)
 {
-    const QString explorer = "explorer";
-        QString param;
-        if (!QFileInfo(path).isDir())
-            param = QLatin1String("/select,");
-        param += QDir::toNativeSeparators(path);
-        QProcess::startDetached(explorer, QStringList(param));
+  const QString explorer = "explorer";
+  QString param;
+  if (!QFileInfo (path).isDir ())
+    param = QLatin1String ("/select,");
+  param += QDir::toNativeSeparators (path);
+  QProcess::startDetached (explorer, QStringList (param));
 }
-#elif defined(Q_OS_MAC)
+#elif defined (Q_OS_MAC)
 # define HAVE_OPEN_SELECT
 static
-void openSelect(const QString& path)
-{
-    QStringList scriptArgs;
-        scriptArgs << QLatin1String("-e")
-                   << QString::fromLatin1("tell application \"Finder\" to reveal POSIX file \"%1\"")
-                                         .arg(path);
-        QProcess::execute(QLatin1String("/usr/bin/osascript"), scriptArgs);
-        scriptArgs.clear();
-        scriptArgs << QLatin1String("-e")
-                   << QLatin1String("tell application \"Finder\" to activate");
-        QProcess::execute("/usr/bin/osascript", scriptArgs);
+void openSelect (const QString& path)
+{
+  QStringList scriptArgs;
+  scriptArgs << QLatin1String ("-e")
+             << QString::fromLatin1 ("tell application \"Finder\" to reveal POSIX file \"%1\"").arg (path);
+  QProcess::execute (QLatin1String ("/usr/bin/osascript"), scriptArgs);
+
+  scriptArgs.clear ();
+  scriptArgs << QLatin1String ("-e")
+             << QLatin1String ("tell application \"Finder\" to activate");
+  QProcess::execute ("/usr/bin/osascript", scriptArgs);
 }
 #endif
 
 void
-TrMainWindow :: openFolder( )
-{
-    const int torrentId( *getSelectedTorrents().begin() );
-    const Torrent * tor( myModel.getTorrentFromId( torrentId ) );
-    QString path( tor->getPath( ) );
-    const FileList files = tor->files();
-    const QString firstfile = files.at(0).filename;
-    int slashIndex = firstfile.indexOf('/');
-    if (slashIndex > -1) {
-        path = path + "/" + firstfile.left(slashIndex);
+TrMainWindow :: openFolder ()
+{
+  const int torrentId (*getSelectedTorrents ().begin ());
+  const Torrent * tor (myModel.getTorrentFromId (torrentId));
+  QString path (tor->getPath ());
+  const FileList files = tor->files ();
+  const QString firstfile = files.at (0).filename;
+  int slashIndex = firstfile.indexOf ('/');
+  if (slashIndex > -1)
+    {
+      path = path + "/" + firstfile.left (slashIndex);
     }
 #ifdef HAVE_OPEN_SELECT
-    else {
-        openSelect( path + "/" + firstfile );
-        return;
+  else
+    {
+      openSelect (path + "/" + firstfile);
+      return;
     }
 #endif
-    QDesktopServices :: openUrl( QUrl::fromLocalFile( path ) );
+  QDesktopServices :: openUrl (QUrl::fromLocalFile (path));
 }
 
 void
-TrMainWindow :: copyMagnetLinkToClipboard)
+TrMainWindow :: copyMagnetLinkToClipboard ()
 {
-    const int id( *getSelectedTorrents().begin() );
-    mySession.copyMagnetLinkToClipboard( id );
+  const int id (*getSelectedTorrents ().begin ());
+  mySession.copyMagnetLinkToClipboard (id);
 }
 
 void
-TrMainWindow :: openDonate)
+TrMainWindow :: openDonate ()
 {
-    QDesktopServices :: openUrl( QUrl( "http://www.transmissionbt.com/donate.php" ) );
+  QDesktopServices :: openUrl (QUrl ("http://www.transmissionbt.com/donate.php"));
 }
 
 void
-TrMainWindow :: openHelp)
+TrMainWindow :: openHelp ()
 {
-    const char * fmt = "http://www.transmissionbt.com/help/gtk/%d.%dx";
-    int major, minor;
-    sscanf( SHORT_VERSION_STRING, "%d.%d", &major, &minor );
-    char url[128];
-    tr_snprintf( url, sizeof( url ), fmt, major, minor/10 );
-    QDesktopServices :: openUrl( QUrl( url ) );
+  const char * fmt = "http://www.transmissionbt.com/help/gtk/%d.%dx";
+  int major, minor;
+  sscanf (SHORT_VERSION_STRING, "%d.%d", &major, &minor);
+  char url[128];
+  tr_snprintf (url, sizeof (url), fmt, major, minor/10);
+  QDesktopServices :: openUrl (QUrl (url));
 }
 
 void
-TrMainWindow :: refreshTitle)
+TrMainWindow :: refreshTitle ()
 {
-    QString title( "Transmission" );
-    const QUrl url( mySession.getRemoteUrl( ) );
-    if( !url.isEmpty() )
-        title += tr( " - %1:%2" ).arg( url.host() ).arg( url.port() );
-    setWindowTitle( title );
+  QString title ("Transmission");
+  const QUrl url (mySession.getRemoteUrl ());
+  if (!url.isEmpty ())
+    title += tr (" - %1:%2").arg (url.host ()).arg (url.port ());
+  setWindowTitle (title);
 }
 
 void
-TrMainWindow :: refreshVisibleCount)
+TrMainWindow :: refreshVisibleCount ()
 {
-    const int visibleCount( myFilterModel.rowCount( ) );
-    const int totalCount( visibleCount + myFilterModel.hiddenRowCount( ) );
-    QString str;
-    if( visibleCount == totalCount )
-        str = tr( "%Ln Torrent(s)", 0, totalCount );
-    else
-        str = tr( "%L1 of %Ln Torrent(s)", 0, totalCount ).arg( visibleCount );
-    myVisibleCountLabel->setText( str );
-    myVisibleCountLabel->setVisible( totalCount > 0 );
+  const int visibleCount (myFilterModel.rowCount ());
+  const int totalCount (visibleCount + myFilterModel.hiddenRowCount ());
+  QString str;
+  if (visibleCount == totalCount)
+    str = tr ("%Ln Torrent (s)", 0, totalCount);
+  else
+    str = tr ("%L1 of %Ln Torrent (s)", 0, totalCount).arg (visibleCount);
+  myVisibleCountLabel->setText (str);
+  myVisibleCountLabel->setVisible (totalCount > 0);
 }
 
 void
-TrMainWindow :: refreshFreeSpace)
+TrMainWindow :: refreshFreeSpace ()
 {
-  const int64_t bytes (mySession.downloadDirFreeSpace());
+  const int64_t bytes (mySession.downloadDirFreeSpace ());
 
   if (bytes >= 0)
     {
       const QString text = Formatter::sizeToString (bytes);
 
-      const QString tip = tr("Download directory \"%1\" has %2 space free")
-        .arg(myPrefs.getString(Prefs::DOWNLOAD_DIR))
-        .arg(text);
+      const QString tip = tr ("Download directory \"%1\" has %2 space free")
+        .arg (myPrefs.getString (Prefs::DOWNLOAD_DIR))
+        .arg (text);
 
       myFreeSpaceTextLabel->setText (text);
       myFreeSpaceTextLabel->setToolTip (tip);
@@ -753,132 +764,134 @@ TrMainWindow :: refreshFreeSpace( )
 }
 
 void
-TrMainWindow :: refreshTrayIconSoon)
+TrMainWindow :: refreshTrayIconSoon ()
 {
-    if( !myRefreshTrayIconTimer.isActive( ) )
+  if (!myRefreshTrayIconTimer.isActive ())
     {
-        myRefreshTrayIconTimer.setSingleShot( true );
-        myRefreshTrayIconTimer.start( 100 );
+      myRefreshTrayIconTimer.setSingleShot (true);
+      myRefreshTrayIconTimer.start (100);
     }
 }
 void
-TrMainWindow :: refreshTrayIcon)
+TrMainWindow :: refreshTrayIcon ()
 {
-    const QString idle = tr( "Idle" );
-    const Speed u (myModel.getUploadSpeed());
-    const Speed d (myModel.getDownloadSpeed());
+  const QString idle = tr ("Idle");
+  const Speed u (myModel.getUploadSpeed ());
+  const Speed d (myModel.getDownloadSpeed ());
 
-    myTrayIcon.setToolTip( tr( "Transmission\nUp: %1\nDown: %2" )
-                           .arg( u.isZero() ? idle : Formatter::speedToString( u ) )
-                           .arg( d.isZero() ? idle : Formatter::speedToString( d ) ) );
+  myTrayIcon.setToolTip (tr ("Transmission\nUp: %1\nDown: %2")
+                         .arg (u.isZero () ? idle : Formatter::speedToString (u))
+                         .arg (d.isZero () ? idle : Formatter::speedToString (d)));
 }
 
 void
-TrMainWindow :: refreshStatusBar)
+TrMainWindow :: refreshStatusBar ()
 {
-    const Speed up( myModel.getUploadSpeed( ) );
-    const Speed down( myModel.getDownloadSpeed( ) );
-    myUploadSpeedLabel->setText( Formatter:: speedToString( up ) );
-    myDownloadSpeedLabel->setText( Formatter:: speedToString( down ) );
+  const Speed up (myModel.getUploadSpeed ());
+  const Speed down (myModel.getDownloadSpeed ());
+  myUploadSpeedLabel->setText (Formatter:: speedToString (up));
+  myDownloadSpeedLabel->setText (Formatter:: speedToString (down));
 
-    myNetworkLabel->setVisible( !mySession.isServer( ) );
+  myNetworkLabel->setVisible (!mySession.isServer ());
 
-    const QString mode( myPrefs.getString( Prefs::STATUSBAR_STATS ) );
-    QString str;
+  const QString mode (myPrefs.getString (Prefs::STATUSBAR_STATS));
+  QString str;
 
-    if( mode == "session-ratio" )
+  if (mode == "session-ratio")
     {
-        str = tr( "Ratio: %1" ).arg( Formatter:: ratioToString( mySession.getStats().ratio ) );
+      str = tr ("Ratio: %1").arg (Formatter:: ratioToString (mySession.getStats ().ratio));
     }
-    else if( mode == "session-transfer" )
+  else if (mode == "session-transfer")
     {
-        const tr_session_stats& stats( mySession.getStats( ) );
-        str = tr( "Down: %1, Up: %2" ).arg( Formatter:: sizeToString( stats.downloadedBytes ) )
-                                      .arg( Formatter:: sizeToString( stats.uploadedBytes ) );
+      const tr_session_stats& stats (mySession.getStats ());
+      str = tr ("Down: %1, Up: %2").arg (Formatter:: sizeToString (stats.downloadedBytes))
+                                      .arg (Formatter:: sizeToString (stats.uploadedBytes));
     }
-    else if( mode == "total-transfer" )
+  else if (mode == "total-transfer")
     {
-        const tr_session_stats& stats( mySession.getCumulativeStats( ) );
-        str = tr( "Down: %1, Up: %2" ).arg( Formatter:: sizeToString( stats.downloadedBytes ) )
-                                      .arg( Formatter:: sizeToString( stats.uploadedBytes ) );
+      const tr_session_stats& stats (mySession.getCumulativeStats ());
+      str = tr ("Down: %1, Up: %2").arg (Formatter:: sizeToString (stats.downloadedBytes))
+                                   .arg (Formatter:: sizeToString (stats.uploadedBytes));
     }
-    else // default is "total-ratio"
+  else // default is "total-ratio"
     {
-        str = tr( "Ratio: %1" ).arg( Formatter:: ratioToString( mySession.getCumulativeStats().ratio ) );
+      str = tr ("Ratio: %1").arg (Formatter:: ratioToString (mySession.getCumulativeStats ().ratio));
     }
 
-    myStatsLabel->setText( str );
+  myStatsLabel->setText (str);
 }
 
 
 
 void
-TrMainWindow :: refreshActionSensitivitySoon)
+TrMainWindow :: refreshActionSensitivitySoon ()
 {
-    if( !myRefreshActionSensitivityTimer.isActive( ) )
+  if (!myRefreshActionSensitivityTimer.isActive ())
     {
-        myRefreshActionSensitivityTimer.setSingleShot( true );
-        myRefreshActionSensitivityTimer.start( 100 );
+      myRefreshActionSensitivityTimer.setSingleShot (true);
+      myRefreshActionSensitivityTimer.start (100);
     }
 }
 void
-TrMainWindow :: refreshActionSensitivity( )
-{
-    int selected( 0 );
-    int paused( 0 );
-    int queued( 0 );
-    int selectedAndPaused( 0 );
-    int selectedAndQueued( 0 );
-    int canAnnounce( 0 );
-    const QAbstractItemModel * model( ui.listView->model( ) );
-    const QItemSelectionModel * selectionModel( ui.listView->selectionModel( ) );
-    const int rowCount( model->rowCount( ) );
-
-    // count how many torrents are selected, paused, etc
-    for( int row=0; row<rowCount; ++row ) {
-        const QModelIndex modelIndex( model->index( row, 0 ) );
-        assert( model == modelIndex.model( ) );
-        const Torrent * tor( model->data( modelIndex, TorrentModel::TorrentRole ).value<const Torrent*>( ) );
-        if( tor ) {
-            const bool isSelected( selectionModel->isSelected( modelIndex ) );
-            const bool isPaused( tor->isPaused( ) );
-            const bool isQueued( tor->isQueued( ) );
-            if( isSelected ) ++selected;
-            if( isQueued ) ++queued;
-            if( isPaused ) ++ paused;
-            if( isSelected && isPaused ) ++selectedAndPaused;
-            if( isSelected && isQueued ) ++selectedAndQueued;
-            if( tor->canManualAnnounce( ) ) ++canAnnounce;
+TrMainWindow :: refreshActionSensitivity ()
+{
+  int selected (0);
+  int paused (0);
+  int queued (0);
+  int selectedAndPaused (0);
+  int selectedAndQueued (0);
+  int canAnnounce (0);
+  const QAbstractItemModel * model (ui.listView->model ());
+  const QItemSelectionModel * selectionModel (ui.listView->selectionModel ());
+  const int rowCount (model->rowCount ());
+
+  // count how many torrents are selected, paused, etc
+  for (int row=0; row<rowCount; ++row)
+    {
+      const QModelIndex modelIndex (model->index (row, 0));
+      assert (model == modelIndex.model ());
+      const Torrent * tor (model->data (modelIndex, TorrentModel::TorrentRole).value<const Torrent*> ());
+      if (tor)
+        {
+          const bool isSelected (selectionModel->isSelected (modelIndex));
+          const bool isPaused (tor->isPaused ());
+          const bool isQueued (tor->isQueued ());
+          if (isSelected) ++selected;
+          if (isQueued) ++queued;
+          if (isPaused) ++ paused;
+          if (isSelected && isPaused) ++selectedAndPaused;
+          if (isSelected && isQueued) ++selectedAndQueued;
+          if (tor->canManualAnnounce ()) ++canAnnounce;
         }
     }
 
-    const bool haveSelection( selected > 0 );
-    ui.action_Verify->setEnabled( haveSelection );
-    ui.action_Remove->setEnabled( haveSelection );
-    ui.action_Delete->setEnabled( haveSelection );
-    ui.action_Properties->setEnabled( haveSelection );
-    ui.action_DeselectAll->setEnabled( haveSelection );
-    ui.action_SetLocation->setEnabled( haveSelection );
+  const bool haveSelection (selected > 0);
+  ui.action_Verify->setEnabled (haveSelection);
+  ui.action_Remove->setEnabled (haveSelection);
+  ui.action_Delete->setEnabled (haveSelection);
+  ui.action_Properties->setEnabled (haveSelection);
+  ui.action_DeselectAll->setEnabled (haveSelection);
+  ui.action_SetLocation->setEnabled (haveSelection);
 
-    const bool oneSelection( selected == 1 );
-    ui.action_OpenFolder->setEnabled( oneSelection && mySession.isLocal( ) );
-    ui.action_CopyMagnetToClipboard->setEnabled( oneSelection );
+  const bool oneSelection (selected == 1);
+  ui.action_OpenFolder->setEnabled (oneSelection && mySession.isLocal ());
+  ui.action_CopyMagnetToClipboard->setEnabled (oneSelection);
 
-    ui.action_SelectAll->setEnabled( selected < rowCount );
-    ui.action_StartAll->setEnabled( paused > 0 );
-    ui.action_PauseAll->setEnabled( paused < rowCount );
-    ui.action_Start->setEnabled( selectedAndPaused > 0 );
-    ui.action_StartNow->setEnabled( selectedAndPaused + selectedAndQueued > 0 );
-    ui.action_Pause->setEnabled( selectedAndPaused < selected );
-    ui.action_Announce->setEnabled( selected > 0 && ( canAnnounce == selected ) );
+  ui.action_SelectAll->setEnabled (selected < rowCount);
+  ui.action_StartAll->setEnabled (paused > 0);
+  ui.action_PauseAll->setEnabled (paused < rowCount);
+  ui.action_Start->setEnabled (selectedAndPaused > 0);
+  ui.action_StartNow->setEnabled (selectedAndPaused + selectedAndQueued > 0);
+  ui.action_Pause->setEnabled (selectedAndPaused < selected);
+  ui.action_Announce->setEnabled (selected > 0 && (canAnnounce == selected));
 
-    ui.action_QueueMoveTop->setEnabled( haveSelection );
-    ui.action_QueueMoveUp->setEnabled( haveSelection );
-    ui.action_QueueMoveDown->setEnabled( haveSelection );
-    ui.action_QueueMoveBottom->setEnabled( haveSelection );
+  ui.action_QueueMoveTop->setEnabled (haveSelection);
+  ui.action_QueueMoveUp->setEnabled (haveSelection);
+  ui.action_QueueMoveDown->setEnabled (haveSelection);
+  ui.action_QueueMoveBottom->setEnabled (haveSelection);
 
-    if( myDetailsDialog )
-        myDetailsDialog->setIds( getSelectedTorrents( ) );
+  if (myDetailsDialog)
+    myDetailsDialog->setIds (getSelectedTorrents ());
 }
 
 /**
@@ -886,132 +899,130 @@ TrMainWindow :: refreshActionSensitivity( )
 **/
 
 void
-TrMainWindow :: clearSelection)
+TrMainWindow :: clearSelection ()
 {
-    ui.action_DeselectAll->trigger( );
+  ui.action_DeselectAll->trigger ();
 }
 
 QSet<int>
-TrMainWindow :: getSelectedTorrents) const
+TrMainWindow :: getSelectedTorrents () const
 {
-    QSet<int> ids;
+  QSet<int> ids;
 
-    foreach( QModelIndex index, ui.listView->selectionModel( )->selectedRows( ) )
+  foreach (QModelIndex index, ui.listView->selectionModel ()->selectedRows ())
     {
-        const Torrent * tor( index.data( TorrentModel::TorrentRole ).value<const Torrent*>( ) );
-        ids.insert( tor->id( ) );
+      const Torrent * tor (index.data (TorrentModel::TorrentRole).value<const Torrent*> ());
+      ids.insert (tor->id ());
     }
 
-    return ids;
+  return ids;
 }
 
 void
-TrMainWindow :: startSelected)
+TrMainWindow :: startSelected ()
 {
-    mySession.startTorrents( getSelectedTorrents( ) );
+  mySession.startTorrents (getSelectedTorrents ());
 }
 void
-TrMainWindow :: startSelectedNow)
+TrMainWindow :: startSelectedNow ()
 {
-    mySession.startTorrentsNow( getSelectedTorrents( ) );
+  mySession.startTorrentsNow (getSelectedTorrents ());
 }
 void
-TrMainWindow :: pauseSelected)
+TrMainWindow :: pauseSelected ()
 {
-    mySession.pauseTorrents( getSelectedTorrents( ) );
+  mySession.pauseTorrents (getSelectedTorrents ());
 }
 void
-TrMainWindow :: queueMoveTop)
+TrMainWindow :: queueMoveTop ()
 {
-    mySession.queueMoveTop( getSelectedTorrents( ) );
+  mySession.queueMoveTop (getSelectedTorrents ());
 }
 void
-TrMainWindow :: queueMoveUp)
+TrMainWindow :: queueMoveUp ()
 {
-    mySession.queueMoveUp( getSelectedTorrents( ) );
+  mySession.queueMoveUp (getSelectedTorrents ());
 }
 void
-TrMainWindow :: queueMoveDown)
+TrMainWindow :: queueMoveDown ()
 {
-    mySession.queueMoveDown( getSelectedTorrents( ) );
+  mySession.queueMoveDown (getSelectedTorrents ());
 }
 void
-TrMainWindow :: queueMoveBottom)
+TrMainWindow :: queueMoveBottom ()
 {
-    mySession.queueMoveBottom( getSelectedTorrents( ) );
+  mySession.queueMoveBottom (getSelectedTorrents ());
 }
 void
-TrMainWindow :: startAll)
+TrMainWindow :: startAll ()
 {
-    mySession.startTorrents( );
+  mySession.startTorrents ();
 }
 void
-TrMainWindow :: pauseAll)
+TrMainWindow :: pauseAll ()
 {
-    mySession.pauseTorrents( );
+  mySession.pauseTorrents ();
 }
 void
-TrMainWindow :: removeSelected)
+TrMainWindow :: removeSelected ()
 {
-    removeTorrents( false );
+  removeTorrents (false);
 }
 void
-TrMainWindow :: deleteSelected)
+TrMainWindow :: deleteSelected ()
 {
-    removeTorrents( true );
+  removeTorrents (true);
 }
 void
-TrMainWindow :: verifySelected)
+TrMainWindow :: verifySelected ()
 {
-    mySession.verifyTorrents( getSelectedTorrents( ) );
+  mySession.verifyTorrents (getSelectedTorrents ());
 }
 void
-TrMainWindow :: reannounceSelected)
+TrMainWindow :: reannounceSelected ()
 {
-    mySession.reannounceTorrents( getSelectedTorrents( ) );
+  mySession.reannounceTorrents (getSelectedTorrents ());
 }
 
 /**
 ***
 **/
 
-void TrMainWindow :: showTotalRatio      ( ) { myPrefs.set( Prefs::STATUSBAR_STATS, "total-ratio"); }
-void TrMainWindow :: showTotalTransfer   ( ) { myPrefs.set( Prefs::STATUSBAR_STATS, "total-transfer"); }
-void TrMainWindow :: showSessionRatio    ( ) { myPrefs.set( Prefs::STATUSBAR_STATS, "session-ratio"); }
-void TrMainWindow :: showSessionTransfer ( ) { myPrefs.set( Prefs::STATUSBAR_STATS, "session-transfer"); }
+void TrMainWindow :: showTotalRatio () { myPrefs.set (Prefs::STATUSBAR_STATS, "total-ratio"); }
+void TrMainWindow :: showTotalTransfer () { myPrefs.set (Prefs::STATUSBAR_STATS, "total-transfer"); }
+void TrMainWindow :: showSessionRatio () { myPrefs.set (Prefs::STATUSBAR_STATS, "session-ratio"); }
+void TrMainWindow :: showSessionTransfer () { myPrefs.set (Prefs::STATUSBAR_STATS, "session-transfer"); }
 
 /**
 ***
 **/
 
 void
-TrMainWindow :: setCompactView( bool visible )
+TrMainWindow :: setCompactView (bool visible)
 {
-    myPrefs.set( Prefs :: COMPACT_VIEW, visible );
+  myPrefs.set (Prefs :: COMPACT_VIEW, visible);
 }
 void
-TrMainWindow :: toggleSpeedMode)
+TrMainWindow :: toggleSpeedMode ()
 {
-    bool mode;
-    
-    myPrefs.toggleBool( Prefs :: ALT_SPEED_LIMIT_ENABLED );
-    mode = myPrefs.get<bool>( Prefs::ALT_SPEED_LIMIT_ENABLED );
-    myAltSpeedAction->setIcon( mode ? mySpeedModeOnIcon : mySpeedModeOffIcon );
+  myPrefs.toggleBool (Prefs :: ALT_SPEED_LIMIT_ENABLED);
+  const bool mode = myPrefs.get<bool> (Prefs::ALT_SPEED_LIMIT_ENABLED);
+  myAltSpeedAction->setIcon (mode ? mySpeedModeOnIcon : mySpeedModeOffIcon);
 }
 void
-TrMainWindow :: setToolbarVisible( bool visible )
+TrMainWindow :: setToolbarVisible (bool visible)
 {
-    myPrefs.set( Prefs::TOOLBAR, visible );
+  myPrefs.set (Prefs::TOOLBAR, visible);
 }
 void
-TrMainWindow :: setFilterbarVisible( bool visible )
+TrMainWindow :: setFilterbarVisible (bool visible)
 {
-    myPrefs.set( Prefs::FILTERBAR, visible );
+  myPrefs.set (Prefs::FILTERBAR, visible);
 }
 void
-TrMainWindow :: setStatusbarVisible( bool visible )
+TrMainWindow :: setStatusbarVisible (bool visible)
 {
-    myPrefs.set( Prefs::STATUSBAR, visible );
+  myPrefs.set (Prefs::STATUSBAR, visible);
 }
 
 /**
@@ -1019,161 +1030,162 @@ TrMainWindow :: setStatusbarVisible( bool visible )
 **/
 
 void
-TrMainWindow :: toggleWindows( bool doShow )
+TrMainWindow :: toggleWindows (bool doShow)
 {
-    if( !doShow )
+  if (!doShow)
     {
-        hide( );
+      hide ();
     }
-    else
+  else
     {
-        if ( !isVisible( ) ) show( );
-        if ( isMinimized( ) ) showNormal( );
-        //activateWindow( );
-        raise( );
-        QApplication::setActiveWindow( this );
+      if (!isVisible ()) show ();
+      if (isMinimized ()) showNormal ();
+      //activateWindow ();
+      raise ();
+      QApplication::setActiveWindow (this);
     }
 }
 
 void
-TrMainWindow :: trayActivated( QSystemTrayIcon::ActivationReason reason )
+TrMainWindow :: trayActivated (QSystemTrayIcon::ActivationReason reason)
 {
-    if( reason == QSystemTrayIcon::Trigger )
+  if (reason == QSystemTrayIcon::Trigger)
     {
-        if( isMinimized ( ) )
-            toggleWindows( true );
-        else
-            toggleWindows( !isVisible() );
+      if (isMinimized ())
+        toggleWindows (true);
+      else
+        toggleWindows (!isVisible ());
     }
 }
 
 
 void
-TrMainWindow :: refreshPref( int key )
+TrMainWindow :: refreshPref (int key)
 {
-    bool b;
-    int i;
-    QString str;
+  bool b;
+  int i;
+  QString str;
 
-    switch( key )
+  switch (key)
     {
-        case Prefs::STATUSBAR_STATS:
-            str = myPrefs.getString( key );
-            ui.action_TotalRatio->setChecked     ( str == "total-ratio" );
-            ui.action_TotalTransfer->setChecked  ( str == "total-transfer" );
-            ui.action_SessionRatio->setChecked   ( str == "session-ratio" );
-            ui.action_SessionTransfer->setChecked( str == "session-transfer" );
-            refreshStatusBar( );
-            break;
-
-        case Prefs::SORT_REVERSED:
-            ui.action_ReverseSortOrder->setChecked( myPrefs.getBool( key ) );
-            break;
-
-        case Prefs::SORT_MODE:
-            i = myPrefs.get<SortMode>(key).mode( );
-            ui.action_SortByActivity->setChecked ( i == SortMode::SORT_BY_ACTIVITY );
-            ui.action_SortByAge->setChecked      ( i == SortMode::SORT_BY_AGE );
-            ui.action_SortByETA->setChecked      ( i == SortMode::SORT_BY_ETA );
-            ui.action_SortByName->setChecked     ( i == SortMode::SORT_BY_NAME );
-            ui.action_SortByProgress->setChecked ( i == SortMode::SORT_BY_PROGRESS );
-            ui.action_SortByQueue->setChecked    ( i == SortMode::SORT_BY_QUEUE );
-            ui.action_SortByRatio->setChecked    ( i == SortMode::SORT_BY_RATIO );
-            ui.action_SortBySize->setChecked     ( i == SortMode::SORT_BY_SIZE );
-            ui.action_SortByState->setChecked    ( i == SortMode::SORT_BY_STATE );
-            break;
-
-        case Prefs::DSPEED_ENABLED:
-            (myPrefs.get<bool>(key) ? myDlimitOnAction : myDlimitOffAction)->setChecked( true );
-            break;
-
-        case Prefs::DSPEED:
-            myDlimitOnAction->setText( tr( "Limited at %1" ).arg( Formatter::speedToString( Speed::fromKBps( myPrefs.get<int>(key) ) ) ) );
-            break;
-
-        case Prefs::USPEED_ENABLED:
-            (myPrefs.get<bool>(key) ? myUlimitOnAction : myUlimitOffAction)->setChecked( true );
-            break;
-
-        case Prefs::USPEED:
-            myUlimitOnAction->setText( tr( "Limited at %1" ).arg( Formatter::speedToString( Speed::fromKBps( myPrefs.get<int>(key) ) ) ) );
-            break;
-
-        case Prefs::RATIO_ENABLED:
-            (myPrefs.get<bool>(key) ? myRatioOnAction : myRatioOffAction)->setChecked( true );
-            break;
-
-        case Prefs::RATIO:
-            myRatioOnAction->setText( tr( "Stop at Ratio (%1)" ).arg( Formatter::ratioToString( myPrefs.get<double>(key) ) ) );
-            break;
-
-        case Prefs::FILTERBAR:
-            b = myPrefs.getBool( key );
-            myFilterBar->setVisible( b );
-            ui.action_Filterbar->setChecked( b );
-            break;
-
-        case Prefs::STATUSBAR:
-            b = myPrefs.getBool( key );
-            myStatusBar->setVisible( b );
-            ui.action_Statusbar->setChecked( b );
-            break;
-
-        case Prefs::TOOLBAR:
-            b = myPrefs.getBool( key );
-            ui.toolBar->setVisible( b );
-            ui.action_Toolbar->setChecked( b );
-            break;
-
-        case Prefs::SHOW_TRAY_ICON:
-            b = myPrefs.getBool( key );
-            ui.action_TrayIcon->setChecked( b );
-            myTrayIcon.setVisible( b );
-            dynamic_cast<MyApp*>(QCoreApplication::instance())->setQuitOnLastWindowClosed(!b);
-            refreshTrayIconSoon( );
-            break;
-
-        case Prefs::COMPACT_VIEW: {
-            QItemSelectionModel * selectionModel( ui.listView->selectionModel( ) );
-            const QItemSelection selection( selectionModel->selection( ) );
-            const QModelIndex currentIndex( selectionModel->currentIndex( ) );
-            b = myPrefs.getBool( key );
-            ui.action_CompactView->setChecked( b );
-            ui.listView->setItemDelegate( b ? myTorrentDelegateMin : myTorrentDelegate );
-            selectionModel->clear);
-            ui.listView->reset); // force the rows to resize
-            selectionModel->select( selection, QItemSelectionModel::Select );
-            selectionModel->setCurrentIndex( currentIndex, QItemSelectionModel::NoUpdate );
+      case Prefs::STATUSBAR_STATS:
+        str = myPrefs.getString (key);
+        ui.action_TotalRatio->setChecked (str == "total-ratio");
+        ui.action_TotalTransfer->setChecked (str == "total-transfer");
+        ui.action_SessionRatio->setChecked (str == "session-ratio");
+        ui.action_SessionTransfer->setChecked (str == "session-transfer");
+        refreshStatusBar ();
+        break;
+
+      case Prefs::SORT_REVERSED:
+        ui.action_ReverseSortOrder->setChecked (myPrefs.getBool (key));
+        break;
+
+      case Prefs::SORT_MODE:
+        i = myPrefs.get<SortMode> (key).mode ();
+        ui.action_SortByActivity->setChecked (i == SortMode::SORT_BY_ACTIVITY);
+        ui.action_SortByAge->setChecked (i == SortMode::SORT_BY_AGE);
+        ui.action_SortByETA->setChecked (i == SortMode::SORT_BY_ETA);
+        ui.action_SortByName->setChecked (i == SortMode::SORT_BY_NAME);
+        ui.action_SortByProgress->setChecked (i == SortMode::SORT_BY_PROGRESS);
+        ui.action_SortByQueue->setChecked (i == SortMode::SORT_BY_QUEUE);
+        ui.action_SortByRatio->setChecked (i == SortMode::SORT_BY_RATIO);
+        ui.action_SortBySize->setChecked (i == SortMode::SORT_BY_SIZE);
+        ui.action_SortByState->setChecked (i == SortMode::SORT_BY_STATE);
+        break;
+
+      case Prefs::DSPEED_ENABLED:
+        (myPrefs.get<bool> (key) ? myDlimitOnAction : myDlimitOffAction)->setChecked (true);
+        break;
+
+      case Prefs::DSPEED:
+        myDlimitOnAction->setText (tr ("Limited at %1").arg (Formatter::speedToString (Speed::fromKBps (myPrefs.get<int> (key)))));
+        break;
+
+      case Prefs::USPEED_ENABLED:
+        (myPrefs.get<bool> (key) ? myUlimitOnAction : myUlimitOffAction)->setChecked (true);
+        break;
+
+      case Prefs::USPEED:
+        myUlimitOnAction->setText (tr ("Limited at %1").arg (Formatter::speedToString (Speed::fromKBps (myPrefs.get<int> (key)))));
+        break;
+
+      case Prefs::RATIO_ENABLED:
+        (myPrefs.get<bool> (key) ? myRatioOnAction : myRatioOffAction)->setChecked (true);
+        break;
+
+      case Prefs::RATIO:
+        myRatioOnAction->setText (tr ("Stop at Ratio (%1)").arg (Formatter::ratioToString (myPrefs.get<double> (key))));
+        break;
+
+      case Prefs::FILTERBAR:
+        b = myPrefs.getBool (key);
+        myFilterBar->setVisible (b);
+        ui.action_Filterbar->setChecked (b);
+        break;
+
+      case Prefs::STATUSBAR:
+        b = myPrefs.getBool (key);
+        myStatusBar->setVisible (b);
+        ui.action_Statusbar->setChecked (b);
+        break;
+
+      case Prefs::TOOLBAR:
+        b = myPrefs.getBool (key);
+        ui.toolBar->setVisible (b);
+        ui.action_Toolbar->setChecked (b);
+        break;
+
+      case Prefs::SHOW_TRAY_ICON:
+        b = myPrefs.getBool (key);
+        ui.action_TrayIcon->setChecked (b);
+        myTrayIcon.setVisible (b);
+        dynamic_cast<MyApp*> (QCoreApplication::instance ())->setQuitOnLastWindowClosed (!b);
+        refreshTrayIconSoon ();
+        break;
+
+      case Prefs::COMPACT_VIEW: {
+            QItemSelectionModel * selectionModel (ui.listView->selectionModel ());
+            const QItemSelection selection (selectionModel->selection ());
+            const QModelIndex currentIndex (selectionModel->currentIndex ());
+            b = myPrefs.getBool (key);
+            ui.action_CompactView->setChecked (b);
+            ui.listView->setItemDelegate (b ? myTorrentDelegateMin : myTorrentDelegate);
+            selectionModel->clear ();
+            ui.listView->reset (); // force the rows to resize
+            selectionModel->select (selection, QItemSelectionModel::Select);
+            selectionModel->setCurrentIndex (currentIndex, QItemSelectionModel::NoUpdate);
             break;
         }
 
-        case Prefs::MAIN_WINDOW_X:
-        case Prefs::MAIN_WINDOW_Y:
-        case Prefs::MAIN_WINDOW_WIDTH:
-        case Prefs::MAIN_WINDOW_HEIGHT:
-            setGeometry( myPrefs.getInt( Prefs::MAIN_WINDOW_X ),
-                         myPrefs.getInt( Prefs::MAIN_WINDOW_Y ),
-                         myPrefs.getInt( Prefs::MAIN_WINDOW_WIDTH ),
-                         myPrefs.getInt( Prefs::MAIN_WINDOW_HEIGHT ) );
-            break;
-
-        case Prefs :: ALT_SPEED_LIMIT_ENABLED:
-        case Prefs :: ALT_SPEED_LIMIT_UP:
-        case Prefs :: ALT_SPEED_LIMIT_DOWN: {
-            b = myPrefs.getBool( Prefs :: ALT_SPEED_LIMIT_ENABLED );
-            myAltSpeedButton->setChecked( b );
-            myAltSpeedButton->setIcon( b ? mySpeedModeOnIcon : mySpeedModeOffIcon );
-            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( Formatter::speedToString( d ) )
-                                             .arg( Formatter::speedToString( u ) ) );
-            break;
+      case Prefs::MAIN_WINDOW_X:
+      case Prefs::MAIN_WINDOW_Y:
+      case Prefs::MAIN_WINDOW_WIDTH:
+      case Prefs::MAIN_WINDOW_HEIGHT:
+        setGeometry (myPrefs.getInt (Prefs::MAIN_WINDOW_X),
+                     myPrefs.getInt (Prefs::MAIN_WINDOW_Y),
+                     myPrefs.getInt (Prefs::MAIN_WINDOW_WIDTH),
+                     myPrefs.getInt (Prefs::MAIN_WINDOW_HEIGHT));
+        break;
+
+      case Prefs :: ALT_SPEED_LIMIT_ENABLED:
+      case Prefs :: ALT_SPEED_LIMIT_UP:
+      case Prefs :: ALT_SPEED_LIMIT_DOWN:
+        {
+          b = myPrefs.getBool (Prefs :: ALT_SPEED_LIMIT_ENABLED);
+          myAltSpeedButton->setChecked (b);
+          myAltSpeedButton->setIcon (b ? mySpeedModeOnIcon : mySpeedModeOffIcon);
+          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 (Formatter::speedToString (d))
+                                           .arg (Formatter::speedToString (u)));
+          break;
         }
 
-        default:
-            break;
+      default:
+        break;
     }
 }
 
@@ -1182,176 +1194,182 @@ TrMainWindow :: refreshPref( int key )
 ***/
 
 void
-TrMainWindow :: newTorrent)
+TrMainWindow :: newTorrent ()
 {
-    MakeDialog * dialog = new MakeDialog( mySession, this );
-    dialog->show( );
+  MakeDialog * dialog = new MakeDialog (mySession, this);
+  dialog->show ();
 }
 
 void
-TrMainWindow :: openTorrent)
+TrMainWindow :: openTorrent ()
 {
-    QFileDialog * myFileDialog;
-    myFileDialog = new QFileDialog( this,
-                                    tr( "Open Torrent" ),
-                                    myPrefs.getString( Prefs::OPEN_DIALOG_FOLDER ),
-                                    tr( "Torrent Files (*.torrent);;All Files (*.*)" ) );
-    myFileDialog->setFileMode( QFileDialog::ExistingFiles );
-    myFileDialog->setAttribute( Qt::WA_DeleteOnClose );
+  QFileDialog * myFileDialog;
+  myFileDialog = new QFileDialog (this,
+                                  tr ("Open Torrent"),
+                                  myPrefs.getString (Prefs::OPEN_DIALOG_FOLDER),
+                                  tr ("Torrent Files (*.torrent);;All Files (*.*)"));
+  myFileDialog->setFileMode (QFileDialog::ExistingFiles);
+  myFileDialog->setAttribute (Qt::WA_DeleteOnClose);
 
-    QCheckBox * button = new QCheckBox( tr( "Show &options dialog" ) );
-    button->setChecked( myPrefs.getBool( Prefs::OPTIONS_PROMPT ) );
-    QGridLayout * layout = dynamic_cast<QGridLayout*>(myFileDialog->layout());
-    layout->addWidget( button, layout->rowCount( ), 0, 1, -1, Qt::AlignLeft );
-    myFileDialogOptionsCheck = button;
+  QCheckBox * button = new QCheckBox (tr ("Show &options dialog"));
+  button->setChecked (myPrefs.getBool (Prefs::OPTIONS_PROMPT));
+  QGridLayout * layout = dynamic_cast<QGridLayout*> (myFileDialog->layout ());
+  layout->addWidget (button, layout->rowCount (), 0, 1, -1, Qt::AlignLeft);
+  myFileDialogOptionsCheck = button;
 
-    connect( myFileDialog, SIGNAL(filesSelected(const QStringList&)),
-             this, SLOT(addTorrents(const QStringList&)));
+  connect (myFileDialog, SIGNAL (filesSelected (const QStringList&)),
+           this, SLOT (addTorrents (const QStringList&)));
 
-    myFileDialog->show( );
+  myFileDialog->show ();
 }
 
 void
-TrMainWindow :: openURL)
+TrMainWindow :: openURL ()
 {
-    QString str = QApplication::clipboard()->text( QClipboard::Selection );
+  QString str = QApplication::clipboard ()->text (QClipboard::Selection);
 
-    if( !AddData::isSupported( str ) )
-        str = QApplication::clipboard()->text( QClipboard::Clipboard );
+  if (!AddData::isSupported (str))
+    str = QApplication::clipboard ()->text (QClipboard::Clipboard);
 
-    if( !AddData::isSupported( str ) )
-        str.clear();
+  if (!AddData::isSupported (str))
+    str.clear ();
 
-    openURL( str );
+  openURL (str);
 }
 
 void
-TrMainWindow :: openURL( QString url )
+TrMainWindow :: openURL (QString url)
 {
-    bool ok;
-    const QString key = QInputDialog::getText( this,
-                                               tr( "Open Link" ),
-                                               tr( "Open URL or Magnet Link" ),
-                                               QLineEdit::Normal,
-                                               url,
-                                               &ok,
-                                               Qt::WindowStaysOnTopHint );
-    if( ok && !key.isEmpty( ) )
-        mySession.addTorrent( key );
+  bool ok;
+  const QString key = QInputDialog::getText (this,
+                                             tr ("Open Link"),
+                                             tr ("Open URL or Magnet Link"),
+                                             QLineEdit::Normal,
+                                             url,
+                                             &ok,
+                                             Qt::WindowStaysOnTopHint);
+  if (ok && !key.isEmpty ())
+    mySession.addTorrent (key);
 }
 
 void
-TrMainWindow :: addTorrents( const QStringList& filenames )
+TrMainWindow :: addTorrents (const QStringList& filenames)
 {
-    foreach( const QString& filename, filenames )
-        addTorrent( filename );
+  foreach (const QString& filename, filenames)
+    addTorrent (filename);
 }
 
 void
-TrMainWindow :: addTorrent( const QString& filename )
-{
-    if( !myFileDialogOptionsCheck->isChecked( ) ) {
-        mySession.addTorrent( filename );
-        QApplication :: alert ( this );
-    } else {
-        Options * o = new Options( mySession, myPrefs, filename, this );
-        o->show( );
-        QApplication :: alert( o );
+TrMainWindow :: addTorrent (const QString& filename)
+{
+  if (!myFileDialogOptionsCheck->isChecked ())
+    {
+      mySession.addTorrent (filename);
+      QApplication :: alert (this);
+    }
+  else
+    {
+      Options * o = new Options (mySession, myPrefs, filename, this);
+      o->show ();
+      QApplication :: alert (o);
     }
 }
 
 void
-TrMainWindow :: removeTorrents( const bool deleteFiles )
+TrMainWindow :: removeTorrents (const bool deleteFiles)
 {
-    QSet<int> ids;
-    QMessageBox msgBox( this );
-    QString primary_text, secondary_text;
-    int incomplete = 0;
-    int connected  = 0;
-    int count;
+  QSet<int> ids;
+  QMessageBox msgBox (this);
+  QString primary_text, secondary_text;
+  int incomplete = 0;
+  int connected  = 0;
+  int count;
 
-    foreach( QModelIndex index, ui.listView->selectionModel( )->selectedRows( ) )
+  foreach (QModelIndex index, ui.listView->selectionModel ()->selectedRows ())
     {
-        const Torrent * tor( index.data( TorrentModel::TorrentRole ).value<const Torrent*>( ) );
-        ids.insert( tor->id( ) );
-        if( tor->connectedPeers( ) )
-            ++connected;
-        if( !tor->isDone( ) )
-            ++incomplete;
+      const Torrent * tor (index.data (TorrentModel::TorrentRole).value<const Torrent*> ());
+      ids.insert (tor->id ());
+
+      if (tor->connectedPeers ())
+        ++connected;
+
+      if (!tor->isDone ())
+        ++incomplete;
     }
 
-    if( ids.isEmpty() )
-        return;
-    count = ids.size();
+  if (ids.isEmpty ())
+    return;
+
+  count = ids.size ();
 
-    if( !deleteFiles )
+  if (!deleteFiles)
     {
-        primary_text = ( count == 1 )
-            ? tr( "Remove torrent?" )
-            : tr( "Remove %1 torrents?" ).arg( count );
+      primary_text = (count == 1)
+        ? tr ("Remove torrent?")
+        : tr ("Remove %1 torrents?").arg (count);
     }
-    else
+  else
     {
-        primary_text = ( count == 1 )
-            ? tr( "Delete this torrent's downloaded files?" )
-            : tr( "Delete these %1 torrents' downloaded files?" ).arg( count );
+      primary_text = (count == 1)
+        ? tr ("Delete this torrent's downloaded files?")
+        : tr ("Delete these %1 torrents' downloaded files?").arg (count);
     }
 
-    if( !incomplete && !connected )
+  if (!incomplete && !connected)
     {
-        secondary_text = ( count == 1 )
-            ? tr( "Once removed, continuing the transfer will require the torrent file or magnet link." )
-            : tr( "Once removed, continuing the transfers will require the torrent files or magnet links." );
+      secondary_text = (count == 1)
+        ? tr ("Once removed, continuing the transfer will require the torrent file or magnet link.")
+        : tr ("Once removed, continuing the transfers will require the torrent files or magnet links.");
     }
-    else if( count == incomplete )
+  else if (count == incomplete)
     {
-        secondary_text = ( count == 1 )
-            ? tr( "This torrent has not finished downloading." )
-            : tr( "These torrents have not finished downloading." );
+      secondary_text = (count == 1)
+        ? tr ("This torrent has not finished downloading.")
+        : tr ("These torrents have not finished downloading.");
     }
-    else if( count == connected )
+  else if (count == connected)
     {
-        secondary_text = ( count == 1 )
-            ? tr( "This torrent is connected to peers." )
-            : tr( "These torrents are connected to peers." );
+      secondary_text = (count == 1)
+        ? tr ("This torrent is connected to peers.")
+        : tr ("These torrents are connected to peers.");
     }
-    else
+  else
     {
-        if( connected )
+      if (connected)
         {
-            secondary_text = ( connected == 1 )
-                ? tr( "One of these torrents is connected to peers." )
-                : tr( "Some of these torrents are connected to peers." );
+          secondary_text = (connected == 1)
+            ? tr ("One of these torrents is connected to peers.")
+            : tr ("Some of these torrents are connected to peers.");
         }
 
-        if( connected && incomplete )
+      if (connected && incomplete)
         {
-            secondary_text += "\n";
+          secondary_text += "\n";
         }
 
-        if( incomplete )
+      if (incomplete)
         {
-            secondary_text += ( incomplete == 1 )
-                ? tr( "One of these torrents has not finished downloading." )
-                : tr( "Some of these torrents have not finished downloading." );
+          secondary_text += (incomplete == 1)
+            ? tr ("One of these torrents has not finished downloading.")
+            : tr ("Some of these torrents have not finished downloading.");
         }
     }
 
-    msgBox.setWindowTitle( QString(" ") );
-    msgBox.setText( QString( "<big><b>%1</big></b>" ).arg( primary_text ) );
-    msgBox.setInformativeText( secondary_text );
-    msgBox.setStandardButtons( QMessageBox::Ok | QMessageBox::Cancel );
-    msgBox.setDefaultButton( QMessageBox::Cancel );
-    msgBox.setIcon( QMessageBox::Question );
-    /* hack needed to keep the dialog from being too narrow */
-    QGridLayout* layout = (QGridLayout*)msgBox.layout();
-    QSpacerItem* spacer = new QSpacerItem( 450, 0, QSizePolicy::Minimum, QSizePolicy::Expanding );
-    layout->addItem( spacer, layout->rowCount(), 0, 1, layout->columnCount() );
-
-    if( msgBox.exec() == QMessageBox::Ok )
+  msgBox.setWindowTitle (QString (" "));
+  msgBox.setText (QString ("<big><b>%1</big></b>").arg (primary_text));
+  msgBox.setInformativeText (secondary_text);
+  msgBox.setStandardButtons (QMessageBox::Ok | QMessageBox::Cancel);
+  msgBox.setDefaultButton (QMessageBox::Cancel);
+  msgBox.setIcon (QMessageBox::Question);
+  /* hack needed to keep the dialog from being too narrow */
+  QGridLayout* layout = (QGridLayout*)msgBox.layout ();
+  QSpacerItem* spacer = new QSpacerItem (450, 0, QSizePolicy::Minimum, QSizePolicy::Expanding);
+  layout->addItem (spacer, layout->rowCount (), 0, 1, layout->columnCount ());
+
+  if (msgBox.exec () == QMessageBox::Ok)
     {
-        ui.listView->selectionModel()->clear();
-        mySession.removeTorrents( ids, deleteFiles );
+      ui.listView->selectionModel ()->clear ();
+      mySession.removeTorrents (ids, deleteFiles);
     }
 }
 
@@ -1360,9 +1378,9 @@ TrMainWindow :: removeTorrents( const bool deleteFiles )
 ***/
 
 void
-TrMainWindow :: updateNetworkIcon)
+TrMainWindow :: updateNetworkIcon ()
 {
-  const time_t now = time( NULL );
+  const time_t now = time (NULL);
   const int period = 3;
   const time_t secondsSinceLastSend = now - myLastSendTime;
   const time_t secondsSinceLastRead = now - myLastReadTime;
@@ -1370,11 +1388,11 @@ TrMainWindow :: updateNetworkIcon( )
   const bool isReading = secondsSinceLastRead <= period;
   const char * key;
 
-  if( isSending && isReading )
+  if (isSending && isReading)
     key = "network-transmit-receive";
-  else if( isSending )
+  else if (isSending)
     key = "network-transmit";
-  else if( isReading )
+  else if (isReading)
     key = "network-receive";
   else
     key = "network-idle";
@@ -1382,45 +1400,45 @@ TrMainWindow :: updateNetworkIcon( )
   const QPixmap pixmap = icon.pixmap (16, 16);
 
   QString tip;
-  const QString url = mySession.getRemoteUrl().host();
-  if( !myLastReadTime )
-    tip = tr( "%1 has not responded yet" ).arg (url);
-  else if( secondsSinceLastRead < 60 )
-    tip = tr( "%1 is responding" ).arg (url);
-  else if( secondsSinceLastRead < (60*10) )
-    tip = tr( "%1 last responded %2 ago" ).arg(url).arg(Formatter::timeToString(secondsSinceLastRead));
+  const QString url = mySession.getRemoteUrl ().host ();
+  if (!myLastReadTime)
+    tip = tr ("%1 has not responded yet").arg (url);
+  else if (secondsSinceLastRead < 60)
+    tip = tr ("%1 is responding").arg (url);
+  else if (secondsSinceLastRead < (60*10))
+    tip = tr ("%1 last responded %2 ago").arg (url).arg (Formatter::timeToString (secondsSinceLastRead));
   else
-    tip = tr( "%1 is not responding" ).arg (url);
+    tip = tr ("%1 is not responding").arg (url);
 
   myNetworkLabel->setPixmap (pixmap);
   myNetworkLabel->setToolTip (tip);
 }
 
 void
-TrMainWindow :: onNetworkTimer)
+TrMainWindow :: onNetworkTimer ()
 {
-    updateNetworkIcon( );
+  updateNetworkIcon ();
 }
 
 void
-TrMainWindow :: dataReadProgress)
+TrMainWindow :: dataReadProgress ()
 {
-    myLastReadTime = time( NULL );
-    updateNetworkIcon( );
+  myLastReadTime = time (NULL);
+  updateNetworkIcon ();
 }
 
 void
-TrMainWindow :: dataSendProgress)
+TrMainWindow :: dataSendProgress ()
 {
-    myLastSendTime = time( NULL );
-    updateNetworkIcon( );
+  myLastSendTime = time (NULL);
+  updateNetworkIcon ();
 }
 
 void
-TrMainWindow :: wrongAuthentication)
+TrMainWindow :: wrongAuthentication ()
 {
-    mySession.stop( );
-    mySessionDialog->show( );
+  mySession.stop ();
+  mySessionDialog->show ();
 }
 
 /***
@@ -1428,26 +1446,26 @@ TrMainWindow :: wrongAuthentication( )
 ***/
 
 void
-TrMainWindow :: dragEnterEvent( QDragEnterEvent * event )
+TrMainWindow :: dragEnterEvent (QDragEnterEvent * event)
 {
-    const QMimeData * mime = event->mimeData( );
+  const QMimeData * mime = event->mimeData ();
 
-    if( mime->hasFormat("application/x-bittorrent")
-            || mime->text().trimmed().endsWith(".torrent", Qt::CaseInsensitive)
-            || mime->text().startsWith("magnet:", Qt::CaseInsensitive) )
-        event->acceptProposedAction();
+  if (mime->hasFormat ("application/x-bittorrent")
+        || mime->text ().trimmed ().endsWith (".torrent", Qt::CaseInsensitive)
+        || mime->text ().startsWith ("magnet:", Qt::CaseInsensitive))
+    event->acceptProposedAction ();
 }
 
 void
-TrMainWindow :: dropEvent( QDropEvent * event )
+TrMainWindow :: dropEvent (QDropEvent * event)
 {
-    QString key = event->mimeData()->text().trimmed();
+  QString key = event->mimeData ()->text ().trimmed ();
 
-    const QUrl url( key );
-    if( url.scheme() == "file" )
-        key = QUrl::fromPercentEncoding( url.path().toUtf8( ) );
+  const QUrl url (key);
+  if (url.scheme () == "file")
+    key = QUrl::fromPercentEncoding (url.path ().toUtf8 ());
 
-    dynamic_cast<MyApp*>(QApplication::instance())->addTorrent( key );
+  dynamic_cast<MyApp*> (QApplication::instance ())->addTorrent (key);
 }
 
 /***
@@ -1455,38 +1473,38 @@ TrMainWindow :: dropEvent( QDropEvent * event )
 ***/
 
 void
-TrMainWindow :: contextMenuEvent( QContextMenuEvent * event )
-{
-    QMenu * menu = new QMenu( this );
-
-    menu->addAction( ui.action_Properties );
-    menu->addAction( ui.action_OpenFolder );
-
-    QAction * sep = new QAction( this );
-    sep->setSeparator( true );
-    menu->addAction( sep );
-    menu->addAction( ui.action_Start );
-    menu->addAction( ui.action_StartNow );
-    menu->addAction( ui.action_Announce );
-    QMenu * queueMenu = menu->addMenu( tr( "Queue" ) );
-        queueMenu->addAction( ui.action_QueueMoveTop );
-        queueMenu->addAction( ui.action_QueueMoveUp );
-        queueMenu->addAction( ui.action_QueueMoveDown );
-        queueMenu->addAction( ui.action_QueueMoveBottom );
-    menu->addAction( ui.action_Pause );
-
-    sep = new QAction( this );
-    sep->setSeparator( true );
-    menu->addAction( sep );
-    menu->addAction( ui.action_Verify );
-    menu->addAction( ui.action_SetLocation );
-    menu->addAction( ui.action_CopyMagnetToClipboard );
-
-    sep = new QAction( this );
-    sep->setSeparator( true );
-    menu->addAction( sep );
-    menu->addAction( ui.action_Remove );
-    menu->addAction( ui.action_Delete );
-
-    menu->popup( event->globalPos( ) );
+TrMainWindow :: contextMenuEvent (QContextMenuEvent * event)
+{
+  QMenu * menu = new QMenu (this);
+
+  menu->addAction (ui.action_Properties);
+  menu->addAction (ui.action_OpenFolder);
+
+  QAction * sep = new QAction (this);
+  sep->setSeparator (true);
+  menu->addAction (sep);
+  menu->addAction (ui.action_Start);
+  menu->addAction (ui.action_StartNow);
+  menu->addAction (ui.action_Announce);
+  QMenu * queueMenu = menu->addMenu (tr ("Queue"));
+    queueMenu->addAction (ui.action_QueueMoveTop);
+    queueMenu->addAction (ui.action_QueueMoveUp);
+    queueMenu->addAction (ui.action_QueueMoveDown);
+    queueMenu->addAction (ui.action_QueueMoveBottom);
+  menu->addAction (ui.action_Pause);
+
+  sep = new QAction (this);
+  sep->setSeparator (true);
+  menu->addAction (sep);
+  menu->addAction (ui.action_Verify);
+  menu->addAction (ui.action_SetLocation);
+  menu->addAction (ui.action_CopyMagnetToClipboard);
+
+  sep = new QAction (this);
+  sep->setSeparator (true);
+  menu->addAction (sep);
+  menu->addAction (ui.action_Remove);
+  menu->addAction (ui.action_Delete);
+
+  menu->popup (event->globalPos ());
 }
index 1a8aa7cc171cd05a98060458fc26067fd8684b46..e06f890eb0f058ad6f778f7d31f2ca5f79de06d2 100644 (file)
@@ -49,158 +49,158 @@ class Filterbar;
 
 class TrMainWindow: public QMainWindow
 {
-        Q_OBJECT
-
-    private:
-        virtual void hideEvent( QHideEvent * event );
-        virtual void showEvent( QShowEvent * event );
-
-    private:
-        time_t myLastFullUpdateTime;
-        QDialog * mySessionDialog;
-        QDialog * myPrefsDialog;
-        QDialog * myAboutDialog;
-        QDialog * myStatsDialog;
-        Details * myDetailsDialog;
-        QCheckBox * myFileDialogOptionsCheck;
-        QSystemTrayIcon myTrayIcon;
-        TorrentFilter myFilterModel;
-        TorrentDelegate * myTorrentDelegate;
-        TorrentDelegateMin * myTorrentDelegateMin;
-        Session& mySession;
-        Prefs& myPrefs;
-        TorrentModel& myModel;
-        Ui_MainWindow ui;
-        QIcon mySpeedModeOffIcon;
-        QIcon mySpeedModeOnIcon;
-        time_t myLastSendTime;
-        time_t myLastReadTime;
-        QTimer myNetworkTimer;
-        QTimer myRefreshTrayIconTimer;
-        QTimer myRefreshActionSensitivityTimer;
-        QAction * myDlimitOffAction;
-        QAction * myDlimitOnAction;
-        QAction * myUlimitOffAction;
-        QAction * myUlimitOnAction;
-        QAction * myRatioOffAction;
-        QAction * myRatioOnAction;
-
-    private:
-        QIcon getStockIcon( const QString&, int fallback=-1 );
-
-    private:
-        QSet<int> getSelectedTorrents( ) const;
-        void updateNetworkIcon( );
-        QWidgetList myHidden;
-
-    public slots:
-        void openURL( QString );
-
-    private slots:
-        void onPrefsDestroyed( );
-        void openPreferences( );
-        void onDetailsDestroyed( );
-        void showTotalRatio( );
-        void showTotalTransfer( );
-        void showSessionRatio( );
-        void showSessionTransfer( );
-        void refreshVisibleCount( );
-        void refreshFreeSpace( );
-        void refreshTitle( );
-        void refreshStatusBar( );
-        void refreshTrayIcon( );
-        void refreshTrayIconSoon( );
-        void openTorrent( );
-        void openURL( );
-        void newTorrent( );
-        void trayActivated( QSystemTrayIcon::ActivationReason );
-        void refreshPref( int key );
-        void addTorrents( const QStringList& filenames );
-        void removeTorrents( const bool deleteFiles );
-        void openDonate( );
-        void openHelp( );
-        void openFolder( );
-        void copyMagnetLinkToClipboard( );
-        void setLocation( );
-        void openProperties( );
-        void toggleSpeedMode( );
-        void dataReadProgress( );
-        void dataSendProgress( );
-        void toggleWindows( bool doShow );
-        void onSetPrefs( );
-        void onSetPrefs( bool );
-        void onSessionSourceChanged( );
-        void onModelReset( );
-
-    private slots:
-        void setSortPref             ( int );
-        void setSortAscendingPref    ( bool );
-        void onSortByActivityToggled ( bool );
-        void onSortByAgeToggled      ( bool );
-        void onSortByETAToggled      ( bool );
-        void onSortByNameToggled     ( bool );
-        void onSortByProgressToggled ( bool );
-        void onSortByQueueToggled    ( bool );
-        void onSortByRatioToggled    ( bool );
-        void onSortBySizeToggled     ( bool );
-        void onSortByStateToggled    ( bool );
-
-    private:
-        QWidget * myFilterBar;
-
-    private:
-        QMenu * createOptionsMenu( void );
-        QWidget * createStatusBar( void );
-        QWidget * myStatusBar;
-        QPushButton * myAltSpeedButton;
-        QAction * myAltSpeedAction;
-        QPushButton * myOptionsButton;
-        QLabel * myVisibleCountLabel;
-        QPushButton * myStatsModeButton;
-        QLabel * myStatsLabel;
-        QLabel * myDownloadSpeedLabel;
-        QLabel * myUploadSpeedLabel;
-        QLabel * myFreeSpaceTextLabel;
-        QLabel * myFreeSpaceIconLabel;
-        QLabel * myNetworkLabel;
-
-    public slots:
-        void startAll( );
-        void startSelected( );
-        void startSelectedNow( );
-        void pauseAll( );
-        void pauseSelected( );
-        void removeSelected( );
-        void deleteSelected( );
-        void verifySelected( );
-        void queueMoveTop( );
-        void queueMoveUp( );
-        void queueMoveDown( );
-        void queueMoveBottom( );
-        void reannounceSelected( );
-        void addTorrent( const QString& filename );
-        void onNetworkTimer( );
-
-    private:
-        void clearSelection( );
-
-    public slots:
-        void setToolbarVisible( bool );
-        void setFilterbarVisible( bool );
-        void setStatusbarVisible( bool );
-        void setCompactView( bool );
-        void refreshActionSensitivity( );
-        void refreshActionSensitivitySoon( );
-        void wrongAuthentication( );
-
-    public:
-        TrMainWindow( Session&, Prefs&, TorrentModel&, bool minized );
-        virtual ~TrMainWindow( );
-
-    protected:
-        virtual void contextMenuEvent( QContextMenuEvent * );
-        virtual void dragEnterEvent( QDragEnterEvent * );
-        virtual void dropEvent( QDropEvent * );
+    Q_OBJECT
+
+  private:
+    virtual void hideEvent (QHideEvent * event);
+    virtual void showEvent (QShowEvent * event);
+
+  private:
+    time_t myLastFullUpdateTime;
+    QDialog * mySessionDialog;
+    QDialog * myPrefsDialog;
+    QDialog * myAboutDialog;
+    QDialog * myStatsDialog;
+    Details * myDetailsDialog;
+    QCheckBox * myFileDialogOptionsCheck;
+    QSystemTrayIcon myTrayIcon;
+    TorrentFilter myFilterModel;
+    TorrentDelegate * myTorrentDelegate;
+    TorrentDelegateMin * myTorrentDelegateMin;
+    Session& mySession;
+    Prefs& myPrefs;
+    TorrentModel& myModel;
+    Ui_MainWindow ui;
+    QIcon mySpeedModeOffIcon;
+    QIcon mySpeedModeOnIcon;
+    time_t myLastSendTime;
+    time_t myLastReadTime;
+    QTimer myNetworkTimer;
+    QTimer myRefreshTrayIconTimer;
+    QTimer myRefreshActionSensitivityTimer;
+    QAction * myDlimitOffAction;
+    QAction * myDlimitOnAction;
+    QAction * myUlimitOffAction;
+    QAction * myUlimitOnAction;
+    QAction * myRatioOffAction;
+    QAction * myRatioOnAction;
+
+  private:
+    QIcon getStockIcon (const QString&, int fallback=-1);
+
+  private:
+    QSet<int> getSelectedTorrents () const;
+    void updateNetworkIcon ();
+    QWidgetList myHidden;
+
+  public slots:
+    void openURL (QString);
+
+  private slots:
+    void onPrefsDestroyed ();
+    void openPreferences ();
+    void onDetailsDestroyed ();
+    void showTotalRatio ();
+    void showTotalTransfer ();
+    void showSessionRatio ();
+    void showSessionTransfer ();
+    void refreshVisibleCount ();
+    void refreshFreeSpace ();
+    void refreshTitle ();
+    void refreshStatusBar ();
+    void refreshTrayIcon ();
+    void refreshTrayIconSoon ();
+    void openTorrent ();
+    void openURL ();
+    void newTorrent ();
+    void trayActivated (QSystemTrayIcon::ActivationReason);
+    void refreshPref (int key);
+    void addTorrents (const QStringList& filenames);
+    void removeTorrents (const bool deleteFiles);
+    void openDonate ();
+    void openHelp ();
+    void openFolder ();
+    void copyMagnetLinkToClipboard ();
+    void setLocation ();
+    void openProperties ();
+    void toggleSpeedMode ();
+    void dataReadProgress ();
+    void dataSendProgress ();
+    void toggleWindows (bool doShow);
+    void onSetPrefs ();
+    void onSetPrefs (bool);
+    void onSessionSourceChanged ();
+    void onModelReset ();
+
+  private slots:
+    void setSortPref (int);
+    void setSortAscendingPref (bool);
+    void onSortByActivityToggled (bool);
+    void onSortByAgeToggled (bool);
+    void onSortByETAToggled (bool);
+    void onSortByNameToggled (bool);
+    void onSortByProgressToggled (bool);
+    void onSortByQueueToggled (bool);
+    void onSortByRatioToggled (bool);
+    void onSortBySizeToggled (bool);
+    void onSortByStateToggled (bool);
+
+  private:
+    QWidget * myFilterBar;
+
+  private:
+    QMenu * createOptionsMenu (void);
+    QWidget * createStatusBar (void);
+    QWidget * myStatusBar;
+    QPushButton * myAltSpeedButton;
+    QAction * myAltSpeedAction;
+    QPushButton * myOptionsButton;
+    QLabel * myVisibleCountLabel;
+    QPushButton * myStatsModeButton;
+    QLabel * myStatsLabel;
+    QLabel * myDownloadSpeedLabel;
+    QLabel * myUploadSpeedLabel;
+    QLabel * myFreeSpaceTextLabel;
+    QLabel * myFreeSpaceIconLabel;
+    QLabel * myNetworkLabel;
+
+  public slots:
+    void startAll ();
+    void startSelected ();
+    void startSelectedNow ();
+    void pauseAll ();
+    void pauseSelected ();
+    void removeSelected ();
+    void deleteSelected ();
+    void verifySelected ();
+    void queueMoveTop ();
+    void queueMoveUp ();
+    void queueMoveDown ();
+    void queueMoveBottom ();
+    void reannounceSelected ();
+    void addTorrent (const QString& filename);
+    void onNetworkTimer ();
+
+  private:
+    void clearSelection ();
+
+  public slots:
+    void setToolbarVisible (bool);
+    void setFilterbarVisible (bool);
+    void setStatusbarVisible (bool);
+    void setCompactView (bool);
+    void refreshActionSensitivity ();
+    void refreshActionSensitivitySoon ();
+    void wrongAuthentication ();
+
+  public:
+    TrMainWindow (Session&, Prefs&, TorrentModel&, bool minized);
+    virtual ~TrMainWindow ();
+
+  protected:
+    virtual void contextMenuEvent (QContextMenuEvent *);
+    virtual void dragEnterEvent (QDragEnterEvent *);
+    virtual void dropEvent (QDropEvent *);
 };
 
 #endif