Changeset View
Changeset View
Standalone View
Standalone View
kcms/cursortheme/kcmcursortheme.cpp
Show First 20 Lines • Show All 179 Lines • ▼ Show 20 Line(s) | 170 | { | |||
---|---|---|---|---|---|
180 | setNeedsSave(m_originalSelectedThemeRow != m_selectedThemeRow || m_originalPreferredSize != m_preferredSize); | 180 | setNeedsSave(m_originalSelectedThemeRow != m_selectedThemeRow || m_originalPreferredSize != m_preferredSize); | ||
181 | } | 181 | } | ||
182 | 182 | | |||
183 | int CursorThemeConfig::selectedSizeRow() const | 183 | int CursorThemeConfig::selectedSizeRow() const | ||
184 | { | 184 | { | ||
185 | return m_selectedSizeRow; | 185 | return m_selectedSizeRow; | ||
186 | } | 186 | } | ||
187 | 187 | | |||
188 | bool CursorThemeConfig::downloadingFile() const | ||||
189 | { | ||||
190 | return m_tempCopyJob; | ||||
191 | } | ||||
192 | | ||||
188 | 193 | | |||
189 | 194 | | |||
190 | QAbstractItemModel *CursorThemeConfig::cursorsModel() | 195 | QAbstractItemModel *CursorThemeConfig::cursorsModel() | ||
191 | { | 196 | { | ||
192 | return m_proxyModel; | 197 | return m_proxyModel; | ||
193 | } | 198 | } | ||
194 | 199 | | |||
195 | QAbstractItemModel *CursorThemeConfig::sizesModel() | 200 | QAbstractItemModel *CursorThemeConfig::sizesModel() | ||
▲ Show 20 Lines • Show All 268 Lines • ▼ Show 20 Line(s) | |||||
464 | 469 | | |||
465 | void CursorThemeConfig::installThemeFromFile(const QUrl &url) | 470 | void CursorThemeConfig::installThemeFromFile(const QUrl &url) | ||
466 | { | 471 | { | ||
467 | if (url.isLocalFile()) { | 472 | if (url.isLocalFile()) { | ||
468 | installThemeFile(url.toLocalFile()); | 473 | installThemeFile(url.toLocalFile()); | ||
469 | return; | 474 | return; | ||
470 | } | 475 | } | ||
471 | 476 | | |||
477 | if (m_tempCopyJob) { | ||||
478 | return; | ||||
479 | } | ||||
480 | | ||||
472 | m_tempInstallFile.reset(new QTemporaryFile()); | 481 | m_tempInstallFile.reset(new QTemporaryFile()); | ||
473 | if (!m_tempInstallFile->open()) { | 482 | if (!m_tempInstallFile->open()) { | ||
474 | emit showErrorMessage(i18n("Unable to create a temporary file.")); | 483 | emit showErrorMessage(i18n("Unable to create a temporary file.")); | ||
475 | m_tempInstallFile.reset(); | 484 | m_tempInstallFile.reset(); | ||
476 | return; | 485 | return; | ||
477 | } | 486 | } | ||
478 | 487 | | |||
479 | KIO::FileCopyJob *job = KIO::file_copy(url,QUrl::fromLocalFile(m_tempInstallFile->fileName()), | 488 | m_tempCopyJob = KIO::file_copy(url,QUrl::fromLocalFile(m_tempInstallFile->fileName()), | ||
480 | -1, KIO::Overwrite); | 489 | -1, KIO::Overwrite); | ||
481 | job->uiDelegate()->setAutoErrorHandlingEnabled(true); | 490 | m_tempCopyJob->uiDelegate()->setAutoErrorHandlingEnabled(true); | ||
491 | emit downloadingFileChanged(); | ||||
482 | 492 | | |||
483 | connect(job, &KIO::FileCopyJob::result, this, [this, url](KJob *job) { | 493 | connect(m_tempCopyJob, &KIO::FileCopyJob::result, this, [this, url](KJob *job) { | ||
484 | if (job->error() != KJob::NoError) { | 494 | if (job->error() != KJob::NoError) { | ||
485 | emit showErrorMessage(i18n("Unable to download the icon theme archive: %1", job->errorText())); | 495 | emit showErrorMessage(i18n("Unable to download the icon theme archive: %1", job->errorText())); | ||
486 | return; | 496 | return; | ||
487 | } | 497 | } | ||
488 | 498 | | |||
489 | installThemeFile(m_tempInstallFile->fileName()); | 499 | installThemeFile(m_tempInstallFile->fileName()); | ||
490 | m_tempInstallFile.reset(); | 500 | m_tempInstallFile.reset(); | ||
491 | }); | 501 | }); | ||
502 | connect(m_tempCopyJob, &QObject::destroyed, this, &CursorThemeConfig::downloadingFileChanged); | ||||
492 | } | 503 | } | ||
493 | 504 | | |||
494 | void CursorThemeConfig::installThemeFile(const QString &path) | 505 | void CursorThemeConfig::installThemeFile(const QString &path) | ||
495 | { | 506 | { | ||
496 | KTar archive(path); | 507 | KTar archive(path); | ||
497 | archive.open(QIODevice::ReadOnly); | 508 | archive.open(QIODevice::ReadOnly); | ||
498 | 509 | | |||
499 | const KArchiveDirectory *archiveDir = archive.directory(); | 510 | const KArchiveDirectory *archiveDir = archive.directory(); | ||
▲ Show 20 Lines • Show All 110 Lines • Show Last 20 Lines |