OSDN Git Service

[UI][Qt][EMU] Available to build.Some features still be wrong :-(
[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 <QList>
12 #include <QString>
13 #include <QStringList>
14 #include <QMenu>
15 #include <QIcon>
16 #include <QVariant>
17
18 #include <memory>
19
20 #include "common.h"
21 #include "config.h"
22 #include "menu_flags.h"
23
24 class EMU_TEMPLATE;
25
26 QT_BEGIN_NAMESPACE
27 class QThread;
28 class QMenuBar;
29 class QAction;
30 class QActionGroup;
31 class QFileDialog;
32 class CSP_DiskDialog;
33
34 class USING_FLAGS;
35 class Action_Control;
36
37 namespace CSP_Ui_Menu {
38         struct DriveIndexPair {
39                 int drive;
40                 int index;
41         };
42 }
43
44 Q_DECLARE_METATYPE(CSP_Ui_Menu::DriveIndexPair)
45
46 class DLL_PREFIX Menu_MetaClass : public QMenu {
47         Q_OBJECT
48 private:
49
50 protected:
51         std::shared_ptr<USING_FLAGS> using_flags;
52         QWidget *p_wid;
53         QMenuBar *menu_root;
54         EMU_TEMPLATE *p_emu;
55         config_t *p_config;
56         
57         QMenu *menu_inner_media;
58         QMenu *menu_history;
59         QMenu *menu_write_protect;
60
61         QIcon icon_insert;
62         QIcon icon_eject;
63         QIcon icon_write_protected;
64         QIcon icon_write_enabled;
65         
66         class Action_Control *action_insert;
67         class Action_Control *action_eject;
68         class Action_Control *action_recent;
69         class Action_Control *action_inner_media;
70         class Action_Control *action_write_protect_on;
71         class Action_Control *action_write_protect_off;
72         class Action_Control *action_select_media_list[128];
73         class Action_Control *action_recent_list[MAX_HISTORY];
74         QList<CSP_DiskDialog*>   dialogs;
75         QActionGroup *action_group_recent;
76         QActionGroup *action_group_inner_media;
77         QActionGroup *action_group_protect;
78         
79         QString object_desc;
80         
81         int media_drive;
82         int base_drive;
83         
84         bool use_write_protect;
85         bool use_d88_menus;
86         
87         bool write_protect;
88         
89         void create_pulldown_menu_sub(void);
90         void retranslate_pulldown_menu_sub(void);
91         void do_open_dialog_common(CSP_DiskDialog* dlg);
92   
93         QString window_title;
94         QString initial_dir;
95         QStringList ext_filter;
96         QStringList history;
97         QStringList inner_media_list;
98 public:
99         Menu_MetaClass(QMenuBar *root_entry, QString desc, std::shared_ptr<USING_FLAGS> p, QWidget *parent = 0, int drv = 0, int base_drv = 1);
100         ~Menu_MetaClass();
101
102         virtual void create_pulldown_menu_device_sub(void);
103         virtual void connect_menu_device_sub(void);
104         virtual void retranslate_pulldown_menu_device_sub(void);
105
106         void create_pulldown_menu(void);
107         void retranslateUi(void);
108         //void setTitle(QString);
109         void setEmu(EMU_TEMPLATE *p);
110
111         bool getWriteProtect(void) {
112                 return write_protect;
113         }
114         //QAction *menuAction(void);
115 public slots:
116         void do_set_write_protect(bool f);
117         void do_open_media(int drv, QString name);
118         void do_insert_media(void);
119         void do_eject_media(void);
120
121         void do_open_inner_media(void);
122         void do_open_recent_media(void);
123         void do_write_protect_media(void);
124         void do_write_unprotect_media(void);
125         void do_add_media_extension(QString ext, QString description);
126         
127         void do_set_initialize_directory(const char *dir);
128         virtual void do_open_dialog(void);
129         void do_clear_inner_media(void);
130         void do_select_inner_media(int num);
131         void do_update_inner_media(QStringList lst, int num);
132         void do_update_inner_media_bubble(QStringList lst, int num);
133         void do_update_histories(QStringList lst);
134         void do_insert_history(QString path);
135
136         void do_set_window_title(QString s);
137         void do_close_window();
138         void do_finish(int i);
139         
140 signals:
141         int sig_open_media(int, QString);
142         int sig_eject_media(int);
143         int sig_write_protect_media(int, bool);
144         int sig_set_recent_media(int, int);
145         int sig_set_inner_slot(int, int);
146         int sig_insert_media(int);
147         int sig_update_inner_fd(int drv, QStringList base, class Action_Control **action_select_media_list,
148                                                         QStringList lst, int num, bool use_d88_menus);
149         int sig_update_inner_bubble(int drv, QStringList base, class Action_Control **action_select_media_list,
150                                                                 QStringList lst, int num, bool use_d88_menus);
151         int sig_emu_update_config();
152         int sig_show();
153 };
154 QT_END_NAMESPACE
155
156 #endif