use KIO for file IO where appropriate

svn path=/trunk/extragear/sysadmin/partitionmanager/; revision=1113737
This commit is contained in:
Volker Lanz 2010-04-11 16:12:16 +00:00
parent 216868d8ee
commit 10bc881dfd
2 changed files with 46 additions and 27 deletions

View File

@ -44,6 +44,10 @@
#include <ktemporaryfile.h>
#include <kaboutdata.h>
#include <ktextedit.h>
#include <kio/netaccess.h>
#include <kio/jobuidelegate.h>
#include <kio/copyjob.h>
#include <ktemporaryfile.h>
const QString ApplyProgressDialog::m_TimeFormat = "hh:mm:ss";
@ -379,26 +383,27 @@ void ApplyProgressDialog::keyPressEvent(QKeyEvent* e)
void ApplyProgressDialog::saveReport()
{
QString fileName = KFileDialog::getSaveFileName(KUrl("kfiledialog://saveReport"));
const KUrl url = KFileDialog::getSaveUrl(KUrl("kfiledialog://saveReport"));
if (fileName.isEmpty())
if (url.isEmpty())
return;
if (!QFile::exists(fileName) || KMessageBox::warningContinueCancel(this, i18nc("@info", "Do you want to overwrite the existing file <filename>%1</filename>?", fileName), i18nc("@title:window", "Overwrite Existing File?"), KGuiItem(i18nc("@action:button", "Overwrite File")), KStandardGuiItem::cancel()) == KMessageBox::Continue)
KTemporaryFile tempFile;
if (tempFile.open())
{
QFile file(fileName);
tempFile.write(Report::htmlHeader().toUtf8());
tempFile.write(report().toHtml().toUtf8());
tempFile.write(Report::htmlFooter().toUtf8());
if (file.open(QIODevice::WriteOnly | QIODevice::Truncate))
{
file.write(Report::htmlHeader().toUtf8());
file.write(report().toHtml().toUtf8());
file.write(Report::htmlFooter().toUtf8());
tempFile.close();
file.close();
}
else
KMessageBox::sorry(this, i18nc("@info", "Could not open file <filename>%1</filename> for writing.", fileName), i18nc("@title:window", "Could Not Save Report."));
KIO::CopyJob* job = KIO::move(tempFile.fileName(), url, KIO::HideProgressInfo);
if (!KIO::NetAccess::synchronousRun(job, NULL))
job->ui()->showErrorMessage();
}
else
KMessageBox::sorry(this, i18nc("@info", "Could not create temporary file when trying to save to <filename>%1</filename>.", url.fileName()), i18nc("@title:window", "Could Not Save Report."));
}
void ApplyProgressDialog::browserReport()

View File

@ -64,6 +64,10 @@
#include <kmenu.h>
#include <kxmlguifactory.h>
#include <kfiledialog.h>
#include <kio/netaccess.h>
#include <kio/jobuidelegate.h>
#include <kio/copyjob.h>
#include <ktemporaryfile.h>
#include <QCloseEvent>
#include <QReadLocker>
@ -726,21 +730,28 @@ void MainWindow::onImportPartitionTable()
{
Q_ASSERT(pmWidget().selectedDevice());
Device& device = *pmWidget().selectedDevice();
const KUrl url = KFileDialog::getOpenUrl(KUrl("kfiledialog://importPartitionTable"));
QString fileName = KFileDialog::getOpenFileName(KUrl("kfiledialog://importPartitionTable"));
if (fileName.isEmpty())
if (url.isEmpty())
return;
QString fileName;
if (!KIO::NetAccess::download(url, fileName, this))
{
KMessageBox::error(this, i18nc("@info", "Could not open input file <filename>%1</filename> for import: %s", url.fileName(), KIO::NetAccess::lastErrorString()), i18nc("@title:window", "Error Importing Partition Table"));
return;
}
QFile file(fileName);
if (!file.open(QFile::ReadOnly))
{
KMessageBox::error(this, i18nc("@info", "Could not open input file <filename>%1</filename> for import.", fileName), i18nc("@title:window", "Error Importing Partition Table"));
KMessageBox::error(this, i18nc("@info", "Could not open temporary file <filename>%1</filename> while trying to import from <filename>%2</filename>.", fileName, url.fileName()), i18nc("@title:window", "Error Importing Partition Table"));
return;
}
Device& device = *pmWidget().selectedDevice();
QByteArray line;
QRegExp rxPartition("(\\d+);(\\d+);(\\d+);(\\w+);(\\w+);(\"\\w*\");(\"[^\"]*\")");
QRegExp rxType("type:\\s\"(.+)\"");
@ -884,27 +895,30 @@ void MainWindow::onExportPartitionTable()
Q_ASSERT(pmWidget().selectedDevice());
Q_ASSERT(pmWidget().selectedDevice()->partitionTable());
QString fileName = KFileDialog::getSaveFileName(KUrl("kfiledialog://exportPartitionTable"));
const KUrl url = KFileDialog::getSaveUrl(KUrl("kfiledialog://exportPartitionTable"));
if (fileName.isEmpty())
if (url.isEmpty())
return;
if (QFile::exists(fileName) && KMessageBox::warningContinueCancel(this, i18nc("@info", "Do you want to overwrite the existing file <filename>%1</filename>?", fileName), i18nc("@title:window", "Overwrite Existing File?"), KGuiItem(i18nc("@action:button", "Overwrite File")), KStandardGuiItem::cancel()) != KMessageBox::Continue)
return;
KTemporaryFile tempFile;
QFile file(fileName);
if (!file.open(QFile::WriteOnly | QFile::Truncate))
if (!tempFile.open())
{
KMessageBox::error(this, i18nc("@info", "Could not create output file <filename>%1</filename> for export.", fileName), i18nc("@title:window", "Error Exporting Partition Table"));
KMessageBox::error(this, i18nc("@info", "Could not create temporary file when trying to save to <filename>%1</filename>.", url.fileName()), i18nc("@title:window", "Error Exporting Partition Table"));
return;
}
QTextStream stream(&file);
QTextStream stream(&tempFile);
stream << "##|v1|## partition table of " << pmWidget().selectedDevice()->deviceNode() << "\n";
stream << "# on " << QDateTime::currentDateTime().toString() << "\n";
stream << *pmWidget().selectedDevice()->partitionTable();
tempFile.close();
KIO::CopyJob* job = KIO::move(tempFile.fileName(), url, KIO::HideProgressInfo);
if (!KIO::NetAccess::synchronousRun(job, NULL))
job->ui()->showErrorMessage();
}
void MainWindow::onFileSystemSupport()