This repository has been archived on 2020-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
Files
YASMIN/ui/dialog/LoadSetupDialog.cpp
2016-09-28 12:16:45 +02:00

74 lines
1.7 KiB
C++

#include "LoadSetupDialog.h"
#include "../misc/fixc11.h"
#include <QLabel>
#include <QPushButton>
#include <QListView>
#include <QFile>
#include <QDir>
#include <QStringListModel>
#include <iostream>
#include <Indoor/Assertions.h>
#include "../Settings.h"
LoadSetupDialog::LoadSetupDialog() {
// the folder all map-setups reside within
const std::string base = Settings::Data::getMapDir();
QDir mapFolder(QString(base.c_str()));
// sanity check. folder must exist
Assert::isTrue(mapFolder.exists(), "folder not found: " + base);
// get all subfolders (each subfolder descibres one setup), skip the first two folders: "." and ".."
QStringList subfolders = mapFolder.entryList(QDir::Dirs);
subfolders.removeFirst();
subfolders.removeFirst();
// for (int i = 2; i < subfolders.size(); ++i) {
// const QString subfolder = subfolders[i];
// std::cout << subfolder.toStdString() << std::endl;
// }
int w = 350;
int h = 350;
const QFont font("Arial", 20);
QListView* lst = new QListView(this);
lst->setGeometry(5,5,w-5-5,h-5-5);
lst->setFont(font);
QStringListModel* mdl = new QStringListModel(subfolders);
lst->setModel(mdl);
// list item selected
connect(lst, &QListView::clicked, [this, base, subfolders] (const QModelIndex& idx) {
const int i = idx.row();
selDir = base + subfolders[i].toStdString();
this->close();
});
// QPushButton* btnOK = new QPushButton(this);
// btnOK->setText("OK");
// btnOK->setGeometry(5,h-32-5,w-5-5,32);
// // OK button clicked
// btnOK->connect(btnOK, &QPushButton::clicked, [&] () {
// this->close();
// });
this->resize(w,h);
}
QDir LoadSetupDialog::pickSetupFolder() {
LoadSetupDialog dlg;
dlg.exec();
return QDir(QString(dlg.selDir.c_str()));
}