X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;h=df444319ffa8ab9e4047bceccf853dd0d8dcd81b;hp=c1c57e10fa1d823d2e549af137474d7b6bd1e44e;hb=f02f6649c32133a86183197740d316f41f268109;hpb=f69d3d8fb4589d30b33cfb83a3b68a34517fc852 diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index c1c57e10..df444319 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -64,6 +64,7 @@ #include "sessionsettings.h" #include "settingsdlg.h" #include "settingspagedlg.h" +#include "systemtray.h" #include "toolbaractionprovider.h" #include "topicwidget.h" #include "verticaldock.h" @@ -105,7 +106,6 @@ MainWin::MainWin(QWidget *parent) sslLabel(new QLabel()), msgProcessorStatusWidget(new MsgProcessorStatusWidget()), _titleSetter(this), - _trayIcon(new QSystemTrayIcon(this)), _awayLog(0) { QtUiSettings uiSettings; @@ -137,6 +137,8 @@ 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::messageModel(), SIGNAL(rowsInserted(const QModelIndex &, int, int)), + SLOT(messagesInserted(const QModelIndex &, int, int))); connect(GraphicalUi::contextMenuActionProvider(), SIGNAL(showChannelList(NetworkId)), SLOT(showChannelList(NetworkId))); // Setup Dock Areas @@ -182,6 +184,7 @@ void MainWin::init() { setDisconnectedState(); // Disable menus and stuff show(); + if(Quassel::runMode() != Quassel::Monolithic) { showCoreConnectionDlg(true); // autoconnect if appropriate } else { @@ -197,14 +200,19 @@ MainWin::~MainWin() { } void MainWin::updateIcon() { +#ifdef Q_WS_MAC + const int size = 128; +#else + const int size = 48; +#endif + QPixmap icon; if(Client::isConnected()) - icon = DesktopIcon("quassel", IconLoader::SizeEnormous); + icon = DesktopIcon("quassel", size); else - icon = DesktopIcon("quassel_disconnected", IconLoader::SizeEnormous); + icon = DesktopIcon("quassel_inactive", size); setWindowIcon(icon); qApp->setWindowIcon(icon); - systemTrayIcon()->setIcon(icon); } void MainWin::setupActions() { @@ -507,27 +515,12 @@ void MainWin::saveStatusBarStatus(bool enabled) { } void MainWin::setupSystray() { - 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(coll->action("ConnectCore")); - systrayMenu->addAction(coll->action("DisconnectCore")); - systrayMenu->addAction(coll->action("CoreInfo")); - systrayMenu->addSeparator(); - systrayMenu->addAction(coll->action("Quit")); - - systemTrayIcon()->setContextMenu(systrayMenu); - - QtUiSettings s; - if(s.value("UseSystemTrayIcon", QVariant(true)).toBool()) { - systemTrayIcon()->show(); - } + _systemTray = new SystemTray(this); #ifndef Q_WS_MAC - connect(systemTrayIcon(), SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(systrayActivated(QSystemTrayIcon::ActivationReason))); + connect(systemTray(), SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(systrayActivated(QSystemTrayIcon::ActivationReason))); #endif + } void MainWin::setupToolBars() { @@ -540,7 +533,8 @@ void MainWin::setupToolBars() { setUnifiedTitleAndToolBarOnMac(true); #endif _mainToolBar = addToolBar("Main Toolbar"); - // _mainToolBar->setObjectName("MainToolBar"); // setting an object name breaks setUnifiedTitleAndToolBarOnMac... -.- + _mainToolBar->setObjectName("MainToolBar"); + QtUi::toolBarActionProvider()->addActions(_mainToolBar, ToolBarActionProvider::MainToolBar); _toolbarMenu->addAction(_mainToolBar->toggleViewAction()); @@ -611,6 +605,7 @@ void MainWin::setConnectedState() { sslLabel->setVisible(!Client::internalCore()); coreLagLabel->setVisible(!Client::internalCore()); updateIcon(); + systemTray()->setState(SystemTray::Active); } void MainWin::loadLayout() { @@ -670,6 +665,7 @@ void MainWin::setDisconnectedState() { if(msgProcessorStatusWidget) msgProcessorStatusWidget->setProgress(0, 0); updateIcon(); + systemTray()->setState(SystemTray::Inactive); } void MainWin::startInternalCore() { @@ -768,14 +764,13 @@ void MainWin::systrayActivated(QSystemTrayIcon::ActivationReason activationReaso } void MainWin::hideToTray() { - if(!systemTrayIcon()->isSystemTrayAvailable()) { + if(!systemTray()->isSystemTrayAvailable()) { qWarning() << Q_FUNC_INFO << "was called with no SystemTray available!"; return; } - clearFocus(); hide(); - systemTrayIcon()->show(); + systemTray()->setIconVisible(); } void MainWin::toggleMinimizedToTray() { @@ -783,6 +778,7 @@ void MainWin::toggleMinimizedToTray() { // restore setWindowState((windowState() & ~Qt::WindowMinimized) | Qt::WindowActive); show(); + activateWindow(); raise(); } else { setWindowState((windowState() & ~Qt::WindowActive) | Qt::WindowMinimized);