CodePaster: Add setting for expiry.

Add a setting for expiry in days and additional setting for
PasteView dialog which can be used to override.

Change-Id: Ie45e26b5cefd8f468d2f5c47df148cce582b201e
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Friedemann Kleint
2013-04-04 17:20:15 +02:00
parent 9528671f42
commit 19a4810ce8
21 changed files with 122 additions and 50 deletions

View File

@@ -125,7 +125,7 @@ void CodePasterProtocol::list()
} }
void CodePasterProtocol::paste(const QString &text, void CodePasterProtocol::paste(const QString &text,
ContentType /* ct */, ContentType /* ct */, int /* expiryDays */,
const QString &username, const QString &username,
const QString &comment, const QString &comment,
const QString &description) const QString &description)

View File

@@ -58,6 +58,7 @@ public:
void list(); void list();
void paste(const QString &text, void paste(const QString &text,
ContentType ct = Text, ContentType ct = Text,
int expiryDays = 1,
const QString &username = QString(), const QString &username = QString(),
const QString &comment = QString(), const QString &comment = QString(),
const QString &description = QString()); const QString &description = QString());

View File

@@ -262,8 +262,8 @@ void CodepasterPlugin::post(QString data, const QString &mimeType)
const FileDataList diffChunks = splitDiffToFiles(data); const FileDataList diffChunks = splitDiffToFiles(data);
const int dialogResult = diffChunks.isEmpty() ? const int dialogResult = diffChunks.isEmpty() ?
view.show(username, QString(), QString(), data) : view.show(username, QString(), QString(), m_settings->expiryDays, data) :
view.show(username, QString(), QString(), diffChunks); view.show(username, QString(), QString(), m_settings->expiryDays, diffChunks);
// Save new protocol in case user changed it. // Save new protocol in case user changed it.
if (dialogResult == QDialog::Accepted if (dialogResult == QDialog::Accepted
&& m_settings->protocol != view.protocol()) { && m_settings->protocol != view.protocol()) {

View File

@@ -181,7 +181,7 @@ void FileShareProtocol::list()
} }
void FileShareProtocol::paste(const QString &text, void FileShareProtocol::paste(const QString &text,
ContentType /* ct */, ContentType /* ct */, int /* expiryDays */,
const QString &username, const QString &username,
const QString & /* comment */, const QString & /* comment */,
const QString &description) const QString &description)

View File

@@ -59,7 +59,7 @@ public:
virtual void fetch(const QString &id); virtual void fetch(const QString &id);
virtual void list(); virtual void list();
virtual void paste(const QString &text, virtual void paste(const QString &text,
ContentType ct = Text, ContentType ct = Text, int expiryDays = 1,
const QString &username = QString(), const QString &username = QString(),
const QString &comment = QString(), const QString &comment = QString(),
const QString &description = QString()); const QString &description = QString());

View File

@@ -43,8 +43,6 @@ enum { debug = 0 };
static const char hostUrlC[]= "http://paste.kde.org/"; static const char hostUrlC[]= "http://paste.kde.org/";
static const char showPhpScriptpC[] = "show.php"; static const char showPhpScriptpC[] = "show.php";
enum { expirySeconds = 86400 };
namespace CodePaster { namespace CodePaster {
KdePasteProtocol::KdePasteProtocol(const NetworkAccessManagerProxyPtr &nw) : KdePasteProtocol::KdePasteProtocol(const NetworkAccessManagerProxyPtr &nw) :
NetworkProtocol(nw), NetworkProtocol(nw),
@@ -97,7 +95,7 @@ static inline QByteArray pasteLanguage(Protocol::ContentType ct)
} }
void KdePasteProtocol::paste(const QString &text, void KdePasteProtocol::paste(const QString &text,
ContentType ct, ContentType ct, int expiryDays,
const QString &username, const QString &username,
const QString &comment, const QString &comment,
const QString &description) const QString &description)
@@ -115,7 +113,7 @@ void KdePasteProtocol::paste(const QString &text,
pasteData += "&paste_data="; pasteData += "&paste_data=";
pasteData += QUrl::toPercentEncoding(fixNewLines(text)); pasteData += QUrl::toPercentEncoding(fixNewLines(text));
pasteData += "&paste_expire="; pasteData += "&paste_expire=";
pasteData += QByteArray::number(expirySeconds); pasteData += QByteArray::number(expiryDays * 86400);
pasteData += '&'; pasteData += '&';
pasteData += pasteLanguage(ct); pasteData += pasteLanguage(ct);

View File

@@ -48,6 +48,7 @@ public:
virtual void fetch(const QString &id); virtual void fetch(const QString &id);
virtual void paste(const QString &text, virtual void paste(const QString &text,
ContentType ct = Text, ContentType ct = Text,
int expiryDays = 1,
const QString &username = QString(), const QString &username = QString(),
const QString &comment = QString(), const QString &comment = QString(),
const QString &description = QString()); const QString &description = QString());

View File

@@ -90,7 +90,7 @@ static QByteArray toTypeId(Protocol::ContentType ct)
} }
void PasteBinDotCaProtocol::paste(const QString &text, void PasteBinDotCaProtocol::paste(const QString &text,
ContentType ct, ContentType ct, int expiryDays,
const QString &username, const QString &username,
const QString & /* comment */, const QString & /* comment */,
const QString &description) const QString &description)
@@ -103,7 +103,9 @@ void PasteBinDotCaProtocol::paste(const QString &text,
data += toTypeId(ct); data += toTypeId(ct);
data += "&description="; data += "&description=";
data += QUrl::toPercentEncoding(description); data += QUrl::toPercentEncoding(description);
data += "expiry=1%20day&name="; data += "&expiry=";
data += QByteArray::number(expiryDays);
data += "%20day&name=";
data += QUrl::toPercentEncoding(username); data += QUrl::toPercentEncoding(username);
// fire request // fire request
const QString link = QLatin1String(urlC) + QLatin1String("quiet-paste.php"); const QString link = QLatin1String(urlC) + QLatin1String("quiet-paste.php");

View File

@@ -48,6 +48,7 @@ public:
virtual void fetch(const QString &id); virtual void fetch(const QString &id);
virtual void paste(const QString &text, virtual void paste(const QString &text,
ContentType ct = Text, ContentType ct = Text,
int expiryDays = 1,
const QString &username = QString(), const QString &username = QString(),
const QString &comment = QString(), const QString &comment = QString(),
const QString &description = QString()); const QString &description = QString());

View File

@@ -99,7 +99,7 @@ static inline QByteArray format(Protocol::ContentType ct)
} }
void PasteBinDotComProtocol::paste(const QString &text, void PasteBinDotComProtocol::paste(const QString &text,
ContentType ct, ContentType ct, int expiryDays,
const QString &username, const QString &username,
const QString &comment, const QString &comment,
const QString &description) const QString &description)
@@ -111,14 +111,14 @@ void PasteBinDotComProtocol::paste(const QString &text,
// Format body // Format body
QByteArray pasteData = API_KEY; QByteArray pasteData = API_KEY;
pasteData += "api_option=paste&"; 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 += format(ct);
pasteData += "api_paste_name="; pasteData += "api_paste_name=";
pasteData += QUrl::toPercentEncoding(username); pasteData += QUrl::toPercentEncoding(username);
pasteData += "&api_paste_code="; pasteData += "&api_paste_code=";
pasteData += QUrl::toPercentEncoding(fixNewLines(text)); pasteData += QUrl::toPercentEncoding(fixNewLines(text));
// fire request // fire request
m_pasteReply = httpPost(QLatin1String(PASTEBIN_BASE) + QLatin1String(PASTEBIN_API), pasteData); m_pasteReply = httpPost(QLatin1String(PASTEBIN_BASE) + QLatin1String(PASTEBIN_API), pasteData);
connect(m_pasteReply, SIGNAL(finished()), this, SLOT(pasteFinished())); connect(m_pasteReply, SIGNAL(finished()), this, SLOT(pasteFinished()));

View File

@@ -48,6 +48,7 @@ public:
virtual void fetch(const QString &id); virtual void fetch(const QString &id);
virtual void paste(const QString &text, virtual void paste(const QString &text,
ContentType ct = Text, ContentType ct = Text,
int expiryDays = 1,
const QString &username = QString(), const QString &username = QString(),
const QString &comment = QString(), const QString &comment = QString(),
const QString &description = QString()); const QString &description = QString());

View File

@@ -144,7 +144,7 @@ int PasteView::showDialog()
// Show up with checkable list of diff chunks. // Show up with checkable list of diff chunks.
int PasteView::show(const QString &user, const QString &description, 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); setupDialog(user, description, comment);
m_ui.uiPatchList->clear(); m_ui.uiPatchList->clear();
@@ -159,20 +159,32 @@ int PasteView::show(const QString &user, const QString &description,
} }
m_ui.stackedWidget->setCurrentIndex(0); m_ui.stackedWidget->setCurrentIndex(0);
m_ui.uiPatchView->setPlainText(content); m_ui.uiPatchView->setPlainText(content);
setExpiryDays(expiryDays);
return showDialog(); return showDialog();
} }
// Show up with editable plain text. // Show up with editable plain text.
int PasteView::show(const QString &user, const QString &description, 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); setupDialog(user, description, comment);
m_mode = PlainTextMode; m_mode = PlainTextMode;
m_ui.stackedWidget->setCurrentIndex(1); m_ui.stackedWidget->setCurrentIndex(1);
m_ui.plainTextEdit->setPlainText(content); m_ui.plainTextEdit->setPlainText(content);
setExpiryDays(expiryDays);
return showDialog(); return showDialog();
} }
void PasteView::setExpiryDays(int d)
{
m_ui.expirySpinBox->setValue(d);
}
int PasteView::expiryDays() const
{
return m_ui.expirySpinBox->value();
}
void PasteView::accept() void PasteView::accept()
{ {
const int index = m_ui.protocolBox->currentIndex(); const int index = m_ui.protocolBox->currentIndex();
@@ -189,7 +201,7 @@ void PasteView::accept()
return; return;
const Protocol::ContentType ct = Protocol::contentType(m_mimeType); 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 // Store settings and close
QSettings *settings = Core::ICore::settings(); QSettings *settings = Core::ICore::settings();
settings->beginGroup(QLatin1String(groupC)); settings->beginGroup(QLatin1String(groupC));

View File

@@ -56,10 +56,10 @@ public:
// Show up with checkable list of diff chunks. // Show up with checkable list of diff chunks.
int show(const QString &user, const QString &description, const QString &comment, 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. // Show up with editable plain text.
int show(const QString &user, const QString &description, const QString &comment, int show(const QString &user, const QString &description, const QString &comment,
const QString &content); int expiryDays, const QString &content);
void setProtocol(const QString &protocol); void setProtocol(const QString &protocol);
@@ -68,6 +68,8 @@ public:
QString comment() const; QString comment() const;
QString content() const; QString content() const;
QString protocol() const; QString protocol() const;
void setExpiryDays(int d);
int expiryDays() const;
virtual void accept(); virtual void accept();

View File

@@ -26,7 +26,7 @@
<item row="0" column="1"> <item row="0" column="1">
<widget class="QComboBox" name="protocolBox"/> <widget class="QComboBox" name="protocolBox"/>
</item> </item>
<item row="1" column="0"> <item row="2" column="0">
<widget class="QLabel" name="userLabel"> <widget class="QLabel" name="userLabel">
<property name="text"> <property name="text">
<string>&amp;Username:</string> <string>&amp;Username:</string>
@@ -36,14 +36,14 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="2" column="1">
<widget class="QLineEdit" name="uiUsername"> <widget class="QLineEdit" name="uiUsername">
<property name="placeholderText"> <property name="placeholderText">
<string>&lt;Username&gt;</string> <string>&lt;Username&gt;</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0"> <item row="3" column="0">
<widget class="QLabel" name="descriptionLabel"> <widget class="QLabel" name="descriptionLabel">
<property name="text"> <property name="text">
<string>&amp;Description:</string> <string>&amp;Description:</string>
@@ -53,13 +53,36 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="3" column="1">
<widget class="QLineEdit" name="uiDescription"> <widget class="QLineEdit" name="uiDescription">
<property name="placeholderText"> <property name="placeholderText">
<string>&lt;Description&gt;</string> <string>&lt;Description&gt;</string>
</property> </property>
</widget> </widget>
</item> </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>&amp;Expires after:</string>
</property>
<property name="buddy">
<cstring>expirySpinBox</cstring>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item> <item>

View File

@@ -74,6 +74,7 @@ public:
virtual void list(); virtual void list();
virtual void paste(const QString &text, virtual void paste(const QString &text,
ContentType ct = Text, ContentType ct = Text,
int expiryDays = 1,
const QString &username = QString(), const QString &username = QString(),
const QString &comment = QString(), const QString &comment = QString(),
const QString &description = QString()) = 0; const QString &description = QString()) = 0;

View File

@@ -36,20 +36,22 @@
static const char groupC[] = "CodePaster"; static const char groupC[] = "CodePaster";
static const char userNameKeyC[] = "UserName"; static const char userNameKeyC[] = "UserName";
static const char expiryDaysKeyC[] = "ExpiryDays";
static const char defaultProtocolKeyC[] = "DefaultProtocol"; static const char defaultProtocolKeyC[] = "DefaultProtocol";
static const char copyToClipboardKeyC[] = "CopyToClipboard"; static const char copyToClipboardKeyC[] = "CopyToClipboard";
static const char displayOutputKeyC[] = "DisplayOutput"; static const char displayOutputKeyC[] = "DisplayOutput";
namespace CodePaster { namespace CodePaster {
Settings::Settings() : copyToClipboard(true), displayOutput(true) Settings::Settings() : expiryDays(1), copyToClipboard(true), displayOutput(true)
{ {
} }
bool Settings::equals(const Settings &rhs) const bool Settings::equals(const Settings &rhs) const
{ {
return copyToClipboard == rhs.copyToClipboard && displayOutput == rhs.displayOutput 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 void Settings::toSettings(QSettings *settings) const
@@ -57,6 +59,7 @@ void Settings::toSettings(QSettings *settings) const
settings->beginGroup(QLatin1String(groupC)); settings->beginGroup(QLatin1String(groupC));
settings->setValue(QLatin1String(userNameKeyC), username); settings->setValue(QLatin1String(userNameKeyC), username);
settings->setValue(QLatin1String(defaultProtocolKeyC), protocol); settings->setValue(QLatin1String(defaultProtocolKeyC), protocol);
settings->setValue(QLatin1String(expiryDaysKeyC), expiryDays);
settings->setValue(QLatin1String(copyToClipboardKeyC), copyToClipboard); settings->setValue(QLatin1String(copyToClipboardKeyC), copyToClipboard);
settings->setValue(QLatin1String(displayOutputKeyC), displayOutput); settings->setValue(QLatin1String(displayOutputKeyC), displayOutput);
settings->endGroup(); settings->endGroup();
@@ -66,6 +69,7 @@ void Settings::fromSettings(const QSettings *settings)
{ {
const QString rootKey = QLatin1String(groupC) + QLatin1Char('/'); const QString rootKey = QLatin1String(groupC) + QLatin1Char('/');
const QString defaultUser = Utils::Environment::systemEnvironment().userName(); const QString defaultUser = Utils::Environment::systemEnvironment().userName();
expiryDays = settings->value(rootKey + QLatin1String(expiryDaysKeyC), 1).toInt();
username = settings->value(rootKey + QLatin1String(userNameKeyC), defaultUser).toString(); username = settings->value(rootKey + QLatin1String(userNameKeyC), defaultUser).toString();
protocol = settings->value(rootKey + QLatin1String(defaultProtocolKeyC), PasteBinDotComProtocol::protocolName()).toString(); protocol = settings->value(rootKey + QLatin1String(defaultProtocolKeyC), PasteBinDotComProtocol::protocolName()).toString();
copyToClipboard = settings->value(rootKey + QLatin1String(copyToClipboardKeyC), true).toBool(); copyToClipboard = settings->value(rootKey + QLatin1String(copyToClipboardKeyC), true).toBool();

View File

@@ -46,6 +46,7 @@ struct Settings {
QString username; QString username;
QString protocol; QString protocol;
int expiryDays;
bool copyToClipboard; bool copyToClipboard;
bool displayOutput; bool displayOutput;
}; };

View File

@@ -59,6 +59,7 @@ void SettingsWidget::setSettings(const Settings &settings)
m_ui.userEdit->setText(settings.username); m_ui.userEdit->setText(settings.username);
const int index = m_ui.defaultProtocol->findText(settings.protocol); const int index = m_ui.defaultProtocol->findText(settings.protocol);
m_ui.defaultProtocol->setCurrentIndex(index == -1 ? 0 : index); m_ui.defaultProtocol->setCurrentIndex(index == -1 ? 0 : index);
m_ui.expirySpinBox->setValue(settings.expiryDays);
m_ui.clipboardBox->setChecked(settings.copyToClipboard); m_ui.clipboardBox->setChecked(settings.copyToClipboard);
m_ui.displayBox->setChecked(settings.displayOutput); m_ui.displayBox->setChecked(settings.displayOutput);
} }
@@ -68,6 +69,7 @@ Settings SettingsWidget::settings()
Settings rc; Settings rc;
rc.username = m_ui.userEdit->text(); rc.username = m_ui.userEdit->text();
rc.protocol = m_ui.defaultProtocol->currentText(); rc.protocol = m_ui.defaultProtocol->currentText();
rc.expiryDays = m_ui.expirySpinBox->value();
rc.copyToClipboard = m_ui.clipboardBox->isChecked(); rc.copyToClipboard = m_ui.clipboardBox->isChecked();
rc.displayOutput = m_ui.displayBox->isChecked(); rc.displayOutput = m_ui.displayBox->isChecked();
return rc; return rc;

View File

@@ -11,7 +11,14 @@
</rect> </rect>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <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"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@@ -24,30 +31,9 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="4" 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="3" column="0" colspan="2">
<widget class="QCheckBox" name="clipboardBox">
<property name="text">
<string>Copy-paste URL to clipboard</string>
</property>
</widget>
</item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QLineEdit" name="userEdit"/> <widget class="QLineEdit" name="userEdit"/>
</item> </item>
<item row="1" column="0">
<widget class="QLabel" name="userNameLabel">
<property name="text">
<string>Username:</string>
</property>
</widget>
</item>
<item row="0" column="1"> <item row="0" column="1">
<widget class="QComboBox" name="defaultProtocol"/> <widget class="QComboBox" name="defaultProtocol"/>
</item> </item>
@@ -58,6 +44,43 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0">
<widget class="QLabel" name="expiryLabel">
<property name="text">
<string>&amp;Expires after:</string>
</property>
<property name="buddy">
<cstring>expirySpinBox</cstring>
</property>
</widget>
</item>
<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">
<property name="text">
<string>Username:</string>
</property>
</widget>
</item>
<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>
</layout> </layout>
</widget> </widget>
<resources/> <resources/>

View File

@@ -71,7 +71,7 @@ void UrlOpenProtocol::fetchFinished()
emit fetchDone(title, content, error); 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 &) const QString &, const QString &)
{ {
} }

View File

@@ -43,7 +43,7 @@ public:
QString name() const; QString name() const;
unsigned capabilities() const; unsigned capabilities() const;
void fetch(const QString &url); 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: private slots:
void fetchFinished(); void fetchFinished();