2 * UI->Qt->MainWindow : Quick Disk Utils.
3 * (C) 2015 K.Ohta <whatisthis.sowhat _at_ gmail.com>
7 * Jan 24, 2014 : Moved from some files.
9 #include <QApplication>
11 #include "mainwidget_base.h"
12 #include "commonclasses.h"
13 #include "qt_dialogs.h"
14 #include "csp_logger.h"
15 #include "menu_quickdisk.h"
17 #include "dock_disks.h"
18 #include "../../osdcall_types.h"
20 void Ui_MainWindowBase::CreateQuickDiskPulldownMenu(int drv)
24 void Ui_MainWindowBase::ConfigQuickDiskMenuSub(int drv)
28 int Ui_MainWindowBase::do_emu_write_protect_quick_disk(int drv, bool flag)
30 std::shared_ptr<USING_FLAGS> p = using_flags;
31 if(p.get() == nullptr) return -1;
32 if((drv < 0) || (drv >= p->get_max_qd())) return -1;
34 emit sig_write_protect_quick_disk(drv, flag);
38 void Ui_MainWindowBase::do_ui_quick_disk_write_protect(int drive, quint64 flag)
42 std::shared_ptr<USING_FLAGS>p = using_flags;
43 if(p.get() == nullptr) return;
44 if(!(p->is_use_qd()) || (p->get_max_qd() <= drive)) return;
45 if(menu_QDs[drive] == nullptr) return;
47 if((flag & EMU_MESSAGE_TYPE::WRITE_PROTECT) != 0) {
48 menu_QDs[drive]->do_set_write_protect(true);
50 menu_QDs[drive]->do_set_write_protect(false);
54 int Ui_MainWindowBase::set_recent_quick_disk(int drv, int num)
58 std::shared_ptr<USING_FLAGS> p = using_flags;
59 if(p.get() == nullptr) return -1;
60 if(p_config == nullptr) return -1;
62 if(p->get_max_qd() <= drv) return -1;
63 if((num < 0) || (num >= MAX_HISTORY)) return -1;
65 s_path = QString::fromLocal8Bit(p_config->recent_quick_disk_path[drv][num]);
66 if(!(s_path.isEmpty())) {
67 do_open_quick_disk_ui(drv, s_path);
73 void Ui_MainWindowBase::do_ui_quick_disk_insert_history(int drv, QString fname)
75 std::shared_ptr<USING_FLAGS>p = using_flags;
76 if(p.get() == nullptr) return;
77 if(fname.length() <= 0) return;
78 if(p->get_max_qd() <= drv) return;
80 _TCHAR path_shadow[_MAX_PATH] = {0};
82 my_strncpy_s(path_shadow, _MAX_PATH, fname.toLocal8Bit().constData(), _TRUNCATE);
83 if(!(FILEIO::IsFileExisting(path_shadow))) return;
85 UPDATE_HISTORY(fname, p_config->recent_quick_disk_path[drv], listQDs[drv]);
87 my_strncpy_s(p_config->initial_quick_disk_dir,
88 sizeof(p_config->initial_quick_disk_dir) / sizeof(_TCHAR),
89 get_parent_dir((const _TCHAR *)path_shadow),
92 if(menu_QDs[drv] != nullptr) {
93 menu_QDs[drv]->do_set_initialize_directory(p_config->initial_quick_disk_dir);
95 do_update_quick_disk_history(drv, listQDs[drv]);
97 // ToDO: Replace signal model.
98 if(driveData != nullptr) {
99 driveData->updateMediaFileName(CSP_DockDisks_Domain_QD, drv, fname);
105 void Ui_MainWindowBase::do_open_quick_disk_ui(int drv, const QString fname)
107 std::shared_ptr<USING_FLAGS>p = using_flags;
108 if(p.get() == nullptr) return;
109 if(fname.length() <= 0) return;
110 if(p->get_max_qd() <= drv) return;
112 const _TCHAR *fnamep = (const _TCHAR*)(fname.toLocal8Bit().constData());
113 if(fnamep == nullptr) return;
115 if(!(FILEIO::IsFileExisting(fnamep))) return; // File not found.
117 emit sig_close_quick_disk_ui(drv);
118 emit sig_open_quick_disk(drv, fname);
121 void Ui_MainWindowBase::do_eject_quick_disk(int drv)
123 emit sig_close_quick_disk_ui(drv);
126 void Ui_MainWindowBase::do_ui_eject_quick_disk(int drv)
128 if(menu_QDs[drv] != nullptr) {
129 menu_QDs[drv]->do_clear_inner_media();
131 // ToDO: Replace signal model.
132 if(driveData != nullptr) {
133 driveData->updateMediaFileName(CSP_DockDisks_Domain_QD, drv, QString::fromUtf8(""));
137 void Ui_MainWindowBase::CreateQuickDiskMenu(int drv, int drv_base)
140 QString ext = "*.mzt *.q20 *.qdf *.gz";
141 QString desc1 = "Quick DIsk";
143 std::shared_ptr<USING_FLAGS> p = using_flags;
144 if(p_config == nullptr) return;
145 if(p.get() == nullptr) return;
147 menu_QDs[drv] = new Menu_QDClass(menubar, QString::fromUtf8("QD"), p, this, drv);
148 menu_QDs[drv]->create_pulldown_menu();
150 menu_QDs[drv]->do_clear_inner_media();
151 menu_QDs[drv]->do_add_media_extension(ext, desc1);
153 SETUP_HISTORY(p_config->recent_quick_disk_path[drv], listQDs[drv]);
155 menu_QDs[drv]->do_update_histories(listQDs[drv]);
156 menu_QDs[drv]->do_set_initialize_directory(p_config->initial_quick_disk_dir);
161 void Ui_MainWindowBase::retranslateQuickDiskMenu(int drv, int basedrv)
163 std::shared_ptr<USING_FLAGS> p = using_flags;
164 if(p.get() == nullptr) return;
166 if((drv < 0) || (drv >= p->get_max_qd())) return;
167 QString drive_name = (QApplication::translate("MenuMedia", "Quick Disk ", 0));
168 drive_name += QString::number(basedrv);
170 menu_QDs[drv]->retranslateUi();
171 menu_QDs[drv]->setTitle(QApplication::translate("MenuMedia", drive_name.toUtf8().constData() , 0));
174 void Ui_MainWindowBase::ConfigQuickDiskMenu(void)
176 std::shared_ptr<USING_FLAGS> p = using_flags;
177 if(p.get() == nullptr) return;
179 for(int i = 0; i < p->get_max_qd(); i++) {
180 ConfigQuickDiskMenuSub(i);
184 void Ui_MainWindowBase::do_update_quick_disk_history(int drive, QStringList lst)
186 std::shared_ptr<USING_FLAGS> p = using_flags;
187 if(p.get() == nullptr) return;
189 if((drive < 0) || (drive >= p->get_max_qd())) return;
190 if(menu_QDs[drive] != nullptr) {
191 menu_QDs[drive]->do_update_histories(lst);