diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2020-05-04 14:52:47 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2020-05-05 12:35:11 +0000 |
commit | 97165f0cb89921439b4f0c9eee92d8599606ac04 (patch) | |
tree | 874458015aebdebda34398dd97131899d89edf37 /src/plugins/cpaster | |
parent | 43a0e9d2c57cdbaf1c73cb5af2e4dbf6095ad59b (diff) |
CodePaster: Expose privacy setting
Let the user decide whether their pasted content is public. Default is
non-public, for safety reasons.
Task-number: QTCREATORBUG-23972
Change-Id: I5be444807d3f2cb41c629825715f0eaaa50d34c7
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/cpaster')
-rw-r--r-- | src/plugins/cpaster/cpasterplugin.cpp | 4 | ||||
-rw-r--r-- | src/plugins/cpaster/fileshareprotocol.cpp | 14 | ||||
-rw-r--r-- | src/plugins/cpaster/fileshareprotocol.h | 2 | ||||
-rw-r--r-- | src/plugins/cpaster/pastebindotcomprotocol.cpp | 15 | ||||
-rw-r--r-- | src/plugins/cpaster/pastebindotcomprotocol.h | 1 | ||||
-rw-r--r-- | src/plugins/cpaster/pastecodedotxyzprotocol.cpp | 14 | ||||
-rw-r--r-- | src/plugins/cpaster/pastecodedotxyzprotocol.h | 1 | ||||
-rw-r--r-- | src/plugins/cpaster/pasteview.cpp | 26 | ||||
-rw-r--r-- | src/plugins/cpaster/pasteview.h | 6 | ||||
-rw-r--r-- | src/plugins/cpaster/pasteview.ui | 22 | ||||
-rw-r--r-- | src/plugins/cpaster/protocol.h | 1 | ||||
-rw-r--r-- | src/plugins/cpaster/settings.cpp | 7 | ||||
-rw-r--r-- | src/plugins/cpaster/settings.h | 1 | ||||
-rw-r--r-- | src/plugins/cpaster/settingspage.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cpaster/settingspage.ui | 9 | ||||
-rw-r--r-- | src/plugins/cpaster/stickynotespasteprotocol.cpp | 15 | ||||
-rw-r--r-- | src/plugins/cpaster/stickynotespasteprotocol.h | 1 | ||||
-rw-r--r-- | src/plugins/cpaster/urlopenprotocol.cpp | 4 | ||||
-rw-r--r-- | src/plugins/cpaster/urlopenprotocol.h | 2 |
19 files changed, 108 insertions, 39 deletions
diff --git a/src/plugins/cpaster/cpasterplugin.cpp b/src/plugins/cpaster/cpasterplugin.cpp index dcfd01dda5..681f1aef3f 100644 --- a/src/plugins/cpaster/cpasterplugin.cpp +++ b/src/plugins/cpaster/cpasterplugin.cpp @@ -275,8 +275,8 @@ void CodePasterPluginPrivate::post(QString data, const QString &mimeType) const FileDataList diffChunks = splitDiffToFiles(data); const int dialogResult = diffChunks.isEmpty() ? - view.show(username, QString(), QString(), m_settings.expiryDays, data) : - view.show(username, QString(), QString(), m_settings.expiryDays, diffChunks); + view.show(username, QString(), QString(), m_settings.expiryDays, m_settings.publicPaste, data) : + view.show(username, QString(), QString(), m_settings.expiryDays, m_settings.publicPaste, diffChunks); // Save new protocol in case user changed it. if (dialogResult == QDialog::Accepted && m_settings.protocol != view.protocol()) { diff --git a/src/plugins/cpaster/fileshareprotocol.cpp b/src/plugins/cpaster/fileshareprotocol.cpp index 3b821db4e3..937165a3f2 100644 --- a/src/plugins/cpaster/fileshareprotocol.cpp +++ b/src/plugins/cpaster/fileshareprotocol.cpp @@ -177,11 +177,15 @@ void FileShareProtocol::list() emit listDone(name(), entries); } -void FileShareProtocol::paste(const QString &text, - ContentType /* ct */, int /* expiryDays */, - const QString &username, - const QString & /* comment */, - const QString &description) +void FileShareProtocol::paste( + const QString &text, + ContentType /* ct */, + int /* expiryDays */, + bool /* publicPaste */, + const QString &username, + const QString & /* comment */, + const QString &description + ) { // Write out temp XML file Utils::TempFileSaver saver(m_settings->path + QLatin1Char('/') + QLatin1String(tempPatternC)); diff --git a/src/plugins/cpaster/fileshareprotocol.h b/src/plugins/cpaster/fileshareprotocol.h index ea89e41f2a..a22fa62a97 100644 --- a/src/plugins/cpaster/fileshareprotocol.h +++ b/src/plugins/cpaster/fileshareprotocol.h @@ -54,7 +54,7 @@ public: void fetch(const QString &id) override; void list() override; void paste(const QString &text, - ContentType ct = Text, int expiryDays = 1, + ContentType ct = Text, int expiryDays = 1, bool publicPaste = false, const QString &username = QString(), const QString &comment = QString(), const QString &description = QString()) override; diff --git a/src/plugins/cpaster/pastebindotcomprotocol.cpp b/src/plugins/cpaster/pastebindotcomprotocol.cpp index fb3d60ba92..ed4db9cf46 100644 --- a/src/plugins/cpaster/pastebindotcomprotocol.cpp +++ b/src/plugins/cpaster/pastebindotcomprotocol.cpp @@ -99,11 +99,15 @@ static inline QByteArray expirySpecification(int expiryDays) return QByteArray("N"); } -void PasteBinDotComProtocol::paste(const QString &text, - ContentType ct, int expiryDays, - const QString & /* username */, // Not used unless registered user - const QString &comment, - const QString &description) +void PasteBinDotComProtocol::paste( + const QString &text, + ContentType ct, + int expiryDays, + bool publicPaste, + const QString & /* username */, // Not used unless registered user + const QString &comment, + const QString &description + ) { Q_UNUSED(comment) Q_UNUSED(description) @@ -118,6 +122,7 @@ void PasteBinDotComProtocol::paste(const QString &text, pasteData += format(ct); pasteData += "api_paste_name="; // Title or name. pasteData += QUrl::toPercentEncoding(description); + pasteData.append("&api_paste_private=").append(QByteArray(publicPaste ? "0" : "1")); pasteData += "&api_paste_code="; pasteData += QUrl::toPercentEncoding(fixNewLines(text)); // fire request diff --git a/src/plugins/cpaster/pastebindotcomprotocol.h b/src/plugins/cpaster/pastebindotcomprotocol.h index f5f308a77b..7e2d1f5cdf 100644 --- a/src/plugins/cpaster/pastebindotcomprotocol.h +++ b/src/plugins/cpaster/pastebindotcomprotocol.h @@ -42,6 +42,7 @@ public: void paste(const QString &text, ContentType ct = Text, int expiryDays = 1, + bool publicPaste = false, const QString &username = QString(), const QString &comment = QString(), const QString &description = QString()) override; diff --git a/src/plugins/cpaster/pastecodedotxyzprotocol.cpp b/src/plugins/cpaster/pastecodedotxyzprotocol.cpp index 8ca7d5c547..71f7ec6c89 100644 --- a/src/plugins/cpaster/pastecodedotxyzprotocol.cpp +++ b/src/plugins/cpaster/pastecodedotxyzprotocol.cpp @@ -65,15 +65,23 @@ void PasteCodeDotXyzProtocol::fetch(const QString &id) }); } -void PasteCodeDotXyzProtocol::paste(const QString &text, Protocol::ContentType ct, int expiryDays, - const QString &username, const QString &comment, - const QString &description) +void PasteCodeDotXyzProtocol::paste( + const QString &text, + Protocol::ContentType ct, + int expiryDays, + bool publicPaste, + const QString &username, + const QString &comment, + const QString &description + ) { QByteArray data; data += "text=" + QUrl::toPercentEncoding(fixNewLines(text)); data += "&expire=" + QUrl::toPercentEncoding(QString::number(expiryDays * 24 * 60)); data += "&title=" + QUrl::toPercentEncoding(description); data += "&name=" + QUrl::toPercentEncoding(username); + if (!publicPaste) + data += "&private=1"; static const auto langValue = [](Protocol::ContentType type) -> QByteArray { switch (type) { case Protocol::Text: return "text"; diff --git a/src/plugins/cpaster/pastecodedotxyzprotocol.h b/src/plugins/cpaster/pastecodedotxyzprotocol.h index 7988ad9dc8..ef62956d6d 100644 --- a/src/plugins/cpaster/pastecodedotxyzprotocol.h +++ b/src/plugins/cpaster/pastecodedotxyzprotocol.h @@ -43,6 +43,7 @@ private: void paste(const QString &text, ContentType ct = Text, int expiryDays = 1, + bool publicPaste = false, const QString &username = QString(), const QString &comment = QString(), const QString &description = QString()) override; diff --git a/src/plugins/cpaster/pasteview.cpp b/src/plugins/cpaster/pasteview.cpp index 17ad2abcfc..d5775adb5e 100644 --- a/src/plugins/cpaster/pasteview.cpp +++ b/src/plugins/cpaster/pasteview.cpp @@ -139,8 +139,14 @@ int PasteView::showDialog() } // Show up with checkable list of diff chunks. -int PasteView::show(const QString &user, const QString &description, - const QString &comment, int expiryDays, const FileDataList &parts) +int PasteView::show( + const QString &user, + const QString &description, + const QString &comment, + int expiryDays, + bool makePublic, + const FileDataList &parts + ) { setupDialog(user, description, comment); m_ui.uiPatchList->clear(); @@ -156,18 +162,20 @@ int PasteView::show(const QString &user, const QString &description, m_ui.stackedWidget->setCurrentIndex(0); m_ui.uiPatchView->setPlainText(content); setExpiryDays(expiryDays); + setMakePublic(makePublic); return showDialog(); } // Show up with editable plain text. int PasteView::show(const QString &user, const QString &description, - const QString &comment, int expiryDays, const QString &content) + const QString &comment, int expiryDays, bool makePublic, const QString &content) { setupDialog(user, description, comment); m_mode = PlainTextMode; m_ui.stackedWidget->setCurrentIndex(1); m_ui.plainTextEdit->setPlainText(content); setExpiryDays(expiryDays); + setMakePublic(makePublic); return showDialog(); } @@ -176,11 +184,21 @@ void PasteView::setExpiryDays(int d) m_ui.expirySpinBox->setValue(d); } +void PasteView::setMakePublic(bool p) +{ + m_ui.makePublicCheckBox->setChecked(p); +} + int PasteView::expiryDays() const { return m_ui.expirySpinBox->value(); } +bool PasteView::makePublic() const +{ + return m_ui.makePublicCheckBox->isChecked(); +} + void PasteView::accept() { const int index = m_ui.protocolBox->currentIndex(); @@ -197,7 +215,7 @@ void PasteView::accept() return; const Protocol::ContentType ct = Protocol::contentType(m_mimeType); - protocol->paste(data, ct, expiryDays(), user(), comment(), description()); + protocol->paste(data, ct, expiryDays(), makePublic(), user(), comment(), description()); // Store settings and close QSettings *settings = Core::ICore::settings(); settings->beginGroup(QLatin1String(groupC)); diff --git a/src/plugins/cpaster/pasteview.h b/src/plugins/cpaster/pasteview.h index cdaf8db592..6a2b78c64e 100644 --- a/src/plugins/cpaster/pasteview.h +++ b/src/plugins/cpaster/pasteview.h @@ -52,10 +52,10 @@ public: // Show up with checkable list of diff chunks. int show(const QString &user, const QString &description, const QString &comment, - int expiryDays, const FileDataList &parts); + int expiryDays, bool makePublic, const FileDataList &parts); // Show up with editable plain text. int show(const QString &user, const QString &description, const QString &comment, - int expiryDays, const QString &content); + int expiryDays, bool makePublic, const QString &content); void setProtocol(const QString &protocol); @@ -65,7 +65,9 @@ public: QString content() const; QString protocol() const; void setExpiryDays(int d); + void setMakePublic(bool p); int expiryDays() const; + bool makePublic() const; void accept() override; diff --git a/src/plugins/cpaster/pasteview.ui b/src/plugins/cpaster/pasteview.ui index 2575317920..c4719dded1 100644 --- a/src/plugins/cpaster/pasteview.ui +++ b/src/plugins/cpaster/pasteview.ui @@ -26,7 +26,7 @@ <item row="0" column="1"> <widget class="QComboBox" name="protocolBox"/> </item> - <item row="2" column="0"> + <item row="3" column="0"> <widget class="QLabel" name="userLabel"> <property name="text"> <string>&Username:</string> @@ -36,14 +36,14 @@ </property> </widget> </item> - <item row="2" column="1"> + <item row="3" column="1"> <widget class="QLineEdit" name="uiUsername"> <property name="placeholderText"> <string><Username></string> </property> </widget> </item> - <item row="3" column="0"> + <item row="4" column="0"> <widget class="QLabel" name="descriptionLabel"> <property name="text"> <string>&Description:</string> @@ -53,14 +53,14 @@ </property> </widget> </item> - <item row="3" column="1"> + <item row="4" column="1"> <widget class="QLineEdit" name="uiDescription"> <property name="placeholderText"> <string><Description></string> </property> </widget> </item> - <item row="1" column="1"> + <item row="2" column="1"> <widget class="QSpinBox" name="expirySpinBox"> <property name="suffix"> <string> Days</string> @@ -73,7 +73,7 @@ </property> </widget> </item> - <item row="1" column="0"> + <item row="2" column="0"> <widget class="QLabel" name="expiryLabel"> <property name="text"> <string>&Expires after:</string> @@ -83,6 +83,16 @@ </property> </widget> </item> + <item row="1" column="0"> + <widget class="QLabel" name="makePublicLabel"> + <property name="text"> + <string>Make public:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QCheckBox" name="makePublicCheckBox"/> + </item> </layout> </item> <item> diff --git a/src/plugins/cpaster/protocol.h b/src/plugins/cpaster/protocol.h index c315a673d1..d9b66d7cc4 100644 --- a/src/plugins/cpaster/protocol.h +++ b/src/plugins/cpaster/protocol.h @@ -68,6 +68,7 @@ public: virtual void paste(const QString &text, ContentType ct = Text, int expiryDays = 1, + bool publicPaste = false, const QString &username = QString(), const QString &comment = QString(), const QString &description = QString()) = 0; diff --git a/src/plugins/cpaster/settings.cpp b/src/plugins/cpaster/settings.cpp index b29a1fa673..61508a201d 100644 --- a/src/plugins/cpaster/settings.cpp +++ b/src/plugins/cpaster/settings.cpp @@ -36,14 +36,15 @@ static const char expiryDaysKeyC[] = "ExpiryDays"; static const char defaultProtocolKeyC[] = "DefaultProtocol"; static const char copyToClipboardKeyC[] = "CopyToClipboard"; static const char displayOutputKeyC[] = "DisplayOutput"; +static const char publicPasteKeyC[] = "DisplayOutput"; namespace CodePaster { bool Settings::equals(const Settings &rhs) const { return copyToClipboard == rhs.copyToClipboard && displayOutput == rhs.displayOutput - && expiryDays == rhs.expiryDays && username == rhs.username - && protocol == rhs.protocol; + && expiryDays == rhs.expiryDays && username == rhs.username + && protocol == rhs.protocol && publicPaste == rhs.publicPaste; } void Settings::toSettings(QSettings *settings) const @@ -54,6 +55,7 @@ void Settings::toSettings(QSettings *settings) const settings->setValue(QLatin1String(expiryDaysKeyC), expiryDays); settings->setValue(QLatin1String(copyToClipboardKeyC), copyToClipboard); settings->setValue(QLatin1String(displayOutputKeyC), displayOutput); + settings->setValue(publicPasteKeyC, publicPaste); settings->endGroup(); } @@ -66,6 +68,7 @@ void Settings::fromSettings(const QSettings *settings) protocol = settings->value(rootKey + QLatin1String(defaultProtocolKeyC), PasteBinDotComProtocol::protocolName()).toString(); copyToClipboard = settings->value(rootKey + QLatin1String(copyToClipboardKeyC), true).toBool(); displayOutput = settings->value(rootKey + QLatin1String(displayOutputKeyC), true).toBool(); + publicPaste = settings->value(rootKey + publicPasteKeyC, false).toBool(); } } // namespace CodePaster diff --git a/src/plugins/cpaster/settings.h b/src/plugins/cpaster/settings.h index d47c2f7ce3..451f85e0f3 100644 --- a/src/plugins/cpaster/settings.h +++ b/src/plugins/cpaster/settings.h @@ -44,6 +44,7 @@ public: int expiryDays = 1; bool copyToClipboard = true; bool displayOutput = true; + bool publicPaste = false; }; inline bool operator==(const Settings &s1, const Settings &s2) { return s1.equals(s2); } diff --git a/src/plugins/cpaster/settingspage.cpp b/src/plugins/cpaster/settingspage.cpp index b9b70a9e73..c21b0fe485 100644 --- a/src/plugins/cpaster/settingspage.cpp +++ b/src/plugins/cpaster/settingspage.cpp @@ -56,6 +56,7 @@ SettingsWidget::SettingsWidget(const QStringList &protocols, Settings *settings) const int index = m_ui.defaultProtocol->findText(m_settings->protocol); m_ui.defaultProtocol->setCurrentIndex(index == -1 ? 0 : index); m_ui.expirySpinBox->setValue(m_settings->expiryDays); + m_ui.publicCheckBox->setChecked(m_settings->publicPaste); m_ui.clipboardBox->setChecked(m_settings->copyToClipboard); m_ui.displayBox->setChecked(m_settings->displayOutput); } @@ -66,6 +67,7 @@ void SettingsWidget::apply() rc.username = m_ui.userEdit->text(); rc.protocol = m_ui.defaultProtocol->currentText(); rc.expiryDays = m_ui.expirySpinBox->value(); + rc.publicPaste = m_ui.publicCheckBox->isChecked(); rc.copyToClipboard = m_ui.clipboardBox->isChecked(); rc.displayOutput = m_ui.displayBox->isChecked(); diff --git a/src/plugins/cpaster/settingspage.ui b/src/plugins/cpaster/settingspage.ui index 906f8de474..de4020433d 100644 --- a/src/plugins/cpaster/settingspage.ui +++ b/src/plugins/cpaster/settingspage.ui @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>291</width> + <width>370</width> <height>229</height> </rect> </property> @@ -81,6 +81,13 @@ </property> </widget> </item> + <item row="6" column="0"> + <widget class="QCheckBox" name="publicCheckBox"> + <property name="text"> + <string>Make pasted content public by default</string> + </property> + </widget> + </item> </layout> </widget> <tabstops> diff --git a/src/plugins/cpaster/stickynotespasteprotocol.cpp b/src/plugins/cpaster/stickynotespasteprotocol.cpp index 9c8ad232eb..c4924a70c8 100644 --- a/src/plugins/cpaster/stickynotespasteprotocol.cpp +++ b/src/plugins/cpaster/stickynotespasteprotocol.cpp @@ -97,16 +97,21 @@ static inline QByteArray pasteLanguage(Protocol::ContentType ct) return QByteArray("language=text"); } -void StickyNotesPasteProtocol::paste(const QString &text, - ContentType ct, int expiryDays, - const QString &username, - const QString &comment, - const QString &description) +void StickyNotesPasteProtocol::paste( + const QString &text, + ContentType ct, + int expiryDays, + bool publicPaste, + const QString &username, + const QString &comment, + const QString &description + ) { enum { maxDescriptionLength = 30 }; // Length of description is limited. Q_UNUSED(username) Q_UNUSED(comment) + Q_UNUSED(publicPaste) QTC_ASSERT(!m_pasteReply, return); // Format body diff --git a/src/plugins/cpaster/stickynotespasteprotocol.h b/src/plugins/cpaster/stickynotespasteprotocol.h index 584c90a921..8c0b35e08c 100644 --- a/src/plugins/cpaster/stickynotespasteprotocol.h +++ b/src/plugins/cpaster/stickynotespasteprotocol.h @@ -39,6 +39,7 @@ public: void paste(const QString &text, ContentType ct = Text, int expiryDays = 1, + bool publicPaste = false, const QString &username = QString(), const QString &comment = QString(), const QString &description = QString()) override; diff --git a/src/plugins/cpaster/urlopenprotocol.cpp b/src/plugins/cpaster/urlopenprotocol.cpp index 64f416b19e..01e1cd58d8 100644 --- a/src/plugins/cpaster/urlopenprotocol.cpp +++ b/src/plugins/cpaster/urlopenprotocol.cpp @@ -63,7 +63,7 @@ void UrlOpenProtocol::fetchFinished() emit fetchDone(title, content, error); } -void UrlOpenProtocol::paste(const QString &, ContentType, int, const QString &, - const QString &, const QString &) +void UrlOpenProtocol::paste(const QString &, ContentType, int, bool, + const QString &, const QString &, const QString &) { } diff --git a/src/plugins/cpaster/urlopenprotocol.h b/src/plugins/cpaster/urlopenprotocol.h index 65f1fcb504..161d2a16b2 100644 --- a/src/plugins/cpaster/urlopenprotocol.h +++ b/src/plugins/cpaster/urlopenprotocol.h @@ -36,7 +36,7 @@ public: QString name() const override; unsigned capabilities() const override; void fetch(const QString &url) override; - void paste(const QString &, ContentType, int, const QString &, const QString &, const QString &) override; + void paste(const QString &, ContentType, int, bool, const QString &, const QString &, const QString &) override; private: void fetchFinished(); |