m_extractUrl(url)
{
//setAttribute(Qt::WA_DeleteOnClose);
- m_extractArchive = new KTar(url.path());
- m_extractArchive->open( QIODevice::ReadOnly );
- // Check that it is a kdenlive project archive
- bool isProjectArchive = false;
- QStringList files = m_extractArchive->directory()->entries();
- for (int i = 0; i < files.count(); i++) {
- if (files.at(i).endsWith(".kdenlive")) {
- m_projectName = files.at(i);
- isProjectArchive = true;
- break;
- }
- }
-
- if (!isProjectArchive) {
- KMessageBox::sorry(kapp->activeWindow(), i18n("%1 is not an archived Kdenlive project", url.path(), i18n("Cannot open file")));
- m_extractArchive->close();
- hide();
- //HACK: find a better way to terminate the dialog
- QTimer::singleShot(50, this, SLOT(reject()));
- return;
- }
setupUi(this);
connect(this, SIGNAL(extractingFinished()), this, SLOT(slotExtractingFinished()));
+ connect(this, SIGNAL(showMessage(const QString &, const QString &)), this, SLOT(slotDisplayMessage(const QString &, const QString &)));
compressed_archive->setHidden(true);
project_files->setHidden(true);
archive_url->setUrl(KUrl(QDir::homePath()));
buttonBox->button(QDialogButtonBox::Apply)->setText(i18n("Extract"));
connect(buttonBox->button(QDialogButtonBox::Apply), SIGNAL(clicked()), this, SLOT(slotStartExtracting()));
+ buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false);
+ adjustSize();
+ m_archiveThread = QtConcurrent::run(this, &ArchiveWidget::openArchiveForExtraction);
}
if (m_extractArchive) delete m_extractArchive;
}
+void ArchiveWidget::slotDisplayMessage(const QString &icon, const QString &text)
+{
+ icon_info->setPixmap(KIcon(icon).pixmap(16, 16));
+ text_info->setText(text);
+}
+
+void ArchiveWidget::openArchiveForExtraction()
+{
+ emit showMessage("system-run", i18n("Opening archive..."));
+ m_extractArchive = new KTar(m_extractUrl.path());
+ if (!m_extractArchive->isOpen() && !m_extractArchive->open( QIODevice::ReadOnly )) {
+ emit showMessage("dialog-close", i18n("Cannot open archive file:\n %1", m_extractUrl.path()));
+ groupBox->setEnabled(false);
+ return;
+ }
+
+ // Check that it is a kdenlive project archive
+ bool isProjectArchive = false;
+ QStringList files = m_extractArchive->directory()->entries();
+ for (int i = 0; i < files.count(); i++) {
+ if (files.at(i).endsWith(".kdenlive")) {
+ m_projectName = files.at(i);
+ isProjectArchive = true;
+ break;
+ }
+ }
+
+ if (!isProjectArchive) {
+ emit showMessage("dialog-close", i18n("File %1\n is not an archived Kdenlive project", m_extractUrl.path()));
+ groupBox->setEnabled(false);
+ return;
+ }
+ buttonBox->button(QDialogButtonBox::Apply)->setEnabled(true);
+ emit showMessage("dialog-ok", i18n("Ready"));
+}
+
void ArchiveWidget::done ( int r )
{
if (closeAccepted()) QDialog::done(r);
if (freeSize > m_requestedSize) {
// everything is ok
buttonBox->button(QDialogButtonBox::Apply)->setEnabled(true);
- icon_info->setPixmap(KIcon("dialog-ok").pixmap(16, 16));
- text_info->setText(i18n("Available space on drive: %1", KIO::convertSize(freeSize)));
+ slotDisplayMessage("dialog-ok", i18n("Available space on drive: %1", KIO::convertSize(freeSize)));
}
else {
buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false);
- icon_info->setPixmap(KIcon("dialog-close").pixmap(16, 16));
- text_info->setText(i18n("Not enough space on drive, free space: %1", KIO::convertSize(freeSize)));
+ slotDisplayMessage("dialog-close", i18n("Not enough space on drive, free space: %1", KIO::convertSize(freeSize)));
}
}
m_replacementList.clear();
m_foldersList.clear();
m_filesList.clear();
- icon_info->setPixmap(KIcon("system-run").pixmap(16, 16));
- text_info->setText(i18n("Archiving..."));
+ slotDisplayMessage("system-run", i18n("Archiving..."));
repaint();
archive_url->setEnabled(false);
compressed_archive->setEnabled(false);
// Archiving finished
progressBar->setValue(100);
if (processProjectFile()) {
- icon_info->setPixmap(KIcon("dialog-ok").pixmap(16, 16));
- text_info->setText(i18n("Project was successfully archived."));
+ slotDisplayMessage("dialog-ok", i18n("Project was successfully archived."));
}
else {
- icon_info->setPixmap(KIcon("dialog-close").pixmap(16, 16));
- text_info->setText(i18n("There was an error processing project file"));
+ slotDisplayMessage("dialog-close", i18n("There was an error processing project file"));
}
} else processProjectFile();
}
else {
m_copyJob = NULL;
- icon_info->setPixmap(KIcon("dialog-close").pixmap(16, 16));
- text_info->setText(i18n("There was an error while copying the files: %1", job->errorString()));
+ slotDisplayMessage("dialog-close", i18n("There was an error while copying the files: %1", job->errorString()));
}
if (!compressed_archive->isChecked()) {
buttonBox->button(QDialogButtonBox::Apply)->setText(i18n("Archive"));
void ArchiveWidget::slotArchivingFinished(bool result)
{
if (result) {
- icon_info->setPixmap(KIcon("dialog-ok").pixmap(16, 16));
- text_info->setText(i18n("Project was successfully archived."));
+ slotDisplayMessage("dialog-ok", i18n("Project was successfully archived."));
}
else {
- icon_info->setPixmap(KIcon("dialog-close").pixmap(16, 16));
- text_info->setText(i18n("There was an error processing project file"));
+ slotDisplayMessage("dialog-close", i18n("There was an error processing project file"));
}
progressBar->setValue(100);
buttonBox->button(QDialogButtonBox::Apply)->setText(i18n("Archive"));
QFileInfo f(m_extractUrl.path());
m_requestedSize = f.size();
KIO::NetAccess::mkdir(archive_url->url().path(KUrl::RemoveTrailingSlash), this);
- icon_info->setPixmap(KIcon("system-run").pixmap(16, 16));
- text_info->setText(i18n("Extracting..."));
+ slotDisplayMessage("system-run", i18n("Extracting..."));
buttonBox->button(QDialogButtonBox::Apply)->setText(i18n("Abort"));
m_progressTimer = new QTimer;
m_progressTimer->setInterval(800);