X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;h=9e71a2b2500277e6d646f2657dae5cd1a20531c3;hp=555ac5d4d8d5ca3f4deef9a12b482047c6a716fe;hb=98032b535780321ce52b991b19e2c3b2d4020e98;hpb=453ccab6ade4a21c7aa3c331af893c91468250a4 diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 555ac5d4..9e71a2b2 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -35,7 +35,6 @@ #include "actioncollection.h" #include "buffermodel.h" #include "bufferview.h" -#include "bufferviewmanager.h" #include "bufferwidget.h" #include "channellistdlg.h" #include "chatlinemodel.h" @@ -45,8 +44,11 @@ #include "client.h" #include "clientsyncer.h" #include "clientbacklogmanager.h" +#include "clientbufferviewconfig.h" +#include "clientbufferviewmanager.h" #include "coreinfodlg.h" #include "coreconnectdlg.h" +#include "contextmenuactionprovider.h" #include "debuglogwidget.h" #include "debugmessagemodelfilter.h" #include "iconloader.h" @@ -62,6 +64,7 @@ #include "sessionsettings.h" #include "settingsdlg.h" #include "settingspagedlg.h" +#include "toolbaractionprovider.h" #include "topicwidget.h" #include "verticaldock.h" @@ -134,7 +137,7 @@ void MainWin::init() { connect(QApplication::instance(), SIGNAL(aboutToQuit()), SLOT(saveLayout())); connect(Client::instance(), SIGNAL(networkCreated(NetworkId)), SLOT(clientNetworkCreated(NetworkId))); connect(Client::instance(), SIGNAL(networkRemoved(NetworkId)), SLOT(clientNetworkRemoved(NetworkId))); - connect(Client::mainUi()->actionProvider(), SIGNAL(showChannelList(NetworkId)), SLOT(showChannelList(NetworkId))); + connect(GraphicalUi::contextMenuActionProvider(), SIGNAL(showChannelList(NetworkId)), SLOT(showChannelList(NetworkId))); // Setup Dock Areas setDockNestingEnabled(true); @@ -152,6 +155,7 @@ void MainWin::init() { setupNickWidget(); setupInputWidget(); setupStatusBar(); + setupToolBars(); setupSystray(); setupTitleSetter(); @@ -173,7 +177,7 @@ void MainWin::init() { restoreState(s.value("MainWinState").toByteArray()); // restore locked state of docks - QtUi::actionCollection("General")->action("LockDockPositions")->setChecked(s.value("LockDocks", false).toBool()); + QtUi::actionCollection("General")->action("LockLayout")->setChecked(s.value("LockLayout", false).toBool()); setDisconnectedState(); // Disable menus and stuff @@ -220,9 +224,10 @@ void MainWin::setupActions() { // View coll->addAction("ConfigureBufferViews", new Action(tr("&Configure Buffer Views..."), coll, this, SLOT(on_actionConfigureViews_triggered()))); - QAction *lockAct = coll->addAction("LockDockPositions", new Action(tr("&Lock Dock Positions"), coll)); + + QAction *lockAct = coll->addAction("LockLayout", new Action(tr("&Lock Layout"), coll)); lockAct->setCheckable(true); - connect(lockAct, SIGNAL(toggled(bool)), SLOT(on_actionLockDockPositions_toggled(bool))); + connect(lockAct, SIGNAL(toggled(bool)), SLOT(on_actionLockLayout_toggled(bool))); coll->addAction("ToggleSearchBar", new Action(SmallIcon("edit-find"), tr("Show &Search Bar"), coll, 0, 0, tr("Ctrl+F")))->setCheckable(true); @@ -273,12 +278,17 @@ void MainWin::setupMenus() { _viewMenu = menuBar()->addMenu(tr("&View")); _bufferViewsMenu = _viewMenu->addMenu(tr("&Buffer Views")); _bufferViewsMenu->addAction(coll->action("ConfigureBufferViews")); + _toolbarMenu = _viewMenu->addMenu(tr("&Toolbars")); _viewMenu->addSeparator(); _viewMenu->addAction(coll->action("ToggleSearchBar")); - _viewMenu->addAction(coll->action("ShowAwayLog")); + + coreAction = coll->action("ShowAwayLog"); + flagRemoteCoreOnly(coreAction); + _viewMenu->addAction(coreAction); + _viewMenu->addAction(coll->action("ToggleStatusBar")); _viewMenu->addSeparator(); - _viewMenu->addAction(coll->action("LockDockPositions")); + _viewMenu->addAction(coll->action("LockLayout")); _settingsMenu = menuBar()->addMenu(tr("&Settings")); #ifdef HAVE_KDE @@ -309,13 +319,14 @@ void MainWin::setupBufferWidget() { } void MainWin::addBufferView(int bufferViewConfigId) { - addBufferView(Client::bufferViewManager()->bufferViewConfig(bufferViewConfigId)); + addBufferView(Client::bufferViewManager()->clientBufferViewConfig(bufferViewConfigId)); } -void MainWin::addBufferView(BufferViewConfig *config) { +void MainWin::addBufferView(ClientBufferViewConfig *config) { if(!config) return; + config->setLocked(QtUiSettings().value("LockLayout", false).toBool()); BufferViewDock *dock = new BufferViewDock(config, this); //create the view and initialize it's filter @@ -373,12 +384,17 @@ void MainWin::on_actionConfigureViews_triggered() { dlg.exec(); } -void MainWin::on_actionLockDockPositions_toggled(bool lock) { +void MainWin::on_actionLockLayout_toggled(bool lock) { QList docks = findChildren(); foreach(VerticalDock *dock, docks) { dock->showTitle(!lock); } - QtUiSettings().setValue("LockDocks", lock); + if(Client::bufferViewManager()) { + foreach(ClientBufferViewConfig *config, Client::bufferViewManager()->clientBufferViewConfigs()) { + config->setLocked(lock); + } + } + QtUiSettings().setValue("LockLayout", lock); } void MainWin::setupNickWidget() { @@ -393,7 +409,7 @@ void MainWin::setupNickWidget() { addDockWidget(Qt::RightDockWidgetArea, nickDock); _viewMenu->addAction(nickDock->toggleViewAction()); nickDock->toggleViewAction()->setText(tr("Show Nick List")); - nickDock->toggleViewAction()->setIcon(SmallIcon("view-sidetree")); + // See NickListDock::NickListDock(); // connect(nickDock->toggleViewAction(), SIGNAL(triggered(bool)), nickListWidget, SLOT(showWidget(bool))); @@ -410,7 +426,7 @@ void MainWin::setupChatMonitor() { ChatMonitorView *chatView = new ChatMonitorView(filter, this); chatView->show(); dock->setWidget(chatView); - dock->show(); + dock->hide(); addDockWidget(Qt::TopDockWidgetArea, dock, Qt::Vertical); _viewMenu->addAction(dock->toggleViewAction()); @@ -473,7 +489,6 @@ void MainWin::setupStatusBar() { statusBar()->addPermanentWidget(sslLabel); sslLabel->hide(); - _viewMenu->addSeparator(); QAction *showStatusbar = QtUi::actionCollection("General")->action("ToggleStatusBar"); QtUiSettings uiSettings; @@ -515,6 +530,27 @@ void MainWin::setupSystray() { #endif } +void MainWin::setupToolBars() { + connect(_bufferWidget, SIGNAL(currentChanged(QModelIndex)), + QtUi::toolBarActionProvider(), SLOT(currentBufferChanged(QModelIndex))); + connect(_nickListWidget, SIGNAL(nickSelectionChanged(QModelIndexList)), + QtUi::toolBarActionProvider(), SLOT(nickSelectionChanged(QModelIndexList))); + + _mainToolBar = addToolBar("Main Toolbar"); + _mainToolBar->setObjectName("MainToolBar"); + QtUi::toolBarActionProvider()->addActions(_mainToolBar, ToolBarActionProvider::MainToolBar); + _toolbarMenu->addAction(_mainToolBar->toggleViewAction()); + + //_nickToolBar = addToolBar("User"); + //_nickToolBar->setObjectName("NickToolBar"); + //QtUi::toolBarActionProvider()->addActions(_nickToolBar, ToolBarActionProvider::NickToolBar); + +#ifdef HAVE_KDE + _mainToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); + //_nickToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); +#endif +} + void MainWin::changeEvent(QEvent *event) { if(event->type() == QEvent::WindowStateChange) { if(windowState() & Qt::WindowMinimized) { @@ -560,6 +596,8 @@ void MainWin::setConnectedState() { // _viewMenu->setEnabled(true); if(!Client::internalCore()) statusBar()->showMessage(tr("Connected to core.")); + else + statusBar()->clearMessage(); if(Client::signalProxy()->isSecure()) { sslLabel->setPixmap(SmallIcon("security-high")); @@ -626,6 +664,8 @@ void MainWin::setDisconnectedState() { sslLabel->hide(); updateLagIndicator(); coreLagLabel->hide(); + if(msgProcessorStatusWidget) + msgProcessorStatusWidget->setProgress(0, 0); updateIcon(); } @@ -760,7 +800,7 @@ void MainWin::messagesInserted(const QModelIndex &parent, int start, int end) { continue; } Message::Flags flags = (Message::Flags)idx.data(ChatLineModel::FlagsRole).toInt(); - if(flags.testFlag(Message::Backlog)) continue; + if(flags.testFlag(Message::Backlog) || flags.testFlag(Message::Self)) continue; flags |= Message::Backlog; // we only want to trigger a highlight once! Client::messageModel()->setData(idx, (int)flags, ChatLineModel::FlagsRole);