From af51e0ffcbd6235090f470d3ca2929aba799b294 Mon Sep 17 00:00:00 2001 From: Jekyll Wu Date: Mon, 26 Mar 2012 16:10:28 +0800 Subject: [PATCH] Refacotr tab format related UI components into RenameTabWidget This make EditProfileDialog and RenameTabsDialog reuse the same widget, instead of duplicating each other in its own code or .ui file. RenameTabsDialog is now just a simple container of RenameTabWidget --- src/CMakeLists.txt | 2 + src/EditProfileDialog.cpp | 33 ++++---------- src/EditProfileDialog.h | 3 -- src/EditProfileDialog.ui | 45 ++----------------- src/RenameTabWidget.cpp | 95 +++++++++++++++++++++++++++++++++++++++ src/RenameTabWidget.h | 64 ++++++++++++++++++++++++++ src/RenameTabWidget.ui | 82 +++++++++++++++++++++++++++++++++ src/RenameTabsDialog.cpp | 27 ++++------- src/RenameTabsDialog.ui | 62 ++----------------------- 9 files changed, 267 insertions(+), 146 deletions(-) create mode 100644 src/RenameTabWidget.cpp create mode 100644 src/RenameTabWidget.h create mode 100644 src/RenameTabWidget.ui diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a21904dba..7bb125454 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -89,6 +89,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/tests/CTestCustom.cmake) ProfileWriter.cpp Pty.cpp RenameTabsDialog.cpp + RenameTabWidget.cpp Screen.cpp ScreenWindow.cpp Session.cpp @@ -139,6 +140,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/tests/CTestCustom.cmake) KeyBindingEditor.ui ManageProfilesDialog.ui RenameTabsDialog.ui + RenameTabWidget.ui HistorySizeWidget.ui settings/GeneralSettings.ui settings/TabBarSettings.ui diff --git a/src/EditProfileDialog.cpp b/src/EditProfileDialog.cpp index 4c111b2a5..58c6c21af 100644 --- a/src/EditProfileDialog.cpp +++ b/src/EditProfileDialog.cpp @@ -319,40 +319,23 @@ void EditProfileDialog::showEnvironmentEditor() void EditProfileDialog::setupTabsPage(const Profile::Ptr profile) { // tab title format - _ui->tabTitleEdit->setClearButtonShown(true); - _ui->remoteTabTitleEdit->setClearButtonShown(true); - _ui->tabTitleEdit->setText(profile->localTabTitleFormat()); - _ui->remoteTabTitleEdit->setText(profile->remoteTabTitleFormat()); + _ui->renameTabWidget->setTabTitleText(profile->localTabTitleFormat()); + _ui->renameTabWidget->setRemoteTabTitleText(profile->remoteTabTitleFormat()); + + connect(_ui->renameTabWidget, SIGNAL(tabTitleFormatChanged(QString)), this, + SLOT(tabTitleFormatChanged(QString))); + connect(_ui->renameTabWidget, SIGNAL(remoteTabTitleFormatChanged(QString)), this, + SLOT(remoteTabTitleFormatChanged(QString))); // tab monitoring const int silenceSeconds = profile->silenceSeconds(); _ui->silenceSecondsSpinner->setValue(silenceSeconds); _ui->silenceSecondsSpinner->setSuffix(ki18ncp("Unit of time", " second", " seconds")); - connect(_ui->tabTitleEdit, SIGNAL(textChanged(QString)), this, - SLOT(tabTitleFormatChanged(QString))); - connect(_ui->remoteTabTitleEdit, SIGNAL(textChanged(QString)), this, - SLOT(remoteTabTitleFormatChanged(QString))); - connect(_ui->silenceSecondsSpinner, SIGNAL(valueChanged(int)), this, SLOT(silenceSecondsChanged(int))); +} - _ui->tabTitleFormatButton->setContext(Session::LocalTabTitle); - connect(_ui->tabTitleFormatButton, SIGNAL(dynamicElementSelected(QString)), - this, SLOT(insertTabTitleText(QString))); - - _ui->remoteTabTitleFormatButton->setContext(Session::RemoteTabTitle); - connect(_ui->remoteTabTitleFormatButton, SIGNAL(dynamicElementSelected(QString)), - this, SLOT(insertRemoteTabTitleText(QString))); -} -void EditProfileDialog::insertTabTitleText(const QString& text) -{ - _ui->tabTitleEdit->insert(text); -} -void EditProfileDialog::insertRemoteTabTitleText(const QString& text) -{ - _ui->remoteTabTitleEdit->insert(text); -} void EditProfileDialog::saveGeometryOnExit(bool value) { updateTempProfileProperty(Profile::SaveGeometryOnExit, value); diff --git a/src/EditProfileDialog.h b/src/EditProfileDialog.h index bb96df48e..94c0c7207 100644 --- a/src/EditProfileDialog.h +++ b/src/EditProfileDialog.h @@ -113,9 +113,6 @@ private slots: void tabTitleFormatChanged(const QString& text); void remoteTabTitleFormatChanged(const QString& text); - void insertTabTitleText(const QString& text); - void insertRemoteTabTitleText(const QString& text); - void showTerminalSizeHint(bool); void saveGeometryOnExit(bool); void showEnvironmentEditor(); diff --git a/src/EditProfileDialog.ui b/src/EditProfileDialog.ui index 742d1d2f8..33a9c0d1e 100644 --- a/src/EditProfileDialog.ui +++ b/src/EditProfileDialog.ui @@ -267,44 +267,7 @@ - - - Tab title format: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Normal tab title format - - - - - - - - - - Remote tab title format: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Tab title format used when a remote command (e.g. connection to another computer via SSH) is being executed - - - - - + @@ -1109,9 +1072,9 @@ 1 - Konsole::TabTitleFormatButton - QPushButton -
TabTitleFormatButton.h
+ Konsole::RenameTabWidget + QWidget +
RenameTabWidget.h
Konsole::HistorySizeWidget diff --git a/src/RenameTabWidget.cpp b/src/RenameTabWidget.cpp new file mode 100644 index 000000000..bf8127cb7 --- /dev/null +++ b/src/RenameTabWidget.cpp @@ -0,0 +1,95 @@ +/* + Copyright 2010 by Kurt Hindenburg + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA. +*/ + +// Own +#include "RenameTabWidget.h" + +// Konsole +#include "ui_RenameTabWidget.h" + +using Konsole::RenameTabWidget; + +RenameTabWidget::RenameTabWidget(QWidget* parent) + : QWidget(parent) +{ + _ui = new Ui::RenameTabWidget(); + _ui->setupUi(this); + + _ui->tabTitleEdit->setClearButtonShown(true); + _ui->remoteTabTitleEdit->setClearButtonShown(true); + + connect(_ui->tabTitleEdit, SIGNAL(textChanged(QString)), this, + SIGNAL(tabTitleFormatChanged(QString))); + connect(_ui->remoteTabTitleEdit, SIGNAL(textChanged(QString)), this, + SIGNAL(remoteTabTitleFormatChanged(QString))); + + _ui->tabTitleFormatButton->setContext(Session::LocalTabTitle); + connect(_ui->tabTitleFormatButton, SIGNAL(dynamicElementSelected(QString)), + this, SLOT(insertTabTitleText(QString))); + + _ui->remoteTabTitleFormatButton->setContext(Session::RemoteTabTitle); + connect(_ui->remoteTabTitleFormatButton, SIGNAL(dynamicElementSelected(QString)), + this, SLOT(insertRemoteTabTitleText(QString))); +} + +RenameTabWidget::~RenameTabWidget() +{ + delete _ui; +} + +void RenameTabWidget::focusTabTitleText() +{ + _ui->tabTitleEdit->setFocus(); +} + +void RenameTabWidget::focusRemoteTabTitleText() +{ + _ui->remoteTabTitleEdit->setFocus(); +} + +void RenameTabWidget::setTabTitleText(const QString& text) +{ + _ui->tabTitleEdit->setText(text); +} + +void RenameTabWidget::setRemoteTabTitleText(const QString& text) +{ + _ui->remoteTabTitleEdit->setText(text); +} + +QString RenameTabWidget::tabTitleText() const +{ + return(_ui->tabTitleEdit->text()); +} + +QString RenameTabWidget::remoteTabTitleText() const +{ + return(_ui->remoteTabTitleEdit->text()); +} + +void RenameTabWidget::insertTabTitleText(const QString& text) +{ + _ui->tabTitleEdit->insert(text); +} + +void RenameTabWidget::insertRemoteTabTitleText(const QString& text) +{ + _ui->remoteTabTitleEdit->insert(text); +} + diff --git a/src/RenameTabWidget.h b/src/RenameTabWidget.h new file mode 100644 index 000000000..5667b110f --- /dev/null +++ b/src/RenameTabWidget.h @@ -0,0 +1,64 @@ +/* + Copyright 2010 by Kurt Hindenburg + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301 USA. +*/ + +#ifndef RENAMETABWIDGET_H +#define RENAMETABWIDGET_H + +// Qt +#include + +namespace Ui +{ +class RenameTabWidget; +} + +namespace Konsole +{ + +class RenameTabWidget : public QWidget +{ + Q_OBJECT + +public: + explicit RenameTabWidget(QWidget* parent = 0); + ~RenameTabWidget(); + + QString tabTitleText() const; + QString remoteTabTitleText() const; + void setTabTitleText(const QString&); + void setRemoteTabTitleText(const QString&); + + void focusTabTitleText(); + void focusRemoteTabTitleText(); + +signals: + void tabTitleFormatChanged(const QString&); + void remoteTabTitleFormatChanged(const QString&); + +public slots: + void insertTabTitleText(const QString& text); + void insertRemoteTabTitleText(const QString& text); + +private: + Ui::RenameTabWidget* _ui; +}; + +} + +#endif diff --git a/src/RenameTabWidget.ui b/src/RenameTabWidget.ui new file mode 100644 index 000000000..280c2d72d --- /dev/null +++ b/src/RenameTabWidget.ui @@ -0,0 +1,82 @@ + + + RenameTabWidget + + + + 0 + 0 + 325 + 110 + + + + + + + + + + true + + + + + + Tab title format: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Normal tab title format + + + + + + + + + + Remote tab title format: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Tab title format used when a remote command (e.g. connection to another computer via SSH) is being executed + + + + + + + + + + + + + + KLineEdit + QLineEdit +
klineedit.h
+
+ + Konsole::TabTitleFormatButton + QPushButton +
TabTitleFormatButton.h
+
+
+ + +
diff --git a/src/RenameTabsDialog.cpp b/src/RenameTabsDialog.cpp index d5aa0d3cb..a4e66d3bb 100644 --- a/src/RenameTabsDialog.cpp +++ b/src/RenameTabsDialog.cpp @@ -35,17 +35,6 @@ RenameTabsDialog::RenameTabsDialog(QWidget* parent) _ui = new Ui::RenameTabsDialog(); _ui->setupUi(mainWidget()); - - _ui->tabTitleEdit->setClearButtonShown(true); - _ui->remoteTabTitleEdit->setClearButtonShown(true); - - _ui->tabTitleFormatButton->setContext(Session::LocalTabTitle); - connect(_ui->tabTitleFormatButton, SIGNAL(dynamicElementSelected(QString)), - this, SLOT(insertTabTitleText(QString))); - - _ui->remoteTabTitleFormatButton->setContext(Session::RemoteTabTitle); - connect(_ui->remoteTabTitleFormatButton, SIGNAL(dynamicElementSelected(QString)), - this, SLOT(insertRemoteTabTitleText(QString))); } RenameTabsDialog::~RenameTabsDialog() @@ -55,41 +44,41 @@ RenameTabsDialog::~RenameTabsDialog() void RenameTabsDialog::focusTabTitleText() { - _ui->tabTitleEdit->setFocus(); + _ui->renameTabWidget->focusTabTitleText(); } void RenameTabsDialog::focusRemoteTabTitleText() { - _ui->remoteTabTitleEdit->setFocus(); + _ui->renameTabWidget->focusRemoteTabTitleText(); } void RenameTabsDialog::setTabTitleText(const QString& text) { - _ui->tabTitleEdit->setText(text); + _ui->renameTabWidget->setTabTitleText(text); } void RenameTabsDialog::setRemoteTabTitleText(const QString& text) { - _ui->remoteTabTitleEdit->setText(text); + _ui->renameTabWidget->setRemoteTabTitleText(text); } QString RenameTabsDialog::tabTitleText() const { - return(_ui->tabTitleEdit->text()); + return _ui->renameTabWidget->tabTitleText(); } QString RenameTabsDialog::remoteTabTitleText() const { - return(_ui->remoteTabTitleEdit->text()); + return _ui->renameTabWidget->remoteTabTitleText(); } void RenameTabsDialog::insertTabTitleText(const QString& text) { - _ui->tabTitleEdit->insert(text); + _ui->renameTabWidget->insertTabTitleText(text); } void RenameTabsDialog::insertRemoteTabTitleText(const QString& text) { - _ui->remoteTabTitleEdit->insert(text); + _ui->renameTabWidget->insertRemoteTabTitleText(text); } diff --git a/src/RenameTabsDialog.ui b/src/RenameTabsDialog.ui index 4b949f9d1..7465817ed 100644 --- a/src/RenameTabsDialog.ui +++ b/src/RenameTabsDialog.ui @@ -12,69 +12,15 @@ - - - - - - true - - - - - - Tab title format: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Normal tab title format - - - - - - - - - - Remote tab title format: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Tab title format used when a remote command (e.g. connection to another computer via SSH) is being executed - - - - - - - - + - KLineEdit - QLineEdit -
klineedit.h
-
- - Konsole::TabTitleFormatButton - QPushButton -
TabTitleFormatButton.h
+ Konsole::RenameTabWidget + QWidget +
RenameTabWidget.h