Changeset View
Changeset View
Standalone View
Standalone View
libtaskmanager/launchertasksmodel.cpp
Show All 22 Lines | |||||
23 | 23 | | |||
24 | #include <KRun> | 24 | #include <KRun> | ||
25 | #include <KService> | 25 | #include <KService> | ||
26 | #include <KStartupInfo> | 26 | #include <KStartupInfo> | ||
27 | #include <KSycoca> | 27 | #include <KSycoca> | ||
28 | #include <KWindowSystem> | 28 | #include <KWindowSystem> | ||
29 | 29 | | |||
30 | #include <KActivities/Consumer> | 30 | #include <KActivities/Consumer> | ||
31 | #include <KActivities/ResourceInstance> | ||||
31 | 32 | | |||
32 | #include <config-X11.h> | 33 | #include <config-X11.h> | ||
33 | 34 | | |||
34 | #include <QIcon> | 35 | #include <QIcon> | ||
35 | #include <QTimer> | 36 | #include <QTimer> | ||
36 | #include <QHash> | 37 | #include <QHash> | ||
37 | #include <QSet> | 38 | #include <QSet> | ||
38 | #if HAVE_X11 | 39 | #if HAVE_X11 | ||
▲ Show 20 Lines • Show All 509 Lines • ▼ Show 20 Line(s) | |||||
548 | 549 | | |||
549 | #if HAVE_X11 | 550 | #if HAVE_X11 | ||
550 | if (KWindowSystem::isPlatformX11()) { | 551 | if (KWindowSystem::isPlatformX11()) { | ||
551 | timeStamp = QX11Info::appUserTime(); | 552 | timeStamp = QX11Info::appUserTime(); | ||
552 | } | 553 | } | ||
553 | #endif | 554 | #endif | ||
554 | 555 | | |||
555 | if (url.scheme() == QLatin1String("preferred")) { | 556 | if (url.scheme() == QLatin1String("preferred")) { | ||
556 | KService::Ptr service = KService::serviceByStorageId(defaultApplication(url)); | 557 | const KService::Ptr service = KService::serviceByStorageId(defaultApplication(url)); | ||
557 | 558 | | |||
558 | if (!service) { | 559 | if (!service && !service->isApplication()) { | ||
559 | return; | 560 | return; | ||
560 | } | 561 | } | ||
561 | 562 | | |||
562 | new KRun(QUrl::fromLocalFile(service->entryPath()), 0, false, | 563 | KRun::runApplication(*service, QList<QUrl>(), nullptr, 0, {}, | ||
563 | KStartupInfo::createNewStartupIdForTimestamp(timeStamp)); | 564 | KStartupInfo::createNewStartupIdForTimestamp(timeStamp)); | ||
565 | | ||||
566 | KActivities::ResourceInstance::notifyAccessed(QUrl(QStringLiteral("applications:") + service->storageId()), | ||||
567 | QStringLiteral("org.kde.libtaskmanager")); | ||||
568 | } else { | ||||
569 | const KService::Ptr service = KService::serviceByDesktopPath(url.toLocalFile()); | ||||
570 | | ||||
571 | if (service && service->isApplication()) { | ||||
572 | KRun::runApplication(*service, QList<QUrl>(), nullptr, 0, {}, | ||||
573 | KStartupInfo::createNewStartupIdForTimestamp(timeStamp)); | ||||
574 | | ||||
575 | KActivities::ResourceInstance::notifyAccessed(QUrl(QStringLiteral("applications:") + service->storageId()), | ||||
576 | QStringLiteral("org.kde.libtaskmanager")); | ||||
564 | } else { | 577 | } else { | ||
565 | new KRun(url, 0, false, KStartupInfo::createNewStartupIdForTimestamp(timeStamp)); | 578 | new KRun(url, 0, false, KStartupInfo::createNewStartupIdForTimestamp(timeStamp)); | ||
566 | } | 579 | } | ||
567 | } | 580 | } | ||
581 | } | ||||
568 | 582 | | |||
569 | void LauncherTasksModel::requestOpenUrls(const QModelIndex &index, const QList<QUrl> &urls) | 583 | void LauncherTasksModel::requestOpenUrls(const QModelIndex &index, const QList<QUrl> &urls) | ||
570 | { | 584 | { | ||
571 | if (!index.isValid() || index.model() != this | 585 | if (!index.isValid() || index.model() != this | ||
572 | || index.row() < 0 || index.row() >= d->launchersOrder.count() | 586 | || index.row() < 0 || index.row() >= d->launchersOrder.count() | ||
573 | || urls.isEmpty()) { | 587 | || urls.isEmpty()) { | ||
574 | return; | 588 | return; | ||
575 | } | 589 | } | ||
Show All 11 Lines | 599 | #endif | |||
587 | KService::Ptr service; | 601 | KService::Ptr service; | ||
588 | 602 | | |||
589 | if (url.scheme() == QLatin1String("preferred")) { | 603 | if (url.scheme() == QLatin1String("preferred")) { | ||
590 | service = KService::serviceByStorageId(defaultApplication(url)); | 604 | service = KService::serviceByStorageId(defaultApplication(url)); | ||
591 | } else { | 605 | } else { | ||
592 | service = KService::serviceByDesktopPath(url.toLocalFile()); | 606 | service = KService::serviceByDesktopPath(url.toLocalFile()); | ||
593 | } | 607 | } | ||
594 | 608 | | |||
595 | if (!service) { | 609 | if (!service && !service->isApplication()) { | ||
596 | return; | 610 | return; | ||
597 | } | 611 | } | ||
598 | 612 | | |||
599 | KRun::runApplication(*service, urls, nullptr, 0, {}, KStartupInfo::createNewStartupIdForTimestamp(timeStamp)); | 613 | KRun::runApplication(*service, urls, nullptr, 0, {}, KStartupInfo::createNewStartupIdForTimestamp(timeStamp)); | ||
614 | | ||||
615 | KActivities::ResourceInstance::notifyAccessed(QUrl(QStringLiteral("applications:") + service->storageId()), | ||||
616 | QStringLiteral("org.kde.libtaskmanager")); | ||||
600 | } | 617 | } | ||
601 | 618 | | |||
602 | } | 619 | } |