From: Manuel Nickschas Date: Sun, 17 Jan 2010 19:48:12 +0000 (+0100) Subject: Allow compilation without QSystemTrayIcon X-Git-Tag: 0.6-beta1~80 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=d76bb125c8dd275095409edd3426700a98d89f3a Allow compilation without QSystemTrayIcon On some platforms (such as N900), Qt doesn't support a tray icon. This adds tons of #defines to allow compilation in that case. --- diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 2a5b379d..d0a623f6 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -194,7 +194,9 @@ void MainWin::init() { #ifndef HAVE_KDE QtUi::registerNotificationBackend(new TaskbarNotificationBackend(this)); +# ifndef QT_NO_SYSTEMTRAYICON QtUi::registerNotificationBackend(new SystrayNotificationBackend(this)); +# endif # ifdef HAVE_PHONON QtUi::registerNotificationBackend(new PhononNotificationBackend(this)); # endif @@ -277,9 +279,13 @@ void MainWin::restoreStateFromSettings(UiSettings &s) { move(_normalPos); #endif - if(s.value("MainWinHidden").toBool()) +#ifndef QT_NO_SYSTEMTRAYICON + if(s.value("MainWinHidden").toBool()) { hideToTray(); - else if(s.value("MainWinMinimized").toBool()) + return; + } +#endif + if(s.value("MainWinMinimized").toBool()) showMinimized(); else if(maximized) showMaximized(); @@ -675,7 +681,9 @@ void MainWin::saveStatusBarStatus(bool enabled) { } void MainWin::setupSystray() { +#ifndef QT_NO_SYSTEMTRAYICON _systemTray = new SystemTray(this); +#endif } void MainWin::setupToolBars() { @@ -739,7 +747,9 @@ void MainWin::setConnectedState() { _coreConnectionStatusWidget->setVisible(!Client::internalCore()); updateIcon(); +#ifndef QT_NO_SYSTEMTRAYICON systemTray()->setState(SystemTray::Active); +#endif if(Client::networkIds().isEmpty()) { IrcConnectionWizard *wizard = new IrcConnectionWizard(this, Qt::Sheet); @@ -805,7 +815,9 @@ void MainWin::setDisconnectedState() { if(_msgProcessorStatusWidget) _msgProcessorStatusWidget->setProgress(0, 0); updateIcon(); +#ifndef QT_NO_SYSTEMTRAYICON systemTray()->setState(SystemTray::Inactive); +#endif } void MainWin::userAuthenticationRequired(CoreAccount *account, bool *valid, const QString &errorMessage) { @@ -999,6 +1011,7 @@ void MainWin::resizeEvent(QResizeEvent *event) { } void MainWin::closeEvent(QCloseEvent *event) { +#ifndef QT_NO_SYSTEMTRAYICON QtUiSettings s; QtUiApplication* app = qobject_cast qApp; Q_ASSERT(app); @@ -1009,6 +1022,10 @@ void MainWin::closeEvent(QCloseEvent *event) { event->accept(); quit(); } +#else + event->accept(); + quit(); +#endif } void MainWin::changeEvent(QEvent *event) { @@ -1020,6 +1037,8 @@ void MainWin::changeEvent(QEvent *event) { QMainWindow::changeEvent(event); } +#ifndef QT_NO_SYSTEMTRAYICON + void MainWin::hideToTray() { if(!systemTray()->isSystemTrayAvailable()) { qWarning() << Q_FUNC_INFO << "was called with no SystemTray available!"; @@ -1052,6 +1071,8 @@ void MainWin::toggleMinimizedToTray() { #endif } +#endif /* QT_NO_SYSTEMTRAYICON */ + void MainWin::forceActivated() { #ifdef HAVE_KDE show(); diff --git a/src/qtui/mainwin.h b/src/qtui/mainwin.h index bc4ba1ee..4f3f750d 100644 --- a/src/qtui/mainwin.h +++ b/src/qtui/mainwin.h @@ -31,8 +31,6 @@ # include #endif -#include - #include "qtui.h" #include "titlesetter.h" #include "uisettings.h" @@ -75,9 +73,11 @@ class MainWin void addBufferView(ClientBufferViewConfig *config); BufferView *allBuffersView() const; - BufferWidget *bufferWidget() const { return _bufferWidget; } + inline BufferWidget *bufferWidget() const { return _bufferWidget; } - inline SystemTray *systemTray() const; +#ifndef QT_NO_SYSTEMTRAYICON + inline SystemTray *systemTray() const { return _systemTray; } +#endif bool event(QEvent *event); @@ -90,7 +90,9 @@ class MainWin public slots: void showStatusBarMessage(const QString &message); +#ifndef QT_NO_SYSTEMTRAYICON void toggleMinimizedToTray(); +#endif //! Bring window to front and focus it void forceActivated(); @@ -189,9 +191,10 @@ class MainWin void updateIcon(); void enableMenus(); +#ifndef QT_NO_SYSTEMTRAYICON void hideToTray(); - SystemTray *_systemTray; +#endif QList _bufferViews; BufferWidget *_bufferWidget; @@ -218,8 +221,4 @@ class MainWin friend class QtUi; }; -SystemTray *MainWin::systemTray() const { - return _systemTray; -} - #endif diff --git a/src/qtui/qtui.cpp b/src/qtui/qtui.cpp index 0a2de598..54957588 100644 --- a/src/qtui/qtui.cpp +++ b/src/qtui/qtui.cpp @@ -28,6 +28,7 @@ #include "qtuimessageprocessor.h" #include "qtuisettings.h" #include "qtuistyle.h" +#include "systemtray.h" #include "toolbaractionprovider.h" #include "types.h" #include "util.h" @@ -88,6 +89,14 @@ void QtUi::disconnectedFromCore() { _mainWin->disconnectedFromCore(); } +bool QtUi::haveSystemTray() { +#ifdef QT_NO_SYSTEMTRAYICON + return false; +#else + return mainWindow()->systemTray()->isSystemTrayAvailable(); +#endif +} + void QtUi::registerNotificationBackend(AbstractNotificationBackend *backend) { if(!_notificationBackends.contains(backend)) { _notificationBackends.append(backend); diff --git a/src/qtui/qtui.h b/src/qtui/qtui.h index 8b223af0..33a84620 100644 --- a/src/qtui/qtui.h +++ b/src/qtui/qtui.h @@ -49,6 +49,8 @@ public: inline static QtUiStyle *style(); inline static MainWin *mainWindow(); + static bool haveSystemTray(); + /* Notifications */ static void registerNotificationBackend(AbstractNotificationBackend *); diff --git a/src/qtui/settingspages/appearancesettingspage.cpp b/src/qtui/settingspages/appearancesettingspage.cpp index 7132f683..91369f9c 100644 --- a/src/qtui/settingspages/appearancesettingspage.cpp +++ b/src/qtui/settingspages/appearancesettingspage.cpp @@ -39,6 +39,9 @@ AppearanceSettingsPage::AppearanceSettingsPage(QWidget *parent) #ifdef Q_WS_MAC ui.minimizeOnClose->hide(); #endif +#ifdef QT_NO_SYSTEMTRAYICON + ui.useSystemTrayIcon->hide(); +#endif initAutoWidgets(); initStyleComboBox(); diff --git a/src/qtui/systemtray.cpp b/src/qtui/systemtray.cpp index 225cd864..8c346550 100644 --- a/src/qtui/systemtray.cpp +++ b/src/qtui/systemtray.cpp @@ -18,6 +18,8 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#ifndef QT_NO_SYSTEMTRAYICON + #include #include "systemtray.h" @@ -193,3 +195,5 @@ void SystemTray::on_activated(QSystemTrayIcon::ActivationReason reason) { } } + +#endif /* QT_NO_SYSTEMTRAYICON */ diff --git a/src/qtui/systemtray.h b/src/qtui/systemtray.h index d98bf46e..cdb66d7d 100644 --- a/src/qtui/systemtray.h +++ b/src/qtui/systemtray.h @@ -21,6 +21,8 @@ #ifndef SYSTEMTRAY_H_ #define SYSTEMTRAY_H_ +#ifndef QT_NO_SYSTEMTRAYICON + #ifdef HAVE_KDE # include #else @@ -95,4 +97,6 @@ bool SystemTray::isSystemTrayAvailable() const { return QSystemTrayIcon::isSyste bool SystemTray::isAlerted() const { return _alert; } void SystemTray::setInhibitActivation() { _inhibitActivation = true; } +#endif /* QT_NO_SYSTEMTRAYICON */ + #endif diff --git a/src/qtui/systraynotificationbackend.cpp b/src/qtui/systraynotificationbackend.cpp index b6652962..1c97d4f5 100644 --- a/src/qtui/systraynotificationbackend.cpp +++ b/src/qtui/systraynotificationbackend.cpp @@ -18,6 +18,8 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#ifndef QT_NO_SYSTEMTRAYICON + #include "systraynotificationbackend.h" #include @@ -163,3 +165,5 @@ void SystrayNotificationBackend::ConfigWidget::save() { s.setValue("Systray/ShowBubble", _showBubbleBox->isChecked()); load(); } + +#endif /* QT_NO_SYSTEMTRAYICON */ diff --git a/src/qtui/systraynotificationbackend.h b/src/qtui/systraynotificationbackend.h index 21346173..7fdf4e8e 100644 --- a/src/qtui/systraynotificationbackend.h +++ b/src/qtui/systraynotificationbackend.h @@ -21,6 +21,8 @@ #ifndef SYSTRAYNOTIFICATIONBACKEND_H_ #define SYSTRAYNOTIFICATIONBACKEND_H_ +#ifndef QT_NO_SYSTEMTRAYICON + #include #include "abstractnotificationbackend.h" @@ -74,4 +76,6 @@ private: bool _showBubble, _animate; }; +#endif /* QT_NO_SYSTEMTRAYICON */ + #endif