OSDN Git Service

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