diff --git a/saorisystemtray.cpp b/saorisystemtray.cpp index 91d170f..7e92335 100644 --- a/saorisystemtray.cpp +++ b/saorisystemtray.cpp @@ -24,6 +24,7 @@ ***/ +#include "saoriapplication.h" #include "saorisystemtray.h" #include @@ -36,6 +37,15 @@ m_action_quit = new QAction(tr("Quit"),this); m_action_show = new QAction(tr("Show MainWindow"),this); + setIcon(m_icon); + + connect(m_action_quit,&QAction::triggered,this,[](){ + SaoriApplication::saori()->quit(); + }); + connect(m_action_show,&QAction::triggered,this,&SaoriSystemTray::showMainwindow); m_menu->addAction(m_action_show); m_menu->addAction(m_action_quit); + + setContextMenu(m_menu); + show(); } diff --git a/saorisystemtray.h b/saorisystemtray.h index cf5c850..a2aa178 100644 --- a/saorisystemtray.h +++ b/saorisystemtray.h @@ -35,6 +35,7 @@ class SaoriSystemTray : public QSystemTrayIcon { + Q_OBJECT public: SaoriSystemTray(QWidget *parent = 0); @@ -43,6 +44,9 @@ QMenu *m_menu; QAction *m_action_quit; QAction *m_action_show; + +signals: + void showMainwindow(); }; #endif // SAORISYSTEMTRAY_H diff --git a/saoriwindow.cpp b/saoriwindow.cpp index e3b39f9..306b32a 100644 --- a/saoriwindow.cpp +++ b/saoriwindow.cpp @@ -40,10 +40,13 @@ ui(new Ui::SaoriWindow) { ui->setupUi(this); + connect(ui->action_Quit,&QAction::triggered,SaoriApplication::saori(),&SaoriApplication::quit); m_configDialog = new SaoriConfigureDialog(); m_configDialog->setModal(true); ui->mdiArea->setActivationOrder(QMdiArea::ActivationHistoryOrder); connect(m_configDialog,&SaoriConfigureDialog::accountsUpdated,this,&SaoriWindow::updateTimelineList); + m_tray = new SaoriSystemTray(); + connect(m_tray,&SaoriSystemTray::showMainwindow,this,&SaoriWindow::show); updateTimelineList(); openPinedView(); } @@ -182,6 +185,11 @@ void SaoriWindow::closeEvent(QCloseEvent *event) { + if (SaoriApplication::saori()->setting()->value(SAORI_SETTING_CLOSEBEHIDE,SAORI_SETTING_CLOSEBEHIDE_DEFAULT).toBool()) { + hide(); + event->ignore(); + return; + } QMainWindow::closeEvent(event); } diff --git a/saoriwindow.h b/saoriwindow.h index 17dc78b..3073889 100644 --- a/saoriwindow.h +++ b/saoriwindow.h @@ -32,6 +32,7 @@ #include #include #include "saoriconfiguredialog.h" +#include "saorisystemtray.h" namespace Ui { class SaoriWindow; @@ -59,6 +60,7 @@ protected: SaoriConfigureDialog *m_configDialog; + SaoriSystemTray *m_tray; private slots: void on_timelineTree_itemDoubleClicked(QTreeWidgetItem *item, int);