diff --git a/src/plugins/cpaster/codepasterprotocol.cpp b/src/plugins/cpaster/codepasterprotocol.cpp
index 9ac4d6d1483..07447151bb3 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 912f0a3e5b5..097f55e66c1 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 e22513e1669..5ed8bafae69 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 d616439e89d..0663a5463fa 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 aee36c44795..62648918aa5 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 8c0fde42431..eca0e9a4448 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 651c9b64d90..8c4f2ac43cf 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 ac62c7e3d91..acce9146488 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 9910d328725..b045240b90e 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 8fceb8a8d5c..031c8383c2e 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 3bbccbd4ad8..685dd8c3f6c 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 b201b1ce7c2..f8de8f95335 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 a919feba2c7..acb2c2fae13 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 36c19658b0e..714826778a8 100644
--- a/src/plugins/cpaster/pasteview.ui
+++ b/src/plugins/cpaster/pasteview.ui
@@ -26,7 +26,7 @@
-
- -
+
-
&Username:
@@ -36,14 +36,14 @@
- -
+
-
<Username>
- -
+
-
&Description:
@@ -53,13 +53,36 @@
- -
+
-
<Description>
+ -
+
+
+ Days
+
+
+ 1
+
+
+ 365
+
+
+
+ -
+
+
+ &Expires after:
+
+
+ expirySpinBox
+
+
+
-
diff --git a/src/plugins/cpaster/protocol.h b/src/plugins/cpaster/protocol.h
index 76c0e569850..6fd81568166 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 de6ebeddd8b..0c724ffe130 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 59c54f81594..54ebc913aad 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 cf87bfb12c6..35060653eb9 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 21ee0564d03..8cb5bc1ce44 100644
--- a/src/plugins/cpaster/settingspage.ui
+++ b/src/plugins/cpaster/settingspage.ui
@@ -11,7 +11,14 @@
-
-
+
-
+
+
+ Copy-paste URL to clipboard
+
+
+
+ -
Qt::Vertical
@@ -24,30 +31,9 @@
- -
-
-
- Display Output pane after sending a post
-
-
-
- -
-
-
- Copy-paste URL to clipboard
-
-
-
-
- -
-
-
- Username:
-
-
-
-
@@ -58,6 +44,43 @@
+ -
+
+
+ &Expires after:
+
+
+ expirySpinBox
+
+
+
+ -
+
+
+ Display Output pane after sending a post
+
+
+
+ -
+
+
+ Username:
+
+
+
+ -
+
+
+ Days
+
+
+ 1
+
+
+ 365
+
+
+
diff --git a/src/plugins/cpaster/urlopenprotocol.cpp b/src/plugins/cpaster/urlopenprotocol.cpp
index 86589828221..f2e429e671f 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 dbd00674caf..3179078e1e0 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();