diff --git a/samba/filepropertiesplugin/sambausershareplugin.cpp b/samba/filepropertiesplugin/sambausershareplugin.cpp index aba5592..fba91d0 100644 --- a/samba/filepropertiesplugin/sambausershareplugin.cpp +++ b/samba/filepropertiesplugin/sambausershareplugin.cpp @@ -148,11 +148,20 @@ void SambaUserSharePlugin::installSamba() QString package = QStringLiteral(SAMBA_PACKAGE_NAME); QStringList distroSambaPackages = package.split(QLatin1Char(',')); - PackageKit::Transaction *transaction = PackageKit::Daemon::resolve(distroSambaPackages, - PackageKit::Transaction::FilterArch); + PackageKit::Transaction *transaction = PackageKit::Daemon::resolve(distroSambaPackages, PackageKit::Transaction::FilterArch); + + QSharedPointer pkgids(new QStringList); connect(transaction, - SIGNAL(package(PackageKit::Transaction::Info,QString,QString)), - SLOT(packageInstall(PackageKit::Transaction::Info,QString,QString))); + &PackageKit::Transaction::package, + this, + [pkgids] (PackageKit::Transaction::Info /*info*/, const QString& packageId, const QString& /*summary*/) { pkgids->append(packageId); }); + connect(transaction, &PackageKit::Transaction::finished, this, [this, pkgids] (PackageKit::Transaction::Exit exit) { + if (exit != PackageKit::Transaction::ExitSuccess) + return; + auto installTransaction = PackageKit::Daemon::installPackages(*pkgids); + connect(installTransaction, &PackageKit::Transaction::finished, + this, &SambaUserSharePlugin::packageFinished); + }); m_sambaStatusMessage->setText(i18n("Installing Samba...")); m_installProgress->setMaximum(0); @@ -161,18 +170,6 @@ void SambaUserSharePlugin::installSamba() m_installSambaButton->hide(); } -void SambaUserSharePlugin::packageInstall(PackageKit::Transaction::Info info, - const QString &packageId, - const QString &summary) -{ - Q_UNUSED(info); - Q_UNUSED(summary); - PackageKit::Transaction *installTransaction = PackageKit::Daemon::installPackage(packageId); - connect(installTransaction, - SIGNAL(finished(PackageKit::Transaction::Exit, uint)), - SLOT(packageFinished(PackageKit::Transaction::Exit, uint))); -} - void SambaUserSharePlugin::packageFinished(PackageKit::Transaction::Exit status, uint runtime) { Q_UNUSED(runtime); diff --git a/samba/filepropertiesplugin/sambausershareplugin.h b/samba/filepropertiesplugin/sambausershareplugin.h index 74ab9d6..7a73712 100644 --- a/samba/filepropertiesplugin/sambausershareplugin.h +++ b/samba/filepropertiesplugin/sambausershareplugin.h @@ -53,9 +53,6 @@ private Q_SLOTS: void checkShareName(const QString &name); #ifdef SAMBA_INSTALL void installSamba(); - void packageInstall(PackageKit::Transaction::Info info, - const QString &packageId, - const QString &summary); void packageFinished(PackageKit::Transaction::Exit status, uint runtime); #endif // SAMBA_INSTALL