diff options
author | hjk <hjk@qt.io> | 2021-03-22 17:01:23 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2021-03-25 09:04:21 +0000 |
commit | 123133841e7d5645fb236ef8bb3a33fccad6d450 (patch) | |
tree | c53d573a75f25769bc672d5bf6dcc3882538f2b8 /src/plugins/cpaster | |
parent | bc97b104886c2b0e00a993344af2a47ec7b929e4 (diff) |
CPaster: Aspectify general settings
Change-Id: Ia0a24dd5fdc03217c54aee50ed1f39be0110a415
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/cpaster')
-rw-r--r-- | src/plugins/cpaster/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/plugins/cpaster/cpaster.pro | 4 | ||||
-rw-r--r-- | src/plugins/cpaster/cpaster.qbs | 3 | ||||
-rw-r--r-- | src/plugins/cpaster/cpasterplugin.cpp | 48 | ||||
-rw-r--r-- | src/plugins/cpaster/pasteselectdialog.cpp | 4 | ||||
-rw-r--r-- | src/plugins/cpaster/pasteselectdialog.h | 2 | ||||
-rw-r--r-- | src/plugins/cpaster/pasteview.cpp | 4 | ||||
-rw-r--r-- | src/plugins/cpaster/pasteview.h | 2 | ||||
-rw-r--r-- | src/plugins/cpaster/settings.cpp | 120 | ||||
-rw-r--r-- | src/plugins/cpaster/settings.h | 38 | ||||
-rw-r--r-- | src/plugins/cpaster/settingspage.cpp | 92 | ||||
-rw-r--r-- | src/plugins/cpaster/settingspage.h | 45 | ||||
-rw-r--r-- | src/plugins/cpaster/settingspage.ui | 102 |
13 files changed, 141 insertions, 324 deletions
diff --git a/src/plugins/cpaster/CMakeLists.txt b/src/plugins/cpaster/CMakeLists.txt index 39ab53da64..2ab4e8517c 100644 --- a/src/plugins/cpaster/CMakeLists.txt +++ b/src/plugins/cpaster/CMakeLists.txt @@ -24,7 +24,6 @@ add_qtc_plugin(CodePaster pasteview.cpp pasteview.h pasteview.ui protocol.cpp protocol.h settings.cpp settings.h - settingspage.cpp settingspage.h settingspage.ui stickynotespasteprotocol.cpp stickynotespasteprotocol.h urlopenprotocol.cpp urlopenprotocol.h diff --git a/src/plugins/cpaster/cpaster.pro b/src/plugins/cpaster/cpaster.pro index c824caa681..b6209907a8 100644 --- a/src/plugins/cpaster/cpaster.pro +++ b/src/plugins/cpaster/cpaster.pro @@ -2,7 +2,6 @@ QT += network include(../../qtcreatorplugin.pri) HEADERS += cpasterplugin.h \ dpastedotcomprotocol.h \ - settingspage.h \ protocol.h \ pasteview.h \ cpasterconstants.h \ @@ -18,7 +17,6 @@ HEADERS += cpasterplugin.h \ SOURCES += cpasterplugin.cpp \ dpastedotcomprotocol.cpp \ - settingspage.cpp \ protocol.cpp \ pasteview.cpp \ pastebindotcomprotocol.cpp \ @@ -30,7 +28,7 @@ SOURCES += cpasterplugin.cpp \ stickynotespasteprotocol.cpp \ urlopenprotocol.cpp -FORMS += settingspage.ui \ +FORMS += \ pasteselect.ui \ pasteview.ui \ pastebindotcomsettings.ui \ diff --git a/src/plugins/cpaster/cpaster.qbs b/src/plugins/cpaster/cpaster.qbs index e4aa433130..4ca68fde11 100644 --- a/src/plugins/cpaster/cpaster.qbs +++ b/src/plugins/cpaster/cpaster.qbs @@ -39,9 +39,6 @@ QtcPlugin { "protocol.h", "settings.cpp", "settings.h", - "settingspage.cpp", - "settingspage.h", - "settingspage.ui", "stickynotespasteprotocol.cpp", "stickynotespasteprotocol.h", "urlopenprotocol.cpp", diff --git a/src/plugins/cpaster/cpasterplugin.cpp b/src/plugins/cpaster/cpasterplugin.cpp index 455d674877..6605e4240e 100644 --- a/src/plugins/cpaster/cpasterplugin.cpp +++ b/src/plugins/cpaster/cpasterplugin.cpp @@ -30,7 +30,6 @@ #include "pastebindotcomprotocol.h" #include "pasteselectdialog.h" #include "pasteview.h" -#include "settingspage.h" #include "settings.h" #include "urlopenprotocol.h" @@ -98,10 +97,7 @@ public: &dpasteProto }; - SettingsPage m_settingsPage { - &m_settings, - Utils::transform(m_protocols, &Protocol::name) - }; + SettingsPage m_settingsPage{&m_settings}; QStringList m_fetchedSnippets; @@ -154,15 +150,19 @@ bool CodePasterPlugin::initialize(const QStringList &arguments, QString *errorMe CodePasterPluginPrivate::CodePasterPluginPrivate() { - // Create the settings Page - m_settings.fromSettings(ICore::settings()); - // Connect protocols - for (Protocol *proto : m_protocols) { - connect(proto, &Protocol::pasteDone, this, &CodePasterPluginPrivate::finishPost); - connect(proto, &Protocol::fetchDone, this, &CodePasterPluginPrivate::finishFetch); + if (!m_protocols.isEmpty()) { + for (Protocol *proto : m_protocols) { + m_settings.protocols.addOption(proto->name()); + connect(proto, &Protocol::pasteDone, this, &CodePasterPluginPrivate::finishPost); + connect(proto, &Protocol::fetchDone, this, &CodePasterPluginPrivate::finishFetch); + } + m_settings.protocols.setDefaultValue(m_protocols.at(0)->name()); } + // Create the settings Page + m_settings.readSettings(ICore::settings()); + connect(&m_urlOpen, &Protocol::fetchDone, this, &CodePasterPluginPrivate::finishFetch); //register actions @@ -267,20 +267,20 @@ void CodePasterPluginPrivate::post(QString data, const QString &mimeType) { fixSpecialCharacters(data); - const QString username = m_settings.username; + const QString username = m_settings.username.value(); PasteView view(m_protocols, mimeType, ICore::dialogParent()); - view.setProtocol(m_settings.protocol); + view.setProtocol(m_settings.protocols.stringValue()); const FileDataList diffChunks = splitDiffToFiles(data); const int dialogResult = diffChunks.isEmpty() ? - view.show(username, QString(), QString(), m_settings.expiryDays, m_settings.publicPaste, data) : - view.show(username, QString(), QString(), m_settings.expiryDays, m_settings.publicPaste, diffChunks); + view.show(username, {}, {}, m_settings.expiryDays.value(), m_settings.publicPaste.value(), data) : + view.show(username, {}, {}, m_settings.expiryDays.value(), m_settings.publicPaste.value(), diffChunks); // Save new protocol in case user changed it. - if (dialogResult == QDialog::Accepted && m_settings.protocol != view.protocol()) { - m_settings.protocol = view.protocol(); - m_settings.toSettings(ICore::settings()); + if (dialogResult == QDialog::Accepted && m_settings.protocols.value() != view.protocol()) { + m_settings.protocols.setValue(view.protocol()); + m_settings.writeSettings(ICore::settings()); } } @@ -304,14 +304,14 @@ void CodePasterPluginPrivate::pasteSnippet() void CodePasterPluginPrivate::fetch() { PasteSelectDialog dialog(m_protocols, ICore::dialogParent()); - dialog.setProtocol(m_settings.protocol); + dialog.setProtocol(m_settings.protocols.stringValue()); if (dialog.exec() != QDialog::Accepted) return; // Save new protocol in case user changed it. - if (m_settings.protocol != dialog.protocol()) { - m_settings.protocol = dialog.protocol(); - m_settings.toSettings(ICore::settings()); + if (m_settings.protocols.value() != dialog.protocol()) { + m_settings.protocols.setValue(dialog.protocol()); + m_settings.writeSettings(ICore::settings()); } const QString pasteID = dialog.pasteId(); @@ -324,9 +324,9 @@ void CodePasterPluginPrivate::fetch() void CodePasterPluginPrivate::finishPost(const QString &link) { - if (m_settings.copyToClipboard) + if (m_settings.copyToClipboard.value()) QApplication::clipboard()->setText(link); - if (m_settings.displayOutput) + if (m_settings.displayOutput.value()) MessageManager::writeDisrupting(link); else MessageManager::writeSilently(link); diff --git a/src/plugins/cpaster/pasteselectdialog.cpp b/src/plugins/cpaster/pasteselectdialog.cpp index 193c49525b..ff4dbcb3dc 100644 --- a/src/plugins/cpaster/pasteselectdialog.cpp +++ b/src/plugins/cpaster/pasteselectdialog.cpp @@ -84,9 +84,9 @@ void PasteSelectDialog::setProtocol(const QString &p) } } -QString PasteSelectDialog::protocol() const +int PasteSelectDialog::protocol() const { - return m_ui.protocolBox->currentText(); + return m_ui.protocolBox->currentIndex(); } int PasteSelectDialog::protocolIndex() const diff --git a/src/plugins/cpaster/pasteselectdialog.h b/src/plugins/cpaster/pasteselectdialog.h index b6b57fae08..30faec246a 100644 --- a/src/plugins/cpaster/pasteselectdialog.h +++ b/src/plugins/cpaster/pasteselectdialog.h @@ -44,7 +44,7 @@ public: QString pasteId() const; - QString protocol() const; + int protocol() const; void setProtocol(const QString &); int protocolIndex() const; diff --git a/src/plugins/cpaster/pasteview.cpp b/src/plugins/cpaster/pasteview.cpp index d5775adb5e..adaf099200 100644 --- a/src/plugins/cpaster/pasteview.cpp +++ b/src/plugins/cpaster/pasteview.cpp @@ -94,9 +94,9 @@ QString PasteView::content() const return newContent; } -QString PasteView::protocol() const +int PasteView::protocol() const { - return m_ui.protocolBox->currentText(); + return m_ui.protocolBox->currentIndex(); } void PasteView::contentChanged() diff --git a/src/plugins/cpaster/pasteview.h b/src/plugins/cpaster/pasteview.h index 6a2b78c64e..73804b53b4 100644 --- a/src/plugins/cpaster/pasteview.h +++ b/src/plugins/cpaster/pasteview.h @@ -63,7 +63,7 @@ public: QString description() const; QString comment() const; QString content() const; - QString protocol() const; + int protocol() const; void setExpiryDays(int d); void setMakePublic(bool p); int expiryDays() const; diff --git a/src/plugins/cpaster/settings.cpp b/src/plugins/cpaster/settings.cpp index 61508a201d..816e051859 100644 --- a/src/plugins/cpaster/settings.cpp +++ b/src/plugins/cpaster/settings.cpp @@ -24,51 +24,109 @@ ****************************************************************************/ #include "settings.h" + +#include "cpasterconstants.h" #include "pastebindotcomprotocol.h" -#include <utils/environment.h> +#include <coreplugin/icore.h> -#include <QSettings> +#include <utils/layoutbuilder.h> -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"; -static const char publicPasteKeyC[] = "DisplayOutput"; +using namespace Utils; namespace CodePaster { -bool Settings::equals(const Settings &rhs) const +Settings::Settings() +{ + setSettingsGroup("CodePaster"); + setAutoApply(false); + + registerAspect(&username); + username.setDisplayStyle(StringAspect::LineEditDisplay); + username.setSettingsKey("UserName"); + username.setLabelText(tr("Username:")); + + registerAspect(&protocols); + protocols.setSettingsKey("DefaultProtocol"); + protocols.setDisplayStyle(SelectionAspect::DisplayStyle::ComboBox); + protocols.setLabelText(tr("Default protocol:")); + protocols.setToSettingsTransformation([this](const QVariant &val) { + return protocols.displayForIndex(val.toInt()); + }); + protocols.setFromSettingsTransformation([this](const QVariant &val) { + return protocols.indexForDisplay(val.toString()); + }); + + registerAspect(&expiryDays); + expiryDays.setSettingsKey("ExpiryDays"); + expiryDays.setDefaultValue(1); + expiryDays.setSuffix(tr(" Days")); + expiryDays.setLabelText(tr("&Expires after:")); + + registerAspect(©ToClipboard); + copyToClipboard.setSettingsKey("CopyToClipboard"); + copyToClipboard.setDefaultValue(true); + copyToClipboard.setLabelText(tr("Copy-paste URL to clipboard")); + + registerAspect(&displayOutput); + displayOutput.setSettingsKey("DisplayOutput"); + displayOutput.setDefaultValue(true); + displayOutput.setLabelText(tr("Display Output pane after sending a post")); + + registerAspect(&publicPaste); + publicPaste.setSettingsKey("DisplayOutput"); + publicPaste.setLabelText(tr("Make pasted content public by default")); +} + +// SettingsPage + +class SettingsWidget final : public Core::IOptionsPageWidget +{ +public: + SettingsWidget(Settings *settings); + +private: + void apply() final; + + Settings *m_settings; +}; + +SettingsWidget::SettingsWidget(Settings *settings) + : m_settings(settings) { - return copyToClipboard == rhs.copyToClipboard && displayOutput == rhs.displayOutput - && expiryDays == rhs.expiryDays && username == rhs.username - && protocol == rhs.protocol && publicPaste == rhs.publicPaste; + Settings &s = *settings; + using namespace Layouting; + const Break nl; + + Column { + Form { + s.protocols, nl, + s.username, nl, + s.expiryDays + }, + s.copyToClipboard, + s.displayOutput, + s.publicPaste, + Stretch() + }.attachTo(this); } -void Settings::toSettings(QSettings *settings) const +void SettingsWidget::apply() { - 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->setValue(publicPasteKeyC, publicPaste); - settings->endGroup(); + if (m_settings->isDirty()) { + m_settings->apply(); + m_settings->writeSettings(Core::ICore::settings()); + } } -void Settings::fromSettings(const QSettings *settings) +SettingsPage::SettingsPage(Settings *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(); - displayOutput = settings->value(rootKey + QLatin1String(displayOutputKeyC), true).toBool(); - publicPaste = settings->value(rootKey + publicPasteKeyC, false).toBool(); + setId("A.CodePaster.General"); + setDisplayName(tr("General")); + setCategory(Constants::CPASTER_SETTINGS_CATEGORY); + setDisplayCategory(QCoreApplication::translate("CodePaster", "Code Pasting")); + setCategoryIconPath(":/cpaster/images/settingscategory_cpaster.png"); + setWidgetCreator([settings] { return new SettingsWidget(settings); }); } } // namespace CodePaster diff --git a/src/plugins/cpaster/settings.h b/src/plugins/cpaster/settings.h index 451f85e0f3..57046f95c1 100644 --- a/src/plugins/cpaster/settings.h +++ b/src/plugins/cpaster/settings.h @@ -25,29 +25,33 @@ #pragma once -#include <QString> +#include <coreplugin/dialogs/ioptionspage.h> -QT_BEGIN_NAMESPACE -class QSettings; -QT_END_NAMESPACE +#include <utils/aspects.h> namespace CodePaster { -class Settings { +class Settings : public Utils::AspectContainer +{ + Q_DECLARE_TR_FUNCTIONS(CodePaster::Settings) + public: - void toSettings(QSettings *s) const; - void fromSettings(const QSettings *s); - bool equals(const Settings &s) const; - - QString username; - QString protocol; - int expiryDays = 1; - bool copyToClipboard = true; - bool displayOutput = true; - bool publicPaste = false; + Settings(); + + Utils::StringAspect username; + Utils::SelectionAspect protocols; + Utils::IntegerAspect expiryDays; + Utils::BoolAspect copyToClipboard; + Utils::BoolAspect displayOutput; + Utils::BoolAspect publicPaste; }; -inline bool operator==(const Settings &s1, const Settings &s2) { return s1.equals(s2); } -inline bool operator!=(const Settings &s1, const Settings &s2) { return !s1.equals(s2); } +class SettingsPage final : public Core::IOptionsPage +{ + Q_DECLARE_TR_FUNCTIONS(CodePaster::SettingsPage) + +public: + SettingsPage(Settings *settings); +}; } // namespace CodePaster diff --git a/src/plugins/cpaster/settingspage.cpp b/src/plugins/cpaster/settingspage.cpp deleted file mode 100644 index c21b0fe485..0000000000 --- a/src/plugins/cpaster/settingspage.cpp +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "settingspage.h" -#include "settings.h" -#include "cpasterconstants.h" - -#include <coreplugin/icore.h> - -#include <QTextStream> -#include <QCoreApplication> - -namespace CodePaster { - -class SettingsWidget final : public Core::IOptionsPageWidget -{ -public: - SettingsWidget(const QStringList &protocols, Settings *settings); - -private: - void apply() final; - - Settings *m_settings; - Internal::Ui::SettingsPage m_ui; -}; - -SettingsWidget::SettingsWidget(const QStringList &protocols, Settings *settings) - : m_settings(settings) -{ - m_ui.setupUi(this); - m_ui.defaultProtocol->addItems(protocols); - - m_ui.userEdit->setText(m_settings->username); - 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); -} - -void SettingsWidget::apply() -{ - Settings rc; - 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(); - - if (rc != *m_settings) { - *m_settings = rc; - m_settings->toSettings(Core::ICore::settings()); - } -} - -SettingsPage::SettingsPage(Settings *settings, const QStringList &protocolNames) -{ - setId("A.CodePaster.General"); - setDisplayName(tr("General")); - setCategory(Constants::CPASTER_SETTINGS_CATEGORY); - setDisplayCategory(QCoreApplication::translate("CodePaster", "Code Pasting")); - setCategoryIconPath(":/cpaster/images/settingscategory_cpaster.png"); - setWidgetCreator([settings, protocolNames] { - return new SettingsWidget(protocolNames, settings); - }); -} - -} // namespace CodePaster diff --git a/src/plugins/cpaster/settingspage.h b/src/plugins/cpaster/settingspage.h deleted file mode 100644 index 5d8ecefe75..0000000000 --- a/src/plugins/cpaster/settingspage.h +++ /dev/null @@ -1,45 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include "ui_settingspage.h" - -#include <coreplugin/dialogs/ioptionspage.h> - -#include <QStringList> - -namespace CodePaster { - -class Settings; - -class SettingsPage final : public Core::IOptionsPage -{ - Q_DECLARE_TR_FUNCTIONS(CodePaster::SettingsPage) -public: - SettingsPage(Settings *settings, const QStringList &protocolNames); -}; - -} // namespace CodePaster diff --git a/src/plugins/cpaster/settingspage.ui b/src/plugins/cpaster/settingspage.ui deleted file mode 100644 index de4020433d..0000000000 --- a/src/plugins/cpaster/settingspage.ui +++ /dev/null @@ -1,102 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>CodePaster::Internal::SettingsPage</class> - <widget class="QWidget" name="CodePaster::Internal::SettingsPage"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>370</width> - <height>229</height> - </rect> - </property> - <layout class="QGridLayout" name="gridLayout"> - <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> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>223</width> - <height>100</height> - </size> - </property> - </spacer> - </item> - <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>Default protocol:</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="expiryLabel"> - <property name="text"> - <string>&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> - <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> - <tabstop>defaultProtocol</tabstop> - <tabstop>userEdit</tabstop> - <tabstop>expirySpinBox</tabstop> - <tabstop>clipboardBox</tabstop> - <tabstop>displayBox</tabstop> - </tabstops> - <resources/> - <connections/> -</ui> |