X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=inline;f=src%2Fgui%2Ffilepicker.cpp;h=d7f1507293885e82c4910a6b6967b0bd6390f2ec;hb=a837ec444729b2f195506e66a36fe4954741725f;hp=b30124a54bd271df5df24472023ffc08042fdd0e;hpb=4beff2f35f649bb0befa58c8a89fdd702b3c9b4f;p=virtualjaguar
diff --git a/src/gui/filepicker.cpp b/src/gui/filepicker.cpp
index b30124a..d7f1507 100644
--- a/src/gui/filepicker.cpp
+++ b/src/gui/filepicker.cpp
@@ -53,7 +53,8 @@ Data strategy:
//could use Window as well...
//FilePickerWindow::FilePickerWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt::Dialog)
-FilePickerWindow::FilePickerWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt::Window)
+FilePickerWindow::FilePickerWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt::Window),
+ currentFile("")
{
setWindowTitle(tr("Insert Cartridge..."));
@@ -64,6 +65,35 @@ FilePickerWindow::FilePickerWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt:
fileList->setModel(model);
// fileList->setItemDelegate(new ImageDelegate(this));
fileList->setItemDelegate(new ImageDelegate());
+#if 0
+ //nope.
+// fileList->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
+// fileList->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
+//small problem with this is that it doesn't take scrollbar into account...
+QSize sbSize = fileList->verticalScrollBar()->minimumSizeHint();
+printf("VSB minimumSizeHint: %u, %u\n", sbSize.width(), sbSize.height());
+QSize sbSize2 = fileList->verticalScrollBar()->sizeHint();
+printf("VSB sizeHint: %u, %u\n", sbSize2.width(), sbSize2.height());
+QRect sbRect = fileList->verticalScrollBar()->normalGeometry();
+printf("VSB normalGeometry: %u, %u\n", sbRect.width(), sbRect.height());
+QSize sbSize3 = fileList->verticalScrollBar()->size();
+printf("VSB size: %u, %u\n", sbSize3.width(), sbSize3.height());
+// int sbWidth = fileList->verticalScrollBar()->width();
+ int sbWidth = fileList->verticalScrollBar()->size().width();
+ fileList->setFixedWidth((488/4) + 4 + sbWidth);//ick
+#else
+ // This sets it to the "too large size" as the minimum!
+ QScrollBar * vsb = new QScrollBar(Qt::Vertical, this);
+ int sbWidth = vsb->size().width();
+ printf("VSB size width: %u\n", sbWidth);
+ int sbWidth2 = vsb->sizeHint().width();
+ printf("VSB sizeHint width: %u\n", sbWidth2);
+ delete vsb;
+
+// fileList->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred);
+// fileList->verticalScrollBar()->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred);
+ fileList->setFixedWidth((488/4) + 4 + sbWidth);//ick
+#endif
// QVBoxLayout * layout = new QVBoxLayout;
QHBoxLayout * layout = new QHBoxLayout;
@@ -109,6 +139,14 @@ FilePickerWindow::FilePickerWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt:
)));
data->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
dataLayout->addWidget(data);
+
+//#warning "!!! Icon size for pushbutton is tiny !!!"
+ insertCart = new QPushButton(this);
+ insertCart->setIconSize(QSize(40, 40));
+ insertCart->setIcon(QIcon(":/res/insert.png"));
+ insertCart->setDefault(true); // We want this button to be the default
+ insertCart->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred);
+ dataLayout->addWidget(insertCart);
#else
QLabel * text2 = new QLabel(QString(tr(
"
"
@@ -123,7 +161,7 @@ FilePickerWindow::FilePickerWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt:
fileThread = new FileThread(this);
// connect(fileThread, SIGNAL(FoundAFile(unsigned long)), this, SLOT(AddFileToList(unsigned long)));
- connect(fileThread, SIGNAL(FoundAFile2(unsigned long, QString, QImage *)), this, SLOT(AddFileToList2(unsigned long, QString, QImage *)));
+ connect(fileThread, SIGNAL(FoundAFile2(unsigned long, QString, QImage *, unsigned long)), this, SLOT(AddFileToList2(unsigned long, QString, QImage *, unsigned long)));
fileThread->Go();
/*
New sizes: 373x172 (label), 420x340 (cart)
@@ -132,6 +170,13 @@ New sizes: 373x172 (label), 420x340 (cart)
// QItemSelectionModel * ism = fileList->selectionModel();
// connect(ism, SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(UpdateSelection(const QModelIndex &, const QModelIndex &)));
connect(fileList->selectionModel(), SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(UpdateSelection(const QModelIndex &, const QModelIndex &)));
+
+ connect(insertCart, SIGNAL(clicked()), this, SLOT(LoadButtonPressed()));
+}
+
+QString FilePickerWindow::GetSelectedPrettyName(void)
+{
+ return prettyFilename;
}
//
@@ -143,16 +188,27 @@ void FilePickerWindow::AddFileToList(unsigned long index)
printf("FilePickerWindow: Found match [%s]...\n", romList[index].name);
// NOTE: The model *ignores* what you send it, so this is crap. !!! FIX !!! [DONE, somewhat]
// model->AddData(QIcon(":/res/generic.png"));
- model->AddData(index);
+// model->AddData(index);
}
-void FilePickerWindow::AddFileToList2(unsigned long index, QString str, QImage * img)
+void FilePickerWindow::AddFileToList2(unsigned long index, QString str, QImage * img, unsigned long size)
{
printf("FilePickerWindow(2): Found match [%s]...\n", romList[index].name);
if (img)
- model->AddData(index, str, *img);
+ {
+ model->AddData(index, str, *img, size);
+//It would be better to pass the pointer into the model though...
+ delete img;
+ }
else
- model->AddData(index, str, QImage());
+ model->AddData(index, str, QImage(), size);
+}
+
+void FilePickerWindow::LoadButtonPressed(void)
+{
+ // TODO: Get the text of the current selection, call the MainWin slot for loading
+ emit(RequestLoad(currentFile));
+ this->hide();
}
//
@@ -161,23 +217,78 @@ printf("FilePickerWindow(2): Found match [%s]...\n", romList[index].name);
//
void FilePickerWindow::UpdateSelection(const QModelIndex & current, const QModelIndex &/*previous*/)
{
+#if 0
QString s = current.model()->data(current, Qt::EditRole).toString();
unsigned long i = current.model()->data(current, Qt::DisplayRole).toUInt();
QImage label = current.model()->data(current, Qt::DecorationRole).value();
// printf("FPW: %s\n", s.toAscii().data());
+ unsigned long fileSize = current.model()->data(current, Qt::WhatsThisRole).toUInt();
+#else
+// QString s = current.model()->data(current, FLM_FILENAME).toString();
+ currentFile = current.model()->data(current, FLM_FILENAME).toString();
+ unsigned long i = current.model()->data(current, FLM_INDEX).toUInt();
+ QImage label = current.model()->data(current, FLM_LABEL).value();
+ unsigned long fileSize = current.model()->data(current, FLM_FILESIZE).toUInt();
+// printf("FPW: %s\n", s.toAscii().data());
+#endif
+
+//hm.
+//currentFile = s;
+//373x172 is label size...
+//365x168 now...
if (!label.isNull())
{
+/*
+ QImage cartImg(":/res/cart-blank.png");
+ QPainter painter(&cartImg);
+ painter.drawPixmap(23, 87, QPixmap(":/res/label-blank.png"));
+ painter.end();
+ cartSmall = cartImg.scaled(488/4, 395/4, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+*/
+ QImage cart(":/res/cart-blank.png");
+ QPainter painter(&cart);
+//Though this should probably be done when this is loaded, instead of every time here...
+//QImage scaledImg = label.scaled(373, 172, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+//painter.drawPixmap(23, 87, QPixmap::fromImage(scaledImg));
+ // Now, looks like it is...
+// painter.drawPixmap(23, 87, QPixmap::fromImage(label));
+ painter.drawPixmap(27, 89, QPixmap::fromImage(label));
+// painter.drawPixmap(23, 87, 373, 172, QPixmap::fromImage(label));
+
+// Well, heck. This should be done to the label *before* we get here.
+ painter.drawPixmap(27, 89, QPixmap::fromImage(QImage(":/res/upper-left.png")));
+ painter.drawPixmap(27+355, 89, QPixmap::fromImage(QImage(":/res/upper-right.png")));
+
+ painter.end();
+ cartImage->setPixmap(QPixmap::fromImage(cart));
+ }
+ else
+ {
+ // We should try to be intelligent with our updates here, and only redraw when
+ // we're going from a selection with a label to a selection without. Now, we
+ // redraw regardless.
QImage cart(":/res/cart-blank.png");
QPainter painter(&cart);
- painter.drawPixmap(23, 87, QPixmap::fromImage(label));
+// painter.drawPixmap(23, 87, QPixmap::fromImage(QImage(":/res/label-blank.png")));
+ painter.drawPixmap(27, 89, QPixmap::fromImage(QImage(":/res/label-blank.png")));
painter.end();
cartImage->setPixmap(QPixmap::fromImage(cart));
}
+//1048576
+//2097152
+//4194304
+ prettyFilename = romList[i].name;
title->setText(QString("%1
").arg(romList[i].name));
+//Kludge for now, we'll have to fix this later...
+ QString fileType = QString(romList[i].flags & FF_ROM ? "%1MB Cartridge" : "%1*** UNKNOWN ***")
+ .arg(fileSize / 1048576);
QString crcString = QString("%1").arg(romList[i].crc32, 8, 16, QChar('0')).toUpper();
- data->setText(QString("%1
%2
%3
%4").arg("Cart").arg(crcString).arg("100%").arg("Requires BIOS"));
+ QString notes =
+/* (romList[i].flags & FF_ROM ? "Jaguar ROM " : "")*/
+ QString(romList[i].flags & FF_BAD_DUMP ? "BAD DUMP" : "");
+ data->setText(QString("%1
%2
%3
%4").arg(fileType).arg(crcString).arg("???%").arg(notes));
}
/*
@@ -206,5 +317,3 @@ Compatibility: 80% (or ****)
*/
-
-