mirror of
https://invent.kde.org/plasma/plasma-desktop.git
synced 2026-11-03 22:59:45 -09:00
Summary: Depends on D27127 Reviewers: ervin, crossi, bport, #plasma Reviewed By: ervin, bport Subscribers: plasma-devel Tags: #plasma Differential Revision: https://phabricator.kde.org/D27480
106 lines
4 KiB
C++
106 lines
4 KiB
C++
/***************************************************************************
|
|
* Copyright (C) 2009 by Trever Fischer <wm161@wm161.net> *
|
|
* Copyright (C) 2015 by Kai Uwe Broulik <kde@privat.broulik.de> *
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU General Public License *
|
|
* along with this program; if not, write to the *
|
|
* Free Software Foundation, Inc., *
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . *
|
|
***************************************************************************/
|
|
|
|
#include "AutomounterSettings.h"
|
|
|
|
KConfigGroup AutomounterSettings::deviceSettings(const QString &udi)
|
|
{
|
|
return config()->group("Devices").group(udi);
|
|
}
|
|
|
|
QStringList AutomounterSettings::knownDevices()
|
|
{
|
|
return config()->group("Devices").groupList();
|
|
}
|
|
|
|
bool AutomounterSettings::deviceIsKnown(const QString &udi)
|
|
{
|
|
return config()->group("Devices").group(udi).readEntry("EverMounted", false);
|
|
}
|
|
|
|
bool AutomounterSettings::deviceAutomountIsForced(const QString &udi, AutomountType type)
|
|
{
|
|
switch (type) {
|
|
case Login:
|
|
return deviceSettings(udi).readEntry("ForceLoginAutomount", false);
|
|
case Attach:
|
|
return deviceSettings(udi).readEntry("ForceAttachAutomount", false);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
bool AutomounterSettings::shouldAutomountDevice(const QString &udi, AutomountType type)
|
|
{
|
|
// We auto-mount the device, if:
|
|
// 1.) auto-mounting is forced, or
|
|
// 2.) auto-mounting is enabled
|
|
// and auto-mounting on login/attach is configured
|
|
// and the device is known, has been seen mounted last, or is unknown to us
|
|
|
|
bool known = deviceIsKnown(udi);
|
|
bool enabled = automountEnabled();
|
|
bool automountUnknown = automountUnknownDevices();
|
|
bool deviceAutomount = deviceAutomountIsForced(udi, type);
|
|
bool lastSeenMounted = deviceSettings(udi).readEntry("LastSeenMounted", false);
|
|
bool typeCondition = false;
|
|
switch(type) {
|
|
case Login:
|
|
typeCondition = automountOnLogin();
|
|
break;
|
|
case Attach:
|
|
typeCondition = automountOnPlugin();
|
|
break;
|
|
}
|
|
bool shouldAutomount = deviceAutomount || (enabled && typeCondition
|
|
&& (known || lastSeenMounted || automountUnknown));
|
|
|
|
return shouldAutomount;
|
|
}
|
|
|
|
void AutomounterSettings::setDeviceLastSeenMounted(const QString &udi, bool mounted)
|
|
{
|
|
if (mounted) {
|
|
deviceSettings(udi).writeEntry("EverMounted", true);
|
|
}
|
|
deviceSettings(udi).writeEntry("LastSeenMounted", mounted);
|
|
}
|
|
|
|
QString AutomounterSettings::getDeviceName(const QString &udi)
|
|
{
|
|
return deviceSettings(udi).readEntry("LastNameSeen");
|
|
}
|
|
|
|
void AutomounterSettings::saveDevice(const Solid::Device &dev)
|
|
{
|
|
KConfigGroup settings = deviceSettings(dev.udi());
|
|
settings.writeEntry("LastNameSeen", dev.description());
|
|
settings.writeEntry("Icon", dev.icon());
|
|
}
|
|
|
|
bool AutomounterSettings::getDeviceForcedAutomount(const QString &udi)
|
|
{
|
|
return deviceSettings(udi).readEntry("ForceAutomount", false);
|
|
}
|
|
|
|
QString AutomounterSettings::getDeviceIcon(const QString &udi)
|
|
{
|
|
return deviceSettings(udi).readEntry("Icon");
|
|
}
|