OSDN Git Service

[UI][Qt] Not liking config, using_flags directly.
[csp-qt/common_source_project-fm7.git] / source / src / qt / gui / util_qd.cpp
1 /*
2  * UI->Qt->MainWindow : Quick Disk Utils.
3  * (C) 2015 K.Ohta <whatisthis.sowhat _at_ gmail.com>
4  * License: GPLv2
5  *
6  * History:
7  * Jan 24, 2014 : Moved from some files.
8  */
9
10
11 #include "mainwidget_base.h"
12 #include "commonclasses.h"
13 #include "qt_dialogs.h"
14 #include "agar_logger.h"
15 #include "menu_quickdisk.h"
16
17 void Object_Menu_Control::insert_Qd(void) {
18         //write_protect = false; // Right? On D88, May be writing entry  exists. 
19         emit sig_insert_Qd(drive);
20 }
21 void Object_Menu_Control::eject_Qd(void) {
22         write_protect = false;
23         emit sig_eject_Qd(drive);
24 }
25 void Object_Menu_Control::on_recent_quick_disk(void){
26         //   write_protect = false; // Right? On D88, May be writing entry  exists. 
27         emit set_recent_quick_disk(drive, s_num);
28 }
29
30 void CSP_FileParams::_open_quick_disk(QString s){
31         //   write_protect = false; // Right? On D88, May be writing entry  exists. 
32         emit do_open_quick_disk(getDrive(), s);
33 }
34 void Object_Menu_Control::write_protect_Qd(void) {
35         write_protect = true;
36         emit sig_write_protect_Qd(drive, write_protect);
37 }
38 void Object_Menu_Control::no_write_protect_Qd(void) {
39         write_protect = false;
40         emit sig_write_protect_Qd(drive, write_protect);
41 }
42
43 void Ui_MainWindowBase::CreateQuickDiskPulldownMenu(int drv)
44 {
45 }
46
47 void Ui_MainWindowBase::ConfigQuickDiskMenuSub(int drv)
48 {
49 }
50
51
52 // Common Routine
53 void Ui_MainWindowBase::open_quick_disk_dialog(int drv)
54 {
55         QString ext = "*.mzt *.q20 *.qdf";
56         QString desc1 = "Quick DIsk";
57         QString desc2;
58         CSP_DiskDialog dlg;
59         QString dirname;
60
61         dlg.setWindowTitle("Open Quick Disk");
62   
63         desc2 = desc1 + " (" + ext.toLower() + " " + ext.toUpper() + ")";
64         //desc2 = desc1 + " (" + ext.toLower() + ")";
65         //desc1 = desc1 + " (" + ext.toUpper() + ")";
66         if(using_flags->get_config_ptr()->initial_quick_disk_dir != NULL) {
67                 dirname = using_flags->get_config_ptr()->initial_quick_disk_dir;                
68         } else {
69                 char app[_MAX_PATH];
70                 QDir df;
71                 dirname = df.currentPath();
72                 strncpy(app, dirname.toLocal8Bit().constData(), _MAX_PATH);
73                 dirname = get_parent_dir(app);
74         }
75         QStringList filter;
76         filter << desc2;
77
78         dlg.param->setDrive(drv);
79         dlg.setDirectory(dirname);
80         dlg.setNameFilters(filter);
81         QObject::connect(&dlg, SIGNAL(fileSelected(QString)),
82                          dlg.param, SLOT(_open_quick_disk(QString))); 
83         QObject::connect(dlg.param, SIGNAL(do_open_quick_disk(int, QString)),
84                          this, SLOT(_open_quick_disk(int, QString))); 
85         dlg.show();
86         dlg.exec();
87         return;
88 }
89
90 int Ui_MainWindowBase::write_protect_Qd(int drv, bool flag)
91 {
92         if((drv < 0) || (drv >= using_flags->get_max_qd())) return -1;
93         emit sig_write_protect_quickdisk(drv, flag);
94         return 0;
95 }
96   
97 int Ui_MainWindowBase::set_recent_quick_disk(int drv, int num) 
98 {
99         QString s_path;
100         char path_shadow[_MAX_PATH];
101         int i;
102         if((num < 0) || (num >= MAX_HISTORY)) return -1;
103         s_path = QString::fromLocal8Bit(using_flags->get_config_ptr()->recent_quick_disk_path[drv][num]);
104         strncpy(path_shadow, s_path.toLocal8Bit().constData(), _MAX_PATH);
105         UPDATE_HISTORY(path_shadow, using_flags->get_config_ptr()->recent_quick_disk_path[drv], listQDs[drv]);
106     
107         strncpy(path_shadow, s_path.toLocal8Bit().constData(), _MAX_PATH);
108         get_parent_dir(path_shadow);
109         strncpy(using_flags->get_config_ptr()->initial_quick_disk_dir, path_shadow, _MAX_PATH);
110         
111         emit sig_close_quickdisk(drv);
112         emit sig_open_quickdisk(drv, s_path);
113         menu_QDs[drv]->do_update_histories(listQDs[drv]);
114         menu_QDs[drv]->do_set_initialize_directory(using_flags->get_config_ptr()->initial_quick_disk_dir);
115         //if(emu->get_quickdisk_protected(drv)) {
116         //      menu_QDs[drv]->do_write_protect_media();
117         //} else {
118         //      menu_QDs[drv]->do_write_unprotect_media();
119         //}             
120         return 0;
121 }
122
123 void Ui_MainWindowBase::_open_quick_disk(int drv, const QString fname)
124 {
125         char path_shadow[_MAX_PATH];
126         QString s_name = fname;
127         int i;
128         if(fname.length() <= 0) return;
129         strncpy(path_shadow, s_name.toLocal8Bit().constData(), _MAX_PATH);
130
131         UPDATE_HISTORY(path_shadow, using_flags->get_config_ptr()->recent_quick_disk_path[drv], listQDs[drv]);
132         
133         strncpy(path_shadow, s_name.toLocal8Bit().constData(), _MAX_PATH);
134         get_parent_dir(path_shadow);
135         strncpy(using_flags->get_config_ptr()->initial_quick_disk_dir, path_shadow, _MAX_PATH);
136
137         emit sig_close_quickdisk(drv);
138         emit sig_open_quickdisk(drv, s_name);
139         menu_QDs[drv]->do_update_histories(listQDs[drv]);
140         menu_QDs[drv]->do_set_initialize_directory(using_flags->get_config_ptr()->initial_quick_disk_dir);
141         //if(emu->get_quickdisk_protected(drv)) {
142         //      menu_QDs[drv]->do_write_protect_media();
143         //} else {
144         //      menu_QDs[drv]->do_write_unprotect_media();
145         //}             
146 }
147
148 void Ui_MainWindowBase::eject_Qd(int drv) 
149 {
150         emit sig_close_quickdisk(drv);
151 }
152
153 void Ui_MainWindowBase::CreateQuickDiskMenu(int drv, int drv_base)
154 {
155         {
156                 QString ext = "*.mzt *.q20 *.qdf";
157                 QString desc1 = "Quick DIsk";
158                 menu_QDs[drv] = new Menu_QDClass(emu, menubar, QString::fromUtf8("Obj_QuickDisk"), using_flags, this, drv);
159                 menu_QDs[drv]->create_pulldown_menu();
160                 
161                 menu_QDs[drv]->do_clear_inner_media();
162                 menu_QDs[drv]->do_add_media_extension(ext, desc1);
163                 SETUP_HISTORY(using_flags->get_config_ptr()->recent_quick_disk_path[drv], listQDs[drv]);
164                 menu_QDs[drv]->do_update_histories(listQDs[drv]);
165                 menu_QDs[drv]->do_set_initialize_directory(using_flags->get_config_ptr()->initial_quick_disk_dir);
166
167                 QString name = QString::fromUtf8("Quick Disk");
168                 QString tmpv;
169                 tmpv.setNum(drv_base);
170                 name.append(tmpv);
171                 menu_QDs[drv]->setTitle(name);
172         }
173 }
174
175 void Ui_MainWindowBase::retranslateQuickDiskMenu(int drv, int basedrv)
176 {
177         if((drv < 0) || (drv >= using_flags->get_max_qd())) return;
178         QString drive_name = (QApplication::translate("MainWindow", "Quick Disk ", 0));
179         drive_name += QString::number(basedrv);
180   
181         menu_QDs[drv]->retranslateUi();
182         menu_QDs[drv]->setTitle(QApplication::translate("MainWindow", drive_name.toUtf8().constData() , 0));
183 }
184                                                                  
185 void Ui_MainWindowBase::ConfigQuickDiskMenu(void)
186 {
187         for(int i = 0; i < using_flags->get_max_qd(); i++) {
188                 ConfigQuickDiskMenuSub(i);
189         }
190 }