65 lines
1.6 KiB
C++
65 lines
1.6 KiB
C++
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef NOTIFICATIONHANDLER_H
|
|
#define NOTIFICATIONHANDLER_H
|
|
|
|
#include <QObject>
|
|
#include "protocols/vpnprotocol.h"
|
|
|
|
class QMenu;
|
|
|
|
class NotificationHandler : public QObject {
|
|
Q_OBJECT
|
|
Q_DISABLE_COPY_MOVE(NotificationHandler)
|
|
|
|
public:
|
|
enum Message {
|
|
VpnState,
|
|
UnsecuredNetwork
|
|
};
|
|
|
|
static NotificationHandler* create(QObject* parent);
|
|
|
|
static NotificationHandler* instance();
|
|
|
|
virtual ~NotificationHandler();
|
|
|
|
void unsecuredNetworkNotification(const QString& networkName);
|
|
|
|
void messageClickHandle();
|
|
|
|
public slots:
|
|
virtual void setConnectionState(Vpn::ConnectionState state);
|
|
virtual void onTranslationsUpdated();
|
|
|
|
signals:
|
|
void notificationShown(const QString& title, const QString& message);
|
|
void notificationClicked(Message message);
|
|
|
|
void raiseRequested();
|
|
void connectRequested();
|
|
void disconnectRequested();
|
|
|
|
protected:
|
|
explicit NotificationHandler(QObject* parent);
|
|
|
|
virtual void notify(Message type, const QString& title,
|
|
const QString& message, int timerMsec) = 0;
|
|
|
|
private:
|
|
virtual void notifyInternal(Message type, const QString& title,
|
|
const QString& message, int timerMsec);
|
|
|
|
protected:
|
|
Message m_lastMessage = VpnState;
|
|
|
|
private:
|
|
|
|
// We want to show a 'disconnected' notification only if we were actually
|
|
// connected.
|
|
bool m_connected = false;
|
|
};
|
|
|
|
#endif // NOTIFICATIONHANDLER_H
|