summary refs log tree commit diff
path: root/src/MainWindow.cc
diff options
context:
space:
mode:
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() { }