#include "dialog.h" #include "ui_dialog.h" #include "model.h" #include "session.h" #include "save_restore_session.h" Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); } Dialog::~Dialog() { delete ui; } void Dialog::changeEvent(QEvent *e) { QDialog::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } void Dialog::on_listView_activated(QModelIndex index) { //TODO handle failures printf ("Item %d has been activated\n", index.row()); //TODO get rid of this->entries, storing them in the model should be enough // alternatively use references instead of copies? Session* s(this->entries_.at(index.row())); if (s->run()) { writeSessionName(s->shortDescription()); close(); } else { // TODO: error instead of close close(); } } void Dialog::addItems(const QList& entries, const QString& section) { // TODO: section // TODO: this is not the right way to do this // we probably do not need a copy of the entries vector in Dialog and Model printf("Dialog::addItems()\n"); printf(" before: %d items\n", this->entries_.size()); printf(" %d new items\n", entries.size()); this->entries_.append(entries); printf(" after: %d items\n", this->entries_.size()); QAbstractListModel *data = new Model(this->entries_, ui->listView); QItemSelectionModel *m = ui->listView->selectionModel(); ui->listView->setModel(data); delete m; } void Dialog::on_pushButtonAbort_clicked() { close(); } void Dialog::on_pushButtonStart_clicked() { // TODO: check if a model is selected this->on_listView_activated(ui->listView->selectionModel()->currentIndex()); }