diff --git a/src/GUI.cpp b/src/GUI.cpp index 1472f5a1f..c48deb4f3 100644 --- a/src/GUI.cpp +++ b/src/GUI.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -138,16 +139,18 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis qDebug("create tabWidget"); tabs = new QTabWidget(); vSplitter = new QSplitter(Qt::Horizontal); - hSplitter = new QSplitter(Qt::Vertical, vSplitter); + rightPanel = new QWidget(vSplitter); + hSplitter = new QVBoxLayout(vSplitter); + rightPanel->setLayout(hSplitter); // Transfer List tab - transferList = new TransferListWidget(hSplitter, BTSession); - properties = new PropertiesWidget(hSplitter, transferList, BTSession); + transferList = new TransferListWidget(rightPanel, BTSession); + properties = new PropertiesWidget(rightPanel, transferList, BTSession); transferListFilters = new TransferListFiltersWidget(vSplitter, transferList); hSplitter->addWidget(transferList); hSplitter->addWidget(properties); vSplitter->addWidget(transferListFilters); - vSplitter->addWidget(hSplitter); + vSplitter->addWidget(rightPanel); tabs->addTab(vSplitter, QIcon(QString::fromUtf8(":/Icons/oxygen/folder-remote.png")), tr("Transfers")); vboxLayout->addWidget(tabs); @@ -280,6 +283,7 @@ GUI::~GUI() { delete transferList; delete properties; delete hSplitter; + delete rightPanel; delete vSplitter; delete checkConnect; qDebug("1"); diff --git a/src/GUI.h b/src/GUI.h index effe8dfc6..6785fbf04 100644 --- a/src/GUI.h +++ b/src/GUI.h @@ -59,6 +59,7 @@ class TransferListWidget; class TransferListFiltersWidget; class QSplitter; class PropertiesWidget; +class QVBoxLayout; class GUI : public QMainWindow, private Ui::MainWindow{ Q_OBJECT @@ -78,8 +79,9 @@ class GUI : public QMainWindow, private Ui::MainWindow{ TransferListWidget *transferList; TransferListFiltersWidget *transferListFilters; PropertiesWidget *properties; + QVBoxLayout *hSplitter; + QWidget *rightPanel; QSplitter *vSplitter; - QSplitter *hSplitter; QLabel *connecStatusLblIcon; bool systrayIntegration; bool displaySpeedInTitle; diff --git a/src/propertiesWidget.ui b/src/propertiesWidget.ui index 79fa11913..8391d966f 100644 --- a/src/propertiesWidget.ui +++ b/src/propertiesWidget.ui @@ -7,9 +7,21 @@ 0 0 756 - 300 + 291 + + + 0 + 0 + + + + + 16777215 + 333 + + Form @@ -27,6 +39,7 @@ + 8 75 true @@ -49,6 +62,7 @@ + 8 50 false @@ -62,6 +76,7 @@ + 8 50 false @@ -75,6 +90,7 @@ + 8 50 false @@ -88,6 +104,7 @@ + 8 50 false @@ -221,8 +238,7 @@ - Sans Serif - 9 + 8 75 false true @@ -260,8 +276,6 @@ - Sans Serif - 9 50 false false @@ -278,8 +292,6 @@ - Sans Serif - 9 50 false false @@ -296,13 +308,8 @@ - Sans Serif - 9 50 - false false - false - false @@ -314,8 +321,6 @@ - Sans Serif - 9 50 false false @@ -422,6 +427,7 @@ + 8 75 true @@ -435,8 +441,7 @@ - Sans Serif - 9 + 8 50 false false @@ -465,8 +470,7 @@ - Sans Serif - 9 + 8 50 false false @@ -686,8 +690,7 @@ - Sans Serif - 9 + 8 50 false false diff --git a/src/propertieswidget.cpp b/src/propertieswidget.cpp index a153378bb..31b43e39f 100644 --- a/src/propertieswidget.cpp +++ b/src/propertieswidget.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include "propertieswidget.h" #include "TransferListWidget.h" #include "torrentPersistentData.h" @@ -44,8 +45,12 @@ PropertiesWidget::PropertiesWidget(QWidget *parent, TransferListWidget *transferList, bittorrent* BTSession): QWidget(parent), transferList(transferList), BTSession(BTSession) { setupUi(this); + state = VISIBLE; + reduce(); + connect(transferList, SIGNAL(currentTorrentChanged(QTorrentHandle&)), this, SLOT(loadTorrentInfos(QTorrentHandle &))); connect(incrementalDownload, SIGNAL(stateChanged(int)), this, SLOT(setIncrementalDownload(int))); + // Downloaded pieces progress bar progressBar = new RealProgressBar(this); progressBar->setForegroundColor(Qt::blue); @@ -66,6 +71,20 @@ PropertiesWidget::~PropertiesWidget() { delete progressBarVbox; } +void PropertiesWidget::reduce() { + if(state == VISIBLE) { + stackedProperties->setFixedHeight(0); + state = REDUCED; + } +} + +void PropertiesWidget::slide() { + if(state == REDUCED) { + stackedProperties->setFixedHeight(232); + state = VISIBLE; + } +} + void PropertiesWidget::loadTorrentInfos(QTorrentHandle &_h) { h = _h; if(!h.is_valid()) return; @@ -181,25 +200,45 @@ QPushButton* PropertiesWidget::getButtonFromIndex(int index) { } void PropertiesWidget::on_main_infos_button_clicked() { - getButtonFromIndex(stackedProperties->currentIndex())->setStyleSheet(DEFAULT_BUTTON_CSS); - stackedProperties->setCurrentIndex(MAIN_TAB); - main_infos_button->setStyleSheet(SELECTED_BUTTON_CSS); + if(state == VISIBLE && stackedProperties->currentIndex() == MAIN_TAB) { + reduce(); + } else { + slide(); + getButtonFromIndex(stackedProperties->currentIndex())->setStyleSheet(DEFAULT_BUTTON_CSS); + stackedProperties->setCurrentIndex(MAIN_TAB); + main_infos_button->setStyleSheet(SELECTED_BUTTON_CSS); + } } void PropertiesWidget::on_trackers_button_clicked() { - getButtonFromIndex(stackedProperties->currentIndex())->setStyleSheet(DEFAULT_BUTTON_CSS); - stackedProperties->setCurrentIndex(TRACKERS_TAB); - trackers_button->setStyleSheet(SELECTED_BUTTON_CSS); + if(state == VISIBLE && stackedProperties->currentIndex() == TRACKERS_TAB) { + reduce(); + } else { + slide(); + getButtonFromIndex(stackedProperties->currentIndex())->setStyleSheet(DEFAULT_BUTTON_CSS); + stackedProperties->setCurrentIndex(TRACKERS_TAB); + trackers_button->setStyleSheet(SELECTED_BUTTON_CSS); + } } void PropertiesWidget::on_url_seeds_button_clicked() { - getButtonFromIndex(stackedProperties->currentIndex())->setStyleSheet(DEFAULT_BUTTON_CSS); - stackedProperties->setCurrentIndex(URLSEEDS_TAB); - url_seeds_button->setStyleSheet(SELECTED_BUTTON_CSS); + if(state == VISIBLE && stackedProperties->currentIndex() == URLSEEDS_TAB) { + reduce(); + } else { + slide(); + getButtonFromIndex(stackedProperties->currentIndex())->setStyleSheet(DEFAULT_BUTTON_CSS); + stackedProperties->setCurrentIndex(URLSEEDS_TAB); + url_seeds_button->setStyleSheet(SELECTED_BUTTON_CSS); + } } void PropertiesWidget::on_files_button_clicked() { - getButtonFromIndex(stackedProperties->currentIndex())->setStyleSheet(DEFAULT_BUTTON_CSS); - stackedProperties->setCurrentIndex(FILES_TAB); - files_button->setStyleSheet(SELECTED_BUTTON_CSS); + if(state == VISIBLE && stackedProperties->currentIndex() == FILES_TAB) { + reduce(); + } else { + slide(); + getButtonFromIndex(stackedProperties->currentIndex())->setStyleSheet(DEFAULT_BUTTON_CSS); + stackedProperties->setCurrentIndex(FILES_TAB); + files_button->setStyleSheet(SELECTED_BUTTON_CSS); + } } diff --git a/src/propertieswidget.h b/src/propertieswidget.h index efd7d60a0..1fdd8006d 100644 --- a/src/propertieswidget.h +++ b/src/propertieswidget.h @@ -43,6 +43,7 @@ class RealProgressBarThread; class bittorrent; enum Tab {MAIN_TAB, TRACKERS_TAB, URLSEEDS_TAB, FILES_TAB}; +enum SlideState {REDUCED, VISIBLE}; class PropertiesWidget : public QWidget, private Ui::PropertiesWidget { Q_OBJECT @@ -55,6 +56,7 @@ private: RealProgressBarThread *progressBarUpdater; QVBoxLayout *progressBarVbox; bittorrent* BTSession; + SlideState state; protected: QPushButton* getButtonFromIndex(int index); @@ -69,6 +71,10 @@ protected slots: void on_url_seeds_button_clicked(); void on_files_button_clicked(); +public slots: + void reduce(); + void slide(); + public: PropertiesWidget(QWidget *parent, TransferListWidget *transferList, bittorrent* BTSession); ~PropertiesWidget();