summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2015-06-17 20:40:41 (GMT)
committerTobias Markmann <tm@ayena.de>2015-07-10 14:56:43 (GMT)
commitb54aa689ffc6bec7987c193e28c641d2f0f73236 (patch)
treead9984fc3f9633e21fe0ff5ef8728f6d420ca07f /Swift/QtUI
parent7af21fdd59af3b3112cff69996301605859af84c (diff)
downloadswift-b54aa689ffc6bec7987c193e28c641d2f0f73236.zip
swift-b54aa689ffc6bec7987c193e28c641d2f0f73236.tar.bz2
Implement logic behind 'Clear all' button
The 'Clear all' button in the file transfer overview window was only present in the UI, without any logic behind. That's fixed now. Test-Information: Send a file in between two Swift instances. Verified that the button is enabled/disabled at appropriate times and works as expected if pressed. Change-Id: Ib92621cba479683ade8d815ce5ace9768449a499
Diffstat (limited to 'Swift/QtUI')
-rw-r--r--Swift/QtUI/QtFileTransferListItemModel.cpp39
-rw-r--r--Swift/QtUI/QtFileTransferListItemModel.h8
-rw-r--r--Swift/QtUI/QtFileTransferListWidget.cpp44
-rw-r--r--Swift/QtUI/QtFileTransferListWidget.h20
4 files changed, 95 insertions, 16 deletions
diff --git a/Swift/QtUI/QtFileTransferListItemModel.cpp b/Swift/QtUI/QtFileTransferListItemModel.cpp
index b9b9fd1..ef73f4f 100644
--- a/Swift/QtUI/QtFileTransferListItemModel.cpp
+++ b/Swift/QtUI/QtFileTransferListItemModel.cpp
@@ -4,35 +4,64 @@
4 * See Documentation/Licenses/BSD-simplified.txt for more information. 4 * See Documentation/Licenses/BSD-simplified.txt for more information.
5 */ 5 */
6 6
7#include "QtFileTransferListItemModel.h" 7/*
8 * Copyright (c) 2015 Isode Limited.
9 * All rights reserved.
10 * See the COPYING file for more information.
11 */
12
13#include <Swift/QtUI/QtFileTransferListItemModel.h>
8 14
9#include <boost/bind.hpp> 15#include <boost/bind.hpp>
10#include <boost/cstdint.hpp> 16#include <boost/cstdint.hpp>
11 17
12#include <Swiften/Base/boost_bsignals.h>
13#include <Swiften/Base/FileSize.h> 18#include <Swiften/Base/FileSize.h>
19#include <Swiften/Base/boost_bsignals.h>
20
14#include <Swift/Controllers/FileTransfer/FileTransferController.h> 21#include <Swift/Controllers/FileTransfer/FileTransferController.h>
15#include <Swift/Controllers/FileTransfer/FileTransferOverview.h> 22#include <Swift/Controllers/FileTransfer/FileTransferOverview.h>
16#include "QtSwiftUtil.h" 23
24#include <Swift/QtUI/QtSwiftUtil.h>
17 25
18namespace Swift { 26namespace Swift {
19 27
20QtFileTransferListItemModel::QtFileTransferListItemModel(QObject *parent) : QAbstractItemModel(parent), fileTransferOverview(0) { 28QtFileTransferListItemModel::QtFileTransferListItemModel(QObject *parent) : QAbstractItemModel(parent), fileTransferOverview(0) {
21} 29}
22 30
31QtFileTransferListItemModel::~QtFileTransferListItemModel() {
32 if (fileTransferOverview) {
33 fileTransferOverview->onNewFileTransferController.disconnect(boost::bind(&QtFileTransferListItemModel::handleNewFileTransferController, this, _1));
34 fileTransferOverview->onFileTransferListChanged.disconnect(boost::bind(&QtFileTransferListItemModel::handleFileTransferListChanged, this));
35 }
36}
37
23void QtFileTransferListItemModel::setFileTransferOverview(FileTransferOverview *overview) { 38void QtFileTransferListItemModel::setFileTransferOverview(FileTransferOverview *overview) {
39 if (fileTransferOverview) {
40 fileTransferOverview->onNewFileTransferController.disconnect(boost::bind(&QtFileTransferListItemModel::handleNewFileTransferController, this, _1));
41 fileTransferOverview->onFileTransferListChanged.disconnect(boost::bind(&QtFileTransferListItemModel::handleFileTransferListChanged, this));
42 }
24 fileTransferOverview = overview; 43 fileTransferOverview = overview;
25 fileTransferOverview->onNewFileTransferController.connect(boost::bind(&QtFileTransferListItemModel::handleNewFileTransferController, this, _1)); 44 if (fileTransferOverview) {
45 fileTransferOverview->onNewFileTransferController.connect(boost::bind(&QtFileTransferListItemModel::handleNewFileTransferController, this, _1));
46 fileTransferOverview->onFileTransferListChanged.connect(boost::bind(&QtFileTransferListItemModel::handleFileTransferListChanged, this));
47 }
48 emit layoutAboutToBeChanged();
49 emit layoutChanged();
26} 50}
27 51
28void QtFileTransferListItemModel::handleNewFileTransferController(FileTransferController* newController) { 52void QtFileTransferListItemModel::handleNewFileTransferController(FileTransferController* newController) {
29 emit layoutAboutToBeChanged(); 53 emit layoutAboutToBeChanged();
30 emit layoutChanged(); 54 emit layoutChanged();
31 dataChanged(createIndex(0,0), createIndex(fileTransferOverview->getFileTransfers().size(),4)); 55 dataChanged(createIndex(0,0), createIndex(fileTransferOverview->getFileTransfers().size(),4));
32 newController->onStateChage.connect(boost::bind(&QtFileTransferListItemModel::handleStateChange, this, fileTransferOverview->getFileTransfers().size() - 1)); 56 newController->onStateChanged.connect(boost::bind(&QtFileTransferListItemModel::handleStateChange, this, fileTransferOverview->getFileTransfers().size() - 1));
33 newController->onProgressChange.connect(boost::bind(&QtFileTransferListItemModel::handleProgressChange, this, fileTransferOverview->getFileTransfers().size() - 1)); 57 newController->onProgressChange.connect(boost::bind(&QtFileTransferListItemModel::handleProgressChange, this, fileTransferOverview->getFileTransfers().size() - 1));
34} 58}
35 59
60void QtFileTransferListItemModel::handleFileTransferListChanged() {
61 emit layoutAboutToBeChanged();
62 emit layoutChanged();
63}
64
36void QtFileTransferListItemModel::handleStateChange(int index) { 65void QtFileTransferListItemModel::handleStateChange(int index) {
37 emit dataChanged(createIndex(index, 2), createIndex(index, 2)); 66 emit dataChanged(createIndex(index, 2), createIndex(index, 2));
38} 67}
diff --git a/Swift/QtUI/QtFileTransferListItemModel.h b/Swift/QtUI/QtFileTransferListItemModel.h
index 28f13f8..64cdca4 100644
--- a/Swift/QtUI/QtFileTransferListItemModel.h
+++ b/Swift/QtUI/QtFileTransferListItemModel.h
@@ -4,6 +4,12 @@
4 * See Documentation/Licenses/BSD-simplified.txt for more information. 4 * See Documentation/Licenses/BSD-simplified.txt for more information.
5 */ 5 */
6 6
7/*
8 * Copyright (c) 2015 Isode Limited.
9 * All rights reserved.
10 * See the COPYING file for more information.
11 */
12
7#pragma once 13#pragma once
8 14
9#include <QAbstractItemModel> 15#include <QAbstractItemModel>
@@ -17,6 +23,7 @@ class QtFileTransferListItemModel : public QAbstractItemModel {
17 Q_OBJECT 23 Q_OBJECT
18public: 24public:
19 explicit QtFileTransferListItemModel(QObject *parent = 0); 25 explicit QtFileTransferListItemModel(QObject *parent = 0);
26 virtual ~QtFileTransferListItemModel();
20 27
21 void setFileTransferOverview(FileTransferOverview*); 28 void setFileTransferOverview(FileTransferOverview*);
22 29
@@ -39,6 +46,7 @@ private:
39 46
40private: 47private:
41 void handleNewFileTransferController(FileTransferController*); 48 void handleNewFileTransferController(FileTransferController*);
49 void handleFileTransferListChanged();
42 void handleStateChange(int index); 50 void handleStateChange(int index);
43 void handleProgressChange(int index); 51 void handleProgressChange(int index);
44 52
diff --git a/Swift/QtUI/QtFileTransferListWidget.cpp b/Swift/QtUI/QtFileTransferListWidget.cpp
index fb2b4de..729c95f 100644
--- a/Swift/QtUI/QtFileTransferListWidget.cpp
+++ b/Swift/QtUI/QtFileTransferListWidget.cpp
@@ -4,14 +4,24 @@
4 * See Documentation/Licenses/BSD-simplified.txt for more information. 4 * See Documentation/Licenses/BSD-simplified.txt for more information.
5 */ 5 */
6 6
7#include "QtFileTransferListWidget.h" 7/*
8 * Copyright (c) 2015 Isode Limited.
9 * All rights reserved.
10 * See the COPYING file for more information.
11 */
8 12
9#include <Swift/QtUI/QtFileTransferListItemModel.h> 13#include <Swift/QtUI/QtFileTransferListWidget.h>
14
15#include <boost/bind.hpp>
10 16
11#include <QVBoxLayout>
12#include <QHBoxLayout> 17#include <QHBoxLayout>
13#include <QWidget>
14#include <QPushButton> 18#include <QPushButton>
19#include <QVBoxLayout>
20#include <QWidget>
21
22#include <Swift/Controllers/FileTransfer/FileTransferOverview.h>
23
24#include <Swift/QtUI/QtFileTransferListItemModel.h>
15 25
16namespace Swift { 26namespace Swift {
17 27
@@ -36,9 +46,9 @@ QtFileTransferListWidget::QtFileTransferListWidget() : fileTransferOverview(0) {
36 buttonLayout->setContentsMargins(10,0,20,0); 46 buttonLayout->setContentsMargins(10,0,20,0);
37 buttonLayout->setSpacing(0); 47 buttonLayout->setSpacing(0);
38 48
39 QPushButton* clearFinished = new QPushButton(tr("Clear Finished Transfers"), bottom); 49 clearFinished = new QPushButton(tr("Clear Inactive Transfers"), bottom);
40 clearFinished->setEnabled(false); 50 clearFinished->setEnabled(false);
41 //connect(clearButton, SIGNAL(clicked()), textEdit, SLOT(clear())); 51 connect(clearFinished, SIGNAL(clicked()), this, SLOT(clearInactiveTransfers()));
42 buttonLayout->addWidget(clearFinished); 52 buttonLayout->addWidget(clearFinished);
43 53
44 setWindowTitle(tr("File Transfer List")); 54 setWindowTitle(tr("File Transfer List"));
@@ -46,6 +56,10 @@ QtFileTransferListWidget::QtFileTransferListWidget() : fileTransferOverview(0) {
46} 56}
47 57
48QtFileTransferListWidget::~QtFileTransferListWidget() { 58QtFileTransferListWidget::~QtFileTransferListWidget() {
59 if (fileTransferOverview) {
60 fileTransferOverview->onFileTransferListChanged.disconnect(boost::bind(&QtFileTransferListWidget::handleFileTransferListChanged, this));
61 fileTransferOverview = NULL;
62 }
49 delete itemModel; 63 delete itemModel;
50} 64}
51 65
@@ -55,6 +69,14 @@ void QtFileTransferListWidget::showEvent(QShowEvent* event) {
55 QWidget::showEvent(event); 69 QWidget::showEvent(event);
56} 70}
57 71
72void QtFileTransferListWidget::handleFileTransferListChanged() {
73 clearFinished->setEnabled(fileTransferOverview->isClearable());
74}
75
76void QtFileTransferListWidget::clearInactiveTransfers() {
77 fileTransferOverview->clearFinished();
78}
79
58void QtFileTransferListWidget::show() { 80void QtFileTransferListWidget::show() {
59 QWidget::show(); 81 QWidget::show();
60 emit windowOpening(); 82 emit windowOpening();
@@ -65,7 +87,15 @@ void QtFileTransferListWidget::activate() {
65} 87}
66 88
67void QtFileTransferListWidget::setFileTransferOverview(FileTransferOverview *overview) { 89void QtFileTransferListWidget::setFileTransferOverview(FileTransferOverview *overview) {
68 fileTransferOverview = overview; 90 if (fileTransferOverview) {
91 fileTransferOverview->onFileTransferListChanged.disconnect(boost::bind(&QtFileTransferListWidget::handleFileTransferListChanged, this));
92 fileTransferOverview = NULL;
93 }
94 if (overview) {
95 fileTransferOverview = overview;
96 fileTransferOverview->onFileTransferListChanged.connect(boost::bind(&QtFileTransferListWidget::handleFileTransferListChanged, this));
97 clearFinished->setEnabled(fileTransferOverview->isClearable());
98 }
69 itemModel->setFileTransferOverview(overview); 99 itemModel->setFileTransferOverview(overview);
70} 100}
71 101
diff --git a/Swift/QtUI/QtFileTransferListWidget.h b/Swift/QtUI/QtFileTransferListWidget.h
index 8adc009..740eb15 100644
--- a/Swift/QtUI/QtFileTransferListWidget.h
+++ b/Swift/QtUI/QtFileTransferListWidget.h
@@ -4,16 +4,23 @@
4 * See Documentation/Licenses/BSD-simplified.txt for more information. 4 * See Documentation/Licenses/BSD-simplified.txt for more information.
5 */ 5 */
6 6
7#pragma once 7/*
8 8 * Copyright (c) 2015 Isode Limited.
9#include "Swift/Controllers/UIInterfaces/FileTransferListWidget.h" 9 * All rights reserved.
10 * See the COPYING file for more information.
11 */
10 12
11#include "QtTabbable.h" 13#pragma once
12 14
13#include <QCloseEvent> 15#include <QCloseEvent>
16#include <QPushButton>
14#include <QShowEvent> 17#include <QShowEvent>
15#include <QTreeView> 18#include <QTreeView>
16 19
20#include <Swift/Controllers/UIInterfaces/FileTransferListWidget.h>
21
22#include <Swift/QtUI/QtTabbable.h>
23
17namespace Swift { 24namespace Swift {
18 25
19class FileTransferOverview; 26class FileTransferOverview;
@@ -36,12 +43,17 @@ public:
36private: 43private:
37 virtual void closeEvent(QCloseEvent* event); 44 virtual void closeEvent(QCloseEvent* event);
38 virtual void showEvent(QShowEvent* event); 45 virtual void showEvent(QShowEvent* event);
46 void handleFileTransferListChanged();
47
48private slots:
49 void clearInactiveTransfers();
39 50
40private: 51private:
41 QTreeView* treeView; 52 QTreeView* treeView;
42 53
43 QtFileTransferListItemModel* itemModel; 54 QtFileTransferListItemModel* itemModel;
44 FileTransferOverview* fileTransferOverview; 55 FileTransferOverview* fileTransferOverview;
56 QPushButton* clearFinished;
45}; 57};
46 58
47} 59}