diff --git a/src/plugins/cpaster/codepasterprotocol.cpp b/src/plugins/cpaster/codepasterprotocol.cpp index 9ac4d6d1483bb83956db0e1f72472f04fae4c2b7..07447151bb399fd73fecf9721a129a744073892e 100644 --- a/src/plugins/cpaster/codepasterprotocol.cpp +++ b/src/plugins/cpaster/codepasterprotocol.cpp @@ -125,7 +125,7 @@ void CodePasterProtocol::list() } void CodePasterProtocol::paste(const QString &text, - ContentType /* ct */, + ContentType /* ct */, int /* expiryDays */, const QString &username, const QString &comment, const QString &description) diff --git a/src/plugins/cpaster/codepasterprotocol.h b/src/plugins/cpaster/codepasterprotocol.h index 912f0a3e5b5723737cf11b7a74428d2033dfccf4..097f55e66c1e1b96d9d4e23f260723ded139b5b9 100644 --- a/src/plugins/cpaster/codepasterprotocol.h +++ b/src/plugins/cpaster/codepasterprotocol.h @@ -58,6 +58,7 @@ public: void list(); void paste(const QString &text, ContentType ct = Text, + int expiryDays = 1, const QString &username = QString(), const QString &comment = QString(), const QString &description = QString()); diff --git a/src/plugins/cpaster/cpasterplugin.cpp b/src/plugins/cpaster/cpasterplugin.cpp index e22513e16693cb49e0da11843ac601abaa48e12a..5ed8bafae694d79de98eaa15a6b77fe8e064fc10 100644 --- a/src/plugins/cpaster/cpasterplugin.cpp +++ b/src/plugins/cpaster/cpasterplugin.cpp @@ -262,8 +262,8 @@ void CodepasterPlugin::post(QString data, const QString &mimeType) const FileDataList diffChunks = splitDiffToFiles(data); const int dialogResult = diffChunks.isEmpty() ? - view.show(username, QString(), QString(), data) : - view.show(username, QString(), QString(), diffChunks); + view.show(username, QString(), QString(), m_settings->expiryDays, data) : + view.show(username, QString(), QString(), m_settings->expiryDays, 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 d616439e89d371fd49e51254d994fb94d5818419..0663a5463fa410bdf8ea2d30e07e53e921042ec8 100644 --- a/src/plugins/cpaster/fileshareprotocol.cpp +++ b/src/plugins/cpaster/fileshareprotocol.cpp @@ -181,7 +181,7 @@ void FileShareProtocol::list() } void FileShareProtocol::paste(const QString &text, - ContentType /* ct */, + ContentType /* ct */, int /* expiryDays */, const QString &username, const QString & /* comment */, const QString &description) diff --git a/src/plugins/cpaster/fileshareprotocol.h b/src/plugins/cpaster/fileshareprotocol.h index aee36c44795ef092f26a29f4226e2a9af7a6fcab..62648918aa579f592abf5863d679808af3a815bc 100644 --- a/src/plugins/cpaster/fileshareprotocol.h +++ b/src/plugins/cpaster/fileshareprotocol.h @@ -59,7 +59,7 @@ public: virtual void fetch(const QString &id); virtual void list(); virtual void paste(const QString &text, - ContentType ct = Text, + ContentType ct = Text, int expiryDays = 1, const QString &username = QString(), const QString &comment = QString(), const QString &description = QString()); diff --git a/src/plugins/cpaster/kdepasteprotocol.cpp b/src/plugins/cpaster/kdepasteprotocol.cpp index 8c0fde42431e2f0654c9776cfa39fa679ae072bb..eca0e9a44481704c9beb7888cddef0a8384c1ea5 100644 --- a/src/plugins/cpaster/kdepasteprotocol.cpp +++ b/src/plugins/cpaster/kdepasteprotocol.cpp @@ -43,8 +43,6 @@ enum { debug = 0 }; static const char hostUrlC[]= "http://paste.kde.org/"; static const char showPhpScriptpC[] = "show.php"; -enum { expirySeconds = 86400 }; - namespace CodePaster { KdePasteProtocol::KdePasteProtocol(const NetworkAccessManagerProxyPtr &nw) : NetworkProtocol(nw), @@ -97,7 +95,7 @@ static inline QByteArray pasteLanguage(Protocol::ContentType ct) } void KdePasteProtocol::paste(const QString &text, - ContentType ct, + ContentType ct, int expiryDays, const QString &username, const QString &comment, const QString &description) @@ -115,7 +113,7 @@ void KdePasteProtocol::paste(const QString &text, pasteData += "&paste_data="; pasteData += QUrl::toPercentEncoding(fixNewLines(text)); pasteData += "&paste_expire="; - pasteData += QByteArray::number(expirySeconds); + pasteData += QByteArray::number(expiryDays * 86400); pasteData += '&'; pasteData += pasteLanguage(ct); diff --git a/src/plugins/cpaster/kdepasteprotocol.h b/src/plugins/cpaster/kdepasteprotocol.h index 651c9b64d90b060bfb03d802506eafaf65c3b8bf..8c4f2ac43cf6eb210705b330c6b8184c439c6b8b 100644 --- a/src/plugins/cpaster/kdepasteprotocol.h +++ b/src/plugins/cpaster/kdepasteprotocol.h @@ -48,6 +48,7 @@ public: virtual void fetch(const QString &id); virtual void paste(const QString &text, ContentType ct = Text, + int expiryDays = 1, const QString &username = QString(), const QString &comment = QString(), const QString &description = QString()); diff --git a/src/plugins/cpaster/pastebindotcaprotocol.cpp b/src/plugins/cpaster/pastebindotcaprotocol.cpp index ac62c7e3d91c2c736b524a799a44d97a58de051a..acce91464880d2bfe1a7a60b92dd40fcfb8659d9 100644 --- a/src/plugins/cpaster/pastebindotcaprotocol.cpp +++ b/src/plugins/cpaster/pastebindotcaprotocol.cpp @@ -90,7 +90,7 @@ static QByteArray toTypeId(Protocol::ContentType ct) } void PasteBinDotCaProtocol::paste(const QString &text, - ContentType ct, + ContentType ct, int expiryDays, const QString &username, const QString & /* comment */, const QString &description) @@ -103,7 +103,9 @@ void PasteBinDotCaProtocol::paste(const QString &text, data += toTypeId(ct); data += "&description="; data += QUrl::toPercentEncoding(description); - data += "expiry=1%20day&name="; + data += "&expiry="; + data += QByteArray::number(expiryDays); + data += "%20day&name="; data += QUrl::toPercentEncoding(username); // fire request const QString link = QLatin1String(urlC) + QLatin1String("quiet-paste.php"); diff --git a/src/plugins/cpaster/pastebindotcaprotocol.h b/src/plugins/cpaster/pastebindotcaprotocol.h index 9910d328725fbd7498f9b7cf4be1d4676ae28039..b045240b90e4eda939fdb9e00ee1a00bf0d59c1a 100644 --- a/src/plugins/cpaster/pastebindotcaprotocol.h +++ b/src/plugins/cpaster/pastebindotcaprotocol.h @@ -48,6 +48,7 @@ public: virtual void fetch(const QString &id); virtual void paste(const QString &text, ContentType ct = Text, + int expiryDays = 1, const QString &username = QString(), const QString &comment = QString(), const QString &description = QString()); diff --git a/src/plugins/cpaster/pastebindotcomprotocol.cpp b/src/plugins/cpaster/pastebindotcomprotocol.cpp index 8fceb8a8d5ce59a7602c818213ec21a3c8e68a72..031c8383c2e9ba0e2659a500ce147c0e919ee97f 100644 --- a/src/plugins/cpaster/pastebindotcomprotocol.cpp +++ b/src/plugins/cpaster/pastebindotcomprotocol.cpp @@ -99,7 +99,7 @@ static inline QByteArray format(Protocol::ContentType ct) } void PasteBinDotComProtocol::paste(const QString &text, - ContentType ct, + ContentType ct, int expiryDays, const QString &username, const QString &comment, const QString &description) @@ -111,14 +111,14 @@ void PasteBinDotComProtocol::paste(const QString &text, // Format body QByteArray pasteData = API_KEY; pasteData += "api_option=paste&"; - pasteData += "api_paste_expire_date=1M&"; + pasteData += "api_paste_expire_date="; + pasteData += QByteArray::number(expiryDays); + pasteData += "D&"; pasteData += format(ct); pasteData += "api_paste_name="; pasteData += QUrl::toPercentEncoding(username); - pasteData += "&api_paste_code="; pasteData += QUrl::toPercentEncoding(fixNewLines(text)); - // fire request m_pasteReply = httpPost(QLatin1String(PASTEBIN_BASE) + QLatin1String(PASTEBIN_API), pasteData); connect(m_pasteReply, SIGNAL(finished()), this, SLOT(pasteFinished())); diff --git a/src/plugins/cpaster/pastebindotcomprotocol.h b/src/plugins/cpaster/pastebindotcomprotocol.h index 3bbccbd4ad8b0496cb2d9f3a71bdd09f93c3fbf1..685dd8c3f6ce594b69fee7dc956064d4bd0a1cb2 100644 --- a/src/plugins/cpaster/pastebindotcomprotocol.h +++ b/src/plugins/cpaster/pastebindotcomprotocol.h @@ -48,6 +48,7 @@ public: virtual void fetch(const QString &id); virtual void paste(const QString &text, ContentType ct = Text, + int expiryDays = 1, const QString &username = QString(), const QString &comment = QString(), const QString &description = QString()); diff --git a/src/plugins/cpaster/pasteview.cpp b/src/plugins/cpaster/pasteview.cpp index b201b1ce7c23d6eff34702ab3fedc3c37fcc6e5e..f8de8f9533528d4efbec965c1396a9b15e6366b9 100644 --- a/src/plugins/cpaster/pasteview.cpp +++ b/src/plugins/cpaster/pasteview.cpp @@ -144,7 +144,7 @@ int PasteView::showDialog() // Show up with checkable list of diff chunks. int PasteView::show(const QString &user, const QString &description, - const QString &comment, const FileDataList &parts) + const QString &comment, int expiryDays, const FileDataList &parts) { setupDialog(user, description, comment); m_ui.uiPatchList->clear(); @@ -159,20 +159,32 @@ int PasteView::show(const QString &user, const QString &description, } m_ui.stackedWidget->setCurrentIndex(0); m_ui.uiPatchView->setPlainText(content); + setExpiryDays(expiryDays); return showDialog(); } // Show up with editable plain text. int PasteView::show(const QString &user, const QString &description, - const QString &comment, const QString &content) + const QString &comment, int expiryDays, const QString &content) { setupDialog(user, description, comment); m_mode = PlainTextMode; m_ui.stackedWidget->setCurrentIndex(1); m_ui.plainTextEdit->setPlainText(content); + setExpiryDays(expiryDays); return showDialog(); } +void PasteView::setExpiryDays(int d) +{ + m_ui.expirySpinBox->setValue(d); +} + +int PasteView::expiryDays() const +{ + return m_ui.expirySpinBox->value(); +} + void PasteView::accept() { const int index = m_ui.protocolBox->currentIndex(); @@ -189,7 +201,7 @@ void PasteView::accept() return; const Protocol::ContentType ct = Protocol::contentType(m_mimeType); - protocol->paste(data, ct, user(), comment(), description()); + protocol->paste(data, ct, expiryDays(), 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 a919feba2c7ee7123716a4d9c71b93f160da5b84..acb2c2fae1380792976196940da7f279caee2879 100644 --- a/src/plugins/cpaster/pasteview.h +++ b/src/plugins/cpaster/pasteview.h @@ -56,10 +56,10 @@ public: // Show up with checkable list of diff chunks. int show(const QString &user, const QString &description, const QString &comment, - const FileDataList &parts); + int expiryDays, const FileDataList &parts); // Show up with editable plain text. int show(const QString &user, const QString &description, const QString &comment, - const QString &content); + int expiryDays, const QString &content); void setProtocol(const QString &protocol); @@ -68,6 +68,8 @@ public: QString comment() const; QString content() const; QString protocol() const; + void setExpiryDays(int d); + int expiryDays() const; virtual void accept(); diff --git a/src/plugins/cpaster/pasteview.ui b/src/plugins/cpaster/pasteview.ui index 36c19658b0ecb44060b130f7516c7994a9b501d0..714826778a80988deb0cd970447252a1f3c34991 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="1" column="0"> + <item row="2" column="0"> <widget class="QLabel" name="userLabel"> <property name="text"> <string>&Username:</string> @@ -36,14 +36,14 @@ </property> </widget> </item> - <item row="1" column="1"> + <item row="2" column="1"> <widget class="QLineEdit" name="uiUsername"> <property name="placeholderText"> <string><Username></string> </property> </widget> </item> - <item row="2" column="0"> + <item row="3" column="0"> <widget class="QLabel" name="descriptionLabel"> <property name="text"> <string>&Description:</string> @@ -53,13 +53,36 @@ </property> </widget> </item> - <item row="2" column="1"> + <item row="3" column="1"> <widget class="QLineEdit" name="uiDescription"> <property name="placeholderText"> <string><Description></string> </property> </widget> </item> + <item row="1" column="1"> + <widget class="QSpinBox" name="expirySpinBox"> + <property name="suffix"> + <string>Days</string> + </property> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>365</number> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="expiryLabel"> + <property name="text"> + <string>&Expires after:</string> + </property> + <property name="buddy"> + <cstring>expirySpinBox</cstring> + </property> + </widget> + </item> </layout> </item> <item> diff --git a/src/plugins/cpaster/protocol.h b/src/plugins/cpaster/protocol.h index 76c0e56985052cb56f6dbadf57934ba11aa18fe2..6fd81568166bd2585d8535ec86e3fdc1008298d8 100644 --- a/src/plugins/cpaster/protocol.h +++ b/src/plugins/cpaster/protocol.h @@ -74,6 +74,7 @@ public: virtual void list(); virtual void paste(const QString &text, ContentType ct = Text, + int expiryDays = 1, 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 de6ebeddd8bac01f00f64f4a7717d71870b89dbc..0c724ffe130f265bec251ab6ff9e573aa1dca358 100644 --- a/src/plugins/cpaster/settings.cpp +++ b/src/plugins/cpaster/settings.cpp @@ -36,20 +36,22 @@ static const char groupC[] = "CodePaster"; static const char userNameKeyC[] = "UserName"; +static const char expiryDaysKeyC[] = "ExpiryDays"; static const char defaultProtocolKeyC[] = "DefaultProtocol"; static const char copyToClipboardKeyC[] = "CopyToClipboard"; static const char displayOutputKeyC[] = "DisplayOutput"; namespace CodePaster { -Settings::Settings() : copyToClipboard(true), displayOutput(true) +Settings::Settings() : expiryDays(1), copyToClipboard(true), displayOutput(true) { } bool Settings::equals(const Settings &rhs) const { return copyToClipboard == rhs.copyToClipboard && displayOutput == rhs.displayOutput - && username == rhs.username && protocol == rhs.protocol; + && expiryDays == rhs.expiryDays && username == rhs.username + && protocol == rhs.protocol; } void Settings::toSettings(QSettings *settings) const @@ -57,6 +59,7 @@ void Settings::toSettings(QSettings *settings) const settings->beginGroup(QLatin1String(groupC)); settings->setValue(QLatin1String(userNameKeyC), username); settings->setValue(QLatin1String(defaultProtocolKeyC), protocol); + settings->setValue(QLatin1String(expiryDaysKeyC), expiryDays); settings->setValue(QLatin1String(copyToClipboardKeyC), copyToClipboard); settings->setValue(QLatin1String(displayOutputKeyC), displayOutput); settings->endGroup(); @@ -66,6 +69,7 @@ void Settings::fromSettings(const QSettings *settings) { const QString rootKey = QLatin1String(groupC) + QLatin1Char('/'); const QString defaultUser = Utils::Environment::systemEnvironment().userName(); + expiryDays = settings->value(rootKey + QLatin1String(expiryDaysKeyC), 1).toInt(); username = settings->value(rootKey + QLatin1String(userNameKeyC), defaultUser).toString(); protocol = settings->value(rootKey + QLatin1String(defaultProtocolKeyC), PasteBinDotComProtocol::protocolName()).toString(); copyToClipboard = settings->value(rootKey + QLatin1String(copyToClipboardKeyC), true).toBool(); diff --git a/src/plugins/cpaster/settings.h b/src/plugins/cpaster/settings.h index 59c54f815945e63891671d8aaed89c01fec6fca5..54ebc913aad163b5dec05a772db7a3354ad06443 100644 --- a/src/plugins/cpaster/settings.h +++ b/src/plugins/cpaster/settings.h @@ -46,6 +46,7 @@ struct Settings { QString username; QString protocol; + int expiryDays; bool copyToClipboard; bool displayOutput; }; diff --git a/src/plugins/cpaster/settingspage.cpp b/src/plugins/cpaster/settingspage.cpp index cf87bfb12c62549105cd66f0a9aa8f9c1ba89152..35060653eb9b82c51bcee00cd34020422f98b00b 100644 --- a/src/plugins/cpaster/settingspage.cpp +++ b/src/plugins/cpaster/settingspage.cpp @@ -59,6 +59,7 @@ void SettingsWidget::setSettings(const Settings &settings) m_ui.userEdit->setText(settings.username); const int index = m_ui.defaultProtocol->findText(settings.protocol); m_ui.defaultProtocol->setCurrentIndex(index == -1 ? 0 : index); + m_ui.expirySpinBox->setValue(settings.expiryDays); m_ui.clipboardBox->setChecked(settings.copyToClipboard); m_ui.displayBox->setChecked(settings.displayOutput); } @@ -68,6 +69,7 @@ Settings SettingsWidget::settings() Settings rc; rc.username = m_ui.userEdit->text(); rc.protocol = m_ui.defaultProtocol->currentText(); + rc.expiryDays = m_ui.expirySpinBox->value(); rc.copyToClipboard = m_ui.clipboardBox->isChecked(); rc.displayOutput = m_ui.displayBox->isChecked(); return rc; diff --git a/src/plugins/cpaster/settingspage.ui b/src/plugins/cpaster/settingspage.ui index 21ee0564d03d7829ca9c6a05caea020aab95892a..8cb5bc1ce44e150739ee142406253962300e8d5a 100644 --- a/src/plugins/cpaster/settingspage.ui +++ b/src/plugins/cpaster/settingspage.ui @@ -11,7 +11,14 @@ </rect> </property> <layout class="QGridLayout" name="gridLayout"> - <item row="8" column="0" colspan="2"> + <item row="4" column="0" colspan="2"> + <widget class="QCheckBox" name="clipboardBox"> + <property name="text"> + <string>Copy-paste URL to clipboard</string> + </property> + </widget> + </item> + <item row="9" column="0" colspan="2"> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -24,22 +31,35 @@ </property> </spacer> </item> - <item row="4" column="0" colspan="2"> - <widget class="QCheckBox" name="displayBox"> + <item row="1" column="1"> + <widget class="QLineEdit" name="userEdit"/> + </item> + <item row="0" column="1"> + <widget class="QComboBox" name="defaultProtocol"/> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="protocolLabel"> <property name="text"> - <string>Display Output pane after sending a post</string> + <string>Default protocol:</string> </property> </widget> </item> - <item row="3" column="0" colspan="2"> - <widget class="QCheckBox" name="clipboardBox"> + <item row="2" column="0"> + <widget class="QLabel" name="expiryLabel"> <property name="text"> - <string>Copy-paste URL to clipboard</string> + <string>&Expires after:</string> + </property> + <property name="buddy"> + <cstring>expirySpinBox</cstring> </property> </widget> </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="userEdit"/> + <item row="5" column="0" colspan="2"> + <widget class="QCheckBox" name="displayBox"> + <property name="text"> + <string>Display Output pane after sending a post</string> + </property> + </widget> </item> <item row="1" column="0"> <widget class="QLabel" name="userNameLabel"> @@ -48,13 +68,16 @@ </property> </widget> </item> - <item row="0" column="1"> - <widget class="QComboBox" name="defaultProtocol"/> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="protocolLabel"> - <property name="text"> - <string>Default protocol:</string> + <item row="2" column="1"> + <widget class="QSpinBox" name="expirySpinBox"> + <property name="suffix"> + <string>Days</string> + </property> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>365</number> </property> </widget> </item> diff --git a/src/plugins/cpaster/urlopenprotocol.cpp b/src/plugins/cpaster/urlopenprotocol.cpp index 865898282214f0e534590d677acdc00a51cdb7ea..f2e429e671f5bc2c7e75803e7661a9c99b967ad6 100644 --- a/src/plugins/cpaster/urlopenprotocol.cpp +++ b/src/plugins/cpaster/urlopenprotocol.cpp @@ -71,7 +71,7 @@ void UrlOpenProtocol::fetchFinished() emit fetchDone(title, content, error); } -void UrlOpenProtocol::paste(const QString &, ContentType, const QString &, +void UrlOpenProtocol::paste(const QString &, ContentType, int, const QString &, const QString &, const QString &) { } diff --git a/src/plugins/cpaster/urlopenprotocol.h b/src/plugins/cpaster/urlopenprotocol.h index dbd00674caf0bd1c7764b0f13a222e5f25e58afe..3179078e1e02ce2a9be6eaaee28c7dd67509e3d9 100644 --- a/src/plugins/cpaster/urlopenprotocol.h +++ b/src/plugins/cpaster/urlopenprotocol.h @@ -43,7 +43,7 @@ public: QString name() const; unsigned capabilities() const; void fetch(const QString &url); - void paste(const QString &, ContentType, const QString &, const QString &, const QString &); + void paste(const QString &, ContentType, int, const QString &, const QString &, const QString &); private slots: void fetchFinished();