OSDN Git Service

[UI][EMU][Qt][WIP] TRY:Improving signal sequence.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Wed, 1 Feb 2023 04:52:01 +0000 (13:52 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Wed, 1 Feb 2023 04:52:01 +0000 (13:52 +0900)
source/src/qt/gui/menu_disk.cpp
source/src/qt/gui/menu_disk.h
source/src/qt/gui/menu_metaclass.cpp
source/src/qt/gui/menu_metaclass.h

index 24e8fcf..85729fb 100644 (file)
@@ -47,6 +47,15 @@ void Menu_FDClass::do_set_create_mask(quint8 type, bool flag)
        }
 }
 
+void Menu_FDClass::do_open_dialog()
+{
+       CSP_DiskDialog *dlg = new CSP_DiskDialog(this);
+       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)));
+       emit sig_show();
+}
 void Menu_FDClass::do_open_dialog_create_fd()
 {
        CSP_CreateDiskDialog dlg(type_mask);
@@ -192,8 +201,10 @@ void Menu_FDClass::connect_menu_device_sub(void)
                        this, SLOT(do_set_disk_count_immediate(bool)));
 
        connect(action_create_fd, SIGNAL(triggered()), this, SLOT(do_open_dialog_create_fd()));
-       
+
+       // Need Change
        connect(this, SIGNAL(sig_open_media(int, QString)), p_wid, SLOT(_open_disk(int, QString)));
+
        connect(this, SIGNAL(sig_eject_media(int)), p_wid, SLOT(eject_fd(int)));
        
        connect(this, SIGNAL(sig_write_protect_media(int, bool)), p_wid, SLOT(write_protect_fd(int, bool)));    
index 6aa4e0b..54c7c2f 100644 (file)
@@ -25,13 +25,14 @@ protected:
 public:
        Menu_FDClass(QMenuBar *root_entry, QString desc, std::shared_ptr<USING_FLAGS> p, QWidget *parent = 0, int drv = 0, int base_drv = 1);
        ~Menu_FDClass();
-       void create_pulldown_menu_device_sub();
-       void connect_menu_device_sub(void);
-       void retranslate_pulldown_menu_device_sub(void);
+       void create_pulldown_menu_device_sub() override;
+       void connect_menu_device_sub(void) override;
+       void retranslate_pulldown_menu_device_sub(void) override;
 
 public slots:
        void do_set_create_mask(quint8 type, bool flag);
        
+       void do_open_dialog(void) override;
        void do_open_dialog_create_fd();
        void do_create_media(quint8 media_type, QString name);
        
index cc2cca8..8a9224d 100644 (file)
@@ -212,6 +212,12 @@ void Menu_MetaClass::do_finish(int i)
 
 void Menu_MetaClass::do_open_dialog()
 {
+       CSP_DiskDialog *dlg = new CSP_DiskDialog(this);
+       do_open_dialog_common(dlg);
+       emit sig_show();
+}      
+void Menu_MetaClass::do_open_dialog_common(CSP_DiskDialog* dlg)
+{
        // ToDo : Load State of Qt.
        if(initial_dir.isEmpty()) { 
                QDir dir;
@@ -220,7 +226,7 @@ void Menu_MetaClass::do_open_dialog()
                strncpy(app, initial_dir.toLocal8Bit().constData(), PATH_MAX - 1);
                initial_dir = QString::fromLocal8Bit(get_parent_dir(app));
        }
-       CSP_DiskDialog *dlg = new CSP_DiskDialog(this);
+
        dlg->setOption(QFileDialog::ReadOnly, false);
        dlg->setOption(QFileDialog::DontUseNativeDialog, true);
        //dlg->setAcceptMode(QFileDialog::AcceptSave);
@@ -239,11 +245,9 @@ void Menu_MetaClass::do_open_dialog()
                tmps = tmps + QString::fromUtf8(" ") + this->title();
        }
        dlg->setWindowTitle(tmps);
-       
 
        dlg->setModal(false);
 
-
        connect(dlg, SIGNAL(fileSelected(QString)), dlg->param, SLOT(_open_disk(QString))); 
        connect(dlg->param, SIGNAL(sig_open_disk(int, QString)), this, SLOT(do_open_media(int, QString)));
        connect(dlg, SIGNAL(accepted()), this, SLOT(do_close_window()), Qt::QueuedConnection); 
@@ -258,7 +262,6 @@ void Menu_MetaClass::do_open_dialog()
        //dlg->open();
        //dlg->show();
        //dlg->exec();
-       emit sig_show();
        return;
 }
 
index 967f22f..f01874c 100644 (file)
@@ -88,6 +88,7 @@ protected:
        
        void create_pulldown_menu_sub(void);
        void retranslate_pulldown_menu_sub(void);
+       void do_open_dialog_common(CSP_DiskDialog* dlg);
   
        QString window_title;
        QString initial_dir;
@@ -122,7 +123,7 @@ public slots:
        void do_write_unprotect_media(void);
        void do_add_media_extension(QString ext, QString description);
        void do_set_initialize_directory(const char *dir);
-       void do_open_dialog(void);
+       virtual void do_open_dialog(void);
        void do_clear_inner_media(void);
        void do_select_inner_media(int num);
        void do_update_inner_media(QStringList lst, int num);