X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;h=cf7a6e0f956eced12e2753af8161055c6bed18df;hp=e81eb889510e71f57982676775f4901afcf75b17;hb=refs%2Ftags%2F0.3.0-pre;hpb=76a276c472cb99032e2407d8e4bc2f2d693e8e67 diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index e81eb889..cf7a6e0f 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -40,24 +40,33 @@ #include "qtuisettings.h" #include "jumpkeyhandler.h" +#include "uisettings.h" + #include "selectionmodelsynchronizer.h" #include "mappedselectionmodel.h" +#include "settingspages/appearancesettingspage.h" +#include "settingspages/bufferviewsettingspage.h" #include "settingspages/colorsettingspage.h" #include "settingspages/fontssettingspage.h" #include "settingspages/generalsettingspage.h" +#include "settingspages/highlightsettingspage.h" #include "settingspages/identitiessettingspage.h" #include "settingspages/networkssettingspage.h" #include "debugconsole.h" #include "global.h" +#include "qtuistyle.h" MainWin::MainWin(QtUi *_gui, QWidget *parent) : QMainWindow(parent), gui(_gui), + sslLabel(new QLabel()), + systray(new QSystemTrayIcon(this)), activeTrayIcon(":/icons/quassel-icon-active.png"), - inactiveTrayIcon(":/icons/quassel-icon.png"), + onlineTrayIcon(":/icons/quassel-icon.png"), + offlineTrayIcon(":/icons/quassel-icon-offline.png"), trayIconActive(false), timer(new QTimer(this)), settingsDlg(new SettingsDlg(this)), @@ -65,12 +74,19 @@ MainWin::MainWin(QtUi *_gui, QWidget *parent) { ui.setupUi(this); setWindowTitle("Quassel IRC"); - setWindowIcon(inactiveTrayIcon); + setWindowIcon(offlineTrayIcon); + systray->setIcon(offlineTrayIcon); setWindowIconText("Quassel IRC"); statusBar()->showMessage(tr("Waiting for core...")); installEventFilter(new JumpKeyHandler(this)); + + UiSettings uiSettings; + QString style = uiSettings.value("Style", QString("")).toString(); + if(style != "") { + QApplication::setStyle(style); + } } void MainWin::init() { @@ -84,7 +100,7 @@ void MainWin::init() { connect(Client::instance(), SIGNAL(networkCreated(NetworkId)), this, SLOT(clientNetworkCreated(NetworkId))); connect(Client::instance(), SIGNAL(networkRemoved(NetworkId)), this, SLOT(clientNetworkRemoved(NetworkId))); - ui.bufferWidget->init(); + //ui.bufferWidget->init(); show(); @@ -105,6 +121,7 @@ void MainWin::init() { setupTopicWidget(); setupChatMonitor(); setupInputWidget(); + setupStatusBar(); setupSystray(); setupSettingsDlg(); @@ -118,7 +135,7 @@ void MainWin::init() { // attach the BufferWidget to the BufferModel and the default selection ui.bufferWidget->setModel(Client::bufferModel()); ui.bufferWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel()); - + if(Global::SPUTDEV) { //showSettingsDlg(); //showAboutDlg(); @@ -187,27 +204,28 @@ void MainWin::setupSettingsDlg() { //Category: Appearance settingsDlg->registerSettingsPage(new ColorSettingsPage(settingsDlg)); settingsDlg->registerSettingsPage(new FontsSettingsPage(settingsDlg)); + settingsDlg->registerSettingsPage(new AppearanceSettingsPage(settingsDlg)); //General //Category: Behaviour settingsDlg->registerSettingsPage(new GeneralSettingsPage(settingsDlg)); + settingsDlg->registerSettingsPage(new HighlightSettingsPage(settingsDlg)); //Category: General settingsDlg->registerSettingsPage(new IdentitiesSettingsPage(settingsDlg)); settingsDlg->registerSettingsPage(new NetworksSettingsPage(settingsDlg)); + // settingsDlg->registerSettingsPage(new BufferViewSettingsPage(settingsDlg)); } void MainWin::setupNickWidget() { // create nick dock - nickDock = new QDockWidget(tr("Nicks"), this); + NickListDock *nickDock = new NickListDock(tr("Nicks"), this); nickDock->setObjectName("NickDock"); nickDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); nickListWidget = new NickListWidget(nickDock); nickDock->setWidget(nickListWidget); - nickListWidget->setShowDockAction(nickDock->toggleViewAction()); - connect(nickDock->toggleViewAction(), SIGNAL(toggled(bool)), nickListWidget, SLOT(changedVisibility(bool))); addDockWidget(Qt::RightDockWidgetArea, nickDock); - - ui.menuViews->addAction(nickListWidget->showNickListAction()); + ui.menuViews->addAction(nickDock->toggleViewAction()); + connect(nickDock->toggleViewAction(), SIGNAL(triggered(bool)), nickListWidget, SLOT(showWidget(bool))); // attach the NickListWidget to the BufferModel and the default selection nickListWidget->setModel(Client::bufferModel()); @@ -218,7 +236,7 @@ void MainWin::setupChatMonitor() { VerticalDock *dock = new VerticalDock(tr("Chat Monitor"), this); dock->setObjectName("ChatMonitorDock"); - ChatWidget *chatWidget = new ChatWidget(this); + ChatWidget *chatWidget = new ChatWidget(0, this); chatWidget->show(); dock->setWidget(chatWidget); dock->show(); @@ -227,13 +245,7 @@ void MainWin::setupChatMonitor() { if(!buf) return; - chatWidget->init(BufferId(0)); - QList lines; - QList msgs = buf->contents(); - foreach(AbstractUiMsg *msg, msgs) { - lines.append(dynamic_cast(msg)); - } - chatWidget->setContents(lines); + chatWidget->setContents(buf->contents()); connect(buf, SIGNAL(msgAppended(AbstractUiMsg *)), chatWidget, SLOT(appendMsg(AbstractUiMsg *))); connect(buf, SIGNAL(msgPrepended(AbstractUiMsg *)), chatWidget, SLOT(prependMsg(AbstractUiMsg *))); @@ -274,15 +286,34 @@ void MainWin::setupTopicWidget() { ui.menuViews->addAction(dock->toggleViewAction()); } +void MainWin::setupStatusBar() { + connect(Client::instance(), SIGNAL(securedConnection()), this, SLOT(securedConnection())); + sslLabel->setPixmap(QPixmap()); + statusBar()->addPermanentWidget(sslLabel); + + ui.menuViews->addSeparator(); + QAction *showStatusbar = ui.menuViews->addAction(tr("Statusbar")); + showStatusbar->setCheckable(true); + + UiSettings uiSettings; + + bool enabled = uiSettings.value("ShowStatusBar", QVariant(true)).toBool(); + showStatusbar->setChecked(enabled); + enabled ? statusBar()->show() : statusBar()->hide(); + + connect(showStatusbar, SIGNAL(toggled(bool)), statusBar(), SLOT(setVisible(bool))); + connect(showStatusbar, SIGNAL(toggled(bool)), this, SLOT(saveStatusBarStatus(bool))); +} + +void MainWin::saveStatusBarStatus(bool enabled) { + UiSettings uiSettings; + uiSettings.setValue("ShowStatusBar", enabled); +} + void MainWin::setupSystray() { connect(timer, SIGNAL(timeout()), this, SLOT(makeTrayIconBlink())); connect(Client::instance(), SIGNAL(messageReceived(const Message &)), this, SLOT(receiveMessage(const Message &))); - systray = new QSystemTrayIcon(this); - systray->setIcon(inactiveTrayIcon); -// systray->setToolTip("left click to minimize the quassel client to tray"); -// systray->setToolTip(toolTip); - systrayMenu = new QMenu(this); systrayMenu->addAction(ui.actionAboutQuassel); systrayMenu->addSeparator(); @@ -337,6 +368,17 @@ void MainWin::connectedToCore() { //ui.actionNetworkList->setEnabled(true); ui.bufferWidget->show(); statusBar()->showMessage(tr("Connected to core.")); + setWindowIcon(onlineTrayIcon); + systray->setIcon(onlineTrayIcon); + if(sslLabel->width() == 0) + sslLabel->setPixmap(QPixmap::fromImage(QImage(":/16x16/status/no-ssl"))); +} + +void MainWin::securedConnection() { + // todo: make status bar entry + qDebug() << "secured the connection"; + + sslLabel->setPixmap(QPixmap::fromImage(QImage(":/16x16/status/ssl"))); } void MainWin::disconnectedFromCore() { @@ -348,6 +390,9 @@ void MainWin::disconnectedFromCore() { ui.actionConnectCore->setEnabled(true); // nickListWidget->reset(); statusBar()->showMessage(tr("Not connected to core.")); + setWindowIcon(offlineTrayIcon); + systray->setIcon(offlineTrayIcon); + sslLabel->setPixmap(QPixmap()); } AbstractUiMsg *MainWin::layoutMsg(const Message &msg) { @@ -435,10 +480,19 @@ void MainWin::receiveMessage(const Message &msg) { sender = sender.left(i); title += QString(" - %1").arg(sender); } - QString text = QtUi::style()->styleString(Message::mircToInternal(msg.text())).text; - displayTrayIconMessage(title, text); - QApplication::alert(this); - setTrayIconActivity(true); + + UiSettings uiSettings; + + if(uiSettings.value("DisplayPopupMessages", QVariant(true)).toBool()) { + // FIXME don't invoke style engine for this! + QString text = QtUi::style()->styleString(Message::mircToInternal(msg.text())).text; + displayTrayIconMessage(title, text); + } + + if(uiSettings.value("AnimateTrayIcon", QVariant(true)).toBool()) { + QApplication::alert(this); + setTrayIconActivity(true); + } } } @@ -458,13 +512,13 @@ void MainWin::setTrayIconActivity(bool active) { timer->start(500); } else { timer->stop(); - systray->setIcon(inactiveTrayIcon); + systray->setIcon(onlineTrayIcon); } } void MainWin::makeTrayIconBlink() { if(trayIconActive) { - systray->setIcon(inactiveTrayIcon); + systray->setIcon(onlineTrayIcon); trayIconActive = false; } else { systray->setIcon(activeTrayIcon);