QString FileUtils::computeDocumentPath(const QString& originalPath) { // If the filename is relative, turn it into an absolute path relative to the document directory. QString path = originalPath; QFileInfo originalFileInfo(originalPath); if (originalFileInfo.isRelative()) { QString docsLocation = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); path = docsLocation + "/" + originalPath; } return path; }
RecoveryDialog::RecoveryDialog(QFileInfoList fileInfoList, QWidget *parent, Qt::WindowFlags flags) : QDialog(parent, flags) { m_recoveryList = new CenteredTreeWidget(this); m_recoveryList->setColumnCount(3); m_recoveryList->setSelectionMode(QAbstractItemView::ExtendedSelection); m_recoveryList->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_recoveryList->setSortingEnabled(false); m_recoveryList->setDragEnabled(false); m_recoveryList->setUniformRowHeights(true); // Small optimization m_recoveryList->setIconSize(QSize(0,0)); m_recoveryList->setRootIsDecorated(false); QStringList headerLabels; headerLabels << tr("File") << tr("Last backup") << tr("Last saved"); m_recoveryList->setHeaderLabels(headerLabels); m_recoveryList->header()->setDefaultAlignment(Qt::AlignCenter); m_recoveryList->header()->setDragEnabled(false); m_recoveryList->header()->setDragDropMode(QAbstractItemView::NoDragDrop); m_recoveryList->header()->setResizeMode(QHeaderView::ResizeToContents); m_recoveryList->header()->setMovable(false); connect(m_recoveryList, SIGNAL(itemSelectionChanged()), this, SLOT(updateRecoverButton())); QTreeWidgetItem *item; foreach (QFileInfo fileInfo, fileInfoList) { item = new QTreeWidgetItem; QString originalFileName = getOriginalFileName(fileInfo.absoluteFilePath()); DebugDialog::debug(QString("Creating option for recoveryDialog file %1").arg(originalFileName)); QFileInfo originalFileInfo(originalFileName); item->setData(0, Qt::UserRole, fileInfo.absoluteFilePath()); if (originalFileInfo.exists()) { item->setText(0, originalFileInfo.fileName()); item->setToolTip(0, originalFileInfo.absoluteFilePath()); item->setData(1, Qt::UserRole, originalFileInfo.absoluteFilePath()); item->setText(2, originalFileInfo.lastModified().toString()); } else { item->setText(0, originalFileName); item->setText(2, tr("file not saved")); item->setData(1, Qt::UserRole, originalFileName); } item->setText(1, fileInfo.lastModified().toString()); DebugDialog::debug(QString("Displaying recoveryDialog text %1 and data %2").arg(item->text(0)).arg(item->data(0,Qt::UserRole).value<QString>())); m_recoveryList->addTopLevelItem(item); m_fileList << item; }