* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "mainwin.h"
-
+#include <QDir>
#include "aboutdlg.h"
#include "action.h"
#include "actioncollection.h"
#include "clientbacklogmanager.h"
#include "coreinfodlg.h"
#include "coreconnectdlg.h"
+#include "debuglogwidget.h"
+#include "debugmessagemodelfilter.h"
#include "iconloader.h"
#include "inputwidget.h"
+#include "inputline.h"
#include "irclistmodel.h"
#include "jumpkeyhandler.h"
#include "msgprocessorstatuswidget.h"
_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);
}
+ QApplication::setQuitOnLastWindowClosed(false);
+
setWindowTitle("Quassel IRC");
setWindowIconText("Quassel IRC");
updateIcon();
connect(Client::instance(), SIGNAL(networkCreated(NetworkId)), SLOT(clientNetworkCreated(NetworkId)));
connect(Client::instance(), SIGNAL(networkRemoved(NetworkId)), SLOT(clientNetworkRemoved(NetworkId)));
+ // 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);
+
// Order is sometimes important
setupActions();
setupBufferWidget();
setupMenus();
setupViews();
+ setupTopicWidget();
setupChatMonitor();
setupNickWidget();
- setupTopicWidget();
setupInputWidget();
setupStatusBar();
setupSystray();
setupTitleSetter();
- // 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);
-
// restore mainwin state
restoreState(s.value("MainWinState").toByteArray());
setDisconnectedState(); // Disable menus and stuff
show();
-
showCoreConnectionDlg(true); // autoconnect if appropriate
}
// View
coll->addAction("ManageBufferViews", new Action(SmallIcon("view-tree"), tr("&Manage Buffer Views..."), coll,
this, SLOT(on_actionManageViews_triggered())));
- connect(coll->addAction("LockDockPositions", new Action(tr("&Lock Dock Positions"), coll)), SIGNAL(toggled(bool)),
- this, SLOT(on_actionLockDockPositions_toggled(bool)));
+ 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,
// Help
coll->addAction("AboutQuassel", new Action(SmallIcon("quassel"), tr("&About Quassel..."), coll,
this, SLOT(showAboutDlg())));
- coll->addAction("AboutQt", new Action(tr("About &Qt..."), coll,
+ coll->addAction("AboutQt", new Action(QIcon(":/pics/qt-logo.png"), 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())));
+ coll->addAction("DebugMessageModel", new Action(SmallIcon("tools-report-bug"), tr("Debug &MessageModel"), coll,
+ this, SLOT(on_actionDebugMessageModel_triggered())));
+ coll->addAction("DebugLog", new Action(SmallIcon("tools-report-bug"), tr("Debug &Log"), coll,
+ this, SLOT(on_actionDebugLog_triggered())));
}
void MainWin::setupMenus() {
_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->addSeparator();
_helpDebugMenu = _helpMenu->addMenu(SmallIcon("tools-report-bug"), tr("Debug"));
_helpDebugMenu->addAction(coll->action("DebugNetworkModel"));
+ _helpDebugMenu->addAction(coll->action("DebugMessageModel"));
+ _helpDebugMenu->addAction(coll->action("DebugLog"));
}
void MainWin::setupBufferWidget() {
inputWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
_bufferWidget->setFocusProxy(inputWidget);
+
+ inputWidget->inputLine()->installEventFilter(_bufferWidget);
}
void MainWin::setupTopicWidget() {
topicwidget->setModel(Client::bufferModel());
topicwidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
- addDockWidget(Qt::TopDockWidgetArea, dock);
+ addDockWidget(Qt::TopDockWidgetArea, dock, Qt::Vertical);
_viewMenu->addAction(dock->toggleViewAction());
dock->toggleViewAction()->setText(tr("Show Topic Line"));
_viewMenu->addSeparator();
QAction *showStatusbar = QtUi::actionCollection("General")->action("ToggleStatusBar");
- UiSettings uiSettings;
+ QtUiSettings uiSettings;
bool enabled = uiSettings.value("ShowStatusBar", QVariant(true)).toBool();
showStatusbar->setChecked(enabled);
connect(showStatusbar, SIGNAL(toggled(bool)), statusBar(), SLOT(setVisible(bool)));
connect(showStatusbar, SIGNAL(toggled(bool)), this, SLOT(saveStatusBarStatus(bool)));
+
+ connect(Client::backlogManager(), SIGNAL(messagesRequested(const QString &)), this, SLOT(showStatusBarMessage(const QString &)));
+ connect(Client::backlogManager(), SIGNAL(messagesProcessed(const QString &)), this, SLOT(showStatusBarMessage(const QString &)));
}
void MainWin::saveStatusBarStatus(bool enabled) {
- UiSettings uiSettings;
+ QtUiSettings uiSettings;
uiSettings.setValue("ShowStatusBar", enabled);
}
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();
connect(Client::bufferViewManager(), SIGNAL(bufferViewConfigDeleted(int)), this, SLOT(removeBufferView(int)));
connect(Client::bufferViewManager(), SIGNAL(initDone()), this, SLOT(loadLayout()));
- Client::backlogManager()->requestInitialBacklog();
setConnectedState();
+ Client::backlogManager()->requestInitialBacklog();
}
void MainWin::setConnectedState() {
coll->action("ConnectCore")->setEnabled(false);
coll->action("DisconnectCore")->setEnabled(true);
coll->action("CoreInfo")->setEnabled(true);
- _viewMenu->setEnabled(true);
- _bufferWidget->show();
+ // _viewMenu->setEnabled(true);
statusBar()->showMessage(tr("Connected to core."));
if(sslLabel->width() == 0)
sslLabel->setPixmap(SmallIcon("security-low"));
coll->action("ConnectCore")->setEnabled(true);
coll->action("DisconnectCore")->setEnabled(false);
coll->action("CoreInfo")->setEnabled(false);
- _viewMenu->setEnabled(false);
- _bufferWidget->hide();
+ //_viewMenu->setEnabled(false);
statusBar()->showMessage(tr("Not connected to core."));
sslLabel->setPixmap(QPixmap());
updateIcon();
}
void MainWin::showSettingsDlg() {
- SettingsDlg *dlg = new SettingsDlg();
+ SettingsDlg *dlg = new SettingsDlg(this);
//Category: Appearance
dlg->registerSettingsPage(new ColorSettingsPage(dlg));
}
void MainWin::closeEvent(QCloseEvent *event) {
- UiSettings s;
+ QtUiSettings s;
if(s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) {
toggleVisibility();
event->ignore();
} else {
event->accept();
+ QApplication::quit();
}
}
view->show();
}
+void MainWin::on_actionDebugMessageModel_triggered() {
+ QTableView *view = new QTableView(0);
+ DebugMessageModelFilter *filter = new DebugMessageModelFilter(view);
+ filter->setSourceModel(Client::messageModel());
+ view->setModel(filter);
+ view->setAttribute(Qt::WA_DeleteOnClose, true);
+ view->verticalHeader()->hide();
+ view->horizontalHeader()->setStretchLastSection(true);
+ view->show();
+}
+
+void MainWin::on_actionDebugLog_triggered() {
+ DebugLogWidget *logWidget = new DebugLogWidget(0);
+ logWidget->show();
+}
+
void MainWin::saveStateToSession(const QString &sessionId) {
return;
SessionSettings s(sessionId);
s.setValue("MainWinPos", pos());
s.setValue("MainWinState", saveState());
}
+
+void MainWin::showStatusBarMessage(const QString &message) {
+ statusBar()->showMessage(message, 10000);
+}