#include "actioncollection.h"
#include "buffermodel.h"
#include "bufferviewmanager.h"
+#include "bufferwidget.h"
#include "channellistdlg.h"
#include "chatlinemodel.h"
#include "chatmonitorfilter.h"
sslLabel(new QLabel()),
msgProcessorStatusWidget(new MsgProcessorStatusWidget()),
_titleSetter(this),
- _trayIcon(new QSystemTrayIcon(this)),
- _actionCollection(new ActionCollection(this))
+ _trayIcon(new QSystemTrayIcon(this))
{
QtUiSettings uiSettings;
- QString style = uiSettings.value("Style", QString("")).toString();
- if(style != "") {
+ QString style = uiSettings.value("Style", QString()).toString();
+ if(!style.isEmpty()) {
QApplication::setStyle(style);
}
- ui.setupUi(this);
+
setWindowTitle("Quassel IRC");
setWindowIconText("Quassel IRC");
updateIcon();
- QtUi::actionCollection()->addAssociatedWidget(this);
-
- statusBar()->showMessage(tr("Waiting for core..."));
-
installEventFilter(new JumpKeyHandler(this));
QtUi::registerNotificationBackend(new TaskbarNotificationBackend(this));
#endif
QtUiApplication* app = qobject_cast<QtUiApplication*> qApp;
- connect(app, SIGNAL(saveStateToSession(const QString&)), this, SLOT(saveStateToSession(const QString&)));
- connect(app, SIGNAL(saveStateToSessionSettings(SessionSettings&)), this, SLOT(saveStateToSessionSettings(SessionSettings&)));
+ connect(app, SIGNAL(saveStateToSession(const QString&)), SLOT(saveStateToSession(const QString&)));
+ connect(app, SIGNAL(saveStateToSessionSettings(SessionSettings&)), SLOT(saveStateToSessionSettings(SessionSettings&)));
}
void MainWin::init() {
else
resize(QSize(800, 500));
- connect(QApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(saveLayout()));
-
- connect(Client::instance(), SIGNAL(networkCreated(NetworkId)), this, SLOT(clientNetworkCreated(NetworkId)));
- connect(Client::instance(), SIGNAL(networkRemoved(NetworkId)), this, SLOT(clientNetworkRemoved(NetworkId)));
-
- show();
-
- statusBar()->showMessage(tr("Not connected to core."));
+ 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)));
- // DOCK OPTIONS
+ // Setup Dock Areas
setDockNestingEnabled(true);
-
setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);
setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
- // setup stuff...
+ // Order is sometimes important
setupActions();
+ setupBufferWidget();
setupMenus();
setupViews();
- setupNickWidget();
setupTopicWidget();
setupChatMonitor();
+ setupNickWidget();
setupInputWidget();
setupStatusBar();
setupSystray();
+ setupTitleSetter();
// restore mainwin state
restoreState(s.value("MainWinState").toByteArray());
// restore locked state of docks
- ui.actionLockDockPositions->setChecked(s.value("LockDocks", false).toBool());
+ QtUi::actionCollection("General")->action("LockDockPositions")->setChecked(s.value("LockDocks", false).toBool());
setDisconnectedState(); // Disable menus and stuff
- showCoreConnectionDlg(true); // autoconnect if appropriate
- // attach the BufferWidget to the BufferModel and the default selection
- ui.bufferWidget->setModel(Client::bufferModel());
- ui.bufferWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
- ui.menuViews->addAction(QtUi::actionCollection()->action("toggleSearchBar"));
+ show();
- _titleSetter.setModel(Client::bufferModel());
- _titleSetter.setSelectionModel(Client::bufferModel()->standardSelectionModel());
+ showCoreConnectionDlg(true); // autoconnect if appropriate
}
MainWin::~MainWin() {
}
void MainWin::setupActions() {
- // TODO don't get these from *.ui anymore... we shouldn't need one
- ui.actionQuit->setIcon(SmallIcon("application-exit"));
- ui.actionSettingsDlg->setIcon(SmallIcon("configure"));
- ui.actionManageViews->setIcon(SmallIcon("view-tree"));
- ui.actionManageViews2->setIcon(SmallIcon("view-tree"));
- ui.actionAboutQt->setIcon(SmallIcon("qt"));
- ui.actionAboutQuassel->setIcon(SmallIcon("quassel"));
- ui.actionConnectCore->setIcon(SmallIcon("network-connect"));
- ui.actionDisconnectCore->setIcon(SmallIcon("network-disconnect"));
- ui.actionCoreInfo->setIcon(SmallIcon("help-about"));
+ ActionCollection *coll = QtUi::actionCollection("General");
+ // File
+ coll->addAction("ConnectCore", new Action(SmallIcon("network-connect"), tr("&Connect to Core..."), coll,
+ this, SLOT(showCoreConnectionDlg())));
+ coll->addAction("DisconnectCore", new Action(SmallIcon("network-disconnect"), tr("&Disconnect from Core"), coll,
+ Client::instance(), SLOT(disconnectFromCore())));
+ coll->addAction("CoreInfo", new Action(SmallIcon("help-about"), tr("Core &Info..."), coll,
+ this, SLOT(showCoreInfoDlg())));
+ coll->addAction("EditNetworks", new Action(SmallIcon("configure"), tr("Edit &Networks..."), coll,
+ this, SLOT(on_actionEditNetworks_triggered())));
+ coll->addAction("Quit", new Action(SmallIcon("application-exit"), tr("&Quit"), coll,
+ qApp, SLOT(quit()), tr("Ctrl+Q")));
+
+ // View
+ coll->addAction("ManageBufferViews", new Action(SmallIcon("view-tree"), tr("&Manage Buffer Views..."), coll,
+ this, SLOT(on_actionManageViews_triggered())));
+ Action *lockAct = coll->addAction("LockDockPositions", new Action(tr("&Lock Dock Positions"), coll));
+ lockAct->setCheckable(true);
+ connect(lockAct, SIGNAL(toggled(bool)), SLOT(on_actionLockDockPositions_toggled(bool)));
+
+ coll->addAction("ToggleSearchBar", new Action(SmallIcon("edit-find"), tr("Show &Search Bar"), coll,
+ 0, 0, tr("Ctrl+F")))->setCheckable(true);
+ coll->addAction("ToggleStatusBar", new Action(tr("Show Status &Bar"), coll,
+ 0, 0))->setCheckable(true);
+
+ // Settings
+ coll->addAction("ConfigureQuassel", new Action(SmallIcon("configure"), tr("&Configure Quassel..."), coll,
+ this, SLOT(showSettingsDlg()), tr("F7")));
+
+ // Help
+ coll->addAction("AboutQuassel", new Action(SmallIcon("quassel"), tr("&About Quassel..."), coll,
+ this, SLOT(showAboutDlg())));
+ coll->addAction("AboutQt", new Action(tr("About &Qt..."), coll,
+ qApp, SLOT(aboutQt())));
+ coll->addAction("DebugNetworkModel", new Action(SmallIcon("tools-report-bug"), tr("Debug &NetworkModel"), coll,
+ this, SLOT(on_actionDebugNetworkModel_triggered())));
}
void MainWin::setupMenus() {
- connect(ui.actionConnectCore, SIGNAL(triggered()), this, SLOT(showCoreConnectionDlg()));
- connect(ui.actionDisconnectCore, SIGNAL(triggered()), Client::instance(), SLOT(disconnectFromCore()));
- 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.actionAboutQuassel, SIGNAL(triggered()), this, SLOT(showAboutDlg()));
- connect(ui.actionAboutQt, SIGNAL(triggered()), QApplication::instance(), SLOT(aboutQt()));
+ ActionCollection *coll = QtUi::actionCollection("General");
+
+ _fileMenu = menuBar()->addMenu(tr("&File"));
+ _fileMenu->addAction(coll->action("ConnectCore"));
+ _fileMenu->addAction(coll->action("DisconnectCore"));
+ _fileMenu->addAction(coll->action("CoreInfo"));
+ _fileMenu->addSeparator();
+ _networksMenu = _fileMenu->addMenu(tr("&Networks"));
+ _networksMenu->addAction(coll->action("EditNetworks"));
+ _networksMenu->addSeparator();
+ _fileMenu->addSeparator();
+ _fileMenu->addAction(coll->action("Quit"));
+
+ _viewMenu = menuBar()->addMenu(tr("&View"));
+ _bufferViewsMenu = _viewMenu->addMenu(tr("&Buffer Views"));
+ _bufferViewsMenu->addAction(coll->action("ManageBufferViews"));
+ _viewMenu->addSeparator();
+ _viewMenu->addAction(coll->action("ToggleSearchBar"));
+ _viewMenu->addAction(coll->action("ToggleStatusBar"));
+ _viewMenu->addSeparator();
+ _viewMenu->addAction(coll->action("LockDockPositions"));
+
+ _settingsMenu = menuBar()->addMenu(tr("&Settings"));
+ _settingsMenu->addAction(coll->action("ConfigureQuassel"));
+
+ _helpMenu = menuBar()->addMenu(tr("&Help"));
+ _helpMenu->addAction(coll->action("AboutQuassel"));
+ _helpMenu->addAction(coll->action("AboutQt"));
+ _helpMenu->addSeparator();
+ _helpDebugMenu = _helpMenu->addMenu(SmallIcon("tools-report-bug"), tr("Debug"));
+ _helpDebugMenu->addAction(coll->action("DebugNetworkModel"));
+}
+
+void MainWin::setupBufferWidget() {
+ _bufferWidget = new BufferWidget(this);
+ _bufferWidget->setModel(Client::bufferModel());
+ _bufferWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
+ setCentralWidget(_bufferWidget);
}
void MainWin::setupViews() {
dock->show();
addDockWidget(Qt::LeftDockWidgetArea, dock);
- ui.menuBufferViews->addAction(dock->toggleViewAction());
+ _bufferViewsMenu->addAction(dock->toggleViewAction());
_netViews.append(dock);
}
void MainWin::removeBufferView(int bufferViewConfigId) {
QVariant actionData;
BufferViewDock *dock;
- foreach(QAction *action, ui.menuBufferViews->actions()) {
+ foreach(QAction *action, _bufferViewsMenu->actions()) {
actionData = action->data();
if(!actionData.isValid())
continue;
nickDock->setObjectName("NickDock");
nickDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
- nickListWidget = new NickListWidget(nickDock);
- nickDock->setWidget(nickListWidget);
+ _nickListWidget = new NickListWidget(nickDock);
+ nickDock->setWidget(_nickListWidget);
addDockWidget(Qt::RightDockWidgetArea, nickDock);
- ui.menuViews->addAction(nickDock->toggleViewAction());
+ _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)));
// attach the NickListWidget to the BufferModel and the default selection
- nickListWidget->setModel(Client::bufferModel());
- nickListWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
+ _nickListWidget->setModel(Client::bufferModel());
+ _nickListWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
}
void MainWin::setupChatMonitor() {
dock->show();
addDockWidget(Qt::TopDockWidgetArea, dock, Qt::Vertical);
- ui.menuViews->addAction(dock->toggleViewAction());
+ _viewMenu->addAction(dock->toggleViewAction());
+ dock->toggleViewAction()->setText(tr("Show Chat Monitor"));
}
void MainWin::setupInputWidget() {
addDockWidget(Qt::BottomDockWidgetArea, dock);
- ui.menuViews->addAction(dock->toggleViewAction());
+ _viewMenu->addAction(dock->toggleViewAction());
+ dock->toggleViewAction()->setText(tr("Show Input Line"));
inputWidget->setModel(Client::bufferModel());
inputWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
- ui.bufferWidget->setFocusProxy(inputWidget);
+ _bufferWidget->setFocusProxy(inputWidget);
}
void MainWin::setupTopicWidget() {
topicwidget->setModel(Client::bufferModel());
topicwidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
- addDockWidget(Qt::TopDockWidgetArea, dock);
+ addDockWidget(Qt::TopDockWidgetArea, dock, Qt::Vertical);
- ui.menuViews->addAction(dock->toggleViewAction());
+ _viewMenu->addAction(dock->toggleViewAction());
+ dock->toggleViewAction()->setText(tr("Show Topic Line"));
+}
+
+void MainWin::setupTitleSetter() {
+ _titleSetter.setModel(Client::bufferModel());
+ _titleSetter.setSelectionModel(Client::bufferModel()->standardSelectionModel());
}
void MainWin::setupStatusBar() {
sslLabel->setPixmap(QPixmap());
statusBar()->addPermanentWidget(sslLabel);
- ui.menuViews->addSeparator();
- QAction *showStatusbar = ui.menuViews->addAction(tr("Statusbar"));
- showStatusbar->setCheckable(true);
+ _viewMenu->addSeparator();
+ QAction *showStatusbar = QtUi::actionCollection("General")->action("ToggleStatusBar");
- UiSettings uiSettings;
+ QtUiSettings uiSettings;
bool enabled = uiSettings.value("ShowStatusBar", QVariant(true)).toBool();
showStatusbar->setChecked(enabled);
}
void MainWin::saveStatusBarStatus(bool enabled) {
- UiSettings uiSettings;
+ QtUiSettings uiSettings;
uiSettings.setValue("ShowStatusBar", enabled);
}
connect(Client::messageModel(), SIGNAL(rowsInserted(const QModelIndex &, int, int)),
SLOT(messagesInserted(const QModelIndex &, int, int)));
+ ActionCollection *coll = QtUi::actionCollection("General");
systrayMenu = new QMenu(this);
- systrayMenu->addAction(ui.actionAboutQuassel);
+ systrayMenu->addAction(coll->action("AboutQuassel"));
systrayMenu->addSeparator();
- systrayMenu->addAction(ui.actionConnectCore);
- systrayMenu->addAction(ui.actionDisconnectCore);
+ systrayMenu->addAction(coll->action("ConnectCore"));
+ systrayMenu->addAction(coll->action("DisconnectCore"));
systrayMenu->addSeparator();
- systrayMenu->addAction(ui.actionQuit);
+ systrayMenu->addAction(coll->action("Quit"));
systemTrayIcon()->setContextMenu(systrayMenu);
- UiSettings s;
+ QtUiSettings s;
if(s.value("UseSystemTrayIcon", QVariant(true)).toBool()) {
systemTrayIcon()->show();
}
void MainWin::changeEvent(QEvent *event) {
if(event->type() == QEvent::WindowStateChange) {
if(windowState() & Qt::WindowMinimized) {
- UiSettings s;
+ QtUiSettings s;
if(s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnMinimize").toBool()) {
toggleVisibility();
event->ignore();
}
void MainWin::setConnectedState() {
+ ActionCollection *coll = QtUi::actionCollection("General");
//ui.menuCore->setEnabled(true);
- ui.actionConnectCore->setEnabled(false);
- ui.actionDisconnectCore->setEnabled(true);
- ui.actionCoreInfo->setEnabled(true);
- ui.menuViews->setEnabled(true);
- ui.bufferWidget->show();
+ coll->action("ConnectCore")->setEnabled(false);
+ coll->action("DisconnectCore")->setEnabled(true);
+ coll->action("CoreInfo")->setEnabled(true);
+ // _viewMenu->setEnabled(true);
statusBar()->showMessage(tr("Connected to core."));
if(sslLabel->width() == 0)
sslLabel->setPixmap(SmallIcon("security-low"));
saveLayout();
QVariant actionData;
BufferViewDock *dock;
- foreach(QAction *action, ui.menuBufferViews->actions()) {
+ foreach(QAction *action, _bufferViewsMenu->actions()) {
actionData = action->data();
if(!actionData.isValid())
continue;
}
void MainWin::setDisconnectedState() {
+ ActionCollection *coll = QtUi::actionCollection("General");
//ui.menuCore->setEnabled(false);
- ui.actionConnectCore->setEnabled(true);
- ui.actionDisconnectCore->setEnabled(false);
- ui.actionCoreInfo->setEnabled(false);
- ui.menuViews->setEnabled(false);
- ui.bufferWidget->hide();
+ coll->action("ConnectCore")->setEnabled(true);
+ coll->action("DisconnectCore")->setEnabled(false);
+ coll->action("CoreInfo")->setEnabled(false);
+ //_viewMenu->setEnabled(false);
statusBar()->showMessage(tr("Not connected to core."));
sslLabel->setPixmap(QPixmap());
updateIcon();
}
void MainWin::closeEvent(QCloseEvent *event) {
- UiSettings s;
+ QtUiSettings s;
if(s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) {
toggleVisibility();
event->ignore();
connect(act, SIGNAL(triggered()), this, SLOT(connectOrDisconnectFromNet()));
QAction *beforeAction = 0;
- foreach(QAction *action, ui.menuNetworks->actions()) {
- if(action->isSeparator()) {
- beforeAction = action;
- break;
- }
+ foreach(QAction *action, _networksMenu->actions()) {
+ if(!action->data().isValid()) // ignore stock actions
+ continue;
if(net->networkName().localeAwareCompare(action->text()) < 0) {
beforeAction = action;
break;
}
}
- Q_CHECK_PTR(beforeAction);
- ui.menuNetworks->insertAction(beforeAction, act);
+ _networksMenu->insertAction(beforeAction, act);
}
void MainWin::clientNetworkUpdated() {
else net->requestDisconnect();
}
-void MainWin::on_actionDebugNetworkModel_triggered(bool) {
+void MainWin::on_actionDebugNetworkModel_triggered() {
QTreeView *view = new QTreeView;
view->setAttribute(Qt::WA_DeleteOnClose);
view->setWindowTitle("Debug NetworkModel View");