#include "filepicker.h"
+#include "crc32.h"
+#include "settings.h"
#include "types.h"
struct RomIdentifier
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<list.size(); i++)
+ {
+ QFileInfo fileInfo = list.at(i);
+// std::cout << qPrintable(QString("%1 %2").arg(fileInfo.size(), 10)
+// .arg(fileInfo.fileName()));
+// std::cout << std::endl;
+ QFile file(romDir.filePath(fileInfo.fileName()));
+ uint8 * buffer = new uint8[fileInfo.size()];
+
+ if (file.open(QIODevice::ReadOnly))
+ {
+ file.read((char *)buffer, fileInfo.size());
+ uint32 crc = crc32_calcCheckSum(buffer, fileInfo.size());
+ file.close();
+//printf("FilePickerWindow: File crc == %08X...\n", crc);
+
+ for(int j=0; romList[j].crc32 != 0xFFFFFFFF; j++)
+ {
+ if (romList[j].crc32 == crc)
+ {
+printf("FilePickerWindow: Found match [%s]...\n", romList[j].name);
+ new QListWidgetItem(QIcon(":/res/generic.png"), romList[j].name, fileList);
+ break;
+ }
+ }
+ }
+
+ delete[] buffer;
+ }
+
+}
+
//
#include <QtGui>
+
+// Forward declarations
+class QListWidget;
+
+class FilePickerWindow: public QWidget
+{
+ public:
+ FilePickerWindow(QWidget * parent = 0);
+
+ protected:
+ void PopulateList(void);
+
+ private:
+ QListWidget * fileList;
+};
#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
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);
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);
// 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);
aboutWin->show();
}
+void MainWin::InsertCart(void)
+{
+ filePickWin->show();
+}
+
void MainWin::ResizeMainWindow(void)
{
videoWidget->setFixedSize(zoomLevel * 320, zoomLevel * (vjs.hardwareTypeNTSC ? 240 : 256));
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)
#include <QtGui>
// Forward declarations
-
class GLWidget;
class AboutWindow;
-//class EditWindow;
-//class CharWindow;
+class FilePickerWindow;
class MainWin: public QMainWindow
{
void SetPAL(void);
void ToggleBlur(void);
void ShowAboutWin(void);
+ void InsertCart(void);
private:
void ResizeMainWindow(void);
// public:
GLWidget * videoWidget;
AboutWindow * aboutWin;
+ FilePickerWindow * filePickWin;
QTimer * timer;
bool running;
int zoomLevel;
QAction * palAct;
QAction * blurAct;
QAction * aboutAct;
+ QAction * filePickAct;
};
#endif // __MAINWIN_H__