mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-11-25 10:46:15 +03:00
- Queued torrents are now identified in Web UI
- Improved transfer list update for queued torrents - Allow to show/hide top toolbar - top toolbar is now hidden as a default - Connection status is now displayed in status bar (bottom) - Removed "Disconnected" connection status (bad detection) - Added increase/decrease priority actions to Edit menu - Added keyboard shortcuts for increase/decrease priority actions
This commit is contained in:
parent
c7a289d183
commit
ff26ea94f5
23 changed files with 159 additions and 100 deletions
|
@ -4,8 +4,11 @@
|
||||||
- FEATURE: The number of DHT nodes is displayed
|
- FEATURE: The number of DHT nodes is displayed
|
||||||
- FEATURE: RSS can now be disabled from program preferences
|
- FEATURE: RSS can now be disabled from program preferences
|
||||||
- BUGFIX: Disable ETA calculation when ETA column is hidden
|
- BUGFIX: Disable ETA calculation when ETA column is hidden
|
||||||
- COSMETIC: Transfer speed, ratio and DHT nodes are displayed in status bar
|
- BUGFIX: Removed "disconnected" connection state, detection was far from perfect
|
||||||
|
- COSMETIC: Transfer speed, ratio, connection status and DHT nodes are displayed in status bar
|
||||||
- COSMETIC: RSS Tab is now hidden as a default
|
- COSMETIC: RSS Tab is now hidden as a default
|
||||||
|
- COSMETIC: Allow to hide or display top toolbar
|
||||||
|
- COSMETIC: Top toolbar is now hidden as a default
|
||||||
|
|
||||||
* Fri Aug 01 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.0
|
* Fri Aug 01 2008 - Christophe Dumez <chris@qbittorrent.org> - v1.1.0
|
||||||
- FEATURE: Web interface to control qbittorrent (Ishan Arora)
|
- FEATURE: Web interface to control qbittorrent (Ishan Arora)
|
||||||
|
|
46
TODO
46
TODO
|
@ -1,46 +1,4 @@
|
||||||
// Easy
|
See https://blueprints.launchpad.net/qbittorrent/
|
||||||
- Translations into as many languages as possible
|
|
||||||
- Use Launchpad/Rosetta for translations once it supports TS files
|
|
||||||
|
|
||||||
// Intermediate
|
|
||||||
- Port on MacOS, Windows (and create an installer for Windows) - Slow progress
|
|
||||||
- Add some transparency (menus,...), improve look / usabilty
|
|
||||||
- Skins support? (contact Mateusz)
|
|
||||||
|
|
||||||
// Harder
|
|
||||||
- Torrent scheduler ala µtorrent/Bitcomet
|
|
||||||
|
|
||||||
// Waiting for libtorrent
|
|
||||||
- Allow to prioritize torrents (may code this in qBittorrent?)
|
|
||||||
|
|
||||||
// Unsure
|
|
||||||
- Display the peers we are connected to for each torrent with infos (like flag, dl/up speeds, ...)
|
|
||||||
- Azureus spoofing to prevent ban from trackers?
|
|
||||||
- Option to shutdown computer when downloads are finished
|
|
||||||
- NAT checker/Tester
|
|
||||||
- Display hard drive space left?
|
|
||||||
- Make use of dbus on Linux for the single instance instead of socket communication?
|
|
||||||
(http://techbase.kde.org/Development/Tutorials/D-Bus/Accessing_Interfaces)
|
|
||||||
- When favicon can't be downloaded, try to parse the webpage for:
|
|
||||||
<link rel="icon" href="http://example.com/favicon.ico" type="image/vnd.microsoft.icon">
|
|
||||||
* Be careful, the link can be relative
|
|
||||||
- Improve search plugin install (choose in a list taken from plugins.qbittorrent.org)
|
|
||||||
- support zipped torrents? (useful?)
|
|
||||||
- Allow to limit the number of downloading torrents simultaneously (other are paused until a download finishes)
|
|
||||||
|
|
||||||
// in v1.2.0
|
// in v1.2.0
|
||||||
- Allow user to organize the downloads into categories/folders?
|
- Split download and uploads in Web UI (Ishan Ahora)
|
||||||
|
|
||||||
// in v1.1.0
|
|
||||||
- Stop calculating ETAs when ETA column is hidden
|
|
||||||
-> See https://blueprints.launchpad.net/qbittorrent
|
|
||||||
|
|
||||||
Translations updated:
|
|
||||||
- French
|
|
||||||
- Chinese
|
|
||||||
- Polish
|
|
||||||
- Portuguese
|
|
||||||
- Brazilian
|
|
||||||
- Slovak
|
|
||||||
- Swedish
|
|
||||||
- Romanian
|
|
||||||
|
|
|
@ -64,8 +64,8 @@ FinishedTorrents::FinishedTorrents(QObject *parent, bittorrent *BTSession) : par
|
||||||
connect(finishedList, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(displayFinishedListMenu(const QPoint&)));
|
connect(finishedList, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(displayFinishedListMenu(const QPoint&)));
|
||||||
finishedList->header()->setContextMenuPolicy(Qt::CustomContextMenu);
|
finishedList->header()->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
connect(finishedList->header(), SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(displayFinishedHoSMenu(const QPoint&)));
|
connect(finishedList->header(), SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(displayFinishedHoSMenu(const QPoint&)));
|
||||||
|
|
||||||
connect(finishedList, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(notifyTorrentDoubleClicked(const QModelIndex&)));
|
connect(finishedList, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(notifyTorrentDoubleClicked(const QModelIndex&)));
|
||||||
|
connect(BTSession, SIGNAL(forceFinishedListUpdate()), this, SLOT(updateFinishedList()));
|
||||||
actionDelete->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete.png")));
|
actionDelete->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete.png")));
|
||||||
actionPreview_file->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/preview.png")));
|
actionPreview_file->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/preview.png")));
|
||||||
actionDelete_Permanently->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete_perm.png")));
|
actionDelete_Permanently->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete_perm.png")));
|
||||||
|
@ -74,6 +74,8 @@ FinishedTorrents::FinishedTorrents(QObject *parent, bittorrent *BTSession) : par
|
||||||
connect(actionPause, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionPause_triggered()));
|
connect(actionPause, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionPause_triggered()));
|
||||||
connect(actionStart, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionStart_triggered()));
|
connect(actionStart, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionStart_triggered()));
|
||||||
connect(actionDelete, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDelete_triggered()));
|
connect(actionDelete, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDelete_triggered()));
|
||||||
|
connect(actionIncreasePriority, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionIncreasePriority_triggered()));
|
||||||
|
connect(actionDecreasePriority, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDecreasePriority_triggered()));
|
||||||
connect(actionPreview_file, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionPreview_file_triggered()));
|
connect(actionPreview_file, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionPreview_file_triggered()));
|
||||||
connect(actionDelete_Permanently, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDelete_Permanently_triggered()));
|
connect(actionDelete_Permanently, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDelete_Permanently_triggered()));
|
||||||
connect(actionOpen_destination_folder, SIGNAL(triggered()), (GUI*)parent, SLOT(openDestinationFolder()));
|
connect(actionOpen_destination_folder, SIGNAL(triggered()), (GUI*)parent, SLOT(openDestinationFolder()));
|
||||||
|
@ -407,6 +409,11 @@ void FinishedTorrents::displayFinishedListMenu(const QPoint& pos){
|
||||||
myFinishedListMenu.addSeparator();
|
myFinishedListMenu.addSeparator();
|
||||||
myFinishedListMenu.addAction(actionOpen_destination_folder);
|
myFinishedListMenu.addAction(actionOpen_destination_folder);
|
||||||
myFinishedListMenu.addAction(actionTorrent_Properties);
|
myFinishedListMenu.addAction(actionTorrent_Properties);
|
||||||
|
if(BTSession->isQueueingEnabled()) {
|
||||||
|
myFinishedListMenu.addSeparator();
|
||||||
|
myFinishedListMenu.addAction(actionIncreasePriority);
|
||||||
|
myFinishedListMenu.addAction(actionDecreasePriority);
|
||||||
|
}
|
||||||
myFinishedListMenu.addSeparator();
|
myFinishedListMenu.addSeparator();
|
||||||
myFinishedListMenu.addAction(actionBuy_it);
|
myFinishedListMenu.addAction(actionBuy_it);
|
||||||
|
|
||||||
|
|
41
src/GUI.cpp
41
src/GUI.cpp
|
@ -109,13 +109,10 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis
|
||||||
actionSet_global_upload_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/seeding.png")));
|
actionSet_global_upload_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/seeding.png")));
|
||||||
actionSet_global_download_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/downloading.png")));
|
actionSet_global_download_limit->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/downloading.png")));
|
||||||
actionDocumentation->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/qb_question.png")));
|
actionDocumentation->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/qb_question.png")));
|
||||||
connecStatusLblIcon = new QLabel();
|
|
||||||
connecStatusLblIcon->setFrameShape(QFrame::NoFrame);
|
|
||||||
connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/disconnected.png")));
|
|
||||||
connecStatusLblIcon->setToolTip(QString::fromUtf8("<b>")+tr("Connection status:")+QString::fromUtf8("</b><br>")+tr("Offline")+QString::fromUtf8("<br><i>")+tr("No peers found...")+QString::fromUtf8("</i>"));
|
|
||||||
toolBar->addWidget(connecStatusLblIcon);
|
|
||||||
prioSeparator = toolBar->insertSeparator(actionDecreasePriority);
|
prioSeparator = toolBar->insertSeparator(actionDecreasePriority);
|
||||||
|
prioSeparator2 = menu_Edit->insertSeparator(actionDecreasePriority);
|
||||||
prioSeparator->setVisible(false);
|
prioSeparator->setVisible(false);
|
||||||
|
prioSeparator2->setVisible(false);
|
||||||
actionDelete_Permanently->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete_perm.png")));
|
actionDelete_Permanently->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/delete_perm.png")));
|
||||||
actionTorrent_Properties->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/properties.png")));
|
actionTorrent_Properties->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/properties.png")));
|
||||||
actionCreate_torrent->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/new.png")));
|
actionCreate_torrent->setIcon(QIcon(QString::fromUtf8(":/Icons/skin/new.png")));
|
||||||
|
@ -209,6 +206,10 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis
|
||||||
show();
|
show();
|
||||||
}
|
}
|
||||||
createKeyboardShortcuts();
|
createKeyboardShortcuts();
|
||||||
|
connecStatusLblIcon = new QLabel();
|
||||||
|
connecStatusLblIcon->setFrameShape(QFrame::NoFrame);
|
||||||
|
connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/firewalled.png")));
|
||||||
|
connecStatusLblIcon->setToolTip(QString::fromUtf8("<b>")+tr("Connection status:")+QString::fromUtf8("</b><br>")+QString::fromUtf8("<i>")+tr("No direct connections. This may indicate network configuration problems.")+QString::fromUtf8("</i>"));
|
||||||
dlSpeedLbl = new QLabel(tr("DL: %1 KiB/s").arg("0.0"));
|
dlSpeedLbl = new QLabel(tr("DL: %1 KiB/s").arg("0.0"));
|
||||||
upSpeedLbl = new QLabel(tr("UP: %1 KiB/s").arg("0.0"));
|
upSpeedLbl = new QLabel(tr("UP: %1 KiB/s").arg("0.0"));
|
||||||
ratioLbl = new QLabel(tr("Ratio: %1").arg("1.0"));
|
ratioLbl = new QLabel(tr("Ratio: %1").arg("1.0"));
|
||||||
|
@ -222,12 +223,17 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis
|
||||||
statusSep3 = new QFrame();
|
statusSep3 = new QFrame();
|
||||||
statusSep3->setFixedWidth(1);
|
statusSep3->setFixedWidth(1);
|
||||||
statusSep3->setFrameStyle(QFrame::Box);
|
statusSep3->setFrameStyle(QFrame::Box);
|
||||||
|
statusSep4 = new QFrame();
|
||||||
|
statusSep4->setFixedWidth(1);
|
||||||
|
statusSep4->setFrameStyle(QFrame::Box);
|
||||||
QMainWindow::statusBar()->addPermanentWidget(DHTLbl);
|
QMainWindow::statusBar()->addPermanentWidget(DHTLbl);
|
||||||
QMainWindow::statusBar()->addPermanentWidget(statusSep1);
|
QMainWindow::statusBar()->addPermanentWidget(statusSep1);
|
||||||
QMainWindow::statusBar()->addPermanentWidget(dlSpeedLbl);
|
QMainWindow::statusBar()->addPermanentWidget(connecStatusLblIcon);
|
||||||
QMainWindow::statusBar()->addPermanentWidget(statusSep2);
|
QMainWindow::statusBar()->addPermanentWidget(statusSep2);
|
||||||
QMainWindow::statusBar()->addPermanentWidget(upSpeedLbl);
|
QMainWindow::statusBar()->addPermanentWidget(dlSpeedLbl);
|
||||||
QMainWindow::statusBar()->addPermanentWidget(statusSep3);
|
QMainWindow::statusBar()->addPermanentWidget(statusSep3);
|
||||||
|
QMainWindow::statusBar()->addPermanentWidget(upSpeedLbl);
|
||||||
|
QMainWindow::statusBar()->addPermanentWidget(statusSep4);
|
||||||
QMainWindow::statusBar()->addPermanentWidget(ratioLbl);
|
QMainWindow::statusBar()->addPermanentWidget(ratioLbl);
|
||||||
qDebug("GUI Built");
|
qDebug("GUI Built");
|
||||||
}
|
}
|
||||||
|
@ -242,6 +248,7 @@ GUI::~GUI() {
|
||||||
delete statusSep1;
|
delete statusSep1;
|
||||||
delete statusSep2;
|
delete statusSep2;
|
||||||
delete statusSep3;
|
delete statusSep3;
|
||||||
|
delete statusSep4;
|
||||||
if(rssWidget != 0)
|
if(rssWidget != 0)
|
||||||
delete rssWidget;
|
delete rssWidget;
|
||||||
delete searchEngine;
|
delete searchEngine;
|
||||||
|
@ -414,6 +421,8 @@ void GUI::createKeyboardShortcuts() {
|
||||||
actionStart_All->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+Shift+S")));
|
actionStart_All->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+Shift+S")));
|
||||||
actionPause->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+P")));
|
actionPause->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+P")));
|
||||||
actionPause_All->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+Shift+P")));
|
actionPause_All->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+Shift+P")));
|
||||||
|
actionDecreasePriority->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+-")));
|
||||||
|
actionIncreasePriority->setShortcut(QKeySequence(QString::fromUtf8("Ctrl++")));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Keyboard shortcuts slots
|
// Keyboard shortcuts slots
|
||||||
|
@ -927,6 +936,11 @@ void GUI::configureSession(bool deleteOptions) {
|
||||||
setWindowTitle(tr("qBittorrent %1", "e.g: qBittorrent v0.x").arg(QString::fromUtf8(VERSION)));
|
setWindowTitle(tr("qBittorrent %1", "e.g: qBittorrent v0.x").arg(QString::fromUtf8(VERSION)));
|
||||||
}
|
}
|
||||||
displaySpeedInTitle = new_displaySpeedInTitle;
|
displaySpeedInTitle = new_displaySpeedInTitle;
|
||||||
|
if(options->isToolbarDisplayed()) {
|
||||||
|
toolBar->setVisible(true);
|
||||||
|
} else {
|
||||||
|
toolBar->setVisible(false);
|
||||||
|
}
|
||||||
unsigned int new_refreshInterval = options->getRefreshInterval();
|
unsigned int new_refreshInterval = options->getRefreshInterval();
|
||||||
if(refreshInterval != new_refreshInterval) {
|
if(refreshInterval != new_refreshInterval) {
|
||||||
refreshInterval = new_refreshInterval;
|
refreshInterval = new_refreshInterval;
|
||||||
|
@ -1125,6 +1139,7 @@ void GUI::configureSession(bool deleteOptions) {
|
||||||
actionDecreasePriority->setVisible(true);
|
actionDecreasePriority->setVisible(true);
|
||||||
actionIncreasePriority->setVisible(true);
|
actionIncreasePriority->setVisible(true);
|
||||||
prioSeparator->setVisible(true);
|
prioSeparator->setVisible(true);
|
||||||
|
prioSeparator2->setVisible(true);
|
||||||
toolBar->layout()->setSpacing(7);
|
toolBar->layout()->setSpacing(7);
|
||||||
}
|
}
|
||||||
int max_torrents = options->getMaxActiveTorrents();
|
int max_torrents = options->getMaxActiveTorrents();
|
||||||
|
@ -1142,6 +1157,7 @@ void GUI::configureSession(bool deleteOptions) {
|
||||||
actionDecreasePriority->setVisible(false);
|
actionDecreasePriority->setVisible(false);
|
||||||
actionIncreasePriority->setVisible(false);
|
actionIncreasePriority->setVisible(false);
|
||||||
prioSeparator->setVisible(false);
|
prioSeparator->setVisible(false);
|
||||||
|
prioSeparator2->setVisible(false);
|
||||||
toolBar->layout()->setSpacing(7);
|
toolBar->layout()->setSpacing(7);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1464,15 +1480,8 @@ void GUI::checkConnectionStatus() {
|
||||||
connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/connected.png")));
|
connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/connected.png")));
|
||||||
connecStatusLblIcon->setToolTip(QString::fromUtf8("<b>")+tr("Connection Status:")+QString::fromUtf8("</b><br>")+tr("Online"));
|
connecStatusLblIcon->setToolTip(QString::fromUtf8("<b>")+tr("Connection Status:")+QString::fromUtf8("</b><br>")+tr("Online"));
|
||||||
}else{
|
}else{
|
||||||
if(sessionStatus.num_peers) {
|
connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/firewalled.png")));
|
||||||
// Firewalled ?
|
connecStatusLblIcon->setToolTip(QString::fromUtf8("<b>")+tr("Connection status:")+QString::fromUtf8("</b><br>")+QString::fromUtf8("<i>")+tr("No direct connections. This may indicate network configuration problems.")+QString::fromUtf8("</i>"));
|
||||||
connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/firewalled.png")));
|
|
||||||
connecStatusLblIcon->setToolTip("<b>"+tr("Connection Status:")+QString::fromUtf8("</b><br>")+tr("Firewalled?", "i.e: Behind a firewall/router?")+QString::fromUtf8("<br><i>")+tr("No incoming connections...")+QString::fromUtf8("</i>"));
|
|
||||||
}else{
|
|
||||||
// Disconnected
|
|
||||||
connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/disconnected.png")));
|
|
||||||
connecStatusLblIcon->setToolTip(QString::fromUtf8("<b>")+tr("Connection status:")+QString::fromUtf8("</b><br>")+tr("Offline")+QString::fromUtf8("<br><i>")+tr("No peers found...")+QString::fromUtf8("</i>"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -83,6 +83,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{
|
||||||
QFrame *statusSep1;
|
QFrame *statusSep1;
|
||||||
QFrame *statusSep2;
|
QFrame *statusSep2;
|
||||||
QFrame *statusSep3;
|
QFrame *statusSep3;
|
||||||
|
QFrame *statusSep4;
|
||||||
// Keyboard shortcuts
|
// Keyboard shortcuts
|
||||||
QShortcut *switchSearchShortcut;
|
QShortcut *switchSearchShortcut;
|
||||||
QShortcut *switchSearchShortcut2;
|
QShortcut *switchSearchShortcut2;
|
||||||
|
@ -90,6 +91,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{
|
||||||
QShortcut *switchUpShortcut;
|
QShortcut *switchUpShortcut;
|
||||||
QShortcut *switchRSSShortcut;
|
QShortcut *switchRSSShortcut;
|
||||||
QAction *prioSeparator;
|
QAction *prioSeparator;
|
||||||
|
QAction *prioSeparator2;
|
||||||
// Search
|
// Search
|
||||||
SearchEngine *searchEngine;
|
SearchEngine *searchEngine;
|
||||||
// RSS
|
// RSS
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 1.4 KiB |
Binary file not shown.
Before Width: | Height: | Size: 2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 1.5 KiB |
|
@ -41,6 +41,8 @@
|
||||||
<addaction name="separator" />
|
<addaction name="separator" />
|
||||||
<addaction name="actionDelete" />
|
<addaction name="actionDelete" />
|
||||||
<addaction name="actionDelete_Permanently" />
|
<addaction name="actionDelete_Permanently" />
|
||||||
|
<addaction name="actionDecreasePriority" />
|
||||||
|
<addaction name="actionIncreasePriority" />
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QMenu" name="menu_Help" >
|
<widget class="QMenu" name="menu_Help" >
|
||||||
<property name="title" >
|
<property name="title" >
|
||||||
|
|
|
@ -464,8 +464,10 @@ void bittorrent::updateUploadQueue() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(change)
|
if(change) {
|
||||||
emit updateFinishedTorrentNumber();
|
emit updateFinishedTorrentNumber();
|
||||||
|
emit forceFinishedListUpdate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void bittorrent::updateDownloadQueue() {
|
void bittorrent::updateDownloadQueue() {
|
||||||
|
@ -520,8 +522,10 @@ void bittorrent::updateDownloadQueue() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(change)
|
if(change) {
|
||||||
emit updateUnfinishedTorrentNumber();
|
emit updateUnfinishedTorrentNumber();
|
||||||
|
emit forceUnfinishedListUpdate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate the ETA using GASA
|
// Calculate the ETA using GASA
|
||||||
|
|
|
@ -212,6 +212,8 @@ class bittorrent : public QObject{
|
||||||
void UPnPSuccess(QString msg);
|
void UPnPSuccess(QString msg);
|
||||||
void updateFinishedTorrentNumber();
|
void updateFinishedTorrentNumber();
|
||||||
void updateUnfinishedTorrentNumber();
|
void updateUnfinishedTorrentNumber();
|
||||||
|
void forceUnfinishedListUpdate();
|
||||||
|
void forceFinishedListUpdate();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -18,7 +18,16 @@
|
||||||
<property name="spacing" >
|
<property name="spacing" >
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="margin" >
|
<property name="leftMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin" >
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin" >
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
|
@ -63,14 +72,6 @@
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="log_tab" >
|
<widget class="QWidget" name="log_tab" >
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>765</width>
|
|
||||||
<height>138</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<attribute name="title" >
|
<attribute name="title" >
|
||||||
<string>Log</string>
|
<string>Log</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
|
@ -78,7 +79,16 @@
|
||||||
<property name="spacing" >
|
<property name="spacing" >
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="margin" >
|
<property name="leftMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin" >
|
||||||
<number>9</number>
|
<number>9</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
|
@ -103,14 +113,6 @@
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="filter_tab" >
|
<widget class="QWidget" name="filter_tab" >
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>765</width>
|
|
||||||
<height>138</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<attribute name="title" >
|
<attribute name="title" >
|
||||||
<string>IP filter</string>
|
<string>IP filter</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
|
@ -118,7 +120,16 @@
|
||||||
<property name="spacing" >
|
<property name="spacing" >
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="margin" >
|
<property name="leftMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin" >
|
||||||
|
<number>9</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin" >
|
||||||
<number>9</number>
|
<number>9</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
|
@ -183,8 +194,7 @@
|
||||||
</action>
|
</action>
|
||||||
<action name="actionOpen_destination_folder" >
|
<action name="actionOpen_destination_folder" >
|
||||||
<property name="icon" >
|
<property name="icon" >
|
||||||
<iconset resource="icons.qrc" >
|
<iconset resource="icons.qrc" >:/Icons/folder.png</iconset>
|
||||||
<normaloff>:/Icons/folder.png</normaloff>:/Icons/folder.png</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>Open destination folder</string>
|
<string>Open destination folder</string>
|
||||||
|
@ -232,8 +242,7 @@
|
||||||
</action>
|
</action>
|
||||||
<action name="actionBuy_it" >
|
<action name="actionBuy_it" >
|
||||||
<property name="icon" >
|
<property name="icon" >
|
||||||
<iconset resource="icons.qrc" >
|
<iconset resource="icons.qrc" >:/Icons/money.png</iconset>
|
||||||
<normaloff>:/Icons/money.png</normaloff>:/Icons/money.png</iconset>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
<string>Buy it</string>
|
<string>Buy it</string>
|
||||||
|
@ -244,8 +253,22 @@
|
||||||
<string>Priority</string>
|
<string>Priority</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<zorder>tabBottom</zorder>
|
<action name="actionIncreasePriority" >
|
||||||
<zorder></zorder>
|
<property name="icon" >
|
||||||
|
<iconset resource="icons.qrc" >:/Icons/skin/increase.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Increase priority</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="actionDecreasePriority" >
|
||||||
|
<property name="icon" >
|
||||||
|
<iconset resource="icons.qrc" >:/Icons/skin/decrease.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Decrease priority</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="icons.qrc" />
|
<include location="icons.qrc" />
|
||||||
|
|
|
@ -78,6 +78,7 @@ DownloadingTorrents::DownloadingTorrents(QObject *parent, bittorrent *BTSession)
|
||||||
connect(BTSession, SIGNAL(urlSeedProblem(QString, QString)), this, SLOT(addUrlSeedError(QString, QString)));
|
connect(BTSession, SIGNAL(urlSeedProblem(QString, QString)), this, SLOT(addUrlSeedError(QString, QString)));
|
||||||
connect(BTSession, SIGNAL(UPnPError(QString)), this, SLOT(displayUPnPError(QString)));
|
connect(BTSession, SIGNAL(UPnPError(QString)), this, SLOT(displayUPnPError(QString)));
|
||||||
connect(BTSession, SIGNAL(UPnPSuccess(QString)), this, SLOT(displayUPnPSuccess(QString)));
|
connect(BTSession, SIGNAL(UPnPSuccess(QString)), this, SLOT(displayUPnPSuccess(QString)));
|
||||||
|
connect(BTSession, SIGNAL(forceUnfinishedListUpdate()), this, SLOT(updateDlList()));
|
||||||
|
|
||||||
// Load last columns width for download list
|
// Load last columns width for download list
|
||||||
if(!loadColWidthDLList()) {
|
if(!loadColWidthDLList()) {
|
||||||
|
@ -97,6 +98,8 @@ DownloadingTorrents::DownloadingTorrents(QObject *parent, bittorrent *BTSession)
|
||||||
connect(actionPause, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionPause_triggered()));
|
connect(actionPause, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionPause_triggered()));
|
||||||
connect(actionStart, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionStart_triggered()));
|
connect(actionStart, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionStart_triggered()));
|
||||||
connect(actionDelete, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDelete_triggered()));
|
connect(actionDelete, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDelete_triggered()));
|
||||||
|
connect(actionIncreasePriority, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionIncreasePriority_triggered()));
|
||||||
|
connect(actionDecreasePriority, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDecreasePriority_triggered()));
|
||||||
connect(actionPreview_file, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionPreview_file_triggered()));
|
connect(actionPreview_file, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionPreview_file_triggered()));
|
||||||
connect(actionDelete_Permanently, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDelete_Permanently_triggered()));
|
connect(actionDelete_Permanently, SIGNAL(triggered()), (GUI*)parent, SLOT(on_actionDelete_Permanently_triggered()));
|
||||||
connect(actionOpen_destination_folder, SIGNAL(triggered()), (GUI*)parent, SLOT(openDestinationFolder()));
|
connect(actionOpen_destination_folder, SIGNAL(triggered()), (GUI*)parent, SLOT(openDestinationFolder()));
|
||||||
|
@ -318,6 +321,11 @@ void DownloadingTorrents::displayDLListMenu(const QPoint& pos) {
|
||||||
myDLLlistMenu.addSeparator();
|
myDLLlistMenu.addSeparator();
|
||||||
myDLLlistMenu.addAction(actionOpen_destination_folder);
|
myDLLlistMenu.addAction(actionOpen_destination_folder);
|
||||||
myDLLlistMenu.addAction(actionTorrent_Properties);
|
myDLLlistMenu.addAction(actionTorrent_Properties);
|
||||||
|
if(BTSession->isQueueingEnabled()) {
|
||||||
|
myDLLlistMenu.addSeparator();
|
||||||
|
myDLLlistMenu.addAction(actionIncreasePriority);
|
||||||
|
myDLLlistMenu.addAction(actionDecreasePriority);
|
||||||
|
}
|
||||||
myDLLlistMenu.addSeparator();
|
myDLLlistMenu.addSeparator();
|
||||||
myDLLlistMenu.addAction(actionBuy_it);
|
myDLLlistMenu.addAction(actionBuy_it);
|
||||||
// Call menu
|
// Call menu
|
||||||
|
@ -669,6 +677,7 @@ void DownloadingTorrents::addTorrent(QString hash) {
|
||||||
}
|
}
|
||||||
QTorrentHandle h = BTSession->getTorrentHandle(hash);
|
QTorrentHandle h = BTSession->getTorrentHandle(hash);
|
||||||
int row = getRowFromHash(hash);
|
int row = getRowFromHash(hash);
|
||||||
|
qDebug("DL: addTorrent(): %s, row: %d", (const char*)hash.toUtf8(), row);
|
||||||
if(row != -1) return;
|
if(row != -1) return;
|
||||||
row = DLListModel->rowCount();
|
row = DLListModel->rowCount();
|
||||||
// Adding torrent to download list
|
// Adding torrent to download list
|
||||||
|
@ -856,6 +865,7 @@ void DownloadingTorrents::torrentAdded(QString path, QTorrentHandle& h, bool fas
|
||||||
if(BTSession->isFinished(hash)) {
|
if(BTSession->isFinished(hash)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if(getRowFromHash(hash) != -1) return;
|
||||||
int row = DLListModel->rowCount();
|
int row = DLListModel->rowCount();
|
||||||
// Adding torrent to download list
|
// Adding torrent to download list
|
||||||
DLListModel->insertRow(row);
|
DLListModel->insertRow(row);
|
||||||
|
|
|
@ -20,11 +20,12 @@
|
||||||
|
|
||||||
|
|
||||||
#include "eventmanager.h"
|
#include "eventmanager.h"
|
||||||
|
#include "bittorrent.h"
|
||||||
#include "json.h"
|
#include "json.h"
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
EventManager::EventManager(QObject *parent)
|
EventManager::EventManager(QObject *parent, bittorrent *BTSession)
|
||||||
: QObject(parent)
|
: QObject(parent), BTSession(BTSession)
|
||||||
{
|
{
|
||||||
revision = 0;
|
revision = 0;
|
||||||
}
|
}
|
||||||
|
@ -99,10 +100,12 @@ void EventManager::modifiedTorrent(QTorrentHandle h)
|
||||||
QVariantMap event;
|
QVariantMap event;
|
||||||
QVariant v;
|
QVariant v;
|
||||||
|
|
||||||
if(h.is_paused())
|
if(h.is_paused()) {
|
||||||
v = QVariant("paused");
|
if(BTSession->isDownloadQueued(hash) || BTSession->isUploadQueued(hash))
|
||||||
else
|
v = QVariant("queued");
|
||||||
{
|
else
|
||||||
|
v = QVariant("paused");
|
||||||
|
} else {
|
||||||
switch(h.state())
|
switch(h.state())
|
||||||
{
|
{
|
||||||
case torrent_status::finished:
|
case torrent_status::finished:
|
||||||
|
|
|
@ -27,6 +27,8 @@
|
||||||
#include <QPair>
|
#include <QPair>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
|
|
||||||
|
struct bittorrent;
|
||||||
|
|
||||||
class EventManager : public QObject
|
class EventManager : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -34,12 +36,13 @@ class EventManager : public QObject
|
||||||
ulong revision;
|
ulong revision;
|
||||||
QLinkedList<QPair <ulong, QVariantMap> > events;
|
QLinkedList<QPair <ulong, QVariantMap> > events;
|
||||||
bool modify(QString hash, QString key, QVariant value);
|
bool modify(QString hash, QString key, QVariant value);
|
||||||
|
bittorrent* BTSession;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void update(QVariantMap event);
|
void update(QVariantMap event);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
EventManager(QObject *parent = 0);
|
EventManager(QObject *parent, bittorrent* BTSession);
|
||||||
QVariant querySince(ulong r) const;
|
QVariant querySince(ulong r) const;
|
||||||
bool isUpdated(ulong r) const;
|
bool isUpdated(ulong r) const;
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ HttpServer::HttpServer(bittorrent *BTSession, int msec, QObject* parent) : QTcpS
|
||||||
base64 = QByteArray(":").toBase64();
|
base64 = QByteArray(":").toBase64();
|
||||||
connect(this, SIGNAL(newConnection()), this, SLOT(newHttpConnection()));
|
connect(this, SIGNAL(newConnection()), this, SLOT(newHttpConnection()));
|
||||||
HttpServer::BTSession = BTSession;
|
HttpServer::BTSession = BTSession;
|
||||||
manager = new EventManager(this);
|
manager = new EventManager(this, BTSession);
|
||||||
//add torrents
|
//add torrents
|
||||||
QStringList list = BTSession->getUnfinishedTorrents() + BTSession->getFinishedTorrents();
|
QStringList list = BTSession->getUnfinishedTorrents() + BTSession->getFinishedTorrents();
|
||||||
QString hash;
|
QString hash;
|
||||||
|
|
|
@ -79,7 +79,6 @@
|
||||||
<file>Icons/skin/delete.png</file>
|
<file>Icons/skin/delete.png</file>
|
||||||
<file>Icons/skin/delete_all.png</file>
|
<file>Icons/skin/delete_all.png</file>
|
||||||
<file>Icons/skin/delete_perm.png</file>
|
<file>Icons/skin/delete_perm.png</file>
|
||||||
<file>Icons/skin/disconnected.png</file>
|
|
||||||
<file>Icons/skin/downloading.png</file>
|
<file>Icons/skin/downloading.png</file>
|
||||||
<file>Icons/skin/exit.png</file>
|
<file>Icons/skin/exit.png</file>
|
||||||
<file>Icons/skin/firewalled.png</file>
|
<file>Icons/skin/firewalled.png</file>
|
||||||
|
|
|
@ -209,6 +209,13 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="checkDisplayToolbar" >
|
||||||
|
<property name="text" >
|
||||||
|
<string>Display top toolbar</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QCheckBox" name="checkSpeedInTitle" >
|
<widget class="QCheckBox" name="checkSpeedInTitle" >
|
||||||
<property name="text" >
|
<property name="text" >
|
||||||
|
|
|
@ -159,6 +159,7 @@ options_imp::options_imp(QWidget *parent):QDialog(parent){
|
||||||
connect(checkMinimizeToSysTray, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
connect(checkMinimizeToSysTray, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
connect(checkStartMinimized, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
connect(checkStartMinimized, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
connect(checkSystrayBalloons, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
connect(checkSystrayBalloons, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
|
connect(checkDisplayToolbar, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
// Downloads tab
|
// Downloads tab
|
||||||
connect(textSavePath, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton()));
|
connect(textSavePath, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton()));
|
||||||
connect(checkPreallocateAll, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
connect(checkPreallocateAll, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
|
||||||
|
@ -278,6 +279,7 @@ void options_imp::saveOptions(){
|
||||||
settings.setValue(QString::fromUtf8("MinimizeToTray"), minimizeToTray());
|
settings.setValue(QString::fromUtf8("MinimizeToTray"), minimizeToTray());
|
||||||
settings.setValue(QString::fromUtf8("StartMinimized"), startMinimized());
|
settings.setValue(QString::fromUtf8("StartMinimized"), startMinimized());
|
||||||
settings.setValue(QString::fromUtf8("NotificationBaloons"), OSDEnabled());
|
settings.setValue(QString::fromUtf8("NotificationBaloons"), OSDEnabled());
|
||||||
|
settings.setValue(QString::fromUtf8("ToolbarDisplayed"), isToolbarDisplayed());
|
||||||
// End General preferences
|
// End General preferences
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
// Downloads preferences
|
// Downloads preferences
|
||||||
|
@ -440,6 +442,7 @@ void options_imp::loadOptions(){
|
||||||
checkSpeedInTitle->setChecked(settings.value(QString::fromUtf8("SpeedInTitleBar"), false).toBool());
|
checkSpeedInTitle->setChecked(settings.value(QString::fromUtf8("SpeedInTitleBar"), false).toBool());
|
||||||
spinRefreshInterval->setValue(settings.value(QString::fromUtf8("RefreshInterval"), 1500).toInt());
|
spinRefreshInterval->setValue(settings.value(QString::fromUtf8("RefreshInterval"), 1500).toInt());
|
||||||
checkNoSystray->setChecked(!settings.value(QString::fromUtf8("SystrayEnabled"), true).toBool());
|
checkNoSystray->setChecked(!settings.value(QString::fromUtf8("SystrayEnabled"), true).toBool());
|
||||||
|
checkDisplayToolbar->setChecked(settings.value(QString::fromUtf8("ToolbarDisplayed"), false).toBool());
|
||||||
if(!systrayIntegration()) {
|
if(!systrayIntegration()) {
|
||||||
disableSystrayOptions();
|
disableSystrayOptions();
|
||||||
} else {
|
} else {
|
||||||
|
@ -1149,6 +1152,10 @@ QString options_imp::getFilter() const{
|
||||||
return textFilterPath->text();
|
return textFilterPath->text();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool options_imp::isToolbarDisplayed() const {
|
||||||
|
return checkDisplayToolbar->isChecked();
|
||||||
|
}
|
||||||
|
|
||||||
// Web UI
|
// Web UI
|
||||||
|
|
||||||
void options_imp::enableWebUi(bool checkBoxValue){
|
void options_imp::enableWebUi(bool checkBoxValue){
|
||||||
|
|
|
@ -66,6 +66,7 @@ class options_imp : public QDialog, private Ui::Dialog {
|
||||||
bool closeToTray() const;
|
bool closeToTray() const;
|
||||||
bool startMinimized() const;
|
bool startMinimized() const;
|
||||||
bool OSDEnabled() const;
|
bool OSDEnabled() const;
|
||||||
|
bool isToolbarDisplayed() const;
|
||||||
// Downloads
|
// Downloads
|
||||||
QString getSavePath() const;
|
QString getSavePath() const;
|
||||||
bool preAllocateAllFiles() const;
|
bool preAllocateAllFiles() const;
|
||||||
|
|
|
@ -139,6 +139,22 @@
|
||||||
<string>Priority</string>
|
<string>Priority</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="actionIncreasePriority" >
|
||||||
|
<property name="icon" >
|
||||||
|
<iconset resource="icons.qrc" >:/Icons/skin/increase.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Increase priority</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="actionDecreasePriority" >
|
||||||
|
<property name="icon" >
|
||||||
|
<iconset resource="icons.qrc" >:/Icons/skin/decrease.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Decrease priority</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="icons.qrc" />
|
<include location="icons.qrc" />
|
||||||
|
|
|
@ -11,7 +11,7 @@ TARGET = qbittorrent
|
||||||
CONFIG += qt thread x11 network
|
CONFIG += qt thread x11 network
|
||||||
|
|
||||||
# Update this VERSION for each release
|
# Update this VERSION for each release
|
||||||
DEFINES += VERSION=\\\"v1.2.0beta2\\\"
|
DEFINES += VERSION=\\\"v1.2.0beta3\\\"
|
||||||
DEFINES += VERSION_MAJOR=1
|
DEFINES += VERSION_MAJOR=1
|
||||||
DEFINES += VERSION_MINOR=2
|
DEFINES += VERSION_MINOR=2
|
||||||
DEFINES += VERSION_BUGFIX=0
|
DEFINES += VERSION_BUGFIX=0
|
||||||
|
|
|
@ -79,6 +79,9 @@ window.addEvent('domready', function(){
|
||||||
case 'stalled':
|
case 'stalled':
|
||||||
row[0] = '<img src="images/skin/stalled.png"/>';
|
row[0] = '<img src="images/skin/stalled.png"/>';
|
||||||
break;
|
break;
|
||||||
|
case 'queued':
|
||||||
|
row[0] = '<img src="images/skin/queued.png"/>';
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if($defined(event.size)){
|
if($defined(event.size)){
|
||||||
|
|
Loading…
Reference in a new issue