X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;h=a45bfc1d02e810081d66b981df3ed3a5c63e4d3d;hp=6041d3136cc0099eb5797c984f5b304048d1b17b;hb=a71a4cc60303b29f493d9d0b6636f00473c4eaf6;hpb=2013e805db3f96dcf7d48e7288f965ebe8a7272c diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 6041d313..a45bfc1d 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -32,6 +32,8 @@ #include "settingsdlg.h" #include "signalproxy.h" #include "topicwidget.h" +#include "inputwidget.h" +#include "verticaldock.h" #include "uisettings.h" #include "selectionmodelsynchronizer.h" @@ -58,6 +60,7 @@ MainWin::MainWin(QtUi *_gui, QWidget *parent) : QMainWindow(parent), gui(_gui) { void MainWin::init() { Client::signalProxy()->attachSignal(this, SIGNAL(requestBacklog(BufferInfo, QVariant, QVariant))); + Client::signalProxy()->attachSignal(this, SIGNAL(disconnectFromNetwork(NetworkId))); ui.bufferWidget->init(); show(); @@ -70,6 +73,20 @@ void MainWin::init() { statusBar()->showMessage(tr("Not connected to core.")); systray = new QSystemTrayIcon(this); systray->setIcon(QIcon(":/icons/quassel-icon.png")); + + QString toolTip("left click to minimize the quassel client to tray"); + systray->setToolTip(toolTip); + + QMenu *systrayMenu = new QMenu(); + systrayMenu->addAction(ui.actionAboutQuassel); + systrayMenu->addSeparator(); + systrayMenu->addAction(ui.actionConnectCore); + systrayMenu->addAction(ui.actionDisconnectCore); + systrayMenu->addSeparator(); + systrayMenu->addAction(ui.actionQuit); + + systray->setContextMenu(systrayMenu); + systray->show(); connect(systray, SIGNAL(activated( QSystemTrayIcon::ActivationReason )), this, SLOT(systrayActivated( QSystemTrayIcon::ActivationReason ))); @@ -103,32 +120,42 @@ void MainWin::init() { showServerList(); } + // DOCK OPTIONS setDockNestingEnabled(true); - - - // new Topic Stuff... should be probably refactored out into a separate method - + setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea); setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea); setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea); + // new Topic Stuff... should be probably refactored out into a separate method + VerticalDock *topicDock = new VerticalDock(tr("Topic"), this); + topicDock->setObjectName("TopicDock"); + TopicWidget *topicwidget = new TopicWidget(topicDock); + topicDock->setWidget(topicwidget); - QDockWidget *dock = new QDockWidget(tr("Topic Dock"), this); - dock->setObjectName("TopicDock"); - dock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea); + Client::bufferModel()->mapProperty(1, Qt::DisplayRole, topicwidget, "topic"); - TopicWidget *topicwidget = new TopicWidget(dock); - dock->setWidget(topicwidget); + addDockWidget(Qt::TopDockWidgetArea, topicDock); - Client::bufferModel()->mapProperty(1, Qt::DisplayRole, topicwidget, "topic"); + ui.menuViews->addAction(topicDock->toggleViewAction()); - addDockWidget(Qt::TopDockWidgetArea, dock); + // NEW INPUT WIDGET -- damn init() needs a cleanup + VerticalDock *inputDock = new VerticalDock(tr("Inputline"), this); + inputDock->setObjectName("InputDock"); + InputWidget *inputWidget = new InputWidget(inputDock); + inputDock->setWidget(inputWidget); - ui.menuViews->addAction(dock->toggleViewAction()); + addDockWidget(Qt::BottomDockWidgetArea, inputDock); + + ui.menuViews->addAction(inputDock->toggleViewAction()); + inputWidget->setModel(Client::bufferModel()); + inputWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel()); + ui.bufferWidget->setFocusProxy(inputWidget); + // attach the BufferWidget to the PropertyMapper ui.bufferWidget->setModel(Client::bufferModel()); ui.bufferWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel()); @@ -167,7 +194,9 @@ void MainWin::setupMenus() { connect(ui.actionEditIdentities, SIGNAL(triggered()), serverListDlg, SLOT(editIdentities())); connect(ui.actionSettingsDlg, SIGNAL(triggered()), this, SLOT(showSettingsDlg())); connect(ui.actionDebug_Console, SIGNAL(triggered()), this, SLOT(showDebugConsole())); + connect(ui.actionDisconnectNet, SIGNAL(triggered()), this, SLOT(disconnectFromNet())); connect(ui.actionAboutQt, SIGNAL(triggered()), QApplication::instance(), SLOT(aboutQt())); + } void MainWin::setupViews() { @@ -203,13 +232,13 @@ QDockWidget *MainWin::addBufferView(const QString &viewname, QAbstractItemModel } void MainWin::setupSettingsDlg() { -#ifdef SPUTDEV - connect(settingsDlg, SIGNAL(finished(int)), QApplication::instance(), SLOT(quit())); // FIXME -#endif settingsDlg->registerSettingsPage(new FontsSettingsPage(settingsDlg)); settingsDlg->registerSettingsPage(new IdentitiesSettingsPage(settingsDlg)); - //settingsDlg->registerSettingsPage(new NetworksSettingsPage(settingsDlg)); +#ifdef SPUTDEV + settingsDlg->registerSettingsPage(new NetworksSettingsPage(settingsDlg)); + connect(settingsDlg, SIGNAL(finished(int)), QApplication::instance(), SLOT(quit())); // FIXME +#endif } void MainWin::connectedToCore() { @@ -292,7 +321,10 @@ void MainWin::systrayActivated( QSystemTrayIcon::ActivationReason activationReas else hide(); } - - - -} \ No newline at end of file +} + +void MainWin::disconnectFromNet() { + int i = QInputDialog::getInteger(this, tr("Disconnect from Network"), tr("Enter network id:")); + emit disconnectFromNetwork(NetworkId(i)); +} +