OSDN Git Service

[UI][Qt] More separate to one lib a lot.
[csp-qt/common_source_project-fm7.git] / source / src / qt / gui / util_cd.cpp
1 /*
2  * UI->Qt->MainWindow : CD ROM Utils.
3  * (C) 2015 K.Ohta <whatisthis.sowhat _at_ gmail.com>
4  * License: GPLv2
5  *
6  * History:
7  * Mar 20, 2016 : Initial
8  */
9
10
11 #include "commonclasses.h"
12 #include "mainwidget_base.h"
13 #include "qt_dialogs.h"
14 #include "agar_logger.h"
15
16 #include "menu_compactdisc.h"
17
18
19 void Object_Menu_Control::insert_cdrom(void) {
20         //AGAR_DebugLog(AGAR_LOG_DEBUG, "%d", play);
21         emit sig_insert_cdrom(play);
22 }
23 void Object_Menu_Control::eject_cdrom(void) {
24         emit sig_eject_cdrom();
25 }
26 void Object_Menu_Control::on_recent_cdrom(){
27         emit sig_recent_cdrom(s_num);
28 }
29
30 void Ui_MainWindowBase::CreateCDROMMenu(void)
31 {
32         QString ext_play, desc_play;
33         
34         listCDROM.clear();
35         menu_CDROM = new Menu_CompactDiscClass(emu, menubar, "Object_CDROM_Menu", this, 0);
36         menu_CDROM->setObjectName(QString::fromUtf8("menuCDROM", -1));
37         
38         menu_CDROM->create_pulldown_menu();     
39         // Translate Menu
40         SETUP_HISTORY(config.recent_compact_disc_path, listCDROM);
41         menu_CDROM->do_update_histories(listCDROM);
42         menu_CDROM->do_set_initialize_directory(config.initial_compact_disc_dir);
43         
44         ext_play = "*.ccd *.cue";
45         desc_play = "Compact Disc";
46         menu_CDROM->do_add_media_extension(ext_play, desc_play);
47
48 }
49
50 void Ui_MainWindowBase::CreateCDROMPulldownMenu(void)
51 {
52 }
53
54 void Ui_MainWindowBase::ConfigCDROMMenuSub(void)
55 {
56         
57 }
58
59 int Ui_MainWindowBase::set_recent_cdrom(int drv, int num) 
60 {
61         QString s_path;
62         char path_shadow[PATH_MAX];
63         int i;
64         if((num < 0) || (num >= MAX_HISTORY)) return -1;
65     
66         s_path = QString::fromLocal8Bit(config.recent_compact_disc_path[num]);
67         strncpy(path_shadow, s_path.toLocal8Bit().constData(), PATH_MAX);
68         UPDATE_HISTORY(path_shadow, config.recent_compact_disc_path, listCDROM);
69    
70         get_parent_dir(path_shadow);
71         strcpy(config.initial_compact_disc_dir, path_shadow);
72         strncpy(path_shadow, s_path.toLocal8Bit().constData(), PATH_MAX);
73         emit sig_close_cdrom();
74         AGAR_DebugLog(AGAR_LOG_DEBUG, "CD-ROM: Open : filename = %s", path_shadow);
75         emit sig_open_cdrom(s_path);
76         menu_CDROM->do_update_histories(listCDROM);
77         menu_CDROM->do_set_initialize_directory(config.initial_compact_disc_dir);
78         return 0;
79 }
80
81 void Ui_MainWindowBase::do_eject_cdrom(int drv) 
82 {
83         emit sig_close_cdrom();
84 }
85
86 void Ui_MainWindowBase::do_open_cdrom(int drv, QString path) 
87 {
88         char path_shadow[PATH_MAX];
89         int i;
90
91         if(path.length() <= 0) return;
92         strncpy(path_shadow, path.toLocal8Bit().constData(), PATH_MAX);
93         UPDATE_HISTORY(path_shadow, config.recent_compact_disc_path, listCDROM);
94         get_parent_dir(path_shadow);
95         strcpy(config.initial_compact_disc_dir, path_shadow);
96         // Copy filename again.
97         strncpy(path_shadow, path.toLocal8Bit().constData(), PATH_MAX);
98
99         emit sig_close_cdrom();
100         AGAR_DebugLog(AGAR_LOG_DEBUG, "CD-ROM: Open : filename = %s", path_shadow);
101         emit sig_open_cdrom(path);
102         menu_CDROM->do_update_histories(listCDROM);
103         menu_CDROM->do_set_initialize_directory(config.initial_compact_disc_dir);
104 }
105
106 void Ui_MainWindowBase::retranslateCDROMMenu(void)
107 {
108         if(using_flags->is_use_compact_disc()) {
109                 menu_CDROM->retranslateUi();
110         }
111 }
112
113 void Ui_MainWindowBase::ConfigCDROMMenu(void)
114 {
115         ConfigCDROMMenuSub(); 
116 }