From 3e7ef0c4ddb93f8aadecd6223da4450380ac31ec Mon Sep 17 00:00:00 2001 From: Jordan Lee Date: Sun, 27 Jan 2013 18:09:49 +0000 Subject: [PATCH] copyediting: modify more files to the new indentation/whitespace formatting --- qt/mainwin.cc | 1978 +++++++++++++++++++++++++------------------------ qt/mainwin.h | 304 ++++---- 2 files changed, 1150 insertions(+), 1132 deletions(-) diff --git a/qt/mainwin.cc b/qt/mainwin.cc index eed3f8459..0a3eb94ff 100644 --- a/qt/mainwin.cc +++ b/qt/mainwin.cc @@ -54,259 +54,263 @@ */ 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 (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 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(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 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(); iproperty (PREF_VARIANTS_KEY).toList (); + assert ( (p.size () % 2) == 0); + for (int i=0, n=p.size (); ipixelMetric( 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(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 (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 stockSpeeds; - stockSpeeds << 5 << 10 << 20 << 30 << 40 << 50 << 75 << 100 << 150 << 200 << 250 << 500 << 750; - QList 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( 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( 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( 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 stockSpeeds; + stockSpeeds << 5 << 10 << 20 << 30 << 40 << 50 << 75 << 100 << 150 << 200 << 250 << 500 << 750; + QList 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 (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 (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 (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; rowindex( row, 0 ) ); - assert( model == modelIndex.model( ) ); - const Torrent * tor( model->data( modelIndex, TorrentModel::TorrentRole ).value( ) ); - 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; rowindex (row, 0)); + assert (model == modelIndex.model ()); + const Torrent * tor (model->data (modelIndex, TorrentModel::TorrentRole).value ()); + 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 -TrMainWindow :: getSelectedTorrents( ) const +TrMainWindow :: getSelectedTorrents () const { - QSet ids; + QSet ids; - foreach( QModelIndex index, ui.listView->selectionModel( )->selectedRows( ) ) + foreach (QModelIndex index, ui.listView->selectionModel ()->selectedRows ()) { - const Torrent * tor( index.data( TorrentModel::TorrentRole ).value( ) ); - ids.insert( tor->id( ) ); + const Torrent * tor (index.data (TorrentModel::TorrentRole).value ()); + 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( Prefs::ALT_SPEED_LIMIT_ENABLED ); - myAltSpeedAction->setIcon( mode ? mySpeedModeOnIcon : mySpeedModeOffIcon ); + myPrefs.toggleBool (Prefs :: ALT_SPEED_LIMIT_ENABLED); + const bool mode = myPrefs.get (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(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(key) ? myDlimitOnAction : myDlimitOffAction)->setChecked( true ); - break; - - case Prefs::DSPEED: - myDlimitOnAction->setText( tr( "Limited at %1" ).arg( Formatter::speedToString( Speed::fromKBps( myPrefs.get(key) ) ) ) ); - break; - - case Prefs::USPEED_ENABLED: - (myPrefs.get(key) ? myUlimitOnAction : myUlimitOffAction)->setChecked( true ); - break; - - case Prefs::USPEED: - myUlimitOnAction->setText( tr( "Limited at %1" ).arg( Formatter::speedToString( Speed::fromKBps( myPrefs.get(key) ) ) ) ); - break; - - case Prefs::RATIO_ENABLED: - (myPrefs.get(key) ? myRatioOnAction : myRatioOffAction)->setChecked( true ); - break; - - case Prefs::RATIO: - myRatioOnAction->setText( tr( "Stop at Ratio (%1)" ).arg( Formatter::ratioToString( myPrefs.get(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(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 (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 (key) ? myDlimitOnAction : myDlimitOffAction)->setChecked (true); + break; + + case Prefs::DSPEED: + myDlimitOnAction->setText (tr ("Limited at %1").arg (Formatter::speedToString (Speed::fromKBps (myPrefs.get (key))))); + break; + + case Prefs::USPEED_ENABLED: + (myPrefs.get (key) ? myUlimitOnAction : myUlimitOffAction)->setChecked (true); + break; + + case Prefs::USPEED: + myUlimitOnAction->setText (tr ("Limited at %1").arg (Formatter::speedToString (Speed::fromKBps (myPrefs.get (key))))); + break; + + case Prefs::RATIO_ENABLED: + (myPrefs.get (key) ? myRatioOnAction : myRatioOffAction)->setChecked (true); + break; + + case Prefs::RATIO: + myRatioOnAction->setText (tr ("Stop at Ratio (%1)").arg (Formatter::ratioToString (myPrefs.get (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 (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(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 (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 ids; - QMessageBox msgBox( this ); - QString primary_text, secondary_text; - int incomplete = 0; - int connected = 0; - int count; + QSet 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( ) ); - ids.insert( tor->id( ) ); - if( tor->connectedPeers( ) ) - ++connected; - if( !tor->isDone( ) ) - ++incomplete; + const Torrent * tor (index.data (TorrentModel::TorrentRole).value ()); + 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( "%1" ).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 ("%1").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(QApplication::instance())->addTorrent( key ); + dynamic_cast (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 ()); } diff --git a/qt/mainwin.h b/qt/mainwin.h index 1a8aa7cc1..e06f890eb 100644 --- a/qt/mainwin.h +++ b/qt/mainwin.h @@ -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 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 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 -- 2.40.0