#endif
#include "aboutdlg.h"
+#include "awaylogfilter.h"
+#include "awaylogview.h"
#include "action.h"
#include "actioncollection.h"
#include "buffermodel.h"
#include "bufferview.h"
-#include "bufferviewmanager.h"
#include "bufferwidget.h"
#include "channellistdlg.h"
#include "chatlinemodel.h"
#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"
#include "sessionsettings.h"
#include "settingsdlg.h"
#include "settingspagedlg.h"
+#include "toolbaractionprovider.h"
#include "topicwidget.h"
#include "verticaldock.h"
sslLabel(new QLabel()),
msgProcessorStatusWidget(new MsgProcessorStatusWidget()),
_titleSetter(this),
- _trayIcon(new QSystemTrayIcon(this))
+ _trayIcon(new QSystemTrayIcon(this)),
+ _awayLog(0)
{
QtUiSettings uiSettings;
QString style = uiSettings.value("Style", QString()).toString();
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);
setupNickWidget();
setupInputWidget();
setupStatusBar();
+ setupToolBars();
setupSystray();
setupTitleSetter();
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
// 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);
+ 0, 0, tr("Ctrl+F")))->setCheckable(true);
+ coll->addAction("ShowAwayLog", new Action(tr("Show Away Log"), coll,
+ this, SLOT(showAwayLog())));
coll->addAction("ToggleStatusBar", new Action(tr("Show Status &Bar"), coll,
0, 0))->setCheckable(true);
_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"));
+
+ 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
}
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
dlg.exec();
}
-void MainWin::on_actionLockDockPositions_toggled(bool lock) {
+void MainWin::on_actionLockLayout_toggled(bool lock) {
QList<VerticalDock *> docks = findChildren<VerticalDock *>();
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() {
#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) {
// _viewMenu->setEnabled(true);
if(!Client::internalCore())
statusBar()->showMessage(tr("Connected to core."));
+ else
+ statusBar()->clearMessage();
if(Client::signalProxy()->isSecure()) {
sslLabel->setPixmap(SmallIcon("security-high"));
sslLabel->hide();
updateLagIndicator();
coreLagLabel->hide();
+ if(msgProcessorStatusWidget)
+ msgProcessorStatusWidget->setProgress(0, 0);
updateIcon();
}
CoreInfoDlg(this).exec();
}
+void MainWin::showAwayLog() {
+ if(_awayLog)
+ return;
+ AwayLogFilter *filter = new AwayLogFilter(Client::messageModel());
+ _awayLog = new AwayLogView(filter, 0);
+ filter->setParent(_awayLog);
+ connect(_awayLog, SIGNAL(destroyed()), this, SLOT(awayLogDestroyed()));
+ _awayLog->setAttribute(Qt::WA_DeleteOnClose);
+ _awayLog->show();
+}
+
+void MainWin::awayLogDestroyed() {
+ _awayLog = 0;
+}
+
void MainWin::showSettingsDlg() {
SettingsDlg *dlg = new SettingsDlg();