summary refs log tree commit diff
path: root/src/MainWindow.cc
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-05-21 16:36:06 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-05-21 16:36:06 +0300
commita45582585d706f379b69e96759a6ae4b915e4598 (patch)
treeded3378a7a91ef929523cc44bf17581d8d8a97a8 /src/MainWindow.cc
parentSnappy sidebar (diff)
downloadnheko-a45582585d706f379b69e96759a6ae4b915e4598.tar.xz
Minimize to tray
Diffstat (limited to 'src/MainWindow.cc')
-rw-r--r--src/MainWindow.cc34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/MainWindow.cc b/src/MainWindow.cc

index 9a3a44ef..4f813c07 100644 --- a/src/MainWindow.cc +++ b/src/MainWindow.cc
@@ -20,6 +20,7 @@ #include <QLayout> #include <QNetworkReply> #include <QSettings> +#include <QSystemTrayIcon> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) @@ -29,16 +30,18 @@ MainWindow::MainWindow(QWidget *parent) QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); setSizePolicy(sizePolicy); setWindowTitle("nheko"); + setObjectName("MainWindow"); + setStyleSheet("QWidget#MainWindow {background-color: #f9f9f9}"); resize(1066, 600); // 16:9 ratio setMinimumSize(QSize(950, 600)); - setStyleSheet("background-color: #f9f9f9"); QFont font("Open Sans", 12); font.setStyleStrategy(QFont::PreferAntialias); setFont(font); client_ = QSharedPointer<MatrixClient>(new MatrixClient("matrix.org")); + trayIcon_ = new TrayIcon(":/logos/nheko-32.png", this); welcome_page_ = new WelcomePage(this); login_page_ = new LoginPage(client_, this); @@ -62,6 +65,12 @@ MainWindow::MainWindow(QWidget *parent) connect(chat_page_, SIGNAL(close()), this, SLOT(showWelcomePage())); connect(chat_page_, SIGNAL(changeWindowTitle(QString)), this, SLOT(setWindowTitle(QString))); + connect(chat_page_, SIGNAL(unreadMessages(int)), trayIcon_, SLOT(setUnreadCount(int))); + + connect(trayIcon_, + SIGNAL(activated(QSystemTrayIcon::ActivationReason)), + this, + SLOT(iconActivated(QSystemTrayIcon::ActivationReason))); connect(client_.data(), SIGNAL(initialSyncCompleted(const SyncResponse &)), @@ -159,6 +168,29 @@ void MainWindow::showRegisterPage() sliding_stack_->slideInIndex(index, SlidingStackWidget::AnimationDirection::RIGHT_TO_LEFT); } +void MainWindow::closeEvent(QCloseEvent *event) +{ + if (isVisible()) { + event->ignore(); + hide(); + } +} + +void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason reason) +{ + switch (reason) { + case QSystemTrayIcon::Trigger: + if (!isVisible()) { + show(); + } else { + hide(); + } + break; + default: + break; + } +} + MainWindow::~MainWindow() { }