fixes, cleanup and other improvements... Now I know how a GC feels ;)
authorMarcus Eggenberger <egs@quassel-irc.org>
Mon, 11 Aug 2008 14:54:22 +0000 (16:54 +0200)
committerMarcus Eggenberger <egs@quassel-irc.org>
Mon, 11 Aug 2008 14:54:22 +0000 (16:54 +0200)
src/qtui/channellistdlg.cpp
src/qtui/coreconnectdlg.cpp
src/qtui/coreconnectdlg.h
src/qtui/mainwin.cpp
src/qtui/mainwin.h
src/qtui/qtui.cpp
src/qtui/qtui.h
src/qtui/settingsdlg.cpp
src/qtui/topicwidget.cpp
src/qtui/topicwidget.h
src/uisupport/abstractitemview.h

index 2e26484..2eab404 100644 (file)
@@ -86,8 +86,9 @@ void ChannelListDlg::requestSearch() {
 }
 
 void ChannelListDlg::receiveChannelList(const NetworkId &netId, const QStringList &channelFilters, const QList<IrcListHelper::ChannelDescription> &channelList) {
-  Q_UNUSED(netId)
   Q_UNUSED(channelFilters)
+  if(netId != _netId)
+    return;
 
   showFilterLine(!channelList.isEmpty());
   _ircListModel.setChannelList(channelList);
index 6591ede..ad7e68a 100644 (file)
@@ -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);
index 3cd7294..99e3379 100644 (file)
@@ -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:
index 9d0de30..d302ee1 100644 (file)
@@ -46,7 +46,6 @@
 #include "irclistmodel.h"
 #include "verticaldock.h"
 #include "uisettings.h"
-#include "util.h"
 #include "qtuisettings.h"
 #include "jumpkeyhandler.h"
 
 #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<QLocale>());
-
   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<QAction *>(sender());
     if(action)
       netId = action->data().value<NetworkId>();
   }
+
+  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) {
index 8cffe8b..080e78f 100644 (file)
 #include <QSystemTrayIcon>
 #include <QTimer>
 
-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;
 
index fb1bd50..ff676ad 100644 (file)
 
 #include "qtui.h"
 
+#include <QDebug>
+
 #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<QLocale>());
+
+  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);
 }
index 46f21c1..2c1156f 100644 (file)
@@ -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
index 5f255b1..d45730b 100644 (file)
@@ -24,6 +24,7 @@ SettingsDlg::SettingsDlg(QWidget *parent)
   : QDialog(parent),
     _currentPage(0)
 {
+  setModal(false);
   ui.setupUi(this);
 
   updateGeometry();
index bb55280..ab901fd 100644 (file)
@@ -22,6 +22,9 @@
 
 #include <QDebug>
 
+#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<BufferInfo>();
+    Client::userInput(bufferInfo, QString("/topic %1").arg(ui.topicLineEdit->text()));
+  }
   switchPlain();
 }
 
index 5933d5e..666dd74 100644 (file)
@@ -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 &current, const QModelIndex &previous);
   virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
index bffc35b..7efb478 100644 (file)
@@ -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 *) {};