OSDN Git Service

[UI][Qt] Move drive status from status-bar to right dock.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Mon, 20 Mar 2017 10:01:52 +0000 (19:01 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Mon, 20 Mar 2017 10:01:52 +0000 (19:01 +0900)
source/src/qt/CMakeLists.txt
source/src/qt/avio/CMakeLists.txt
source/src/qt/common/emu_thread.cpp
source/src/qt/common/qt_utils.cpp
source/src/qt/gui/CMakeLists.txt
source/src/qt/gui/display_statusbar.cpp
source/src/qt/gui/dock_disks.cpp [new file with mode: 0644]
source/src/qt/gui/dock_disks.h [new file with mode: 0644]
source/src/qt/gui/emu_thread_tmpl.h
source/src/qt/gui/mainwidget_base.h
source/src/qt/gui/menu_main.cpp

index 6744d67..40ca770 100644 (file)
@@ -61,8 +61,8 @@ target_link_libraries(CSPosd PUBLIC
          )
   
   set_target_properties(CSPosd PROPERTIES 
-     SOVERSION 2.6.2
-     VERSION 2.6.2
+     SOVERSION 2.6.3
+     VERSION 2.6.3
   )
   INSTALL(TARGETS CSPosd DESTINATION ${LIBCSP_INSTALL_DIR})
 endif()
index af8bbb6..71eccfb 100644 (file)
@@ -66,8 +66,8 @@ target_link_libraries(CSPavio PUBLIC
          )
 
 set_target_properties(CSPavio PROPERTIES 
-                            SOVERSION 2.6.1
-                            VERSION 2.6.1
+                            SOVERSION 2.6.2
+                            VERSION 2.6.2
                             )
 INSTALL(TARGETS CSPavio DESTINATION ${LIBCSP_INSTALL_DIR})
 endif()
index df5c8ec..c7045ff 100644 (file)
@@ -15,6 +15,7 @@
 #include <SDL.h>
 
 #include "emu_thread.h"
+#include "../gui/dock_disks.h"
 
 #include "qt_gldraw.h"
 #include "csp_logger.h"
@@ -121,8 +122,8 @@ void EmuThreadClass::get_fd_string(void)
                                } else {
                                        alamp = QString::fromUtf8("○ ");
                                }
-                               tmpstr = QString::fromUtf8("FD");
-                               tmpstr = alamp + tmpstr + QString::number(i) + QString::fromUtf8(":");
+                               tmpstr = alamp;
+                               tmpstr = tmpstr + QString::fromUtf8(" ");
                                if(emu->d88_file[i].bank_num > 0) {
                                        iname = QString::fromUtf8(emu->d88_file[i].disk_name[emu->d88_file[i].cur_bank]);
                                } else {
@@ -130,11 +131,10 @@ void EmuThreadClass::get_fd_string(void)
                                }
                                tmpstr = tmpstr + iname;
                        } else {
-                               tmpstr = QString::fromUtf8("× FD") + QString::number(i) + QString::fromUtf8(":");
-                               tmpstr = tmpstr + QString::fromUtf8(" ");
+                               tmpstr = QString::fromUtf8("× ");
                        }
                        if(tmpstr != fd_text[i]) {
-                               emit sig_change_osd_fd(i, tmpstr);
+                               emit sig_change_osd(CSP_DockDisks_Domain_FD, i, tmpstr);
                                fd_text[i] = tmpstr;
                        }
                }
@@ -158,16 +158,15 @@ void EmuThreadClass::get_qd_string(void)
                        } else {
                                alamp = QString::fromUtf8("○ ");
                        }
-                       tmpstr = QString::fromUtf8("QD");
-                       tmpstr = alamp + tmpstr + QString::number(i) + QString::fromUtf8(":");
+                       tmpstr = alamp;
+                       tmpstr = tmpstr + QString::fromUtf8(" ");
                        iname = QString::fromUtf8("*Inserted*");
                        tmpstr = tmpstr + iname;
                } else {
-                       tmpstr = QString::fromUtf8("× QD") + QString::number(i) + QString::fromUtf8(":");
-                       tmpstr = tmpstr + QString::fromUtf8(" ");
+                       tmpstr = QString::fromUtf8("× ");
                }
                if(tmpstr != qd_text[i]) {
-                       emit sig_change_osd_qd(i, tmpstr);
+                       emit sig_change_osd(CSP_DockDisks_Domain_QD, i, tmpstr);
                        qd_text[i] = tmpstr;
                }
        }
@@ -185,10 +184,10 @@ void EmuThreadClass::get_tape_string()
                        tmpstr = QString::fromUtf8(ts);
                }
        } else {
-               tmpstr = QString::fromUtf8("EMPTY");
+               tmpstr = QString::fromUtf8("   EMPTY   ");
        }
        if(tmpstr != cmt_text) {
-               emit sig_change_osd_cmt(tmpstr);
+               emit sig_change_osd(CSP_DockDisks_Domain_CMT, 0, tmpstr);
                cmt_text = tmpstr;
        }
 #endif
@@ -204,7 +203,7 @@ void EmuThreadClass::get_cd_string(void)
                tmpstr = QString::fromUtf8("Not Inserted");
        }
        if(tmpstr != cdrom_text) {
-               emit sig_change_osd_cdrom(tmpstr);
+               emit sig_change_osd(CSP_DockDisks_Domain_CD, 0, tmpstr);
                cdrom_text = tmpstr;
        }
 #endif
@@ -220,14 +219,13 @@ void EmuThreadClass::get_bubble_string(void)
        for(i = 0; i < using_flags->get_max_bubble() ; i++) {
                if(p_emu->is_bubble_casette_inserted(i)) {
                        alamp = QString::fromUtf8("● ");
-                       tmpstr = QString::fromUtf8("BUB");
-                       tmpstr = alamp + tmpstr + QString::number(i) + QString::fromUtf8(":");
+                       tmpstr = alamp + QString::fromUtf8(" ");
                } else {
-                       tmpstr = QString::fromUtf8("× BUB") + QString::number(i) + QString::fromUtf8(":");
+                       tmpstr = QString::fromUtf8("×");
                        tmpstr = tmpstr + QString::fromUtf8(" ");
                }
                if(tmpstr != bubble_text[i]) {
-                       emit sig_change_osd_bubble(i, tmpstr);
+                       emit sig_change_osd(CSP_DockDisks_Domain_Bubble, i, tmpstr);
                        bubble_text[i] = tmpstr;
                }
        }
index 3744ff3..58de101 100644 (file)
@@ -143,7 +143,7 @@ void Ui_MainWindow::LaunchEmuThread(void)
        connect(this, SIGNAL(sig_open_disk(int, QString, int)), hRunEmu, SLOT(do_open_disk(int, QString, int)));
        connect(this, SIGNAL(sig_close_disk(int)), hRunEmu, SLOT(do_close_disk(int)));
        connect(hRunEmu, SIGNAL(sig_update_recent_disk(int)), this, SLOT(do_update_recent_disk(int)));
-       connect(hRunEmu, SIGNAL(sig_change_osd_fd(int, QString)), this, SLOT(do_change_osd_fd(int, QString)));
+       //connect(hRunEmu, SIGNAL(sig_change_osd_fd(int, QString)), this, SLOT(do_change_osd_fd(int, QString)));
        drvs = 0;
 # if defined(USE_FD1)
        drvs = 1;
@@ -179,7 +179,7 @@ void Ui_MainWindow::LaunchEmuThread(void)
        connect(this, SIGNAL(sig_play_tape(QString)), hRunEmu, SLOT(do_play_tape(QString)));
        connect(this, SIGNAL(sig_rec_tape(QString)),  hRunEmu, SLOT(do_rec_tape(QString)));
        connect(this, SIGNAL(sig_close_tape(void)),   hRunEmu, SLOT(do_close_tape(void)));
-       connect(hRunEmu, SIGNAL(sig_change_osd_cmt(QString)), this, SLOT(do_change_osd_cmt(QString)));
+       //connect(hRunEmu, SIGNAL(sig_change_osd_cmt(QString)), this, SLOT(do_change_osd_cmt(QString)));
 # if defined(USE_TAPE_BUTTON)
        connect(this, SIGNAL(sig_cmt_push_play(void)), hRunEmu, SLOT(do_cmt_push_play(void)));
        connect(this, SIGNAL(sig_cmt_push_stop(void)), hRunEmu, SLOT(do_cmt_push_stop(void)));
@@ -193,7 +193,7 @@ void Ui_MainWindow::LaunchEmuThread(void)
        connect(this, SIGNAL(sig_write_protect_quickdisk(int, bool)), hRunEmu, SLOT(do_write_protect_quickdisk(int, bool)));
        connect(this, SIGNAL(sig_open_quickdisk(int, QString)), hRunEmu, SLOT(do_open_quickdisk(int, QString)));
        connect(this, SIGNAL(sig_close_quickdisk(int)), hRunEmu, SLOT(do_close_quickdisk(int)));
-       connect(hRunEmu, SIGNAL(sig_change_osd_qd(int, QString)), this, SLOT(do_change_osd_qd(int, QString)));
+       //connect(hRunEmu, SIGNAL(sig_change_osd_qd(int, QString)), this, SLOT(do_change_osd_qd(int, QString)));
 #endif
 #if defined(USE_CART1)
        connect(this, SIGNAL(sig_open_cart(int, QString)), hRunEmu, SLOT(do_open_cart(int, QString)));
@@ -202,7 +202,7 @@ void Ui_MainWindow::LaunchEmuThread(void)
 #if defined(USE_COMPACT_DISC)
        connect(this, SIGNAL(sig_open_cdrom(QString)), hRunEmu, SLOT(do_open_cdrom(QString)));
        connect(this, SIGNAL(sig_close_cdrom()), hRunEmu, SLOT(do_eject_cdrom()));
-       connect(hRunEmu, SIGNAL(sig_change_osd_cdrom(QString)), this, SLOT(do_change_osd_cdrom(QString)));
+       //connect(hRunEmu, SIGNAL(sig_change_osd_cdrom(QString)), this, SLOT(do_change_osd_cdrom(QString)));
 #endif 
 #if defined(USE_LASER_DISC)
        connect(this, SIGNAL(sig_open_laserdisc(QString)), hRunEmu, SLOT(do_open_laser_disc(QString)));
@@ -217,7 +217,7 @@ void Ui_MainWindow::LaunchEmuThread(void)
        connect(this, SIGNAL(sig_open_bubble(int, QString, int)), hRunEmu, SLOT(do_open_bubble_casette(int, QString, int)));
        connect(this, SIGNAL(sig_close_bubble(int)), hRunEmu, SLOT(do_close_bubble_casette(int)));
        connect(hRunEmu, SIGNAL(sig_update_recent_bubble(int)), this, SLOT(do_update_recent_bubble(int)));
-       connect(hRunEmu, SIGNAL(sig_change_osd_bubble(int, QString)), this, SLOT(do_change_osd_bubble(int, QString)));
+       //connect(hRunEmu, SIGNAL(sig_change_osd_bubble(int, QString)), this, SLOT(do_change_osd_bubble(int, QString)));
        drvs = 0;
 # if defined(USE_BUBBLE1)
        drvs = 1;
@@ -234,9 +234,12 @@ void Ui_MainWindow::LaunchEmuThread(void)
        }
 #endif
        
+       connect(hRunEmu, SIGNAL(sig_change_osd(int, int, QString)), (QObject *)driveData, SLOT(updateMessage(int, int, QString)));
        connect(this, SIGNAL(quit_emu_thread()), hRunEmu, SLOT(doExit()));
        connect(hRunEmu, SIGNAL(sig_mouse_enable(bool)),
                        this, SLOT(do_set_mouse_enable(bool)));
+
+       
 #ifdef USE_TAPE_BUTTON
        hRunEmu->set_tape_play(false);
 #endif
index 1adb971..60dd096 100644 (file)
@@ -35,6 +35,8 @@ set(s_qt_gui_headers
          tab_movie_general.h
          tab_movie_h264.h
          tab_movie_mpeg4.h
+
+         dock_disks.h
          
          draw_thread.h
          joy_thread.h
@@ -92,6 +94,8 @@ set(s_qt_gui_srcs
          tab_movie_general.cpp
          tab_movie_h264.cpp
          tab_movie_mpeg4.cpp
+
+         dock_disks.cpp
          
          draw_thread.cpp
          joy_thread.cpp
@@ -173,8 +177,8 @@ target_link_libraries(CSPgui PUBLIC
          )
 
 set_target_properties(CSPgui PROPERTIES 
-                            SOVERSION 2.7.2
-                            VERSION 2.7.2
+                            SOVERSION 2.8.0
+                            VERSION 2.8.0
                             )
 INSTALL(TARGETS CSPgui DESTINATION ${LIBCSP_INSTALL_DIR})
 endif()
index 6546d94..0524a77 100644 (file)
 
 int Ui_MainWindowBase::Calc_OSD_Wfactor()
 {
-       float wfactor;
-       if(using_flags->is_use_fd() && using_flags->is_use_qd() && using_flags->is_use_tape()) {
-               wfactor = (1280.0 - 400.0 - 100.0 - 100.0) / ((float)using_flags->get_max_qd() + (float)using_flags->get_max_drive());
-       } else  if(using_flags->is_use_fd() && using_flags->is_use_bubble() && using_flags->is_use_tape()) {
-               wfactor = (1280.0 - 400.0 - 100.0 - 100.0 - 100.0 * (float)using_flags->get_max_bubble()) /
-                       (float)using_flags->get_max_drive();
-       } else if(using_flags->is_use_fd() && using_flags->is_use_tape()) {
-               wfactor = (1280.0 - 400.0 - 100.0 - 100.0) / (float)using_flags->get_max_drive();
-       } else if(using_flags->is_use_qd() && using_flags->is_use_tape()) {
-               wfactor = (1280.0 - 400.0 - 100.0 - 100.0) / (float)using_flags->get_max_qd();
-       } else if(using_flags->is_use_fd()) {
-               wfactor = (1280.0 - 400.0 - 100.0) / (float)using_flags->get_max_drive();
-       } else if(using_flags->is_use_fd()) {   
-               wfactor = (1280.0 - 400.0 - 100.0) / (float)using_flags->get_max_qd();
-       } else if(using_flags->is_use_fd() && using_flags->is_use_qd()) {
-               wfactor = (1280.0 - 400.0 - 100.0) / ((float)using_flags->get_max_qd() + (float)using_flags->get_max_drive());
-       } else {
-               wfactor = 0.0;
-       }
+       float wfactor = 0.0;
        if(wfactor < 0.0) wfactor = 0.0;
        return (int)wfactor;
 }
@@ -58,7 +40,6 @@ int Ui_MainWindowBase::Calc_OSD_Wfactor()
 void Ui_MainWindowBase::initStatusBar(void)
 {
        int i;
-       int wfactor;
        statusUpdateTimer = new QTimer;
        messagesStatusBar = new QLabel;
        //dummyStatusArea1 = new QWidget;
@@ -69,80 +50,19 @@ void Ui_MainWindowBase::initStatusBar(void)
        //   QHBoxLayout *layout = new QHBoxLayout();
        
        //statusbar->addWidget(layout, 0);
-       messagesStatusBar->setFixedWidth(400);
+       messagesStatusBar->setFixedWidth(600);
        statusbar->addPermanentWidget(messagesStatusBar, 0);
        messagesStatusBar->setStyleSheet("font: 12pt \"Sans\";");
        dummyStatusArea1 = new QWidget;
        statusbar->addPermanentWidget(dummyStatusArea1, 1);
        
-       wfactor = Calc_OSD_Wfactor();
-       if(using_flags->is_use_fd()) {
-               for(i = 0; i < using_flags->get_max_drive(); i++) osd_str_fd[i].clear();
-       }
-       if(using_flags->is_use_qd()) {
-               for(i = 0; i < using_flags->get_max_qd(); i++) osd_str_qd[i].clear();
-       }
-       if(using_flags->is_use_tape()) {
-               osd_str_cmt.clear();
-       }
-       if(using_flags->is_use_compact_disc()) {
-               osd_str_cdrom.clear();
-       }
-       if(using_flags->is_use_laser_disc()) {
-               osd_str_laserdisc.clear();
-       }
-       if(using_flags->is_use_bubble()) {
-               for(i = 0; i < using_flags->get_max_bubble(); i++) osd_str_bubble[i].clear();
-       }
+       //wfactor = Calc_OSD_Wfactor();
        osd_led_data = 0x00000000;
 
        tmps_n = QString::fromUtf8("font: ");
        n_s.setNum(12);
        tmps_n = tmps_n + n_s + QString::fromUtf8("pt \"Sans\";");
-       if(using_flags->is_use_fd()) {
-               for(i = 0; i < using_flags->get_max_drive(); i++) { // Will Fix
-                       fd_StatusBar[i] = new QLabel;
-                       fd_StatusBar[i]->setStyleSheet(tmps_n);
-                       fd_StatusBar[i]->setFixedWidth((wfactor > 200) ? 200 : wfactor);
-                       //      fd_StatusBar[i]->setAlignment(Qt::AlignRight);
-                       statusbar->addPermanentWidget(fd_StatusBar[i]);
-               }
-       }
-       if(using_flags->is_use_qd()) {
-               for(i = 0; i < using_flags->get_max_qd(); i++) {
-                       qd_StatusBar[i] = new QLabel;
-                       qd_StatusBar[i]->setStyleSheet(tmps_n);
-                       qd_StatusBar[i]->setFixedWidth((wfactor > 150) ? 150 : wfactor);
-                       //     qd_StatusBar[i]->setAlignment(Qt::AlignRight);
-                       statusbar->addPermanentWidget(qd_StatusBar[i]);
-               }
-       }
-       if(using_flags->is_use_bubble()) {
-               for(i = 0; i < using_flags->get_max_bubble(); i++) {
-                       bubble_StatusBar[i] = new QLabel;
-                       bubble_StatusBar[i]->setFixedWidth(100);
-                       bubble_StatusBar[i]->setStyleSheet(tmps_n);
-                       statusbar->addPermanentWidget(bubble_StatusBar[i]);
-               }
-       }
-       if(using_flags->is_use_tape()) {
-               cmt_StatusBar = new QLabel;
-               cmt_StatusBar->setFixedWidth(100);
-               cmt_StatusBar->setStyleSheet(tmps_n);;
-               statusbar->addPermanentWidget(cmt_StatusBar);
-       }
-       if(using_flags->is_use_compact_disc()) {
-               cdrom_StatusBar = new QLabel;
-               cdrom_StatusBar->setFixedWidth(100);
-               cdrom_StatusBar->setStyleSheet(tmps_n);
-               statusbar->addPermanentWidget(cdrom_StatusBar);
-       }
-       if(using_flags->is_use_laser_disc()) {
-               laserdisc_StatusBar = new QLabel;
-               laserdisc_StatusBar->setFixedWidth(100);
-               laserdisc_StatusBar->setStyleSheet(tmps_n);
-               statusbar->addPermanentWidget(laserdisc_StatusBar);
-       }
+       
        dummyStatusArea2 = new QWidget;
        dummyStatusArea2->setFixedWidth(100);
        if(using_flags->get_use_led_device() > 0) {
@@ -191,19 +111,17 @@ void Ui_MainWindowBase::initStatusBar(void)
 
 void Ui_MainWindowBase::resize_statusbar(int w, int h)
 {
-       int wfactor;
-       QSize nowSize;
+       //QSize nowSize;
        //double height, width;
        double scaleFactor;
        int ww;
        int pt;
        int i;
-       int qd_width, fd_width;
        int sfactor = 0;;
        QString n_s;
        QString tmps;
 
-       nowSize = messagesStatusBar->size();
+       //nowSize = messagesStatusBar->size();
        //height = (double)(nowSize.height());
        //width  = (double)(nowSize.width());
        scaleFactor = (double)w / 1280.0;
@@ -211,52 +129,14 @@ void Ui_MainWindowBase::resize_statusbar(int w, int h)
        statusbar->setFixedWidth(w);
        pt = (int)(14.0 * scaleFactor);
        if(pt < 4) pt = 4;
-       sfactor = (int)(400.0 * scaleFactor);
-       messagesStatusBar->setFixedWidth((int)(400.0 * scaleFactor));
+       sfactor = (int)(600.0 * scaleFactor);
+       messagesStatusBar->setFixedWidth((int)(600.0 * scaleFactor));
        
        tmps = QString::fromUtf8("font: ");
        n_s.setNum(pt);
        tmps = tmps + n_s + QString::fromUtf8("pt \"Sans\";");
        messagesStatusBar->setStyleSheet(tmps);
    
-       wfactor = Calc_OSD_Wfactor();
-       
-       fd_width = wfactor;
-       qd_width = wfactor;
-       if(fd_width > 200) fd_width = 200;
-       if(fd_width < 50) fd_width = 50;
-       if(qd_width > 150) qd_width = 150;
-       if(qd_width < 50) qd_width = 50;
-
-       if(using_flags->is_use_fd()) {
-               ww = (int)(scaleFactor * (double)fd_width);
-               for(i = 0; i < using_flags->get_max_drive(); i++) { // Will Fix
-                       fd_StatusBar[i]->setStyleSheet(tmps);
-                       fd_StatusBar[i]->setFixedWidth(ww);
-                       sfactor += ww;
-               }
-       }
-       if(using_flags->is_use_qd()) {
-               ww = (int)(scaleFactor * (double)fd_width);
-               for(i = 0; i < using_flags->get_max_qd(); i++) { // Will Fix
-                       qd_StatusBar[i]->setStyleSheet(tmps);
-                       qd_StatusBar[i]->setFixedWidth(ww);
-                       sfactor += ww;
-               }
-       }
-       if(using_flags->is_use_tape()) {
-               cmt_StatusBar->setFixedWidth((int)(100.0 * scaleFactor));
-               cmt_StatusBar->setStyleSheet(tmps);
-               sfactor += (int)(100.0 * scaleFactor);
-       }
-       if(using_flags->is_use_bubble()) {
-               ww = (int)(scaleFactor * 100.0);
-               for(i = 0; i < using_flags->get_max_bubble(); i++) { // Will Fix
-                       bubble_StatusBar[i]->setStyleSheet(tmps);
-                       bubble_StatusBar[i]->setFixedWidth(ww);
-                       sfactor += ww;
-               }
-       }
        if(using_flags->get_use_led_device() > 0) {
                led_graphicsView->setFixedWidth((int)(100.0 * scaleFactor));
        }
@@ -326,66 +206,9 @@ void Ui_MainWindowBase::redraw_leds(void)
                led_graphicsView->setScene(led_gScene);
 }      
 
-void Ui_MainWindowBase::do_change_osd_qd(int drv, QString tmpstr)
-{
-       if((drv < 0) || (drv > using_flags->get_max_qd())) return;
-       osd_str_qd[drv] = tmpstr;
-}
-
-void Ui_MainWindowBase::do_change_osd_fd(int drv, QString tmpstr)
-{
-       if((drv < 0) || (drv >= using_flags->get_max_drive())) return;
-       osd_str_fd[drv] = tmpstr;
-}
-void Ui_MainWindowBase::do_change_osd_cdrom(QString tmpstr)
-{
-       osd_str_cdrom = tmpstr;
-}
-void Ui_MainWindowBase::do_change_osd_laserdisc(QString tmpstr)
-{
-       osd_str_laserdisc = tmpstr;
-}
-void Ui_MainWindowBase::do_change_osd_cmt(QString tmpstr)
-{
-       osd_str_cmt = tmpstr;
-}
-void Ui_MainWindowBase::do_change_osd_bubble(int drv, QString tmpstr)
-{
-       if((drv < 0) || (drv > using_flags->get_max_bubble())) return;
-       osd_str_bubble[drv] = tmpstr;
-}
-
-
 void Ui_MainWindowBase::redraw_status_bar(void)
 {
-       //int access_drv;
-       //int tape_counter;
        int i;
-
-       if(using_flags->is_use_fd()) {
-               for(i = 0; i < using_flags->get_max_drive(); i++) {        
-                       if(osd_str_fd[i] != fd_StatusBar[i]->text()) fd_StatusBar[i]->setText(osd_str_fd[i]);
-               }
-       }
-       if(using_flags->is_use_qd()) {
-               for(i = 0; i < using_flags->get_max_qd(); i++) {           
-                       if(osd_str_qd[i] != qd_StatusBar[i]->text()) qd_StatusBar[i]->setText(osd_str_qd[i]);
-               }
-       }
-       if(using_flags->is_use_tape()) {
-               if(osd_str_cmt != cmt_StatusBar->text()) cmt_StatusBar->setText(osd_str_cmt);
-       }
-       if(using_flags->is_use_compact_disc()) {
-               if(osd_str_cdrom != cdrom_StatusBar->text()) cdrom_StatusBar->setText(osd_str_cdrom);
-       }
-       if(using_flags->is_use_laser_disc()) {
-               if(osd_str_laserdisc != laserdisc_StatusBar->text()) laserdisc_StatusBar->setText(osd_str_laserdisc);
-       }
-       if(using_flags->is_use_bubble()) {
-               for(i = 0; i < using_flags->get_max_bubble(); i++) {
-               if(osd_str_bubble[i] != bubble_StatusBar[i]->text()) bubble_StatusBar[i]->setText(osd_str_bubble[i]);
-               }
-       }
 }
 
 
diff --git a/source/src/qt/gui/dock_disks.cpp b/source/src/qt/gui/dock_disks.cpp
new file mode 100644 (file)
index 0000000..1f49e70
--- /dev/null
@@ -0,0 +1,303 @@
+
+#include <QApplication>
+#include <QVBoxLayout>
+#include <QLabel>
+#include <QPixmap>
+#include <QDockWidget>
+
+#include "dock_disks.h"
+
+#define NEW_LABELS(lim,_l,name,_p,mes,zero) {  \
+               QString tmps, tmpss;                                    \
+               for(int i = 0; i < lim; i++) {                  \
+                       if(zero) {                                                              \
+                               tmpss.setNum(i);                                        \
+                       } else {                                                                \
+                               tmpss.setNum(i + 1);                            \
+                       }                                                                               \
+                       tmps = name;                                                    \
+                       tmps = tmps + tmpss;                                    \
+                       _l[i] = new QLabel(tmps, this);                 \
+                       _p[i] = new QLabel(mes, this);                  \
+                       _l[i]->setVisible(false);                               \
+                       _p[i]->setVisible(false);                               \
+                       VBox->addWidget(_l[i]);                                 \
+                       VBox->addWidget(_p[i]);                                 \
+               }                                                                                       \
+       }
+
+       
+
+CSP_DockDisks::CSP_DockDisks(QWidget *parent, Qt::WindowFlags flags) :  QDockWidget(parent, flags)
+{
+       QString ns, ms;
+       QWidget *Widget = new QWidget(this);
+       VBox = new QVBoxLayout(Widget);
+       VBox->setAlignment(Qt::AlignTop);
+       
+       ns = QApplication::translate("DockDisks", "Binary", 0);
+       ms =  QApplication::translate("DockDisks", "*EMPTY*", 0);
+       NEW_LABELS(8,lBinary,ns,pBinary,ms,false);
+       
+       ns = QApplication::translate("DockDisks", "FD", 0);
+       ms =  QApplication::translate("DockDisks", "     *EMPTY*      ", 0);
+       NEW_LABELS(8,lFloppyDisk,ns,pFloppyDisk,ms,true);
+       
+       ns = QApplication::translate("DockDisks", "CMT", 0);
+       ms =  QApplication::translate("DockDisks", "     *EJECT*      ", 0);
+       NEW_LABELS(2,lCMT,ns,pCMT,ms,false);
+       
+       ns = QApplication::translate("DockDisks", "Bubble", 0);
+       ms =  QApplication::translate("DockDisks", "*EMPTY*", 0);
+       NEW_LABELS(8,lBubble,ns,pBubble,ms,false);
+       
+       ns = QApplication::translate("DockDisks", "Cartridge", 0);
+       ms =  QApplication::translate("DockDisks", "*EMPTY*", 0);
+       NEW_LABELS(8,lCart,ns,pCart,ms,false);
+       
+       ns = QApplication::translate("DockDisks", "Quick Disk", 0);
+       ms =  QApplication::translate("DockDisks", "*EMPTY*", 0);
+       NEW_LABELS(8,lQuickDisk,ns,pQuickDisk,ms,false);
+
+       ns = QApplication::translate("DockDisks", "CD", 0);
+       ms =  QApplication::translate("DockDisks", "*EJECT*", 0);
+       NEW_LABELS(2,lCompactDisc,ns,pCompactDisc,ms,false);
+       
+       ns = QApplication::translate("DockDisks", "HDD", 0);
+       ms =  QApplication::translate("DockDisks", "*EMPTY*", 0);
+       NEW_LABELS(8,lHardDisk,ns,pHardDisk,ms,true);
+       
+       ns = QApplication::translate("DockDisks", "Laser Disc", 0);
+       ms =  QApplication::translate("DockDisks", "*EMPTY*", 0);
+       NEW_LABELS(2,lLaserDisc,ns,pLaserDisc,ms,false);
+       
+       Widget->setLayout(VBox);
+       this->setWidget(Widget);
+}
+
+
+                       
+CSP_DockDisks::~CSP_DockDisks()
+{
+}
+
+void CSP_DockDisks::updateLabel(int dom, int localnum, QString str)
+{
+       switch(dom) {
+       case CSP_DockDisks_Domain_Binary:
+               if((localnum < 8) && (localnum >= 0)) {
+                       lBinary[localnum]->setText(str);
+               }
+               break;
+       case CSP_DockDisks_Domain_Bubble:
+               if((localnum < 8) && (localnum >= 0)) {
+                       lBubble[localnum]->setText(str);
+               }
+               break;
+       case CSP_DockDisks_Domain_Cart:
+               if((localnum < 8) && (localnum >= 0)) {
+                       lCart[localnum]->setText(str);
+               }
+               break;
+       case CSP_DockDisks_Domain_CMT:
+               if((localnum < 2) && (localnum >= 0)) {
+                       lCMT[localnum]->setText(str);
+               }
+               break;
+       case CSP_DockDisks_Domain_CD:
+               if((localnum < 2) && (localnum >= 0)) {
+                       lCompactDisc[localnum]->setText(str);
+               }
+               break;
+       case CSP_DockDisks_Domain_FD:
+               if((localnum < 8) && (localnum >= 0)) {
+                       lFloppyDisk[localnum]->setText(str);
+               }
+               break;
+       case CSP_DockDisks_Domain_HD:
+               if((localnum < 8) && (localnum >= 0)) {
+                       lHardDisk[localnum]->setText(str);
+               }
+               break;
+       case CSP_DockDisks_Domain_LD:
+               if((localnum < 2) && (localnum >= 0)) {
+                       lLaserDisc[localnum]->setText(str);
+               }
+               break;
+       case CSP_DockDisks_Domain_QD:
+               if((localnum < 8) && (localnum >= 0)) {
+                       lQuickDisk[localnum]->setText(str);
+               }
+               break;
+       default:
+               break;
+       }
+}
+
+void CSP_DockDisks::updateMessage(int dom, int localnum, QString str)
+{
+       switch(dom) {
+       case CSP_DockDisks_Domain_Binary:
+               if((localnum < 8) && (localnum >= 0)) {
+                       pBinary[localnum]->setText(str);
+               }
+               break;
+       case CSP_DockDisks_Domain_Bubble:
+               if((localnum < 8) && (localnum >= 0)) {
+                       pBubble[localnum]->setText(str);
+               }
+               break;
+       case CSP_DockDisks_Domain_Cart:
+               if((localnum < 8) && (localnum >= 0)) {
+                       pCart[localnum]->setText(str);
+               }
+               break;
+       case CSP_DockDisks_Domain_CMT:
+               if((localnum < 2) && (localnum >= 0)) {
+                       pCMT[localnum]->setText(str);
+               }
+               break;
+       case CSP_DockDisks_Domain_CD:
+               if((localnum < 2) && (localnum >= 0)) {
+                       pCompactDisc[localnum]->setText(str);
+               }
+               break;
+       case CSP_DockDisks_Domain_FD:
+               if((localnum < 8) && (localnum >= 0)) {
+                       pFloppyDisk[localnum]->setText(str);
+               }
+               break;
+       case CSP_DockDisks_Domain_HD:
+               if((localnum < 8) && (localnum >= 0)) {
+                       pHardDisk[localnum]->setText(str);
+               }
+               break;
+       case CSP_DockDisks_Domain_LD:
+               if((localnum < 2) && (localnum >= 0)) {
+                       pLaserDisc[localnum]->setText(str);
+               }
+               break;
+       case CSP_DockDisks_Domain_QD:
+               if((localnum < 8) && (localnum >= 0)) {
+                       pQuickDisk[localnum]->setText(str);
+               }
+               break;
+       default:
+               break;
+       }
+}
+
+void CSP_DockDisks::setVisible(int dom, int localnum, bool enabled)
+{
+       switch(dom) {
+       case CSP_DockDisks_Domain_Binary:
+               if((localnum < 8) && (localnum >= 0)) {
+                       lBinary[localnum]->setVisible(enabled);
+                       pBinary[localnum]->setVisible(enabled);
+               }
+               break;
+       case CSP_DockDisks_Domain_Bubble:
+               if((localnum < 8) && (localnum >= 0)) {
+                       lBubble[localnum]->setVisible(enabled);
+                       pBubble[localnum]->setVisible(enabled);
+               }
+               break;
+       case CSP_DockDisks_Domain_Cart:
+               if((localnum < 8) && (localnum >= 0)) {
+                       lCart[localnum]->setVisible(enabled);
+                       pCart[localnum]->setVisible(enabled);
+               }
+               break;
+       case CSP_DockDisks_Domain_CMT:
+               if((localnum < 2) && (localnum >= 0)) {
+                       lCMT[localnum]->setVisible(enabled);
+                       pCMT[localnum]->setVisible(enabled);
+               }
+               break;
+       case CSP_DockDisks_Domain_CD:
+               if((localnum < 2) && (localnum >= 0)) {
+                       lCompactDisc[localnum]->setVisible(enabled);
+                       pCompactDisc[localnum]->setVisible(enabled);
+               }
+               break;
+       case CSP_DockDisks_Domain_FD:
+               if((localnum < 8) && (localnum >= 0)) {
+                       lFloppyDisk[localnum]->setVisible(enabled);
+                       pFloppyDisk[localnum]->setVisible(enabled);
+               }
+               break;
+       case CSP_DockDisks_Domain_HD:
+               if((localnum < 8) && (localnum >= 0)) {
+                       lHardDisk[localnum]->setVisible(enabled);
+                       pHardDisk[localnum]->setVisible(enabled);
+               }
+               break;
+       case CSP_DockDisks_Domain_LD:
+               if((localnum < 2) && (localnum >= 0)) {
+                       lLaserDisc[localnum]->setVisible(enabled);
+                       pLaserDisc[localnum]->setVisible(enabled);
+               }
+               break;
+       case CSP_DockDisks_Domain_QD:
+               if((localnum < 8) && (localnum >= 0)) {
+                       lQuickDisk[localnum]->setVisible(enabled);
+                       pQuickDisk[localnum]->setVisible(enabled);
+               }
+               break;
+       default:
+               break;
+       }
+}
+
+void CSP_DockDisks::setPixmap(int dom, int localnum, const QPixmap &pix)
+{
+       switch(dom) {
+       case CSP_DockDisks_Domain_Binary:
+               if((localnum < 8) && (localnum >= 0)) {
+                       pBinary[localnum]->setPixmap(pix);
+               }
+               break;
+       case CSP_DockDisks_Domain_Bubble:
+               if((localnum < 8) && (localnum >= 0)) {
+                       pBubble[localnum]->setPixmap(pix);
+               }
+               break;
+       case CSP_DockDisks_Domain_Cart:
+               if((localnum < 8) && (localnum >= 0)) {
+                       pCart[localnum]->setPixmap(pix);
+               }
+               break;
+       case CSP_DockDisks_Domain_CMT:
+               if((localnum < 2) && (localnum >= 0)) {
+                       pCMT[localnum]->setPixmap(pix);
+               }
+               break;
+       case CSP_DockDisks_Domain_CD:
+               if((localnum < 2) && (localnum >= 0)) {
+                       pCompactDisc[localnum]->setPixmap(pix);
+               }
+               break;
+       case CSP_DockDisks_Domain_FD:
+               if((localnum < 8) && (localnum >= 0)) {
+                       pFloppyDisk[localnum]->setPixmap(pix);
+               }
+               break;
+       case CSP_DockDisks_Domain_HD:
+               if((localnum < 8) && (localnum >= 0)) {
+                       pHardDisk[localnum]->setPixmap(pix);
+               }
+               break;
+       case CSP_DockDisks_Domain_LD:
+               if((localnum < 2) && (localnum >= 0)) {
+                       pLaserDisc[localnum]->setPixmap(pix);
+               }
+               break;
+       case CSP_DockDisks_Domain_QD:
+               if((localnum < 8) && (localnum >= 0)) {
+                       pQuickDisk[localnum]->setPixmap(pix);
+               }
+               break;
+       default:
+               break;
+       }
+}
diff --git a/source/src/qt/gui/dock_disks.h b/source/src/qt/gui/dock_disks.h
new file mode 100644 (file)
index 0000000..273c9b7
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef _CSP_QT_DOCKWIDGET_BASE_H
+#define _CSP_QT_DOCKWIDGET_BASE_H
+
+#include <QObject>
+#include <QDockWidget>
+#include <QIcon>
+#include <QString>
+#include <QStringList>
+#include <QPixmap>
+
+class QLabel;
+
+enum {
+       CSP_DockDisks_Domain_Binary = 0,
+       CSP_DockDisks_Domain_Bubble,
+       CSP_DockDisks_Domain_Cart,
+       CSP_DockDisks_Domain_CMT,
+       CSP_DockDisks_Domain_CD,
+       CSP_DockDisks_Domain_FD,
+       CSP_DockDisks_Domain_HD,
+       CSP_DockDisks_Domain_LD,
+       CSP_DockDisks_Domain_QD,
+};
+       
+QT_BEGIN_NAMESPACE
+class QVBoxLayout;
+
+class CSP_DockDisks : public QDockWidget {
+       Q_OBJECT
+protected:
+       QVBoxLayout *VBox;
+       QLabel *lBinary[8];
+       QLabel *lBubble[8];
+       QLabel *lCart[8];
+       QLabel *lCMT[2];
+       QLabel *lCompactDisc[2];
+       QLabel *lFloppyDisk[8];
+       QLabel *lHardDisk[8];
+       QLabel *lLaserDisc[2];
+       QLabel *lQuickDisk[8];
+       
+public:
+       QLabel *pBinary[8];
+       QLabel *pBubble[8];
+       QLabel *pCart[8];
+       QLabel *pCMT[2];
+       QLabel *pCompactDisc[2];
+       QLabel *pFloppyDisk[8];
+       QLabel *pHardDisk[8];
+       QLabel *pLaserDisc[2];
+       QLabel *pQuickDisk[8];
+       CSP_DockDisks(QWidget *parent, Qt::WindowFlags flags = 0);
+       ~CSP_DockDisks();
+
+public slots:
+       void updateLabel(int dom, int localnum, QString str);
+       void updateMessage(int dom, int localnum, QString str);
+       void setVisible(int dom, int localNum, bool enabled);
+       void setPixmap(int dom, int localNum, const QPixmap &); 
+};
+QT_END_NAMESPACE
+
+#endif
+       
index c1d6810..17a121e 100644 (file)
@@ -207,11 +207,7 @@ signals:
        int sig_check_grab_mouse(bool);
        int sig_mouse_enable(bool);
        int sig_update_recent_disk(int);
-       int sig_change_osd_fd(int, QString);
-       int sig_change_osd_qd(int, QString);
-       int sig_change_osd_cmt(QString);
-       int sig_change_osd_cdrom(QString);
-       int sig_change_osd_laserdisc(QString);
+       int sig_change_osd(int, int, QString);
        int sig_update_recent_bubble(int);
        int sig_change_osd_bubble(int, QString);
        int sig_set_grid_vertical(int, bool);
index dc8562d..3868e59 100644 (file)
@@ -61,6 +61,9 @@ class QWidget;
 class QLabel;
 class QGraphicsEllipseItem;
 class QClipboard;
+class QDockWidget;
+class QHBoxLayout;
+class QVBoxLayout;
 
 class Ui_SoundDialog;
 class GLDrawClass;
@@ -74,6 +77,7 @@ class Menu_BinaryClass;
 class Menu_BubbleClass;
 class Menu_CompactDiscClass;
 class Menu_LaserdiscClass;
+class CSP_DockDisks;
 class MOVIE_SAVER;
 class DLL_PREFIX Ui_MainWindowBase : public QMainWindow
 {
@@ -85,7 +89,9 @@ class DLL_PREFIX Ui_MainWindowBase : public QMainWindow
        QMainWindow *MainWindow;
        QApplication *CoreApplication;
        
-       QWidget *centralwidget;
+       CSP_DockDisks *driveData;
+       //QVBoxLayout *sidebarLayout;
+       
        GLDrawClass *graphicsView;
        QStatusBar  *statusbar;
        QMenuBar    *menubar;
@@ -504,7 +510,6 @@ public slots:
        void OnStartAutoKey(void);
        void OnStopAutoKey(void);
        
-       void do_change_osd_fd(int drv, QString tmpstr);
 
        void eject_cart(int);
        void set_recent_cart(int, int);
@@ -512,12 +517,10 @@ public slots:
        int set_recent_cdrom(int drv, int num);
        void do_eject_cdrom(int drv);
        void do_open_cdrom(int drv, QString path);
-       void do_change_osd_cdrom(QString tmpstr);
 
        int set_recent_laserdisc(int drv, int num); 
        void do_eject_laserdisc(int drv); 
        void do_open_laserdisc(int drv, QString path);
-       void do_change_osd_laserdisc(QString tmpstr);
 
        void CreateBinaryMenu(int drv, int drv_base);
        void CreateBinaryPulldownMenu(int drv);
@@ -533,7 +536,6 @@ public slots:
        void _open_quick_disk(int drv, const QString fname);
        void eject_Qd(int drv);
 
-       void do_change_osd_qd(int drv, QString tmpstr);
 
        virtual void _open_disk(int drv, const QString fname);
        void _open_cart(int drv, const QString fname);
@@ -546,7 +548,6 @@ public slots:
        void set_direct_load_from_mzt(bool f);
        void do_open_write_cmt(QString);
        void do_open_read_cmt(int dummy, QString path);
-       void do_change_osd_cmt(QString tmpstr);
 
        void do_push_play_tape(void);
        void do_push_stop_tape(void);
@@ -569,7 +570,6 @@ public slots:
        virtual int set_b77_slot(int drive, int num);
        virtual void do_update_recent_bubble(int drv);
        virtual int set_recent_bubble(int drv, int num);
-       void do_change_osd_bubble(int drv, QString tmpstr);
 
        virtual void _open_bubble(int drv, const QString fname);
        virtual void eject_bubble(int drv);
index 910950c..79952cb 100644 (file)
@@ -17,7 +17,9 @@
 #include <QLocale>
 #include <QTranslator>
 #include <QStatusBar>
-
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QDockWidget>
 
 #include "commonclasses.h"
 #include "display_about.h"
@@ -32,6 +34,7 @@
 #include "menu_compactdisc.h"
 #include "menu_laserdisc.h"
 #include "menu_bubble.h"
+#include "dock_disks.h"
 
 #include "qt_gldraw.h"
 //#include "emu.h"
@@ -325,9 +328,46 @@ void Ui_MainWindowBase::setupUi(void)
        
    
        bitmapImage = NULL;
+       driveData = new CSP_DockDisks(this, 0);
+       MainWindow->setDockOptions(QMainWindow::AnimatedDocks | QMainWindow::AllowTabbedDocks | QMainWindow::VerticalTabs);
+       if(using_flags->is_use_fd()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_drive(); i++) driveData->setVisible(CSP_DockDisks_Domain_FD, i, true);
+       }
+       if(using_flags->is_use_qd()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_qd(); i++) driveData->setVisible(CSP_DockDisks_Domain_QD, i, true);
+       }
+       if(using_flags->is_use_tape()) {
+               driveData->setVisible(CSP_DockDisks_Domain_CMT, 0, true);
+       }
+       if(using_flags->is_use_cart()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_cart(); i++) {
+                       driveData->setVisible(CSP_DockDisks_Domain_Cart, i, true);
+               }
+       }
+       if(using_flags->is_use_binary_file()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_binary(); i++) {
+                       driveData->setVisible(CSP_DockDisks_Domain_Binary, i, true);
+               }
+       }
+       if(using_flags->is_use_compact_disc()) {
+               driveData->setVisible(CSP_DockDisks_Domain_CD, 0, true);
+       }
+       if(using_flags->is_use_laser_disc()) {
+               driveData->setVisible(CSP_DockDisks_Domain_LD, 0, true);
+       }
+       if(using_flags->is_use_bubble()) {
+               int i;
+               for(i = 0; i < using_flags->get_max_qd(); i++) driveData->setVisible(CSP_DockDisks_Domain_Bubble, i, true);
+       }
+
+       
        MainWindow->setCentralWidget(graphicsView);
        MainWindow->setFocusProxy(graphicsView);
-       
+       MainWindow->addDockWidget(Qt::RightDockWidgetArea, driveData);
        MainWindow->centralWidget()->adjustSize();
        MainWindow->adjustSize();