From 7611a21d2b36def66216598617d647acfc657e3e Mon Sep 17 00:00:00 2001 From: Shamus Hammons Date: Wed, 27 Jan 2010 18:07:17 +0000 Subject: [PATCH] Added beginnings of ROM directory scanning functionality --- src/gui/filepicker.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++ src/gui/filepicker.h | 15 +++++++++++ src/gui/mainwin.cpp | 21 ++++++++++++--- src/gui/mainwin.h | 7 ++--- 4 files changed, 97 insertions(+), 6 deletions(-) diff --git a/src/gui/filepicker.cpp b/src/gui/filepicker.cpp index 2280f82..daaae59 100644 --- a/src/gui/filepicker.cpp +++ b/src/gui/filepicker.cpp @@ -13,6 +13,8 @@ #include "filepicker.h" +#include "crc32.h" +#include "settings.h" #include "types.h" struct RomIdentifier @@ -98,5 +100,63 @@ in romList for future reference. When constructing the list, use the index to pull up an image of the cart and put that in the list. User picks from a graphical image of the cart. + +Ideally, the label will go into the archive along with the ROM image, but that's +for the future... +Maybe box art, screenshots will go as well... */ +//FilePickerWindow::FilePickerWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt::Dialog)//could use Window as well... +FilePickerWindow::FilePickerWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt::Window) +{ + setWindowTitle("Insert Cartridge..."); + + fileList = new QListWidget(this); +// addWidget(fileList); + + QVBoxLayout * layout = new QVBoxLayout(); +// layout->setSizeConstraint(QLayout::SetFixedSize); + setLayout(layout); + + layout->addWidget(fileList); + + PopulateList(); +} + +void FilePickerWindow::PopulateList(void) +{ + QDir romDir(vjs.ROMPath); + QFileInfoList list = romDir.entryInfoList(); + + for(int i=0; i + +// Forward declarations +class QListWidget; + +class FilePickerWindow: public QWidget +{ + public: + FilePickerWindow(QWidget * parent = 0); + + protected: + void PopulateList(void); + + private: + QListWidget * fileList; +}; diff --git a/src/gui/mainwin.cpp b/src/gui/mainwin.cpp index 69634f6..5aae995 100644 --- a/src/gui/mainwin.cpp +++ b/src/gui/mainwin.cpp @@ -30,6 +30,7 @@ #include "glwidget.h" #include "about.h" #include "settings.h" +#include "filepicker.h" // The way BSNES controls things is by setting a timer with a zero // timeout, sleeping if not emulating anything. Seems there has to be a @@ -50,7 +51,11 @@ MainWin::MainWin() setWindowIcon(QIcon(":/res/vj.xpm")); setWindowTitle("Virtual Jaguar v2.0.0"); + ReadSettings(); + setUnifiedTitleAndToolBarOnMac(true); + aboutWin = new AboutWindow(this); + filePickWin = new FilePickerWindow(this); videoWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); @@ -105,9 +110,14 @@ MainWin::MainWin() aboutAct->setStatusTip(tr("Blatant self-promotion")); connect(aboutAct, SIGNAL(triggered()), this, SLOT(ShowAboutWin())); + filePickAct = new QAction(QIcon(":/res/generic.png"), tr("Insert Cartridge..."), this); + filePickAct->setStatusTip(tr("Insert a cartridge into Virtual Jaguar")); + connect(filePickAct, SIGNAL(triggered()), this, SLOT(InsertCart())); + // Create menus & toolbars fileMenu = menuBar()->addMenu(tr("&File")); + fileMenu->addAction(filePickAct); fileMenu->addAction(powerAct); fileMenu->addAction(quitAppAct); @@ -126,9 +136,6 @@ MainWin::MainWin() // Create status bar statusBar()->showMessage(tr("Ready")); - ReadSettings(); - setUnifiedTitleAndToolBarOnMac(true); - // Set toolbar button based on setting read in (sync the UI)... blurAct->setChecked(vjs.glFilter); x1Act->setChecked(zoomLevel == 1); @@ -230,6 +237,11 @@ void MainWin::ShowAboutWin(void) aboutWin->show(); } +void MainWin::InsertCart(void) +{ + filePickWin->show(); +} + void MainWin::ResizeMainWindow(void) { videoWidget->setFixedSize(zoomLevel * 320, zoomLevel * (vjs.hardwareTypeNTSC ? 240 : 256)); @@ -264,6 +276,9 @@ void MainWin::ReadSettings(void) vjs.useOpenGL = settings.value("useOpenGL", true).toBool(); vjs.glFilter = settings.value("glFilterType", 0).toInt(); vjs.renderType = settings.value("renderType", 0).toInt(); + + // Hardcoded, !!! FIX !!! + strcpy(vjs.ROMPath, "./roms"); } void MainWin::WriteSettings(void) diff --git a/src/gui/mainwin.h b/src/gui/mainwin.h index a3a26cc..fb07549 100644 --- a/src/gui/mainwin.h +++ b/src/gui/mainwin.h @@ -12,11 +12,9 @@ #include // Forward declarations - class GLWidget; class AboutWindow; -//class EditWindow; -//class CharWindow; +class FilePickerWindow; class MainWin: public QMainWindow { @@ -40,6 +38,7 @@ class MainWin: public QMainWindow void SetPAL(void); void ToggleBlur(void); void ShowAboutWin(void); + void InsertCart(void); private: void ResizeMainWindow(void); @@ -49,6 +48,7 @@ class MainWin: public QMainWindow // public: GLWidget * videoWidget; AboutWindow * aboutWin; + FilePickerWindow * filePickWin; QTimer * timer; bool running; int zoomLevel; @@ -68,6 +68,7 @@ class MainWin: public QMainWindow QAction * palAct; QAction * blurAct; QAction * aboutAct; + QAction * filePickAct; }; #endif // __MAINWIN_H__ -- 2.37.2