OSDN Git Service

[UI][Qt] Not liking config, using_flags directly.
[csp-qt/common_source_project-fm7.git] / source / src / qt / gui / util_cart.cpp
1 /*
2  * UI->Qt->MainWindow : Cartridge 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 #include "mainwidget_base.h"
11 #include "commonclasses.h"
12 #include "menu_cart.h"
13 #include "qt_dialogs.h"
14 #include "agar_logger.h"
15
16 void Object_Menu_Control::insert_cart(void) {
17         emit sig_insert_cart(getDrive());
18 }
19 void Object_Menu_Control::eject_cart(void) {
20         write_protect = false;
21         emit sig_eject_cart(getDrive());
22 }
23 void Object_Menu_Control::on_recent_cart(void){
24         emit set_recent_cart(drive, s_num);
25 }
26
27 void Ui_MainWindowBase::_open_cart(int drv, const QString fname)
28 {
29         char path_shadow[PATH_MAX];
30         int i;
31
32         if(fname.length() <= 0) return;
33         strncpy(path_shadow, fname.toLocal8Bit().constData(), PATH_MAX);
34         UPDATE_HISTORY(path_shadow, using_flags->get_config_ptr()->recent_cart_path[drv], listCARTs[drv]);
35         get_parent_dir(path_shadow);
36         strcpy(using_flags->get_config_ptr()->initial_cart_dir, path_shadow);
37         menu_Cart[drv]->do_update_histories(listCARTs[drv]);
38         menu_Cart[drv]->do_set_initialize_directory(using_flags->get_config_ptr()->initial_cart_dir);
39         
40         emit sig_close_cart(drv);
41         emit sig_open_cart(drv, fname);
42
43 }
44
45 void Ui_MainWindowBase::eject_cart(int drv) 
46 {
47         emit sig_close_cart(drv);
48 }
49
50 void Ui_MainWindowBase::set_recent_cart(int drv, int num) 
51 {
52         QString s_path;
53         char path_shadow[PATH_MAX];
54         int i;
55     
56         if((num < 0) || (num >= MAX_HISTORY)) return;
57  
58         s_path = QString::fromLocal8Bit(using_flags->get_config_ptr()->recent_cart_path[drv][num]);
59         strncpy(path_shadow, s_path.toLocal8Bit().constData(), PATH_MAX);
60         UPDATE_HISTORY(path_shadow, using_flags->get_config_ptr()->recent_cart_path[drv], listCARTs[drv]);
61         strncpy(path_shadow, s_path.toLocal8Bit().constData(), PATH_MAX);
62    
63         get_parent_dir(path_shadow);
64         strcpy(using_flags->get_config_ptr()->initial_cart_dir, path_shadow);
65         menu_Cart[drv]->do_update_histories(listCARTs[drv]);
66         menu_Cart[drv]->do_set_initialize_directory(using_flags->get_config_ptr()->initial_cart_dir);
67    
68         //eject_cart(drv);
69         emit sig_open_cart(drv, s_path);
70 }
71
72 void Ui_MainWindowBase::CreateCartMenu(int drv, int drv_base)
73 {
74         QString ext;
75         QString desc;
76         
77         QString drv_base_name = QString::number(drv_base); 
78         
79         if(using_flags->is_machine_gamegear()) {
80                 ext = "*.rom *.bin *.gg *.col";
81                 desc = "Game Cartridge";
82         } else if(using_flags->is_machine_mastersystem()) {
83                 ext = "*.rom *.bin *.sms";
84                 desc = "Game Cartridge";
85         } else if(using_flags->is_machine_pc6001()) {
86                 ext = "*.rom *.bin *.60";
87                 desc = "Game Cartridge";
88         } else if(using_flags->is_machine_has_pcengine()) {
89                 ext = "*.rom *.bin *.pce";
90                 desc = "HuCARD";
91         } else if(using_flags->is_machine_z80tvgame()) {
92                 ext = "*.rom *.bin *.hex";
93                 desc = "GameData";
94         } else if(using_flags->is_machine_sc3000()) {
95                 ext = "*.rom *.bin *.sms *.sg";
96                 desc = "SC-3000/1000 Game Cartridge";
97         } else {
98                 ext = "*.rom *.bin";
99                 desc = "Game Cartridge";
100         }
101         
102         menu_Cart[drv] = new Menu_CartClass(emu, menubar, QString::fromUtf8("Obj_Cart"), using_flags, this, drv);       
103         menu_Cart[drv]->create_pulldown_menu();
104                 
105         menu_Cart[drv]->do_clear_inner_media();
106         menu_Cart[drv]->do_add_media_extension(ext, desc);
107         SETUP_HISTORY(using_flags->get_config_ptr()->recent_cart_path[drv], listCARTs[drv]);
108         menu_Cart[drv]->do_update_histories(listCARTs[drv]);
109         menu_Cart[drv]->do_set_initialize_directory(using_flags->get_config_ptr()->initial_cart_dir);
110
111         QString name = QString::fromUtf8("Cart");
112         QString tmpv;
113         tmpv.setNum(drv_base);
114         name.append(tmpv);
115         menu_Cart[drv]->setTitle(name);
116 }
117
118 void Ui_MainWindowBase::CreateCartPulldownMenu(int drv)
119 {
120 }
121
122 void Ui_MainWindowBase::ConfigCartMenuSub(int drv)
123 {
124 }
125
126 void Ui_MainWindowBase::retranslateCartMenu(int drv, int basedrv)
127 {
128         menu_Cart[drv]->retranslateUi();
129 }
130
131 void Ui_MainWindowBase::ConfigCartMenu(void)
132 {
133         for(int i = 0; i > using_flags->get_max_cart(); i++) {
134                 ConfigCartMenuSub(0);
135         }
136 }