54 lines
1.3 KiB
C
54 lines
1.3 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 update(const std::vector<DEVCFG>* dev_cfgs);
|
|||
|
|
|||
|
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
|