// messaging proxies.
// These are mostly used for replying mounting virtual media.
// 20230125 K.O
-void EMU::osdcall_string(int media_type, int drive,int message_type, _TCHAR* message)
+void EMU::osdcall_string(EMU_MEDIA_TYPE::type_t media_type, int drive,EMU_MESSAGE_TYPE::type_t message_type, _TCHAR* message)
{
__LIKELY_IF(osd != nullptr) {
osd->string_message_from_emu(media_type, drive, message_type, message);
}
}
-void EMU::osdcall_int(EMU_MEDIA_TYPE media_type, int drive, EMU_MESSAGE_TYPE message_type, int64_t data)
+void EMU::osdcall_int(EMU_MEDIA_TYPE::type_t media_type, int drive, EMU_MESSAGE_TYPE::type_t message_type, int64_t data)
{
__LIKELY_IF(osd != nullptr) {
osd->int_message_from_emu(media_type, drive, message_type, data);
void load_state(const _TCHAR* file_path) override;
const _TCHAR *state_file_path(int num) override;
#endif
+ void __FASTCALL osdcall_string(EMU_MEDIA_TYPE::type_t media_type, int drive, EMU_MESSAGE_TYPE::type_t message_type, _TCHAR* message) override;
+ void __FASTCALL osdcall_int(EMU_MEDIA_TYPE::type_t media_type, int drive, EMU_MESSAGE_TYPE::type_t message_type, int64_t data) override;
};
#endif // _EMU_H_
virtual bool is_quick_disk_connected(int drv) { return false; }
virtual bool is_quick_disk_inserted(int drv) { return false; }
virtual uint32_t is_quick_disk_accessed() { return 0x00000000; }
- virtual bool get_quick_disk_status(int drive = 0, _TCHAR* media_name, size_t buflen, bool& play, int& wait_count, int& cur_bank)
+ virtual bool get_quick_disk_status(int drive, _TCHAR* media_name, size_t buflen, bool& play, int& wait_count, int& cur_bank)
{
return false;
}
virtual void close_hard_disk(int drv) {}
virtual bool is_hard_disk_inserted(int drv) { return false; }
virtual uint32_t is_hard_disk_accessed() { return 0x00000000; }
- virtual bool get_hard_disk_status(int drive = 0, _TCHAR* media_name, size_t buflen, bool& play, int& wait_count, int& cur_bank)
+ virtual bool get_hard_disk_status(int drive, _TCHAR* media_name, size_t buflen, bool& play, int& wait_count, int& cur_bank)
{
return false;
}
// messaging proxies.
// These are mostly used for replying mounting virtual media.
// 20230125 K.O
- virtual void __FASTCALL osdcall_string(EMU_MEDIA_TYPE media_type, int drive, EMU_MESSAGE_TYPE message_type, _TCHAR* message) {}
- virtual void __FASTCALL osdcall_int(EMU_MEDIA_TYPE media_type, int drive, EMU_MESSAGE_TYPE message_type, int64_t data) { }
+ virtual void __FASTCALL osdcall_string(EMU_MEDIA_TYPE::type_t media_type, int drive, EMU_MESSAGE_TYPE::type_t message_type, _TCHAR* message) {}
+ virtual void __FASTCALL osdcall_int(EMU_MEDIA_TYPE::type_t media_type, int drive, EMU_MESSAGE_TYPE::type_t message_type, int64_t data) { }
};
#pragma once
namespace EMU_MEDIA_TYPE {
+ typedef uint64_t type_t ;
enum {
NONE,
BINARY,
namespace EMU_MESSAGE_TYPE {
+ typedef uint64_t type_t ;
enum {
NONE,
MEDIA_MOUNTED,
MESSAGE_END
};
}
-
const _TCHAR *file_path = (const _TCHAR *)(path.toLocal8Bit().constData());
if(!(FILEIO::IsFileExisting(file_path))) return; // File not found.
- bool reserved = p_emu->is_floppy_disk_inserted(drv));
+ bool reserved = p_emu->is_floppy_disk_inserted(drv);
p_emu->open_floppy_disk(drv, file_path, bank);
fd_open_wait_count[drv] = (int)(get_emu_frame_rate() * 0.05);
relpath = QString::fromLocal8Bit(&(__dir[1]));
}
emit sig_ui_update_cart_list(drive, list);
- emit sig_change_virtual_media(CSP_DockDisks_Domain_CART, drive, relpath);
+ emit sig_change_virtual_media(CSP_DockDisks_Domain_Cart, drive, relpath);
}
void EmuThreadClassBase::done_close_cart(int drive)
{
emit sig_ui_close_cart(drive);
- emit sig_change_virtual_media(CSP_DockDisks_Domain_CART, drive, QString::fromUtf8(""));
+ emit sig_change_virtual_media(CSP_DockDisks_Domain_Cart, drive, QString::fromUtf8(""));
}
void EmuThreadClassBase::do_close_laser_disc(int drv)
void EmuThreadClassBase::done_close_laser_disc(int drive)
{
emit sig_ui_close_laser_disc(drive);
- emit sig_change_virtual_media(CSP_DockDisks_Domain_LD, drv, QString::fromUtf8(""));
+ emit sig_change_virtual_media(CSP_DockDisks_Domain_LD, drive, QString::fromUtf8(""));
}
void EmuThreadClassBase::do_load_binary(int drv, QString path)
void EmuThreadClassBase::done_close_binary(int drive)
{
emit sig_ui_close_binary(drive);
- emit sig_change_virtual_media(CSP_DockDisks_Domain_Binary, drv, QString::fromUtf8(""));
+ emit sig_change_virtual_media(CSP_DockDisks_Domain_Binary, drive, QString::fromUtf8(""));
}
void EmuThreadClassBase::do_write_protect_bubble_casette(int drv, bool flag)
emit sig_change_virtual_media(CSP_DockDisks_Domain_Bubble, drive, relpath);
}
-void EmuThreadClassBase::done_close_bubble_casette(int drive)
+void EmuThreadClassBase::done_close_bubble(int drive)
{
emit sig_ui_close_bubble_casette(drive);
emit sig_change_virtual_media(CSP_DockDisks_Domain_Bubble, drive, QString::fromUtf8(""));
int sig_ui_close_hard_disk(int);
int sig_ui_update_cart_list(int, QStringList);
- int sig_ui_close_cart_disk(int);
+ int sig_ui_close_cart(int);
int sig_ui_update_laser_disc_list(int, QStringList);
int sig_ui_close_laser_disc(int);
void do_set_visible_virtual_media_left();
void do_set_visible_virtual_media_right();
+ void do_update_floppy_history(int drive, QStringList lst);
+ void do_insert_floppy_history(int drive, QString path);
+
void do_set_emulate_cursor_as(void);
void do_set_logging_fdc(bool onoff);
void do_set_separate_thread_draw(bool f);
do_open_dialog_common(dlg);
disconnect(dlg->param, SIGNAL(sig_open_disk(int, QString)), this, SLOT(do_open_media(int, QString)));
- connect(dlg->param, SIGNAL(sig_open_disk(int, QString)), p_wid, SLOT(_open_media(int, QString)));
+ connect(dlg->param, SIGNAL(sig_open_disk(int, QString)), p_wid, SLOT(_open_disk(int, QString)));
emit sig_show();
}
void Menu_FDClass::do_open_dialog_create_fd()
return;
}
+void Menu_MetaClass::do_insert_history(QString path)
+{
+ QStringList lst;
+ for(int i = 0; i < MAX_HISTORY ; i++) {
+ if(action_recent_list[i] != nullptr) {
+ QString tmpstr = action_recent_list[i]->text();
+ lst.append(tmpstr);
+ }
+ }
+ if(lst.at(0) == path) {
+ // None changed.
+ return;
+ }
+ QStringList lst2;
+ lst2.clear();
+ for(size_t i = 0 ; i < lst.size(); i++) {
+ if(path != lst.at(i)) lst2.append(lst.at(i));
+ }
+ lst2.push_front(path);
+ do_update_histories(lst2);
+}
void Menu_MetaClass::do_update_histories(QStringList lst)
{
- int ii;
QString tmps;
+ int ptr = 0;
for(int i = 0; i < lst.size(); i++) {
if(i >= MAX_HISTORY) break;
action_recent_list[i]->setText(lst.at(i));
action_recent_list[i]->setVisible(true);
+ ptr++;
}
- for(int i = lst.size(); i < MAX_HISTORY; i++) {
+ for(int i = ptr; i < MAX_HISTORY; i++) {
action_recent_list[i]->setText(QString::fromUtf8(""));
action_recent_list[i]->setVisible(false);
}
}
-void Menu_MetaClass::do_add_media(QStringList path)
-{
- if(path.isEmpty()) return;
- if(path.isNull()) return;
-
- QStringList list;
- list.clear();
- list.append(path);
- for(int i = 0; i < MAX_HISTORY; i++) {
- if(action_recent_list[i] != nullptr) {
- QString tmps = action_recent_list[i]->text();
- if(tmps != path) {
- list.append(tmps);
- }
- }
- }
- do_update_histories(list);
-}
+
void Menu_MetaClass::do_clear_inner_media(void)
{
int ii;
void do_open_media(int drv, QString name);
void do_insert_media(void);
void do_eject_media(void);
+
void do_open_inner_media(void);
void do_open_recent_media(void);
void do_write_protect_media(void);
void do_write_unprotect_media(void);
void do_add_media_extension(QString ext, QString description);
+
void do_set_initialize_directory(const char *dir);
virtual void do_open_dialog(void);
void do_clear_inner_media(void);
void do_update_inner_media(QStringList lst, int num);
void do_update_inner_media_bubble(QStringList lst, int num);
void do_update_histories(QStringList lst);
+ void do_insert_history(QString path);
+
void do_set_window_title(QString s);
void do_close_window();
void do_finish(int i);
#ifndef UPDATE_HISTORY
#define UPDATE_HISTORY(path, recent, list) { \
- int no = MAX_HISTORY - 1; \
- bool found = false; \
- for(int i = 0; i < MAX_HISTORY; i++) { \
- if(strcmp(recent[i], path) == 0) { \
- no = i; \
- found = true; \
- break; \
- } \
- } \
- if(found) { \
- strcpy(recent[MAX_HISTORY - 1], ""); \
- } \
- for(int i = no; i > 0; i--) { \
- strcpy(recent[i], recent[i - 1]); \
- } \
- strcpy(recent[0], path); \
- list.clear(); \
- for(int i = 0; i < MAX_HISTORY; i++) { \
- QString _tmps = QString::fromLocal8Bit(recent[i]); \
- list << _tmps; \
- } \
-}
+ if(strlen(path) > 0) { \
+ if(strcmp(recent[0], path) != 0) { \
+ for(int i = (MAX_HISTORY - 1); i > 0; i--) { \
+ strcpy(recent[i], recent[i - 1]); \
+ } \
+ strcpy(recent[0], path); \
+ list.clear(); \
+ for(int i = 0; i < MAX_HISTORY; i++) { \
+ QString _tmps = QString::fromLocal8Bit(recent[i]); \
+ bool found = false; \
+ for(int j = i - 1; j >= 0; j--) { \
+ QString _tmps2 = QString::fromLocal8Bit(recent[j]); \
+ if(_tmps2 == _tmps) { \
+ found = true; \
+ break; \
+ } \
+ } \
+ if(!found) { \
+ list << _tmps; \
+ } \
+ } \
+ } \
+ } \
+ }
#endif
#ifndef SETUP_HISTORY
}
}
-void Uo_MainWindowBase::do_update_floppy_history(int drive, QStringList lst)
+void Ui_MainWindowBase::do_update_floppy_history(int drive, QStringList lst)
{
if((drive < 0) || (drive >= using_flags->get_max_drive())) {
- if(menu_fds[drv] != nullptr) {
- menu_fds[drv]->do_update_histories(lst);
+ if(menu_fds[drive] != nullptr) {
+ menu_fds[drive]->do_update_histories(lst);
}
}
}
-void Uo_MainWindowBase::do_insert_floppy_history(int drive, QString path)
+void Ui_MainWindowBase::do_insert_floppy_history(int drive, QString path)
{
if((drive < 0) || (drive >= using_flags->get_max_drive())) {
- if(menu_fds[drv] != nullptr) {
- menu_fds[drv]->do_update_histories(lst);
+ if(menu_fds[drive] != nullptr) {
+ menu_fds[drive]->do_insert_history(path);
}
}
}
return (Sint16 *)vm->create_sound(extra_frames);
}
-void OSD_BASE::string_message_to_binary(int media_type, int drive, int message_type, _TCHAR* message)
+void OSD_BASE::string_message_from_emu(EMU_MEDIA_TYPE::type_t media_type, int drive, EMU_MESSAGE_TYPE::type_t message_type, _TCHAR* message)
{
+// switch(media_type) {
+// case EMU_MEDIA_TYPE::BINARY:
+// }
}
-void OSD_BASE::string_message_from_emu(int media_type, int drive, int message_type, _TCHAR* message)
+
+void OSD_BASE::int_message_from_emu(EMU_MEDIA_TYPE::type_t media_type, int drive, EMU_MESSAGE_TYPE::type_t message_type, int64_t data)
{
- switch(media_type) {
- case EMU_MEDIA_TYPE::BINARY:
- }
+// switch(media_type) {
+// case EMU_MEDIA_TYPE::BINARY:
+// }
}
#define SOCKET_BUFFER_MAX 0x100000
#include "../config.h"
#include "osd_types.h"
+// For UIs
+#include "osdcall_types.h"
#define N_MAX_BUTTONS 128
void finish_waiting_in_debugger();
void process_waiting_in_debugger();
+ // Messaging wrapper from EMU:: to OSD::
+ void __FASTCALL string_message_from_emu(EMU_MEDIA_TYPE::type_t media_type, int drive, EMU_MESSAGE_TYPE::type_t message_type, _TCHAR* message);
+ void __FASTCALL int_message_from_emu(EMU_MEDIA_TYPE::type_t media_type, int drive, EMU_MESSAGE_TYPE::type_t message_type, int64_t data);
+
public slots:
void enable_mouse();
void disable_mouse();
void do_set_host_sound_output_device(QString device_name);
void do_update_master_volume(int level);
- // Messaging wrapper from EMU:: to OSD::
- void __FASTCALL string_message_from_emu(EMU_MEDIA_TYPE media_type, int drive, EMU_MESSAGE_TYPE message_type, _TCHAR* message);
- void __FASTCALL int_message_from_emu(EMU_MEDIA_TYPE media_type, int drive, EMU_MESSAGE_TYPE message_type, int64_t data);
signals:
int sig_update_screen(void *, bool);
int sig_save_screen(const char *);
int sig_notify_error_virtual_media(int type, int drive, int64_t status);
int sig_notify_select_d88(int drive, int cur_bank);
int sig_notify_update_d88_list(int drive, int bank_num, QStringList names);
- int sig_notify_clear_b77_list(int drive, int cur_bank);
+ int sig_notify_clear_d88_list(int drive, int cur_bank);
int sig_notify_select_b77(int drive, int cur_bank);
int sig_notify_update_b77_list(int drive, int bank_num, QStringList names);