diff options
Diffstat (limited to 'Swift/QtUI/QtFileTransferListWidget.cpp')
-rw-r--r-- | Swift/QtUI/QtFileTransferListWidget.cpp | 108 |
1 files changed, 71 insertions, 37 deletions
diff --git a/Swift/QtUI/QtFileTransferListWidget.cpp b/Swift/QtUI/QtFileTransferListWidget.cpp index 01c632f..8b855b0 100644 --- a/Swift/QtUI/QtFileTransferListWidget.cpp +++ b/Swift/QtUI/QtFileTransferListWidget.cpp @@ -4,74 +4,108 @@ * See Documentation/Licenses/BSD-simplified.txt for more information. */ -#include "QtFileTransferListWidget.h" +/* + * Copyright (c) 2015-2016 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. + */ -#include <Swift/QtUI/QtFileTransferListItemModel.h> +#include <Swift/QtUI/QtFileTransferListWidget.h> + +#include <boost/bind.hpp> -#include <QVBoxLayout> #include <QHBoxLayout> -#include <QWidget> #include <QPushButton> +#include <QVBoxLayout> +#include <QWidget> + +#include <Swift/Controllers/FileTransfer/FileTransferOverview.h> + +#include <Swift/QtUI/QtFileTransferListItemModel.h> namespace Swift { -QtFileTransferListWidget::QtFileTransferListWidget() : fileTransferOverview(0) { - QVBoxLayout* layout = new QVBoxLayout(this); - layout->setSpacing(0); - layout->setContentsMargins(0,0,0,0); +QtFileTransferListWidget::QtFileTransferListWidget() : fileTransferOverview(nullptr) { + QVBoxLayout* layout = new QVBoxLayout(this); + layout->setSpacing(0); + layout->setContentsMargins(0,0,0,0); - treeView = new QTreeView(this); - treeView->setRootIsDecorated(false); - treeView->setItemsExpandable(false); - layout->addWidget(treeView); + treeView = new QTreeView(this); + treeView->setRootIsDecorated(false); + treeView->setItemsExpandable(false); + layout->addWidget(treeView); - itemModel = new QtFileTransferListItemModel(); - treeView->setModel(itemModel); + itemModel = new QtFileTransferListItemModel(); + treeView->setModel(itemModel); - QWidget* bottom = new QWidget(this); - layout->addWidget(bottom); - bottom->setAutoFillBackground(true); + QWidget* bottom = new QWidget(this); + layout->addWidget(bottom); + bottom->setAutoFillBackground(true); - QHBoxLayout* buttonLayout = new QHBoxLayout(bottom); - buttonLayout->setContentsMargins(10,0,20,0); - buttonLayout->setSpacing(0); + QHBoxLayout* buttonLayout = new QHBoxLayout(bottom); + buttonLayout->setContentsMargins(10,0,20,0); + buttonLayout->setSpacing(0); - QPushButton* clearFinished = new QPushButton(tr("Clear Finished Transfers"), bottom); - clearFinished->setEnabled(false); - //connect(clearButton, SIGNAL(clicked()), textEdit, SLOT(clear())); - buttonLayout->addWidget(clearFinished); + clearFinished = new QPushButton(tr("Clear all"), bottom); + clearFinished->setEnabled(false); + connect(clearFinished, SIGNAL(clicked()), this, SLOT(clearInactiveTransfers())); + buttonLayout->addWidget(clearFinished); - setWindowTitle(tr("File Transfer List")); - emit titleUpdated(); + setWindowTitle(tr("File Transfer List")); + emit titleUpdated(); } QtFileTransferListWidget::~QtFileTransferListWidget() { - delete itemModel; + if (fileTransferOverview) { + fileTransferOverview->onFileTransferListChanged.disconnect(boost::bind(&QtFileTransferListWidget::handleFileTransferListChanged, this)); + fileTransferOverview = nullptr; + } + delete itemModel; } void QtFileTransferListWidget::showEvent(QShowEvent* event) { - emit windowOpening(); - emit titleUpdated(); /* This just needs to be somewhere after construction */ - QWidget::showEvent(event); + emit windowOpening(); + emit titleUpdated(); /* This just needs to be somewhere after construction */ + QWidget::showEvent(event); +} + +void QtFileTransferListWidget::handleFileTransferListChanged() { + clearFinished->setEnabled(fileTransferOverview->isClearable()); +} + +void QtFileTransferListWidget::clearInactiveTransfers() { + fileTransferOverview->clearFinished(); } void QtFileTransferListWidget::show() { - QWidget::show(); - emit windowOpening(); + QWidget::show(); + emit windowOpening(); } void QtFileTransferListWidget::activate() { - emit wantsToActivate(); + emit wantsToActivate(); } void QtFileTransferListWidget::setFileTransferOverview(FileTransferOverview *overview) { - fileTransferOverview = overview; - itemModel->setFileTransferOverview(overview); + if (fileTransferOverview) { + fileTransferOverview->onFileTransferListChanged.disconnect(boost::bind(&QtFileTransferListWidget::handleFileTransferListChanged, this)); + fileTransferOverview = nullptr; + } + if (overview) { + fileTransferOverview = overview; + fileTransferOverview->onFileTransferListChanged.connect(boost::bind(&QtFileTransferListWidget::handleFileTransferListChanged, this)); + clearFinished->setEnabled(fileTransferOverview->isClearable()); + } + itemModel->setFileTransferOverview(overview); +} + +std::string QtFileTransferListWidget::getID() const { + return "QtFileTransferListWidget"; } void QtFileTransferListWidget::closeEvent(QCloseEvent* event) { - emit windowClosing(); - event->accept(); + emit windowClosing(); + event->accept(); } } |