soliduiserver: pass the Solid::Device object instead of the UDI to kExecuteAction()

so that it does not have to be re-constructed and removed device can be
passed to it

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2023-09-09 09:00:42 +03:00
parent 09f7754713
commit dd4b27b579
4 changed files with 9 additions and 9 deletions

View file

@ -221,7 +221,8 @@ void SolidRunner::run(const Plasma::RunnerContext &context, const Plasma::QueryM
const QList<KServiceAction> kserviceactions = KDesktopFileActions::userDefinedServices(actionfilepath, true);
foreach (const KServiceAction &kserviceaction, kserviceactions) {
if (kserviceaction.name() == actionname) {
QStringList actioncommand = kSolidActionCommand(kserviceaction.exec(), kSolidUDI(match.id()), true);
const Solid::Device soliddevice(kSolidUDI(match.id()));
QStringList actioncommand = kSolidActionCommand(kserviceaction.exec(), soliddevice, true);
if (actioncommand.size() == 0) {
kWarning() << "invalid action command" << actionname << "in" << actionfilepath;
return;

View file

@ -113,7 +113,7 @@ void SolidUiDialog::slotOkClicked()
const QListWidgetItem* selecteditem = selecteditems.first();
const int kserviceactionindex = selecteditem->data(Qt::UserRole).toInt();
Q_ASSERT(kserviceactionindex >= 0 && kserviceactionindex < m_serviceactions.size());
kExecuteAction(m_serviceactions.at(kserviceactionindex), m_soliddevice.udi(), m_mount);
kExecuteAction(m_serviceactions.at(kserviceactionindex), m_soliddevice, m_mount);
}
#include "moc_soliduidialog.cpp"

View file

@ -271,7 +271,7 @@ void SolidUiServer::handleActions(const Solid::Device &soliddevice, const bool a
}
}
if (kserviceactions.size() == 1) {
kExecuteAction(kserviceactions.first(), soliddevice.udi(), added);
kExecuteAction(kserviceactions.first(), soliddevice, added);
} else if (!kserviceactions.isEmpty()) {
SolidUiDialog* soliddialog = new SolidUiDialog(soliddevice, kserviceactions, added);
connect(soliddialog, SIGNAL(finished(int)), this, SLOT(slotDialogFinished()));

View file

@ -61,12 +61,11 @@ static void kSolidEjectUDI(const QString &solidudi)
}
// simplified version of KMacroExpander specialized for solid actions
static QStringList kSolidActionCommand(const QString &command, const QString &solidudi, const bool mount)
static QStringList kSolidActionCommand(const QString &command, const Solid::Device &soliddevice, const bool mount)
{
Solid::Device soliddevice(solidudi);
Solid::StorageAccess* solidstorageacces = soliddevice.as<Solid::StorageAccess>();
const Solid::StorageAccess* solidstorageacces = soliddevice.as<Solid::StorageAccess>();
if (mount && solidstorageacces && !solidstorageacces->isAccessible()) {
kSolidMountUDI(solidudi);
kSolidMountUDI(soliddevice.udi());
}
QString actioncommand = command;
@ -97,9 +96,9 @@ static QStringList kSolidActionCommand(const QString &command, const QString &so
return KShell::splitArgs(actioncommand);
}
static void kExecuteAction(const KServiceAction &kserviceaction, const QString &solidudi, const bool mount)
static void kExecuteAction(const KServiceAction &kserviceaction, const Solid::Device &soliddevice, const bool mount)
{
QStringList actioncommand = kSolidActionCommand(kserviceaction.exec(), solidudi, mount);
QStringList actioncommand = kSolidActionCommand(kserviceaction.exec(), soliddevice, mount);
if (actioncommand.size() == 0) {
kWarning() << "invalid action command" << kserviceaction.name();
return;