Changeset View
Changeset View
Standalone View
Standalone View
kded/service.cpp
Context not available. | |||||
128 | connect(this, &KDEDModule::moduleRegistered, | 128 | connect(this, &KDEDModule::moduleRegistered, | ||
---|---|---|---|---|---|
129 | this, &PlasmaVaultService::slotRegistered); | 129 | this, &PlasmaVaultService::slotRegistered); | ||
130 | 130 | | |||
131 | // Close vaults that don't belong to the current activity | ||||
131 | connect(&d->kamd, &KActivities::Consumer::currentActivityChanged, | 132 | connect(&d->kamd, &KActivities::Consumer::currentActivityChanged, | ||
132 | this, &PlasmaVaultService::onCurrentActivityChanged); | 133 | this, &PlasmaVaultService::onCurrentActivityChanged); | ||
134 | | ||||
135 | // When an activity is deleted, remove it from all the vaults | ||||
136 | connect(&d->kamd, &KActivities::Consumer::activityRemoved, | ||||
137 | this, &PlasmaVaultService::onActivityRemoved); | ||||
138 | | ||||
139 | // When activities are loaded, remove activities that no longer exist | ||||
140 | // the vaults | ||||
141 | connect(&d->kamd, &KActivities::Consumer::activitiesChanged, | ||||
142 | this, &PlasmaVaultService::onActivitiesChanged); | ||||
133 | 143 | | |||
134 | for (const Device &device: Vault::availableDevices()) { | 144 | for (const Device &device: Vault::availableDevices()) { | ||
135 | registerVault(new Vault(device, this)); | 145 | registerVault(new Vault(device, this)); | ||
136 | } | 146 | } | ||
147 | | ||||
148 | onActivitiesChanged(d->kamd.activities()); | ||||
137 | } | 149 | } | ||
138 | 150 | | |||
139 | 151 | | |||
Context not available. | |||||
432 | 444 | | |||
433 | 445 | | |||
434 | 446 | | |||
435 | void PlasmaVaultService::onCurrentActivityChanged( | | |||
436 | const QString ¤tActivity) | | |||
437 | { | | |||
438 | for (auto* vault: d->knownVaults.values()) { | | |||
439 | const auto vaultActivities = vault->activities(); | | |||
440 | if (!vaultActivities.isEmpty() && !vaultActivities.contains(currentActivity)) { | | |||
441 | vault->close(); | | |||
442 | } | | |||
443 | } | | |||
444 | } | | |||
445 | | ||||
446 | | ||||
447 | | ||||
448 | bool PlasmaVaultService::hasOpenVaults() const | 447 | bool PlasmaVaultService::hasOpenVaults() const | ||
449 | { | 448 | { | ||
450 | return !d->openVaults.isEmpty(); | 449 | return !d->openVaults.isEmpty(); | ||
Context not available. | |||||
503 | } | 502 | } | ||
504 | 503 | | |||
505 | 504 | | |||
505 | | ||||
506 | void PlasmaVaultService::onActivitiesChanged(const QStringList &knownActivities) | ||||
507 | { | ||||
508 | if (knownActivities == QStringList{ "00000000-0000-0000-0000-000000000000" }) return; | ||||
509 | qDebug() << "Known activities:" << knownActivities; | ||||
510 | | ||||
511 | for (auto* vault: d->knownVaults.values()) { | ||||
512 | auto vaultActivities = vault->activities(); | ||||
513 | const auto removedBegin = std::remove_if( | ||||
514 | vaultActivities.begin(), vaultActivities.end(), | ||||
515 | [&knownActivities] (const QString &vaultActivity) { | ||||
516 | return !knownActivities.contains(vaultActivity); | ||||
517 | }); | ||||
518 | if (removedBegin != vaultActivities.end()) { | ||||
519 | vaultActivities.erase(removedBegin, vaultActivities.end()); | ||||
520 | vault->setActivities(vaultActivities); | ||||
521 | vault->saveConfiguration(); | ||||
522 | } | ||||
523 | } | ||||
524 | } | ||||
525 | | ||||
526 | | ||||
527 | | ||||
528 | void PlasmaVaultService::onCurrentActivityChanged(const QString ¤tActivity) | ||||
529 | { | ||||
530 | for (auto* vault: d->knownVaults.values()) { | ||||
531 | const auto vaultActivities = vault->activities(); | ||||
532 | if (!vaultActivities.isEmpty() && !vaultActivities.contains(currentActivity)) { | ||||
533 | vault->close(); | ||||
534 | } | ||||
535 | } | ||||
536 | } | ||||
537 | | ||||
538 | | ||||
539 | | ||||
540 | void PlasmaVaultService::onActivityRemoved(const QString &removedActivity) | ||||
541 | { | ||||
542 | for (auto* vault: d->knownVaults.values()) { | ||||
543 | auto vaultActivities = vault->activities(); | ||||
544 | if (vaultActivities.removeAll(removedActivity) > 0) { | ||||
545 | vault->setActivities(vaultActivities); | ||||
546 | vault->saveConfiguration(); | ||||
547 | emit vaultChanged(vault->info()); | ||||
548 | } | ||||
549 | } | ||||
550 | } | ||||
551 | | ||||
506 | #include "service.moc" | 552 | #include "service.moc" | ||
507 | 553 | | |||
Context not available. |