From 4df7862b00b2113dabdf52342b2c15560313f476 Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Mon, 11 Aug 2008 16:54:22 +0200 Subject: [PATCH] fixes, cleanup and other improvements... Now I know how a GC feels ;) --- src/qtui/channellistdlg.cpp | 3 +- src/qtui/coreconnectdlg.cpp | 4 +- src/qtui/coreconnectdlg.h | 2 +- src/qtui/mainwin.cpp | 84 +++++++++++--------------------- src/qtui/mainwin.h | 18 +------ src/qtui/qtui.cpp | 20 +++++--- src/qtui/qtui.h | 34 ++++++------- src/qtui/settingsdlg.cpp | 1 + src/qtui/topicwidget.cpp | 9 +++- src/qtui/topicwidget.h | 3 -- src/uisupport/abstractitemview.h | 2 + 11 files changed, 75 insertions(+), 105 deletions(-) diff --git a/src/qtui/channellistdlg.cpp b/src/qtui/channellistdlg.cpp index 2e26484d..2eab4040 100644 --- a/src/qtui/channellistdlg.cpp +++ b/src/qtui/channellistdlg.cpp @@ -86,8 +86,9 @@ void ChannelListDlg::requestSearch() { } void ChannelListDlg::receiveChannelList(const NetworkId &netId, const QStringList &channelFilters, const QList &channelList) { - Q_UNUSED(netId) Q_UNUSED(channelFilters) + if(netId != _netId) + return; showFilterLine(!channelList.isEmpty()); _ircListModel.setChannelList(channelList); diff --git a/src/qtui/coreconnectdlg.cpp b/src/qtui/coreconnectdlg.cpp index 6591edea..ad7e68af 100644 --- a/src/qtui/coreconnectdlg.cpp +++ b/src/qtui/coreconnectdlg.cpp @@ -28,7 +28,7 @@ #include "clientsyncer.h" #include "coreconfigwizard.h" -CoreConnectDlg::CoreConnectDlg(QWidget *parent, bool autoconnect) +CoreConnectDlg::CoreConnectDlg(bool autoconnect, QWidget *parent) : QDialog(parent) { ui.setupUi(this); @@ -39,8 +39,6 @@ CoreConnectDlg::CoreConnectDlg(QWidget *parent, bool autoconnect) clientSyncer = new ClientSyncer(this); wizard = 0; - setAttribute(Qt::WA_DeleteOnClose); - doingAutoConnect = false; ui.stackedWidget->setCurrentWidget(ui.accountPage); diff --git a/src/qtui/coreconnectdlg.h b/src/qtui/coreconnectdlg.h index 3cd72947..99e33790 100644 --- a/src/qtui/coreconnectdlg.h +++ b/src/qtui/coreconnectdlg.h @@ -35,7 +35,7 @@ class CoreConnectDlg : public QDialog { Q_OBJECT public: - CoreConnectDlg(QWidget *parent = 0, bool = false); + CoreConnectDlg(bool = false, QWidget *parent = 0); ~CoreConnectDlg(); private slots: diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 9d0de308..d302ee14 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -46,7 +46,6 @@ #include "irclistmodel.h" #include "verticaldock.h" #include "uisettings.h" -#include "util.h" #include "qtuisettings.h" #include "jumpkeyhandler.h" @@ -64,30 +63,26 @@ #include "settingspages/networkssettingspage.h" #include "settingspages/notificationssettingspage.h" -#include "debugconsole.h" #include "global.h" #include "qtuistyle.h" -MainWin::MainWin(QtUi *_gui, QWidget *parent) +MainWin::MainWin(QWidget *parent) : QMainWindow(parent), - gui(_gui), coreLagLabel(new QLabel()), sslLabel(new QLabel()), msgProcessorStatusWidget(new MsgProcessorStatusWidget()), + _titleSetter(this), systray(new QSystemTrayIcon(this)), + activeTrayIcon(":/icons/quassel-icon-active.png"), onlineTrayIcon(":/icons/quassel-icon.png"), offlineTrayIcon(":/icons/quassel-icon-offline.png"), trayIconActive(false), - timer(new QTimer(this)), - channelListDlg(new ChannelListDlg(this)), - settingsDlg(new SettingsDlg(this)), - debugConsole(new DebugConsole(this)) + + timer(new QTimer(this)) { UiSettings uiSettings; - loadTranslation(uiSettings.value("Locale", QLocale::system()).value()); - QString style = uiSettings.value("Style", QString("")).toString(); if(style != "") { QApplication::setStyle(style); @@ -151,15 +146,12 @@ void MainWin::init() { setupStatusBar(); setupSystray(); - setupSettingsDlg(); - // restore mainwin state restoreState(s.value("MainWinState").toByteArray()); // restore locked state of docks ui.actionLockDockPositions->setChecked(s.value("LockDocks", false).toBool()); - setDisconnectedState(); // Disable menus and stuff showCoreConnectionDlg(true); // autoconnect if appropriate @@ -184,7 +176,6 @@ void MainWin::setupMenus() { connect(ui.actionCoreInfo, SIGNAL(triggered()), this, SLOT(showCoreInfoDlg())); connect(ui.actionQuit, SIGNAL(triggered()), QCoreApplication::instance(), SLOT(quit())); connect(ui.actionSettingsDlg, SIGNAL(triggered()), this, SLOT(showSettingsDlg())); - // connect(ui.actionDebug_Console, SIGNAL(triggered()), this, SLOT(showDebugConsole())); connect(ui.actionAboutQuassel, SIGNAL(triggered()), this, SLOT(showAboutDlg())); connect(ui.actionAboutQt, SIGNAL(triggered()), QApplication::instance(), SLOT(aboutQt())); } @@ -238,22 +229,6 @@ void MainWin::removeBufferView(int bufferViewConfigId) { } } -void MainWin::setupSettingsDlg() { - //Category: Appearance - settingsDlg->registerSettingsPage(new ColorSettingsPage(settingsDlg)); - settingsDlg->registerSettingsPage(new FontsSettingsPage(settingsDlg)); - settingsDlg->registerSettingsPage(new AppearanceSettingsPage(settingsDlg)); //General - //Category: Behaviour - settingsDlg->registerSettingsPage(new GeneralSettingsPage(settingsDlg)); - settingsDlg->registerSettingsPage(new HighlightSettingsPage(settingsDlg)); - settingsDlg->registerSettingsPage(new AliasesSettingsPage(settingsDlg)); - settingsDlg->registerSettingsPage(new NotificationsSettingsPage(settingsDlg)); - //Category: General - settingsDlg->registerSettingsPage(new IdentitiesSettingsPage(settingsDlg)); - settingsDlg->registerSettingsPage(new NetworksSettingsPage(settingsDlg)); - settingsDlg->registerSettingsPage(new BufferViewSettingsPage(settingsDlg)); -} - void MainWin::on_actionEditNetworks_triggered() { SettingsPageDlg dlg(new NetworksSettingsPage(this), this); dlg.exec(); @@ -326,7 +301,6 @@ void MainWin::setupTopicWidget() { VerticalDock *dock = new VerticalDock(tr("Topic"), this); dock->setObjectName("TopicDock"); TopicWidget *topicwidget = new TopicWidget(dock); - connect(topicwidget, SIGNAL(topicChanged(const QString &)), this, SLOT(changeTopic(const QString &))); dock->setWidget(topicwidget); @@ -411,14 +385,6 @@ void MainWin::changeEvent(QEvent *event) { } } -// FIXME this should be made prettier... -void MainWin::changeTopic(const QString &topic) { - BufferId id = ui.bufferWidget->currentBuffer(); - if(!id.isValid()) return; - Buffer *buffer = Client::buffer(id); - if(buffer) Client::userInput(buffer->bufferInfo(), QString("/topic %1").arg(topic)); -} - void MainWin::connectedToCore() { Q_CHECK_PTR(Client::bufferViewManager()); connect(Client::bufferViewManager(), SIGNAL(bufferViewConfigAdded(int)), this, SLOT(addBufferView(int))); @@ -504,43 +470,49 @@ void MainWin::setDisconnectedState() { } void MainWin::showCoreConnectionDlg(bool autoConnect) { - coreConnectDlg = new CoreConnectDlg(this, autoConnect); - connect(coreConnectDlg, SIGNAL(finished(int)), this, SLOT(coreConnectionDlgFinished(int))); - coreConnectDlg->setModal(true); - coreConnectDlg->show(); -} - -void MainWin::coreConnectionDlgFinished(int /*code*/) { - coreConnectDlg->close(); - //exit(1); + CoreConnectDlg(autoConnect, this).exec(); } void MainWin::showChannelList(NetworkId netId) { + ChannelListDlg *channelListDlg = new ChannelListDlg(); + if(!netId.isValid()) { QAction *action = qobject_cast(sender()); if(action) netId = action->data().value(); } + + channelListDlg->setAttribute(Qt::WA_DeleteOnClose); channelListDlg->setNetwork(netId); channelListDlg->show(); } void MainWin::showCoreInfoDlg() { - CoreInfoDlg dlg(this); - dlg.exec(); + CoreInfoDlg(this).exec(); } void MainWin::showSettingsDlg() { - settingsDlg->show(); -} + SettingsDlg *dlg = new SettingsDlg(); + + //Category: Appearance + dlg->registerSettingsPage(new ColorSettingsPage(dlg)); + dlg->registerSettingsPage(new FontsSettingsPage(dlg)); + dlg->registerSettingsPage(new AppearanceSettingsPage(dlg)); //General + //Category: Behaviour + dlg->registerSettingsPage(new GeneralSettingsPage(dlg)); + dlg->registerSettingsPage(new HighlightSettingsPage(dlg)); + dlg->registerSettingsPage(new AliasesSettingsPage(dlg)); + dlg->registerSettingsPage(new NotificationsSettingsPage(dlg)); + //Category: General + dlg->registerSettingsPage(new IdentitiesSettingsPage(dlg)); + dlg->registerSettingsPage(new NetworksSettingsPage(dlg)); + dlg->registerSettingsPage(new BufferViewSettingsPage(dlg)); -void MainWin::showDebugConsole() { - debugConsole->show(); + dlg->show(); } void MainWin::showAboutDlg() { - AboutDlg dlg(this); - dlg.exec(); + AboutDlg(this).exec(); } void MainWin::closeEvent(QCloseEvent *event) { diff --git a/src/qtui/mainwin.h b/src/qtui/mainwin.h index 8cffe8bd..080e78f5 100644 --- a/src/qtui/mainwin.h +++ b/src/qtui/mainwin.h @@ -29,17 +29,12 @@ #include #include -class ServerListDlg; -class ChannelListDlg; -class CoreConnectDlg; class Buffer; class BufferViewConfig; class MsgProcessorStatusWidget; -class SettingsDlg; class QtUi; class Message; class NickListWidget; -class DebugConsole; #ifdef HAVE_DBUS # include "desktopnotifications.h" @@ -50,7 +45,7 @@ class MainWin : public QMainWindow { Q_OBJECT public: - MainWin(QtUi *gui, QWidget *parent = 0); + MainWin(QWidget *parent = 0); virtual ~MainWin(); void init(); @@ -91,18 +86,15 @@ class MainWin : public QMainWindow { void on_actionManageViews_triggered(); void on_actionLockDockPositions_toggled(bool lock); void showAboutDlg(); - void showDebugConsole(); void on_actionDebugNetworkModel_triggered(bool); void showCoreConnectionDlg(bool autoConnect = false); - void coreConnectionDlgFinished(int result); void clientNetworkCreated(NetworkId); void clientNetworkRemoved(NetworkId); void clientNetworkUpdated(); void connectOrDisconnectFromNet(); - void changeTopic(const QString &topic); void makeTrayIconBlink(); void saveStatusBarStatus(bool enabled); @@ -121,7 +113,6 @@ class MainWin : public QMainWindow { private: Ui::MainWin ui; - QtUi *gui; QMenu *systrayMenu; QLabel *coreLagLabel; @@ -139,8 +130,6 @@ class MainWin : public QMainWindow { void setupStatusBar(); void setupSystray(); - void setupSettingsDlg(); - void toggleVisibility(); void enableMenus(); @@ -152,11 +141,6 @@ class MainWin : public QMainWindow { bool trayIconActive; QTimer *timer; - CoreConnectDlg *coreConnectDlg; - ChannelListDlg *channelListDlg; - SettingsDlg *settingsDlg; - DebugConsole *debugConsole; - BufferId currentBuffer; QString currentProfile; diff --git a/src/qtui/qtui.cpp b/src/qtui/qtui.cpp index fb1bd50b..ff676ad1 100644 --- a/src/qtui/qtui.cpp +++ b/src/qtui/qtui.cpp @@ -20,16 +20,28 @@ #include "qtui.h" +#include + #include "chatlinemodel.h" #include "mainwin.h" #include "qtuimessageprocessor.h" +#include "uisettings.h" +#include "util.h" -QtUiStyle *QtUi::_style; +QtUiStyle *QtUi::_style = 0; QtUi::QtUi() : AbstractUi() { - mainWin = new MainWin(this); + if(_style != 0) { + qWarning() << "QtUi has been instantiated again!"; + return; + } + + UiSettings uiSettings; + loadTranslation(uiSettings.value("Locale", QLocale::system()).value()); + + mainWin = new MainWin(); _style = new QtUiStyle; connect(mainWin, SIGNAL(connectToCore(const QVariantMap &)), this, SIGNAL(connectToCore(const QVariantMap &))); @@ -45,10 +57,6 @@ void QtUi::init() { mainWin->init(); } -QtUiStyle *QtUi::style() { - return _style; -} - MessageModel *QtUi::createMessageModel(QObject *parent) { return new ChatLineModel(parent); } diff --git a/src/qtui/qtui.h b/src/qtui/qtui.h index 46f21c17..2c1156f7 100644 --- a/src/qtui/qtui.h +++ b/src/qtui/qtui.h @@ -18,8 +18,8 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef _QTUI_H_ -#define _QTUI_H_ +#ifndef QTUI_H +#define QTUI_H #include "qtuistyle.h" #include "quasselui.h" @@ -35,25 +35,25 @@ class QtUiMessageProcessor; class QtUi : public AbstractUi { Q_OBJECT - public: - QtUi(); - ~QtUi(); - //void init(); - MessageModel *createMessageModel(QObject *parent); - AbstractMessageProcessor *createMessageProcessor(QObject *parent); +public: + QtUi(); + ~QtUi(); - static QtUiStyle *style(); + MessageModel *createMessageModel(QObject *parent); + AbstractMessageProcessor *createMessageProcessor(QObject *parent); - public slots: - void init(); + inline static QtUiStyle *style() { return _style; } - protected slots: - void connectedToCore(); - void disconnectedFromCore(); +public slots: + void init(); - private: - MainWin *mainWin; - static QtUiStyle *_style; +protected slots: + void connectedToCore(); + void disconnectedFromCore(); + +private: + MainWin *mainWin; + static QtUiStyle *_style; }; #endif diff --git a/src/qtui/settingsdlg.cpp b/src/qtui/settingsdlg.cpp index 5f255b10..d45730b9 100644 --- a/src/qtui/settingsdlg.cpp +++ b/src/qtui/settingsdlg.cpp @@ -24,6 +24,7 @@ SettingsDlg::SettingsDlg(QWidget *parent) : QDialog(parent), _currentPage(0) { + setModal(false); ui.setupUi(this); updateGeometry(); diff --git a/src/qtui/topicwidget.cpp b/src/qtui/topicwidget.cpp index bb55280a..ab901fd6 100644 --- a/src/qtui/topicwidget.cpp +++ b/src/qtui/topicwidget.cpp @@ -22,6 +22,9 @@ #include +#include "client.h" +#include "networkmodel.h" + TopicWidget::TopicWidget(QWidget *parent) : AbstractItemView(parent) { @@ -54,7 +57,11 @@ void TopicWidget::setTopic(const QString &newtopic) { } void TopicWidget::on_topicLineEdit_returnPressed() { - emit topicChanged(ui.topicLineEdit->text()); + QModelIndex currentIdx = currentIndex(); + if(currentIdx.isValid() && currentIdx.data(NetworkModel::BufferTypeRole) == BufferInfo::ChannelBuffer) { + BufferInfo bufferInfo = currentIdx.data(NetworkModel::BufferInfoRole).value(); + Client::userInput(bufferInfo, QString("/topic %1").arg(ui.topicLineEdit->text())); + } switchPlain(); } diff --git a/src/qtui/topicwidget.h b/src/qtui/topicwidget.h index 5933d5e2..666dd742 100644 --- a/src/qtui/topicwidget.h +++ b/src/qtui/topicwidget.h @@ -35,9 +35,6 @@ public: virtual bool eventFilter(QObject *obj, QEvent *event); -signals: - void topicChanged(const QString &text); - protected slots: virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight); diff --git a/src/uisupport/abstractitemview.h b/src/uisupport/abstractitemview.h index bffc35b0..7efb478a 100644 --- a/src/uisupport/abstractitemview.h +++ b/src/uisupport/abstractitemview.h @@ -41,6 +41,8 @@ public: inline QItemSelectionModel *selectionModel() const { return _selectionModel; } void setSelectionModel(QItemSelectionModel *selectionModel); + inline QModelIndex currentIndex() const { return _selectionModel->currentIndex(); } + protected slots: virtual void closeEditor(QWidget *, QAbstractItemDelegate::EndEditHint) {}; virtual void commitData(QWidget *) {}; -- 2.20.1