1 /***************************************************************************
2 * Copyright (C) 2011 by Jean-Baptiste Mardelle (jb@kdenlive.org) *
4 * This program is free software; you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation; either version 2 of the License, or *
7 * (at your option) any later version. *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
14 * You should have received a copy of the GNU General Public License *
15 * along with this program; if not, write to the *
16 * Free Software Foundation, Inc., *
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
18 ***************************************************************************/
21 #include "backupwidget.h"
22 #include "kdenlivesettings.h"
27 BackupWidget::BackupWidget(const KUrl &projectUrl, const KUrl &projectFolder, const QString &projectId, QWidget * parent) :
31 setWindowTitle(i18n("Restore Backup File"));
33 if (projectUrl.isEmpty()) {
34 // No url, means we opened the backup dialog from an empty project
35 info_label->setText(i18n("Showing all backup files in folder"));
36 m_projectWildcard = '*';
38 info_label->setText(i18n("Showing backup files for %1", projectUrl.fileName()));
39 m_projectWildcard = projectUrl.fileName().section('.', 0, -2);
40 if (!projectId.isEmpty()) m_projectWildcard.append('-' + projectId);
42 // No project id, it was lost, add wildcard
43 m_projectWildcard.append('*');
46 project_url->setUrl(projectFolder);
47 m_projectWildcard.append("-??");
48 m_projectWildcard.append("??");
49 m_projectWildcard.append("-??");
50 m_projectWildcard.append("-??");
51 m_projectWildcard.append("-??");
52 m_projectWildcard.append("-??.kdenlive");
54 slotParseBackupFiles();
55 connect(backup_list, SIGNAL(currentRowChanged(int)), this, SLOT(slotDisplayBackupPreview()));
56 connect(project_url, SIGNAL(textChanged(QString)), this, SLOT(slotParseBackupFiles()));
57 backup_list->setCurrentRow(0);
58 backup_list->setMinimumHeight(QFontMetrics(font()).lineSpacing() * 12);
61 BackupWidget::~BackupWidget()
65 void BackupWidget::slotParseBackupFiles()
68 KUrl backupFile = project_url->url();
69 backupFile.addPath(".backup/");
70 QDir dir(backupFile.path());
72 filter << m_projectWildcard;
73 dir.setNameFilters(filter);
74 QFileInfoList resultList = dir.entryInfoList(QDir::Files, QDir::Time);
77 QListWidgetItem *item;
79 for (int i = 0; i < resultList.count(); ++i) {
80 label = resultList.at(i).lastModified().toString(Qt::SystemLocaleLongDate);
81 if (m_projectWildcard.startsWith(QLatin1Char('*'))) {
82 // Displaying all backup files, so add project name in the entries
83 label.prepend(resultList.at(i).fileName().section('-', 0, -7) + ".kdenlive - ");
85 item = new QListWidgetItem(label, backup_list);
86 item->setData(Qt::UserRole, resultList.at(i).absoluteFilePath());
88 buttonBox->button(QDialogButtonBox::Open)->setEnabled(backup_list->count() > 0);
91 void BackupWidget::slotDisplayBackupPreview()
93 if (!backup_list->currentItem()) {
94 backup_preview->setPixmap(QPixmap());
97 const QString path = backup_list->currentItem()->data(Qt::UserRole).toString();
98 QPixmap pix(path + ".png");
99 backup_preview->setPixmap(pix);
102 QString BackupWidget::selectedFile() const
104 if (!backup_list->currentItem())
106 return backup_list->currentItem()->data(Qt::UserRole).toString();
110 #include "backupwidget.moc"