1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

Merge branch 'pr492' into HEAD

This commit is contained in:
Tux3 / Mlkj / !Lev.uXFMLA 2014-10-20 20:21:41 +02:00
commit 590ca8dc5a
No known key found for this signature in database
GPG Key ID: 7E086DD661263264
3 changed files with 74 additions and 25 deletions

View File

@ -18,7 +18,6 @@
#include "misc/settings.h" #include "misc/settings.h"
#include <QApplication> #include <QApplication>
#include <QFontDatabase> #include <QFontDatabase>
#include <QSystemTrayIcon>
#include <QDebug> #include <QDebug>
int main(int argc, char *argv[]) int main(int argc, char *argv[])
@ -38,24 +37,6 @@ int main(int argc, char *argv[])
QFontDatabase::addApplicationFont("://DejaVuSans.ttf"); QFontDatabase::addApplicationFont("://DejaVuSans.ttf");
Widget* w = Widget::getInstance(); Widget* w = Widget::getInstance();
if (QSystemTrayIcon::isSystemTrayAvailable() == false)
{
qWarning() << "No system tray detected!";
w->show();
}
else
{
QSystemTrayIcon *icon = new QSystemTrayIcon(w);
QObject::connect(icon,
SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
w,
SLOT(onIconClick()));
icon->setIcon(w->windowIcon());
icon->show();
if(Settings::getInstance().getAutostartInTray() == false)
w->show();
}
int errorcode = a.exec(); int errorcode = a.exec();

View File

@ -61,7 +61,52 @@ Widget::Widget(QWidget *parent)
void Widget::init() void Widget::init()
{ {
ui->setupUi(this); ui->setupUi(this);
if (QSystemTrayIcon::isSystemTrayAvailable() == true)
{
icon = new QSystemTrayIcon(this);
icon->setIcon(this->windowIcon());
trayMenu = new QMenu;
trayMenu->setStyleSheet("QMenu {background: white; color: black; border: 1px solid black;}"
"QMenu::item:selected { background: #414141}");
statusOnline = new QAction(tr("online"), this);
statusOnline->setIcon(QIcon(":ui/statusButton/dot_online.png"));
connect(statusOnline, SIGNAL(triggered()), this, SLOT(setStatusOnline()));
statusAway = new QAction(tr("away"), this);
statusAway->setIcon(QIcon(":ui/statusButton/dot_idle.png"));
connect(statusAway, SIGNAL(triggered()), this, SLOT(setStatusAway()));
statusBusy = new QAction(tr("busy"), this);
connect(statusBusy, SIGNAL(triggered()), this, SLOT(setStatusBusy()));
statusBusy->setIcon(QIcon(":ui/statusButton/dot_busy.png"));
actionQuit = new QAction(tr("&Quit"), this);
connect(actionQuit, SIGNAL(triggered()), qApp, SLOT(quit()));
trayMenu->addAction(new QAction(tr("Change status to:"), this));
trayMenu->addAction(statusOnline);
trayMenu->addAction(statusAway);
trayMenu->addAction(statusBusy);
trayMenu->addSeparator();
trayMenu->addAction(actionQuit);
icon->setContextMenu(trayMenu);
connect(icon,
SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
this,
SLOT(onIconClick(QSystemTrayIcon::ActivationReason)));
icon->show();
if(Settings::getInstance().getAutostartInTray() == false)
this->show();
}
else
{
qWarning() << "No system tray detected!";
this->show();
}
ui->statusbar->hide(); ui->statusbar->hide();
ui->menubar->hide(); ui->menubar->hide();
@ -232,12 +277,19 @@ Widget::~Widget()
for (Group* g : GroupList::groupList) for (Group* g : GroupList::groupList)
delete g; delete g;
GroupList::groupList.clear(); GroupList::groupList.clear();
delete statusAway;
delete statusBusy;
delete statusOnline;
delete actionQuit;
delete trayMenu;
delete icon;
delete ui; delete ui;
instance = nullptr; instance = nullptr;
} }
Widget* Widget::getInstance() Widget* Widget::getInstance()
{ {
if (!instance) if (!instance)
{ {
instance = new Widget(); instance = new Widget();
@ -473,12 +525,21 @@ void Widget::onTransferClicked()
activeChatroomWidget = nullptr; activeChatroomWidget = nullptr;
} }
void Widget::onIconClick() void Widget::onIconClick(QSystemTrayIcon::ActivationReason reason)
{ {
if(this->isHidden() == true) switch (reason) {
this->show(); case QSystemTrayIcon::Trigger:
else if(this->isHidden() == true)
this->hide(); this->show();
else
this->hide();
case QSystemTrayIcon::DoubleClick:
break;
case QSystemTrayIcon::MiddleClick:
break;
default:
;
}
} }
void Widget::onSettingsClicked() void Widget::onSettingsClicked()

View File

@ -18,6 +18,7 @@
#define WIDGET_H #define WIDGET_H
#include <QMainWindow> #include <QMainWindow>
#include <QSystemTrayIcon>
#include "form/addfriendform.h" #include "form/addfriendform.h"
#include "form/settingswidget.h" #include "form/settingswidget.h"
#include "form/settings/identityform.h" #include "form/settings/identityform.h"
@ -116,7 +117,7 @@ private slots:
void onMessageSendResult(int friendId, const QString& message, int messageId); void onMessageSendResult(int friendId, const QString& message, int messageId);
void onGroupSendResult(int groupId, const QString& message, int result); void onGroupSendResult(int groupId, const QString& message, int result);
void playRingtone(); void playRingtone();
void onIconClick(); void onIconClick(QSystemTrayIcon::ActivationReason);
void onUserAway(); void onUserAway();
private: private:
@ -128,6 +129,12 @@ private:
void removeGroup(Group* g); void removeGroup(Group* g);
QString askProfiles(); QString askProfiles();
QString detectProfile(); QString detectProfile();
QSystemTrayIcon *icon;
QMenu *trayMenu;
QAction *statusOnline,
*statusAway,
*statusBusy,
*actionQuit;
Ui::MainWindow *ui; Ui::MainWindow *ui;
QSplitter *centralLayout; QSplitter *centralLayout;