Skip to content

Commit

Permalink
maked first build
Browse files Browse the repository at this point in the history
  • Loading branch information
leetthewire committed Apr 2, 2022
1 parent a261ab4 commit e9f44ff
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 38 deletions.
101 changes: 87 additions & 14 deletions client/platforms/linux/linuxsystemtraynotificationhandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,27 +22,27 @@ Logger logger(LOG_LINUX, "LinuxSystemTrayNotificationHandler");

//static
bool LinuxSystemTrayNotificationHandler::requiredCustomImpl() {
if (!QDBusConnection::sessionBus().isConnected()) {
return false;
}

QDBusConnectionInterface* interface =
QDBusConnection::sessionBus().interface();
if (!interface) {
return false;
}

// This custom systemTrayHandler implementation is required only on Unity.
QStringList registeredServices = interface->registeredServiceNames().value();
return registeredServices.contains("com.canonical.Unity");
//if (!QDBusConnection::sessionBus().isConnected()) {
// return false;
//}

//QDBusConnectionInterface* interface =
// QDBusConnection::sessionBus().interface();
//if (!interface) {
// return false;
//}

//// This custom systemTrayHandler implementation is required only on Unity.
//QStringList registeredServices = interface->registeredServiceNames().value();
//return registeredServices.contains("com.canonical.Unity");
}

LinuxSystemTrayNotificationHandler::LinuxSystemTrayNotificationHandler(
QObject* parent)
: SystemTrayNotificationHandler(parent) {

m_systemTrayIcon.show();
connect(&m_systemTrayIcon, &QSystemTrayIcon::activated, this);
connect(&m_systemTrayIcon, &QSystemTrayIcon::activated, this, &LinuxSystemTrayNotificationHandler::onTrayActivated);


m_menu.addAction(QIcon(":/images/tray/application.png"), tr("Show") + " " + APPLICATION_NAME, this, [this](){
Expand All @@ -66,6 +66,79 @@ LinuxSystemTrayNotificationHandler::LinuxSystemTrayNotificationHandler(
setTrayState(VpnProtocol::Disconnected);
}

void LinuxSystemTrayNotificationHandler::setTrayState(VpnProtocol::VpnConnectionState state)
{
qDebug() << "SystemTrayNotificationHandler::setTrayState" << state;
QString resourcesPath = ":/images/tray/%1";

switch (state) {
case VpnProtocol::Disconnected:
setTrayIcon(QString(resourcesPath).arg(DisconnectedTrayIconName));
m_trayActionConnect->setEnabled(true);
m_trayActionDisconnect->setEnabled(false);
break;
case VpnProtocol::Preparing:
setTrayIcon(QString(resourcesPath).arg(DisconnectedTrayIconName));
m_trayActionConnect->setEnabled(false);
m_trayActionDisconnect->setEnabled(true);
break;
case VpnProtocol::Connecting:
setTrayIcon(QString(resourcesPath).arg(DisconnectedTrayIconName));
m_trayActionConnect->setEnabled(false);
m_trayActionDisconnect->setEnabled(true);
break;
case VpnProtocol::Connected:
setTrayIcon(QString(resourcesPath).arg(ConnectedTrayIconName));
m_trayActionConnect->setEnabled(false);
m_trayActionDisconnect->setEnabled(true);
break;
case VpnProtocol::Disconnecting:
setTrayIcon(QString(resourcesPath).arg(DisconnectedTrayIconName));
m_trayActionConnect->setEnabled(false);
m_trayActionDisconnect->setEnabled(true);
break;
case VpnProtocol::Reconnecting:
setTrayIcon(QString(resourcesPath).arg(DisconnectedTrayIconName));
m_trayActionConnect->setEnabled(false);
m_trayActionDisconnect->setEnabled(true);
break;
case VpnProtocol::Error:
setTrayIcon(QString(resourcesPath).arg(ErrorTrayIconName));
m_trayActionConnect->setEnabled(true);
m_trayActionDisconnect->setEnabled(false);
break;
case VpnProtocol::Unknown:
default:
m_trayActionConnect->setEnabled(false);
m_trayActionDisconnect->setEnabled(true);
setTrayIcon(QString(resourcesPath).arg(DisconnectedTrayIconName));
}

//#ifdef Q_OS_MAC
// // Get theme from current user (note, this app can be launched as root application and in this case this theme can be different from theme of real current user )
// bool darkTaskBar = MacOSFunctions::instance().isMenuBarUseDarkTheme();
// darkTaskBar = forceUseBrightIcons ? true : darkTaskBar;
// resourcesPath = ":/images_mac/tray_icon/%1";
// useIconName = useIconName.replace(".png", darkTaskBar ? "@2x.png" : " dark@2x.png");
//#endif
}

void LinuxSystemTrayNotificationHandler::setTrayIcon(const QString &iconPath)
{
QIcon trayIconMask(QPixmap(iconPath).scaled(128,128));
trayIconMask.setIsMask(true);
m_systemTrayIcon.setIcon(trayIconMask);
}

void LinuxSystemTrayNotificationHandler::onTrayActivated(QSystemTrayIcon::ActivationReason reason)
{
#ifndef Q_OS_MAC
if(reason == QSystemTrayIcon::DoubleClick || reason == QSystemTrayIcon::Trigger) {
emit raiseRequested();
}
#endif
}

LinuxSystemTrayNotificationHandler::~LinuxSystemTrayNotificationHandler() {
MVPN_COUNT_DTOR(LinuxSystemTrayNotificationHandler);
}
Expand Down
3 changes: 2 additions & 1 deletion client/platforms/linux/linuxsystemtraynotificationhandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ class LinuxSystemTrayNotificationHandler final
void notify(Message type, const QString& title, const QString& message,
int timerMsec) override;
void setTrayState(VpnProtocol::VpnConnectionState state);

void setTrayIcon(const QString &iconPath);
void onTrayActivated(QSystemTrayIcon::ActivationReason reason);
private slots:
void actionInvoked(uint actionId, QString action);

Expand Down
23 changes: 0 additions & 23 deletions client/ui/systemtray_notificationhandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,29 +46,6 @@ SystemTrayNotificationHandler::SystemTrayNotificationHandler(QObject* parent) :

m_systemTrayIcon.setContextMenu(&m_menu);
setTrayState(VpnProtocol::Disconnected);


// m_preferencesAction = m_menu.addAction("", vpn, &MozillaVPN::requestSettings);

// m_menu.addSeparator();

// m_quitAction = m_menu.addAction("", vpn->controller(), &Controller::quit);
// m_systemTrayIcon.setContextMenu(&m_menu);

// updateIcon(vpn->statusIcon()->iconString());

// connect(QmlEngineHolder::instance()->window(), &QWindow::visibleChanged, this,
// &SystemTrayNotificationHandler::updateContextMenu);

// connect(&m_systemTrayIcon, &QSystemTrayIcon::activated, this,
// &SystemTrayNotificationHandler::maybeActivated);

// connect(&m_systemTrayIcon, &QSystemTrayIcon::messageClicked, this,
// &SystemTrayNotificationHandler::messageClickHandle);

// retranslate();

// m_systemTrayIcon.show();
}

SystemTrayNotificationHandler::~SystemTrayNotificationHandler() {
Expand Down

0 comments on commit e9f44ff

Please sign in to comment.