diff options
| -rw-r--r-- | Swift/QtUI/QtBlockListEditorWindow.cpp | 30 | 
1 files changed, 28 insertions, 2 deletions
| diff --git a/Swift/QtUI/QtBlockListEditorWindow.cpp b/Swift/QtUI/QtBlockListEditorWindow.cpp index 30c939f..a6eca0e 100644 --- a/Swift/QtUI/QtBlockListEditorWindow.cpp +++ b/Swift/QtUI/QtBlockListEditorWindow.cpp @@ -5,7 +5,7 @@   */  /* - * Copyright (c) 2014-2016 Isode Limited. + * Copyright (c) 2014-2017 Isode Limited.   * All rights reserved.   * See the COPYING file for more information.   */ @@ -14,6 +14,7 @@  #include <boost/bind.hpp> +#include <QClipboard>  #include <QLineEdit>  #include <QMovie>  #include <QShortcut> @@ -106,6 +107,25 @@ QtBlockListEditorWindow::QtBlockListEditorWindow() : QWidget(), ui(new Ui::QtBlo      QTreeWidgetItem* item = new QTreeWidgetItem(QStringList(freshBlockListTemplate) << "x");      item->setFlags(item->flags() | Qt::ItemIsEditable);      ui->blockListTreeWidget->addTopLevelItem(item); + +    // Allow pasting a newline seperated list of JIDs into the dialog. +    auto pasteShortcut = new QShortcut(QKeySequence::Paste, this); +    connect(pasteShortcut, &QShortcut::activated, [&](){ +        auto currentBlocklist = getCurrentBlockList(); + +        auto clipboardText = QGuiApplication::clipboard()->text(); +        auto stringList = clipboardText.split("\n"); +        for (const auto& string : stringList) { +            auto jid = JID(Q2PSTRING(string.trimmed())); +            if (jid.isValid()) { +                if (std::find(currentBlocklist.begin(), currentBlocklist.end(), jid) == currentBlocklist.end()) { +                    currentBlocklist.push_back(jid); +                } +            } +        } +        setCurrentBlockList(currentBlocklist); +    }); +  }  QtBlockListEditorWindow::~QtBlockListEditorWindow() { @@ -157,8 +177,14 @@ void QtBlockListEditorWindow::applyChanges() {  void QtBlockListEditorWindow::setCurrentBlockList(const std::vector<JID> &blockedJIDs) {      ui->blockListTreeWidget->clear(); +    QStringList blockedStrings;      for (const auto& jid : blockedJIDs) { -        QTreeWidgetItem* item = new QTreeWidgetItem(QStringList(P2QSTRING(jid.toString())) << ""); +        blockedStrings << P2QSTRING(jid.toString()); +    } +    blockedStrings.sort(); + +    for (const auto& jid : blockedStrings) { +        QTreeWidgetItem* item = new QTreeWidgetItem(QStringList(jid) << "");          item->setFlags(item->flags() | Qt::ItemIsEditable);          ui->blockListTreeWidget->addTopLevelItem(item);      } | 
 Swift
 Swift