2 * UI->Qt->MainWindow : CD ROM Utils.
3 * (C) 2015 K.Ohta <whatisthis.sowhat _at_ gmail.com>
7 * Mar 20, 2016 : Initial
10 #include <QApplication>
12 #include "commonclasses.h"
13 #include "mainwidget_base.h"
14 #include "qt_dialogs.h"
15 #include "csp_logger.h"
17 #include "menu_compactdisc.h"
18 #include "dock_disks.h"
20 void Ui_MainWindowBase::CreateCDROMMenu(int drv, int drv_base)
22 QString ext_play, desc_play;
24 listCDROM[drv].clear();
25 menu_CDROM[drv] = new Menu_CompactDiscClass(menubar, "CDROM", using_flags, this, drv, drv_base);
26 menu_CDROM[drv]->setObjectName(QString::fromUtf8("menuCDROM", -1));
28 menu_CDROM[drv]->create_pulldown_menu();
30 ext_play = "*.ccd *.cue *.iso *.gz";
31 desc_play = "Compact Disc";
32 menu_CDROM[drv]->do_clear_inner_media();
33 menu_CDROM[drv]->do_add_media_extension(ext_play, desc_play);
35 SETUP_HISTORY(p_config->recent_compact_disc_path[drv], listCDROM[drv]);
36 menu_CDROM[drv]->do_update_histories(listCDROM[drv]);
37 menu_CDROM[drv]->do_set_initialize_directory(p_config->initial_compact_disc_dir);
41 void Ui_MainWindowBase::CreateCDROMPulldownMenu(void)
45 void Ui_MainWindowBase::ConfigCDROMMenuSub(void)
50 int Ui_MainWindowBase::set_recent_compact_disc(int drv, int num)
54 std::shared_ptr<USING_FLAGS> p = using_flags;
55 if(p.get() == nullptr) return -1;
56 if(p_config == nullptr) return -1;
58 if(p->get_max_cd() <= drv) return -1;
59 if((num < 0) || (num >= MAX_HISTORY)) return -1;
61 s_path = QString::fromLocal8Bit(p_config->recent_compact_disc_path[drv][num]);
62 if(s_path.isEmpty()) return -1;
63 do_open_compact_disc_ui(drv, s_path);
67 void Ui_MainWindowBase::do_eject_compact_disc(int drv)
69 emit sig_eject_compact_disc_ui(drv);
72 void Ui_MainWindowBase::do_ui_eject_compact_disc(int drv)
74 std::shared_ptr<USING_FLAGS>p = using_flags;
75 if(p.get() == nullptr) return;
76 if(p->get_max_cd() <= drv) return;
77 if(menu_CDROM[drv] != nullptr) {
78 menu_CDROM[drv]->do_clear_inner_media();
80 // ToDO: Replace signal model.
81 if(driveData != nullptr) {
82 driveData->updateMediaFileName(CSP_DockDisks_Domain_CD, drv, QString::fromUtf8(""));
86 void Ui_MainWindowBase::do_ui_compact_disc_insert_history(int drv, QString fname)
88 std::shared_ptr<USING_FLAGS>p = using_flags;
89 if(p.get() == nullptr) return;
90 if(fname.length() <= 0) return;
92 if(p->get_max_cd() <= drv) return;
94 _TCHAR path_shadow[_MAX_PATH] = {0};
96 my_strncpy_s(path_shadow, _MAX_PATH, fname.toLocal8Bit().constData(), _TRUNCATE);
97 if(!(FILEIO::IsFileExisting(path_shadow))) return;
99 UPDATE_HISTORY(fname, p_config->recent_compact_disc_path[drv], listCDROM[drv]);
100 my_strncpy_s(p_config->initial_compact_disc_dir,
101 sizeof(p_config->initial_compact_disc_dir) / sizeof(_TCHAR),
102 get_parent_dir((const _TCHAR*)path_shadow),
104 menu_CDROM[drv]->do_set_initialize_directory(p_config->initial_compact_disc_dir);
105 do_update_compact_disc_history(drv, listCDROM[drv]);
107 // ToDO: Replace signal model.
108 if(driveData != nullptr) {
109 driveData->updateMediaFileName(CSP_DockDisks_Domain_CD, drv, fname);
113 void Ui_MainWindowBase::do_open_compact_disc_ui(int drv, QString path)
115 std::shared_ptr<USING_FLAGS>p = using_flags;
116 if(p.get() == nullptr) return;
117 if(path.length() <= 0) return;
118 if(p->get_max_cd() <= drv) return;
120 const _TCHAR *fnamep = (const _TCHAR*)(path.toLocal8Bit().constData());
121 if(fnamep == nullptr) return;
122 if(!(FILEIO::IsFileExisting(fnamep))) return; // File not found.
124 emit sig_eject_compact_disc_ui(drv);
125 emit sig_open_compact_disc(drv, path);
130 void Ui_MainWindowBase::retranslateCDROMMenu(void)
132 if(using_flags->is_use_compact_disc()) {
133 for(int drv = 0; drv < using_flags->get_max_cd(); drv++) {
134 menu_CDROM[drv]->retranslateUi();
139 void Ui_MainWindowBase::ConfigCDROMMenu(void)
141 ConfigCDROMMenuSub();
144 void Ui_MainWindowBase::do_swap_cdaudio_byteorder(bool value)
146 QAction *cp = qobject_cast<QAction*>(QObject::sender());
147 if(cp == nullptr) return;
148 int drv = cp->data().value<int>();
150 std::shared_ptr<USING_FLAGS>up = using_flags;
151 if((p_config != nullptr) && (up.get() != nullptr)) {
153 if(drv >= up->get_max_cd()) return;
154 p_config->swap_audio_byteorder[drv] = value;
158 void Ui_MainWindowBase::do_update_compact_disc_history(int drive, QStringList lst)
160 std::shared_ptr<USING_FLAGS> p = using_flags;
161 if(p.get() == nullptr) return;
163 if((drive < 0) || (drive >= p->get_max_cd())) return;
164 if(menu_CDROM[drive] != nullptr) {
165 menu_CDROM[drive]->do_update_histories(lst);