Mercurial > retraceit
diff src/folderselectdialog.cpp @ 101:8ed21aa68021
Read .exam-setup-user in folderselection
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Fri, 18 Nov 2016 12:46:54 +0100 |
parents | 7c84242971cb |
children | 4302ca793c5a |
line wrap: on
line diff
--- a/src/folderselectdialog.cpp Fri Nov 18 11:36:14 2016 +0100 +++ b/src/folderselectdialog.cpp Fri Nov 18 12:46:54 2016 +0100 @@ -159,6 +159,7 @@ bottomButtons->addWidget(mOkButton); setLayout(base); + resize(700, 600); } void FolderSelectDialog::selectionChanged (const QItemSelection& selected, @@ -193,6 +194,41 @@ settings.setValue(ROOT_FOLDER_KEY, mPathLineEdit->text()); } +QString stripQuotes (const QString &in) +{ + QString out = in; + if (in.startsWith("\"")) { + out = out.right(out.size()-1); + } + if (in.endsWith("\"")) { + out = out.left(out.size()-1); + } + return out; +} + +QMap <QString, QString> readExtraColumns(const QString &path) +{ + QMap <QString, QString> ret; + + QFile file(path); + if (!file.open(QIODevice::ReadOnly)) { + qDebug () << "Failed to open: " << path; + return ret; + } + QTextStream in(&file); + + while (!in.atEnd()) { + QString line = in.readLine(); + int equalsign = line.indexOf("="); + if (equalsign != -1) { + QString name = stripQuotes(line.left(equalsign).replace (QStringLiteral("export "), "")); + QString value = stripQuotes(line.right(line.size() - equalsign - 1)); + ret.insert (name, value); + } + } + return ret; +} + void FolderSelectDialog::setFolder(const QString& folder) { if (folder.isEmpty()) { return; @@ -203,16 +239,16 @@ } QStringList columns = mFolderPattern.split(PATTERN_SEPERATOR); + int patternSize = columns.size(); + QDir dir(folder); mModel->clear(); - mModel->setHorizontalHeaderLabels(columns); - QDir dir(folder); qDebug() << "Folder set to: " << folder; foreach (const QString & subfolder, dir.entryList(QDir::Dirs | QDir::Readable | QDir::NoDotAndDotDot)) { qDebug() << "Looking at: " << subfolder; QStringList itemData = subfolder.split(PATTERN_SEPERATOR); - if (itemData.size() != columns.size()) { + if (itemData.size() != patternSize) { qDebug() << "Folder does not match pattern: " << subfolder; continue; } @@ -220,10 +256,26 @@ foreach (const QString& part, itemData) { QStandardItem * item = new QStandardItem(part); item->setData(dir.absoluteFilePath(subfolder)); + QFileInfo fi (dir.absoluteFilePath(subfolder + "/.exam-setup-user")); items.append(item); + if (fi.isReadable()) { + const QMap<QString, QString> map = readExtraColumns (fi.filePath()); + + int i = 0; + Q_FOREACH (const QString &name, map.keys()) + { + qDebug() << "Adding extra column: " << name; + if (!columns.contains(name)) { + columns << name; + } + QStandardItem * subitem = new QStandardItem(map[name]); + items.append(subitem); + } + } } mModel->appendRow(items); } + mModel->setHorizontalHeaderLabels(columns); mSortModel->setSourceModel(mModel); mView->resizeColumnsToContents(); }