mirror of https://github.com/bsnes-emu/bsnes.git
58 lines
1.6 KiB
C++
Executable File
58 lines
1.6 KiB
C++
Executable File
#include "filechooser.moc.hpp"
|
|
#include "filechooser.moc"
|
|
|
|
//FileChooser is implemented as a modal QWidget instead of a QDialog
|
|
//due to a bug in Qt 4.6.0 (QTBUG-7188); which causes the FileChooser
|
|
//to not refresh when a QTimer is active from the main application.
|
|
string FileChooser::exec() {
|
|
if(list.size() == 0) return "";
|
|
if(list.size() == 1) return list[0];
|
|
|
|
listWidget->clear();
|
|
for(unsigned i = 0; i < list.size(); i++) {
|
|
listWidget->addItem(list[i]);
|
|
}
|
|
listWidget->sortItems(Qt::AscendingOrder);
|
|
listWidget->setCurrentRow(0);
|
|
listWidget->setFocus();
|
|
|
|
name = "";
|
|
setWindowModality(Qt::ApplicationModal);
|
|
show();
|
|
while(isVisible()) QApplication::processEvents();
|
|
setWindowModality(Qt::NonModal);
|
|
return name;
|
|
}
|
|
|
|
void FileChooser::load() {
|
|
QListWidgetItem *item = listWidget->currentItem();
|
|
if(item) name = item->text().toUtf8().constData();
|
|
close();
|
|
}
|
|
|
|
FileChooser::FileChooser() {
|
|
setWindowTitle("Select Cartridge To Load");
|
|
setMinimumWidth(480);
|
|
setMinimumHeight(320);
|
|
|
|
layout = new QVBoxLayout;
|
|
setLayout(layout);
|
|
|
|
listWidget = new QListWidget;
|
|
layout->addWidget(listWidget);
|
|
|
|
controlLayout = new QHBoxLayout;
|
|
controlLayout->setAlignment(Qt::AlignRight);
|
|
layout->addLayout(controlLayout);
|
|
|
|
okButton = new QPushButton("Ok");
|
|
controlLayout->addWidget(okButton);
|
|
|
|
cancelButton = new QPushButton("Cancel");
|
|
controlLayout->addWidget(cancelButton);
|
|
|
|
connect(listWidget, SIGNAL(itemActivated(QListWidgetItem*)), this, SLOT(load()));
|
|
connect(okButton, SIGNAL(released()), this, SLOT(load()));
|
|
connect(cancelButton, SIGNAL(released()), this, SLOT(close()));
|
|
}
|