Mercurial > retraceit
diff src/folderselectdialog.cpp @ 109:0ad468912ff3
Add warning about folder names to widget
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Thu, 08 Dec 2016 15:23:38 +0100 |
parents | 4302ca793c5a |
children | 48141e3c8903 |
line wrap: on
line diff
--- a/src/folderselectdialog.cpp Thu Dec 08 15:22:51 2016 +0100 +++ b/src/folderselectdialog.cpp Thu Dec 08 15:23:38 2016 +0100 @@ -88,6 +88,22 @@ QVBoxLayout *base = new QVBoxLayout; QHBoxLayout *folderChangeArea = new QHBoxLayout; + mErrorWidget = new QWidget; + + /* Handling for filename errors */ + QHBoxLayout *errorArea = new QHBoxLayout; + mErrorWidget->setLayout(errorArea); + QPushButton *errorPush = new QPushButton(tr("Show Details")); + + QLabel *errorLabel = new QLabel(tr("Warning: Some folder names could not be parsed.")); + connect(errorPush, &QPushButton::clicked, this, [this] () { + QMessageBox::information(this, tr("Failed to parse some folder names."), mErrMsg); + }); + errorArea->addWidget(errorLabel); + errorArea->addWidget(errorPush); + errorArea->addStretch(1); + mErrorWidget->setVisible(false); + if (mShowPathSelection) { mPathLabel = new QLabel; folderChangeArea->addWidget(mPathLabel); @@ -121,6 +137,8 @@ } mFilterWidget = new FilterWidget(mSortModel, false); + + base->addWidget(mErrorWidget); base->addWidget(mFilterWidget); connect(mSortModel, &QSortFilterProxyModel::sourceModelChanged, mFilterWidget, &FilterWidget::headersChanged); @@ -154,6 +172,8 @@ backBtn->setToolTip(tr("Back to exam selection.")); connect(backBtn, &QPushButton::clicked, this, &FolderSelectDialog::backClicked); + connect(backBtn, &QPushButton::clicked, mErrorWidget, + &QWidget::hide); bottomButtons->addWidget(backBtn); } @@ -243,12 +263,14 @@ QDir dir(folder); mModel->clear(); qDebug() << "Folder set to: " << folder; + QStringList errors; 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() != patternSize) { + errors << subfolder; qDebug() << "Folder does not match pattern: " << subfolder; continue; } @@ -275,6 +297,15 @@ mModel->appendRow(items); } mModel->setHorizontalHeaderLabels(columns); + + if (!errors.isEmpty()) { + mErrMsg = tr("The following folders did not match the pattern: %1").arg(mFolderPattern); + mErrMsg += "\n" + errors.join("\n"); + mErrorWidget->setVisible(true); + } else { + mErrorWidget->setVisible(false); + } + mSortModel->setSourceModel(mModel); mView->resizeColumnsToContents(); }