X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=inline;f=src%2Fgui%2Ffilepicker.cpp;h=b30124a54bd271df5df24472023ffc08042fdd0e;hb=de3c95ef6322202f6b06c769f2ea7856a20db35d;hp=e8a44d1bad7ea9d88d32fb99bd71fa06170afdff;hpb=09adab3161f986d5cc8dbeffe15cb6545afa138f;p=virtualjaguar diff --git a/src/gui/filepicker.cpp b/src/gui/filepicker.cpp index e8a44d1..b30124a 100644 --- a/src/gui/filepicker.cpp +++ b/src/gui/filepicker.cpp @@ -9,89 +9,18 @@ // Who When What // --- ---------- ------------------------------------------------------------- // JLH 01/22/2010 Created this file +// JLH 02/06/2010 Modified to use Qt model/view framework +// JLH 03/08/2010 Added large cart view and info text // #include "filepicker.h" -#include "crc32.h" +#include "filedb.h" #include "filelistmodel.h" #include "filethread.h" -#include "settings.h" -#include "types.h" - -struct RomIdentifier -{ - const uint32 crc32; - const char name[128]; - const char file[128]; -}; - -RomIdentifier romList2[] = { - { 0x0509C85E, "Raiden (World)", "" }, - { 0x08F15576, "Iron Soldier (World) (v1.04)", "" }, - { 0x0957A072, "Kasumi Ninja (World)", "" }, - { 0x0AC83D77, "NBA Jam T.E. (World)", "" }, - { 0x0EC5369D, "Evolution - Dino Dudes (World)", "" }, - { 0x0F6A1C2C, "Ultra Vortek (World)", "" }, - { 0x14915F20, "White Men Can't Jump (World)", "" }, - { 0x1660F070, "Power Drive Rally (World)", "" }, - { 0x1E451446, "Trevor McFur in the Crescent Galaxy (World)", "" }, - { 0x27594C6A, "Defender 2000 (World)", "" }, - { 0x2E17D5DA, "Bubsy in Fractured Furry Tales (World)", "" }, - { 0x348E6449, "Double Dragon V - The Shadow Falls (World)", "" }, - { 0x3615AF6A, "Fever Pitch Soccer (World) (En,Fr,De,Es,It)", "" }, - { 0x38A130ED, "Troy Aikman NFL Football (World)", "" }, - { 0x3C044941, "Skyhammer (World)", "" }, - { 0x42A13EC5, "Soccer Kid (World)", "" }, - { 0x47EBC158, "Theme Park (World)", "" }, - { 0x4899628F, "Hover Strike (World)", "" }, - { 0x53DF6440, "Space War 2000 (World)", "" }, - { 0x55A0669C, "[BIOS] Atari Jaguar Developer CD (World)", "" }, - { 0x58272540, "Syndicate (World)", "" }, - { 0x5A101212, "Sensible Soccer - International Edition (World)", "" }, - { 0x5B6BB205, "Ruiner Pinball (World)", "" }, - { 0x5CFF14AB, "Pinball Fantasies (World)", "" }, - { 0x5E2CDBC0, "Doom (World)", "" }, - { 0x61C7EEC0, "Zero 5 (World)", "" }, - { 0x67F9AB3A, "Battle Sphere Gold (World)", "" }, - { 0x687068D5, "[BIOS] Atari Jaguar CD (World)", "" }, - { 0x6B2B95AD, "Tempest 2000 (World)", "" }, - { 0x6EB774EB, "Worms (World)", "" }, - { 0x6F8B2547, "Super Burnout (World)", "" }, - { 0x817A2273, "Pitfall - The Mayan Adventure (World)", "" }, - { 0x8975F48B, "Zool 2 (World)", "" }, - { 0x8D15DBC6, "[BIOS] Atari Jaguar Stubulator '94 (World)", "" }, - { 0x8FEA5AB0, "Dragon - The Bruce Lee Story (World)", "" }, - { 0x97EB4651, "I-War (World)", "" }, - { 0xA27823D8, "Ultra Vortek (World) (v0.94) (Beta)", "" }, - { 0xA56D0798, "Protector - Special Edition (World)", "" }, - { 0xA9F8A00E, "Rayman (World)", "" }, - { 0xB14C4753, "Fight for Life (World)", "" }, - { 0xBCB1A4BF, "Brutal Sports Football (World)", "" }, - { 0xBDA405C6, "Cannon Fodder (World)", "" }, - { 0xBDE67498, "Cybermorph (World) (Rev 1)", "" }, - { 0xC5562581, "Zoop! (World)", "" }, - { 0xC654681B, "Total Carnage (World)", "" }, - { 0xC6C7BA62, "Fight for Life (World) (Alt)", "" }, - { 0xC9608717, "Val d'Isere Skiing and Snowboarding (World)", "" }, - { 0xCBFD822A, "Air Cars (World)", "" }, - { 0xCD5BF827, "Attack of the Mutant Penguins (World)", "" }, - { 0xD6C19E34, "Iron Soldier 2 (World)", "" }, - { 0xDA9C4162, "Missile Command 3D (World)", "" }, - { 0xDC187F82, "Alien vs Predator (World)", "" }, - { 0xDE55DCC7, "Flashback - The Quest for Identity (World) (En,Fr)", "" }, - { 0xE28756DE, "Atari Karts (World)", "" }, - { 0xE60277BB, "[BIOS] Atari Jaguar Stubulator '93 (World)", "" }, - { 0xE91BD644, "Wolfenstein 3D (World)", "" }, - { 0xEC22F572, "SuperCross 3D (World)", "" }, - { 0xECF854E7, "Cybermorph (World) (Rev 2)", "" }, - { 0xEEE8D61D, "Club Drive (World)", "" }, - { 0xF0360DB3, "Hyper Force (World)", "" }, - { 0xFA7775AE, "Checkered Flag (World)", "" }, - { 0xFAE31DD0, "Flip Out! (World)", "" }, - { 0xFB731AAA, "[BIOS] Atari Jaguar (World)", "" }, - { 0xFFFFFFFF, "***END***", "" } -}; +#include "imagedelegate.h" +//#include "settings.h" +//#include "types.h" /* Our strategy here is like so: @@ -106,83 +35,176 @@ 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..."); +I'm thinking compatibility info should be displayed as well... Just to stop the +inevitable stupid questions from people too lazy to do basic research for themselves. -#if 1 - fileList2 = new QListWidget(this); -// addWidget(fileList); - QVBoxLayout * layout = new QVBoxLayout(); -// layout->setSizeConstraint(QLayout::SetFixedSize); - setLayout(layout); +Data strategy: - layout->addWidget(fileList2); +- Should keep a QImage of the blank cart with blank label +- Should keep a QImage of the blank cart? (For overpainting the ROMs label) +- Should we have a special Alpine image? Floppy image (for COF/ABS)? -// PopulateList(); - fileThread = new FileThread(this); +- Need some way of keeping track of cart size and compatibility info + [compat info needs to be BAD DUMP or % of what works] +- Need to properly scale the thumbnails images in the list +*/ - /*bool b =*/ connect(fileThread, SIGNAL(FoundAFile(unsigned long)), this, SLOT(AddFileToList(unsigned long))); -//printf("FilePickerWindow: Connection to FileThread %s...\n", (b ? "succeeded" : "failed")); +//could use Window as well... +//FilePickerWindow::FilePickerWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt::Dialog) +FilePickerWindow::FilePickerWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt::Window) +{ + setWindowTitle(tr("Insert Cartridge...")); + +//is there any reason why this must be cast as a QAbstractListModel? No +//Also, need to think about data structure for the model... + model = new FileListModel; + fileList = new QListView; + fileList->setModel(model); +// fileList->setItemDelegate(new ImageDelegate(this)); + fileList->setItemDelegate(new ImageDelegate()); + +// QVBoxLayout * layout = new QVBoxLayout; + QHBoxLayout * layout = new QHBoxLayout; + setLayout(layout); + layout->addWidget(fileList); + + // Weird note: This layout has to be added *before* putting anything into it... + QVBoxLayout * vLayout = new QVBoxLayout; + layout->addLayout(vLayout); + + cartImage = new QLabel; + QImage cartImg(":/res/cart-blank.png"); + QPainter painter(&cartImg); + painter.drawPixmap(23, 87, QPixmap(":/res/label-blank.png")); + painter.end(); + cartImage->setPixmap(QPixmap::fromImage(cartImg)); + cartImage->setMargin(4); + vLayout->addWidget(cartImage); + + title = new QLabel(QString(tr("
Type: | 4MB Cartridge |
CRC32: | FEDCBA98 |
Compatibility: | DOES NOT WORK |
Notes: | Universal Header detected; Requires DSP |