OSDN Git Service

6f842b53c5ea532fbf1e76bdf19f7bab72c3b848
[csp-qt/common_source_project-fm7.git] / source / src / qt / gui / menu_metaclass.h
1 /*
2  * Menu_MetaClass : Defines
3  * (C) 2015 by K.Ohta <whatisthis.sowhat _at_ gmail.com>
4  * Please use this file as templete.
5  */
6
7
8 #ifndef _CSP_QT_MENU_METACLASSES_H
9 #define _CSP_QT_MENU_METACLASSES_H
10
11 #include <QString>
12 #include <QStringList>
13 #include <QMenu>
14 #include <QIcon>
15 #include <QVariant>
16 #include <memory>
17
18 #include "common.h"
19 #include "config.h"
20 #include "menu_flags.h"
21
22 class EMU_TEMPLATE;
23
24 QT_BEGIN_NAMESPACE
25 class QMenuBar;
26 class QAction;
27 class QActionGroup;
28 class USING_FLAGS;
29 class Action_Control;
30
31 namespace CSP_Ui_Menu {
32         struct DriveIndexPair {
33                 int drive;
34                 int index;
35         };
36 }
37
38 Q_DECLARE_METATYPE(CSP_Ui_Menu::DriveIndexPair)
39
40 class DLL_PREFIX Menu_MetaClass : public QMenu {
41         Q_OBJECT
42 private:
43
44 protected:
45         std::shared_ptr<USING_FLAGS> using_flags;
46         QWidget *p_wid;
47         QMenuBar *menu_root;
48         EMU_TEMPLATE *p_emu;
49         config_t *p_config;
50         
51         QMenu *menu_inner_media;
52         QMenu *menu_history;
53         QMenu *menu_write_protect;
54
55         QIcon icon_insert;
56         QIcon icon_eject;
57         QIcon icon_write_protected;
58         QIcon icon_write_enabled;
59         
60         class Action_Control *action_insert;
61         class Action_Control *action_eject;
62         class Action_Control *action_recent;
63         class Action_Control *action_inner_media;
64         class Action_Control *action_write_protect_on;
65         class Action_Control *action_write_protect_off;
66         class Action_Control *action_select_media_list[128];
67         class Action_Control *action_recent_list[MAX_HISTORY];
68
69         QActionGroup *action_group_recent;
70         QActionGroup *action_group_inner_media;
71         QActionGroup *action_group_protect;
72         
73         QString object_desc;
74         
75         int media_drive;
76         int base_drive;
77         
78         bool use_write_protect;
79         bool use_d88_menus;
80         
81         bool write_protect;
82         
83         void create_pulldown_menu_sub(void);
84         void retranslate_pulldown_menu_sub(void);
85   
86         QString window_title;
87         QString initial_dir;
88         QStringList ext_filter;
89         QStringList history;
90         QStringList inner_media_list;
91 public:
92         Menu_MetaClass(QMenuBar *root_entry, QString desc, std::shared_ptr<USING_FLAGS> p, QWidget *parent = 0, int drv = 0, int base_drv = 1);
93         ~Menu_MetaClass();
94
95         virtual void create_pulldown_menu_device_sub(void);
96         virtual void connect_menu_device_sub(void);
97         virtual void retranslate_pulldown_menu_device_sub(void);
98
99         void create_pulldown_menu(void);
100         void retranslateUi(void);
101         //void setTitle(QString);
102         void setEmu(EMU_TEMPLATE *p);
103
104         bool getWriteProtect(void) {
105                 return write_protect;
106         }
107         //QAction *menuAction(void);
108 public slots:
109         void do_set_write_protect(bool f);
110         void do_open_media(int drv, QString name);
111         void do_insert_media(void);
112         void do_eject_media(void);
113         void do_open_inner_media(void);
114         void do_open_recent_media(void);
115         void do_write_protect_media(void);
116         void do_write_unprotect_media(void);
117         void do_add_media_extension(QString ext, QString description);
118         void do_set_initialize_directory(const char *dir);
119         void do_open_dialog(void);
120         void do_clear_inner_media(void);
121         void do_select_inner_media(int num);
122         void do_update_inner_media(QStringList lst, int num);
123         void do_update_inner_media_bubble(QStringList lst, int num);
124         void do_update_histories(QStringList lst);
125         void do_set_window_title(QString s);
126 signals:
127         int sig_open_media(int, QString);
128         int sig_eject_media(int);
129         int sig_write_protect_media(int, bool);
130         int sig_set_recent_media(int, int);
131         int sig_set_inner_slot(int, int);
132         int sig_insert_media(int);
133         int sig_update_inner_fd(int drv, QStringList base, class Action_Control **action_select_media_list,
134                                                         QStringList lst, int num, bool use_d88_menus);
135         int sig_update_inner_bubble(int drv, QStringList base, class Action_Control **action_select_media_list,
136                                                                 QStringList lst, int num, bool use_d88_menus);
137         int sig_emu_update_config();
138
139 };
140 QT_END_NAMESPACE
141
142 #endif