54 lines
1.4 KiB
C++
54 lines
1.4 KiB
C++
#ifndef DEVICE_MENU_H
|
|
#define DEVICE_MENU_H
|
|
|
|
#include <QMenu>
|
|
#include "config.h"
|
|
#include <mutex>
|
|
|
|
Q_DECLARE_METATYPE(OPTSCHEME)
|
|
|
|
class device_menu : public QMenu
|
|
{
|
|
Q_OBJECT
|
|
typedef struct _pop_menu
|
|
{
|
|
QMenu* menu;
|
|
std::vector<QAction*> actions;
|
|
|
|
bool operator==(const QString& menu_title)
|
|
{
|
|
return menu->title() == menu_title;
|
|
}
|
|
}POPMENU;
|
|
std::vector<POPMENU> menus_;
|
|
QAction* cur_action_;
|
|
QAction* none_action_;
|
|
QActionGroup* group_action_;
|
|
std::mutex mutex_;
|
|
|
|
QMenu* find_device_menu(const QString& dev_name);
|
|
QAction* find_device_config(const QString& dev_name, const QString& cfg_name);
|
|
|
|
public:
|
|
device_menu(QWidget* parent = nullptr);
|
|
device_menu(const QString& title, QWidget* parent = nullptr);
|
|
|
|
void deviceMenuUpdate(const std::vector<DEVCFG>* dev_cfgs, std::string curDeviceName);
|
|
|
|
void connectedDevice(const QString& device);
|
|
|
|
void disconnectedDevice(const QString& device);
|
|
|
|
void setOptionChecked(const QString& device, const QString& opt, bool checked);
|
|
|
|
void get_online_devices(QList<QString>& dev_names);
|
|
|
|
signals:
|
|
void scanOptionsChanged(const QString& device, const QString& opt, bool checked_now);
|
|
|
|
private slots:
|
|
void on_act_triggered(QAction* act);
|
|
};
|
|
|
|
#endif // DEVICE_MENU_H
|