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:
commit
590ca8dc5a
19
src/main.cpp
19
src/main.cpp
|
@ -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();
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user