From 82b330f509c8cd1adfda640b6fa7a0d82b94019c Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 27 Jul 2022 14:02:22 +0200 Subject: [PATCH] CPaster: Inline pasteview.ui Change-Id: Ib09de9def992f9d564eaf6398627f2b5633dd629 Reviewed-by: Alessandro Portale --- src/plugins/cpaster/CMakeLists.txt | 2 +- .../cpaster/columnindicatortextedit.cpp | 3 +- src/plugins/cpaster/columnindicatortextedit.h | 2 +- src/plugins/cpaster/cpaster.qbs | 1 - src/plugins/cpaster/pasteview.cpp | 178 ++++++++--- src/plugins/cpaster/pasteview.h | 26 +- src/plugins/cpaster/pasteview.ui | 294 ------------------ 7 files changed, 158 insertions(+), 348 deletions(-) delete mode 100644 src/plugins/cpaster/pasteview.ui diff --git a/src/plugins/cpaster/CMakeLists.txt b/src/plugins/cpaster/CMakeLists.txt index 6b915fbcef7..79c2fe3d7da 100644 --- a/src/plugins/cpaster/CMakeLists.txt +++ b/src/plugins/cpaster/CMakeLists.txt @@ -20,7 +20,7 @@ add_qtc_plugin(CodePaster pastebindotcomsettings.ui pasteselect.ui pasteselectdialog.cpp pasteselectdialog.h - pasteview.cpp pasteview.h pasteview.ui + pasteview.cpp pasteview.h protocol.cpp protocol.h settings.cpp settings.h stickynotespasteprotocol.cpp stickynotespasteprotocol.h diff --git a/src/plugins/cpaster/columnindicatortextedit.cpp b/src/plugins/cpaster/columnindicatortextedit.cpp index 721ade51c1c..ab17eaa5c3c 100644 --- a/src/plugins/cpaster/columnindicatortextedit.cpp +++ b/src/plugins/cpaster/columnindicatortextedit.cpp @@ -30,8 +30,7 @@ namespace CodePaster { -ColumnIndicatorTextEdit::ColumnIndicatorTextEdit(QWidget *parent) : - QTextEdit(parent) +ColumnIndicatorTextEdit::ColumnIndicatorTextEdit() { QFont font; font.setFamily(QLatin1String("Courier New")); diff --git a/src/plugins/cpaster/columnindicatortextedit.h b/src/plugins/cpaster/columnindicatortextedit.h index 63deec570e8..ec94f8dc1e7 100644 --- a/src/plugins/cpaster/columnindicatortextedit.h +++ b/src/plugins/cpaster/columnindicatortextedit.h @@ -33,7 +33,7 @@ namespace CodePaster { class ColumnIndicatorTextEdit : public QTextEdit { public: - explicit ColumnIndicatorTextEdit(QWidget *parent); + ColumnIndicatorTextEdit(); int columnIndicator() const { return m_columnIndicator; } diff --git a/src/plugins/cpaster/cpaster.qbs b/src/plugins/cpaster/cpaster.qbs index 716f961632c..cf40b966639 100644 --- a/src/plugins/cpaster/cpaster.qbs +++ b/src/plugins/cpaster/cpaster.qbs @@ -33,7 +33,6 @@ QtcPlugin { "pasteselectdialog.h", "pasteview.cpp", "pasteview.h", - "pasteview.ui", "protocol.cpp", "protocol.h", "settings.cpp", diff --git a/src/plugins/cpaster/pasteview.cpp b/src/plugins/cpaster/pasteview.cpp index 61875cc2d2e..bb56e7f73a1 100644 --- a/src/plugins/cpaster/pasteview.cpp +++ b/src/plugins/cpaster/pasteview.cpp @@ -24,20 +24,36 @@ ****************************************************************************/ #include "pasteview.h" + +#include "columnindicatortextedit.h" #include "protocol.h" #include + +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include +#include +#include -static const char groupC[] = "CPaster"; -static const char heightKeyC[] = "PasteViewHeight"; -static const char widthKeyC[] = "PasteViewWidth"; +const char groupC[] = "CPaster"; +const char heightKeyC[] = "PasteViewHeight"; +const char widthKeyC[] = "PasteViewWidth"; namespace CodePaster { -// ------------------------------------------------------------------------------------------------- + PasteView::PasteView(const QList &protocols, const QString &mt, QWidget *parent) : @@ -46,21 +62,93 @@ PasteView::PasteView(const QList &protocols, m_commentPlaceHolder(tr("")), m_mimeType(mt) { - m_ui.setupUi(this); + resize(670, 678); + setWindowTitle(tr("Send to Codepaster")); - m_ui.buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Paste")); - connect(m_ui.uiPatchList, &QListWidget::itemChanged, this, &PasteView::contentChanged); + m_protocolBox = new QComboBox; + for (const Protocol *p : protocols) + m_protocolBox->addItem(p->name()); - foreach (const Protocol *p, protocols) - m_ui.protocolBox->addItem(p->name()); - connect(m_ui.protocolBox, &QComboBox::currentIndexChanged, this, &PasteView::protocolChanged); + m_expirySpinBox = new QSpinBox; + m_expirySpinBox->setSuffix(tr(" Days")); + m_expirySpinBox->setRange(1, 365); + + m_uiUsername = new QLineEdit(this); + m_uiUsername->setPlaceholderText(tr("")); + + m_uiDescription = new QLineEdit(this); + m_uiDescription->setPlaceholderText(tr("")); + + QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + + m_uiComment = new QTextEdit(this); + m_uiComment->setSizePolicy(sizePolicy); + m_uiComment->setMaximumHeight(100); + m_uiComment->setTabChangesFocus(true); + + m_uiPatchList = new QListWidget; + sizePolicy.setVerticalStretch(1); + m_uiPatchList->setSizePolicy(sizePolicy); + m_uiPatchList->setUniformItemSizes(true); + + m_uiPatchView = new CodePaster::ColumnIndicatorTextEdit; + sizePolicy.setVerticalStretch(3); + m_uiPatchView->setSizePolicy(sizePolicy); + + QFont font; + font.setFamilies({"Courier New"}); + m_uiPatchView->setFont(font); + m_uiPatchView->setReadOnly(true); + + auto groupBox = new QGroupBox(tr("Parts to Send to Server")); + groupBox->setFlat(true); + + m_plainTextEdit = new QPlainTextEdit; + + m_stackedWidget = new QStackedWidget(this); + m_stackedWidget->addWidget(groupBox); + m_stackedWidget->addWidget(m_plainTextEdit); + m_stackedWidget->setCurrentIndex(0); + + auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Cancel|QDialogButtonBox::Ok); + buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Paste")); + + const bool __sortingEnabled = m_uiPatchList->isSortingEnabled(); + m_uiPatchList->setSortingEnabled(false); + m_uiPatchList->setSortingEnabled(__sortingEnabled); + + using namespace Utils::Layouting; + + Column { + m_uiPatchList, + m_uiPatchView + }.attachTo(groupBox); + + Column { + Form { + tr("Protocol:"), m_protocolBox, br, + tr("&Expires after:"), m_expirySpinBox, br, + tr("&Username:"), m_uiUsername, br, + tr("&Description:"), m_uiDescription, + }, + m_uiComment, + m_stackedWidget, + buttonBox + }.setSpacing(2).attachTo(this); + + connect(m_uiPatchList, &QListWidget::itemChanged, this, &PasteView::contentChanged); + + connect(m_protocolBox, &QComboBox::currentIndexChanged, this, &PasteView::protocolChanged); + + connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); + connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); } PasteView::~PasteView() = default; QString PasteView::user() const { - const QString username = m_ui.uiUsername->text(); + const QString username = m_uiUsername->text(); if (username.isEmpty()) return QLatin1String("Anonymous"); return username; @@ -68,12 +156,12 @@ QString PasteView::user() const QString PasteView::description() const { - return m_ui.uiDescription->text(); + return m_uiDescription->text(); } QString PasteView::comment() const { - const QString comment = m_ui.uiComment->toPlainText(); + const QString comment = m_uiComment->toPlainText(); if (comment == m_commentPlaceHolder) return QString(); return comment; @@ -82,11 +170,11 @@ QString PasteView::comment() const QString PasteView::content() const { if (m_mode == PlainTextMode) - return m_ui.plainTextEdit->toPlainText(); + return m_plainTextEdit->toPlainText(); QString newContent; - for (int i = 0; i < m_ui.uiPatchList->count(); ++i) { - QListWidgetItem *item = m_ui.uiPatchList->item(i); + for (int i = 0; i < m_uiPatchList->count(); ++i) { + QListWidgetItem *item = m_uiPatchList->item(i); if (item->checkState() != Qt::Unchecked) newContent += m_parts.at(i).content; } @@ -95,46 +183,45 @@ QString PasteView::content() const int PasteView::protocol() const { - return m_ui.protocolBox->currentIndex(); + return m_protocolBox->currentIndex(); } void PasteView::contentChanged() { - m_ui.uiPatchView->setPlainText(content()); + m_uiPatchView->setPlainText(content()); } void PasteView::protocolChanged(int p) { QTC_ASSERT(p >= 0 && p < m_protocols.size(), return); const unsigned caps = m_protocols.at(p)->capabilities(); - m_ui.uiDescription->setEnabled(caps & Protocol::PostDescriptionCapability); - m_ui.uiUsername->setEnabled(caps & Protocol::PostUserNameCapability); - m_ui.uiComment->setEnabled(caps & Protocol::PostCommentCapability); + m_uiDescription->setEnabled(caps & Protocol::PostDescriptionCapability); + m_uiUsername->setEnabled(caps & Protocol::PostUserNameCapability); + m_uiComment->setEnabled(caps & Protocol::PostCommentCapability); } void PasteView::setupDialog(const QString &user, const QString &description, const QString &comment) { - m_ui.uiUsername->setText(user); - m_ui.uiDescription->setText(description); - m_ui.uiComment->setPlainText(comment.isEmpty() ? m_commentPlaceHolder : comment); + m_uiUsername->setText(user); + m_uiDescription->setText(description); + m_uiComment->setPlainText(comment.isEmpty() ? m_commentPlaceHolder : comment); } int PasteView::showDialog() { - m_ui.uiDescription->setFocus(); - m_ui.uiDescription->selectAll(); + m_uiDescription->setFocus(); + m_uiDescription->selectAll(); // (Re)store dialog size const QSettings *settings = Core::ICore::settings(); const QString rootKey = QLatin1String(groupC) + QLatin1Char('/'); const int h = settings->value(rootKey + QLatin1String(heightKeyC), height()).toInt(); - const int defaultWidth = m_ui.uiPatchView->columnIndicator() + 50; + const int defaultWidth = m_uiPatchView->columnIndicator() + 50; const int w = settings->value(rootKey + QLatin1String(widthKeyC), defaultWidth).toInt(); resize(w, h); - const int ret = QDialog::exec(); - return ret; + return QDialog::exec(); } // Show up with checkable list of diff chunks. @@ -143,22 +230,21 @@ int PasteView::show( const QString &description, const QString &comment, int expiryDays, - const FileDataList &parts - ) + const FileDataList &parts) { setupDialog(user, description, comment); - m_ui.uiPatchList->clear(); + m_uiPatchList->clear(); m_parts = parts; m_mode = DiffChunkMode; QString content; - foreach (const FileData &part, parts) { - auto itm = new QListWidgetItem(part.filename, m_ui.uiPatchList); + for (const FileData &part : parts) { + auto itm = new QListWidgetItem(part.filename, m_uiPatchList); itm->setCheckState(Qt::Checked); itm->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); content += part.content; } - m_ui.stackedWidget->setCurrentIndex(0); - m_ui.uiPatchView->setPlainText(content); + m_stackedWidget->setCurrentIndex(0); + m_uiPatchView->setPlainText(content); setExpiryDays(expiryDays); return showDialog(); } @@ -169,25 +255,25 @@ int PasteView::show(const QString &user, const QString &description, { setupDialog(user, description, comment); m_mode = PlainTextMode; - m_ui.stackedWidget->setCurrentIndex(1); - m_ui.plainTextEdit->setPlainText(content); + m_stackedWidget->setCurrentIndex(1); + m_plainTextEdit->setPlainText(content); setExpiryDays(expiryDays); return showDialog(); } void PasteView::setExpiryDays(int d) { - m_ui.expirySpinBox->setValue(d); + m_expirySpinBox->setValue(d); } int PasteView::expiryDays() const { - return m_ui.expirySpinBox->value(); + return m_expirySpinBox->value(); } void PasteView::accept() { - const int index = m_ui.protocolBox->currentIndex(); + const int index = m_protocolBox->currentIndex(); if (index == -1) return; @@ -213,14 +299,14 @@ void PasteView::accept() void PasteView::setProtocol(const QString &protocol) { - const int index = m_ui.protocolBox->findText(protocol); + const int index = m_protocolBox->findText(protocol); if (index < 0) return; - m_ui.protocolBox->setCurrentIndex(index); - if (index == m_ui.protocolBox->currentIndex()) + m_protocolBox->setCurrentIndex(index); + if (index == m_protocolBox->currentIndex()) protocolChanged(index); // Force enabling else - m_ui.protocolBox->setCurrentIndex(index); + m_protocolBox->setCurrentIndex(index); } -} //namespace CodePaster +} // CodePaster diff --git a/src/plugins/cpaster/pasteview.h b/src/plugins/cpaster/pasteview.h index 4a93a46c217..a70e30bd3aa 100644 --- a/src/plugins/cpaster/pasteview.h +++ b/src/plugins/cpaster/pasteview.h @@ -25,17 +25,29 @@ #pragma once -#include "ui_pasteview.h" - #include #include +QT_BEGIN_NAMESPACE +class QComboBox; +class QLineEdit; +class QListWidget; +class QPlainTextEdit; +class QSpinBox; +class QStackedWidget; +class QTextEdit; +QT_END_NAMESPACE + namespace CodePaster { + +class ColumnIndicatorTextEdit; class Protocol; + class PasteView : public QDialog { Q_OBJECT + public: enum Mode { @@ -80,7 +92,15 @@ private: const QString m_commentPlaceHolder; const QString m_mimeType; - Internal::Ui::ViewDialog m_ui; + QComboBox *m_protocolBox; + QSpinBox *m_expirySpinBox; + QLineEdit *m_uiUsername; + QLineEdit *m_uiDescription; + QTextEdit *m_uiComment; + QStackedWidget *m_stackedWidget; + QListWidget *m_uiPatchList; + ColumnIndicatorTextEdit *m_uiPatchView; + QPlainTextEdit *m_plainTextEdit; FileDataList m_parts; Mode m_mode = DiffChunkMode; }; diff --git a/src/plugins/cpaster/pasteview.ui b/src/plugins/cpaster/pasteview.ui deleted file mode 100644 index bafac83be4c..00000000000 --- a/src/plugins/cpaster/pasteview.ui +++ /dev/null @@ -1,294 +0,0 @@ - - - CodePaster::Internal::ViewDialog - - - - 0 - 0 - 670 - 678 - - - - Send to Codepaster - - - - - - - - Protocol: - - - - - - - - - - &Expires after: - - - expirySpinBox - - - - - - - Days - - - 1 - - - 365 - - - - - - - &Username: - - - uiUsername - - - - - - - <Username> - - - - - - - &Description: - - - uiDescription - - - - - - - <Description> - - - - - - - - - - 0 - 0 - - - - - 16777215 - 100 - - - - true - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;Comment&gt;</p></body></html> - - - - - - - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - Parts to Send to Server - - - true - - - - 2 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 1 - - - - true - - - - Patch 1 - - - - - Patch 2 - - - - - - - - - 0 - 3 - - - - - Courier New - - - - true - - - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - CodePaster::ColumnIndicatorTextEdit - QTextEdit -
cpaster/columnindicatortextedit.h
-
-
- - protocolBox - expirySpinBox - uiUsername - uiDescription - uiComment - uiPatchList - uiPatchView - plainTextEdit - - - - - buttonBox - accepted() - CodePaster::Internal::ViewDialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - CodePaster::Internal::ViewDialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - -