generic: device notification reimplementation

how does it look? something like this:
https://ibb.co/1zbDVpk

and because all the SolidUiServer bits are written by me now - copyright
it to me. the actions dialog was not operational btw (not for hotplug
events anyway).

the solidautoeject thing does not even make sense - when the eject
button is pressed it was calling Solid::OpticalDrive::eject() but if the
button is pressed the tray will eject anyway so what was it doing
actually?

solid-device-automounter can be replaced with solid actions but the
devices are mounted for solid actions anyway so dropping it

as for KCM for the solid actions - there can be none but to add features
such as non-interactive actions (e.g. launch the keyboard KCM when a
keyboard is plugged without poping dialog) or actions that do something
on device removal it has to be done anew

note that the action file for opening a file manager was named
"test-predicate-openinwindow" meaning it was a testing thing rather than
a finished thing

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2023-09-06 23:50:46 +03:00
parent 7c6d3bcb45
commit d477598c1d
112 changed files with 731 additions and 13516 deletions

View file

@ -305,9 +305,6 @@ add_subdirectory(menu)
add_subdirectory(knotify)
add_subdirectory(kuiserver)
add_subdirectory(soliduiserver)
add_subdirectory(solidautoeject)
add_subdirectory(solid-actions-kcm)
add_subdirectory(solid-device-automounter)
add_subdirectory(solid-hardware)
add_subdirectory(kcmshell)
add_subdirectory(kioslave)

View file

@ -1,10 +1,22 @@
project(devicenotifier)
project(plasma-applet-devicenotifier)
install(DIRECTORY package/
DESTINATION ${KDE4_DATA_INSTALL_DIR}/plasma/plasmoids/notifier)
set(devicenotifier_SRCS
devicenotifier.cpp
)
install(FILES package/metadata.desktop
DESTINATION ${KDE4_SERVICES_INSTALL_DIR}
RENAME plasma-applet-devicenotifier.desktop)
kde4_add_plugin(plasma_applet_devicenotifier ${devicenotifier_SRCS})
target_link_libraries(plasma_applet_devicenotifier
KDE4::plasma
KDE4::solid
KDE4::kio
)
install(FILES test-predicate-openinwindow.desktop DESTINATION ${KDE4_DATA_INSTALL_DIR}/solid/actions )
install(
TARGETS plasma_applet_devicenotifier
DESTINATION ${KDE4_PLUGIN_INSTALL_DIR}
)
install(
FILES plasma-applet-devicenotifier.desktop
DESTINATION ${KDE4_SERVICES_INSTALL_DIR}
)

View file

@ -0,0 +1,259 @@
/* This file is part of the KDE project
Copyright (C) 2023 Ivailo Monev <xakepa10@gmail.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2, as published by the Free Software Foundation.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "devicenotifier.h"
#include <QTimer>
#include <QEventLoop>
#include <QCoreApplication>
#include <QGraphicsGridLayout>
#include <QGraphicsLinearLayout>
#include <QGridLayout>
#include <Solid/Device>
#include <Solid/DeviceNotifier>
#include <Plasma/Label>
#include <Plasma/Separator>
#include <Plasma/Frame>
#include <Plasma/IconWidget>
#include <Plasma/Meter>
#include <Plasma/ToolTipManager>
#include <Solid/Device>
#include <Solid/Block>
#include <Solid/Predicate>
#include <Solid/StorageVolume>
#include <Solid/StorageDrive>
#include <Solid/StorageAccess>
#include <KIcon>
#include <KRun>
#include <KDiskFreeSpaceInfo>
#include <KDebug>
Q_DECLARE_METATYPE(Plasma::IconWidget*)
Q_DECLARE_METATYPE(Plasma::Meter*)
static const int s_freetimeout = 3000; // 3secs
class DeviceNotifierWidget : public QGraphicsWidget
{
Q_OBJECT
public:
DeviceNotifierWidget(DeviceNotifier* devicenotifier);
~DeviceNotifierWidget();
bool onlyremovable;
public Q_SLOTS:
void slotUpdateLayout();
private Q_SLOTS:
void slotCheckSpaceAndEmblems();
void slotIconActivated();
private:
DeviceNotifier* m_devicenotifier;
QGraphicsLinearLayout* m_layout;
Plasma::Label* m_title;
QList<Plasma::Frame*> m_frames;
QTimer* m_freetimer;
};
DeviceNotifierWidget::DeviceNotifierWidget(DeviceNotifier* devicenotifier)
: QGraphicsWidget(devicenotifier),
onlyremovable(false), // TODO: option for it
m_devicenotifier(devicenotifier),
m_layout(nullptr),
m_title(nullptr)
{
m_layout = new QGraphicsLinearLayout(Qt::Vertical, this);
m_title = new Plasma::Label(this);
m_title->setText(i18n("No Devices Available"));
m_title->setAlignment(Qt::AlignCenter);
m_layout->addItem(m_title);
setLayout(m_layout);
m_freetimer = new QTimer(this);
m_freetimer->setInterval(s_freetimeout);
connect(
m_freetimer, SIGNAL(timeout()),
this, SLOT(slotCheckSpaceAndEmblems())
);
connect(
Solid::DeviceNotifier::instance(), SIGNAL(deviceAdded(QString)),
this, SLOT(slotUpdateLayout())
);
connect(
Solid::DeviceNotifier::instance(), SIGNAL(deviceRemoved(QString)),
this, SLOT(slotUpdateLayout())
);
}
DeviceNotifierWidget::~DeviceNotifierWidget()
{
}
void DeviceNotifierWidget::slotUpdateLayout()
{
Solid::Predicate solidpredicate(Solid::DeviceInterface::StorageVolume);
QList<Solid::Device> soliddevices = Solid::Device::listFromQuery(solidpredicate);
QMutableListIterator<Solid::Device> soliditer(soliddevices);
while (soliditer.hasNext()) {
const Solid::Device soliddevice = soliditer.next();
const Solid::StorageVolume *solidstoragevolume = soliddevice.as<Solid::StorageVolume>();
if (!solidstoragevolume || solidstoragevolume->isIgnored()) {
soliditer.remove();
continue;
}
if (onlyremovable) {
const Solid::StorageDrive *solidstoragedrive = soliddevice.as<Solid::StorageDrive>();
if (!solidstoragedrive || !solidstoragedrive->isRemovable()) {
soliditer.remove();
}
}
}
foreach (Plasma::Frame* frame, m_frames) {
m_layout->removeItem(frame);
}
qDeleteAll(m_frames);
m_frames.clear();
if (soliddevices.isEmpty()) {
m_title->show();
m_devicenotifier->setStatus(Plasma::ItemStatus::PassiveStatus);
return;
}
m_freetimer->stop();
m_title->hide();
m_devicenotifier->setStatus(Plasma::ItemStatus::ActiveStatus);
foreach (const Solid::Device &soliddevice, soliddevices) {
Plasma::Frame* frame = new Plasma::Frame(this);
frame->setProperty("_k_udi", soliddevice.udi());
QGraphicsGridLayout* framelayout = new QGraphicsGridLayout(frame);
Plasma::IconWidget* iconwidget = new Plasma::IconWidget(frame);
iconwidget->setOrientation(Qt::Horizontal);
iconwidget->setIcon(KIcon(soliddevice.icon(), KIconLoader::global(), soliddevice.emblems()));
iconwidget->setText(soliddevice.description());
iconwidget->setProperty("_k_udi", soliddevice.udi());
connect(
iconwidget, SIGNAL(activated()),
this, SLOT(slotIconActivated())
);
framelayout->addItem(iconwidget, 0, 0);
frame->setProperty("_k_iconwidget", QVariant::fromValue(iconwidget));
Plasma::Meter* meter = new Plasma::Meter(frame);
meter->setMeterType(Plasma::Meter::BarMeterHorizontal);
framelayout->addItem(meter, 1, 0);
frame->setProperty("_k_meter", QVariant::fromValue(meter));
frame->setLayout(framelayout);
m_layout->addItem(frame);
m_frames.append(frame);
}
QSizeF minimumsize = sizeHint(Qt::MinimumSize);
// margins
minimumsize.setWidth(minimumsize.width() + 20);
minimumsize.setHeight(minimumsize.height() + 20);
m_devicenotifier->setMinimumSize(minimumsize);
slotCheckSpaceAndEmblems();
m_freetimer->start();
}
void DeviceNotifierWidget::slotCheckSpaceAndEmblems()
{
foreach (const Plasma::Frame* frame, m_frames) {
const QString solidudi = frame->property("_k_udi").toString();
const Solid::Device soliddevice(solidudi);
const Solid::StorageAccess *solidstorageaccess = soliddevice.as<Solid::StorageAccess>();
QString devicepath;
// using the mountpoint is slightly more reliable
if (solidstorageaccess) {
devicepath = solidstorageaccess->filePath();
}
if (devicepath.isEmpty()) {
const Solid::Block *solidblock = soliddevice.as<Solid::Block>();
if (solidblock) {
devicepath = solidblock->device();
}
}
if (!devicepath.isEmpty()) {
const KDiskFreeSpaceInfo kfreespaceinfo = KDiskFreeSpaceInfo::freeSpaceInfo(devicepath);
Plasma::Meter* meter = qvariant_cast<Plasma::Meter*>(frame->property("_k_meter"));
meter->setMaximum(qMax(kfreespaceinfo.size() / 1024, KIO::filesize_t(100)));
meter->setValue(kfreespaceinfo.used() / 1024);
// qDebug() << Q_FUNC_INFO << solidudi << kfreespaceinfo.size() << kfreespaceinfo.used();
} else {
kWarning() << "no mountpoint and no device path for" << solidudi;
}
Plasma::IconWidget* iconwidget = qvariant_cast<Plasma::IconWidget*>(frame->property("_k_iconwidget"));
iconwidget->setIcon(KIcon(soliddevice.icon(), KIconLoader::global(), soliddevice.emblems()));
}
}
void DeviceNotifierWidget::slotIconActivated()
{
const Plasma::IconWidget* iconwidget = qobject_cast<Plasma::IconWidget*>(sender());
const QString solidudi = iconwidget->property("_k_udi").toString();
Solid::Device soliddevice(solidudi);
Solid::StorageAccess* solidstorageacces = soliddevice.as<Solid::StorageAccess>();
if (!solidstorageacces) {
kWarning() << "not storage access" << solidudi;
return;
}
QString mountpoint = solidstorageacces->filePath();
if (mountpoint.isEmpty()) {
solidstorageacces->setup();
mountpoint = solidstorageacces->filePath();
}
if (!mountpoint.isEmpty()) {
KRun::runUrl(KUrl(mountpoint), "inode/directory", nullptr);
}
}
DeviceNotifier::DeviceNotifier(QObject *parent, const QVariantList &args)
: Plasma::PopupApplet(parent, args),
m_devicenotifierwidget(nullptr)
{
KGlobal::locale()->insertCatalog("plasma_applet_devicenotifier");
setAspectRatioMode(Plasma::AspectRatioMode::IgnoreAspectRatio);
setPopupIcon("device-notifier");
setMinimumSize(100, 50);
setPreferredSize(290, 340);
m_devicenotifierwidget = new DeviceNotifierWidget(this);
}
DeviceNotifier::~DeviceNotifier()
{
delete m_devicenotifierwidget;
}
void DeviceNotifier::init()
{
QTimer::singleShot(500, m_devicenotifierwidget, SLOT(slotUpdateLayout()));
}
QGraphicsWidget* DeviceNotifier::graphicsWidget()
{
return m_devicenotifierwidget;
}
#include "moc_devicenotifier.cpp"
#include "devicenotifier.moc"

View file

@ -0,0 +1,45 @@
/* This file is part of the KDE project
Copyright (C) 2023 Ivailo Monev <xakepa10@gmail.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2, as published by the Free Software Foundation.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef DEVICENOTIFIER_H
#define DEVICENOTIFIER_H
#include <Plasma/PopupApplet>
class DeviceNotifierWidget;
class DeviceNotifier : public Plasma::PopupApplet
{
Q_OBJECT
public:
DeviceNotifier(QObject *parent, const QVariantList &args);
~DeviceNotifier();
// Plasma::Applet reimplementation
void init() final;
// Plasma::PopupApplet reimplementation
QGraphicsWidget* graphicsWidget() final;
private:
friend DeviceNotifierWidget;
DeviceNotifierWidget *m_devicenotifierwidget;
};
K_EXPORT_PLASMA_APPLET(devicenotifier, DeviceNotifier)
#endif // DEVICENOTIFIER_H

View file

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
<kcfgfile name=""/>
<group name="General">
<entry name="removableDevices" type="Bool">
<default>true</default>
</entry>
<entry name="nonRemovableDevices" type="Bool">
<default>false</default>
</entry>
<entry name="allDevices" type="Bool">
<default>false</default>
</entry>
</group>
</kcfg>

View file

@ -1,82 +0,0 @@
/*
* Copyright 2011 Viranch Mehta <viranch.mehta@gmail.com>
* Copyright 2012 Jacopo De Simoi <wilderkde@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 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 Library 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.
*/
import QtQuick 1.0
import org.kde.plasma.core 0.1 as PlasmaCore
import org.kde.qtextracomponents 0.1
import org.kde.plasma.components 0.1 as PlasmaComponents
Item {
property string icon
property alias label: actionText.text
property string predicate
height: actionIcon.height+(2*actionsList.actionVerticalMargins)
width: actionsList.width
PlasmaCore.IconItem {
id: actionIcon
source: QIcon (parent.icon)
height: actionsList.actionIconHeight
width: actionsList.actionIconHeight
anchors {
top: parent.top
topMargin: actionsList.actionVerticalMargins
bottom: parent.bottom
bottomMargin: actionsList.actionVerticalMargins
left: parent.left
leftMargin: 3
}
}
PlasmaComponents.Label {
id: actionText
anchors {
top: actionIcon.top
bottom: actionIcon.bottom
left: actionIcon.right
leftMargin: 5
right: parent.right
rightMargin: 3
}
verticalAlignment: Text.AlignVCenter
wrapMode: Text.WordWrap
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
onEntered: {
actionsList.currentIndex = index;
actionsList.highlightItem.opacity = 1;
makeCurrent();
}
onExited: {
actionsList.highlightItem.opacity = 0;
}
onClicked: {
service = hpSource.serviceForSource(udi);
operation = service.operationParameters("invokeAction");
operation["predicate"] = predicate;
service.startOperationCall("invokeAction", operation);
notifierDialog.currentExpanded = -1;
notifierDialog.currentIndex = -1;
}
}
}

View file

@ -1,295 +0,0 @@
/*
* Copyright 2011 Viranch Mehta <viranch.mehta@gmail.com>
* Copyright 2012 Jacopo De Simoi <wilderkde@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 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 Library 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.
*/
import QtQuick 1.0
import org.kde.plasma.core 0.1 as PlasmaCore
import org.kde.plasma.components 0.1 as PlasmaComponents
import org.kde.qtextracomponents 0.1
Item {
id: deviceItem
property string udi
property string icon
property alias deviceName: deviceLabel.text
property string emblemIcon
property int state
property alias leftActionIcon: leftAction.source
property bool mounted
property bool expanded: (notifierDialog.currentExpanded == index)
property alias percentUsage: freeSpaceBar.value
signal leftActionTriggered
height: container.childrenRect.height + padding.margins.top + padding.margins.bottom
width: parent.width
PlasmaCore.FrameSvgItem {
id: padding
imagePath: "widgets/viewitem"
prefix: "hover"
opacity: 0
anchors.fill: parent
}
MouseArea {
id: container
anchors {
fill: parent
topMargin: padding.margins.top
leftMargin: padding.margins.left
rightMargin: padding.margins.right
bottomMargin: padding.margins.bottom
}
hoverEnabled: true
onEntered: {
notifierDialog.currentIndex = index;
notifierDialog.highlightItem.opacity = 1;
service = sdSource.serviceForSource(udi);
operation = service.operationParameters("updateFreespace");
service.startOperationCall("updateFreespace", operation);
}
onExited: {
notifierDialog.highlightItem.opacity = expanded ? 1 : 0;
}
onClicked: {
notifierDialog.itemFocused();
var actions = hpSource.data[udi]["actions"];
if (actions.length == 1) {
service = hpSource.serviceForSource(udi);
operation = service.operationParameters("invokeAction");
operation["predicate"] = actions[0]["predicate"];
service.startOperationCall("invokeAction", operation);
} else {
notifierDialog.currentExpanded = expanded ? -1 : index;
}
}
// FIXME: Device item loses focus on mounting/unmounting it,
// or specifically, when some UI element changes.
PlasmaCore.IconItem {
id: deviceIcon
width: theme.iconSizes.dialog
height: width
z: 900
source: QIcon(deviceItem.icon)
enabled: deviceItem.state == 0
anchors {
left: parent.left
top: parent.top
}
PlasmaCore.IconItem {
id: emblem
width: theme.iconSizes.dialog * 0.5
height: width
source: deviceItem.state == 0 ? QIcon(emblemIcon) : QIcon();
anchors {
left: parent.left
bottom: parent.bottom
}
}
}
Column {
id: labelsColumn
spacing: padding.margins.top/2
z: 900
anchors {
top: parent.top
left: deviceIcon.right
right: leftActionArea.left
leftMargin: padding.margins.left
rightMargin: padding.margins.right
}
PlasmaComponents.Label {
id: deviceLabel
height: paintedHeight
wrapMode: Text.WordWrap
anchors {
left: parent.left
right: parent.right
}
enabled: deviceItem.state == 0
}
Item {
height:freeSpaceBar.height
anchors {
left: parent.left
right: parent.right
}
opacity: (deviceItem.state == 0 && mounted) ? 1 : 0
PlasmaComponents.ProgressBar {
id: freeSpaceBar
height: deviceStatus.height
anchors {
left: parent.left
right: parent.right
}
opacity: mounted ? deviceStatus.opacity : 0
minimumValue: 0
maximumValue: 100
orientation: Qt.Horizontal
}
}
Item {
width:deviceStatus.width
height:deviceStatus.height
PlasmaComponents.Label {
id: deviceStatus
height: paintedHeight
// FIXME: state changes do not reach the plasmoid if the
// device was already attached when the plasmoid was
// initialized
text: deviceItem.state == 0 ? container.idleStatus() : (deviceItem.state==1 ? i18nc("Accessing is a less technical word for Mounting; translation should be short and mean \'Currently mounting this device\'", "Accessing...") : i18nc("Removing is a less technical word for Unmounting; translation shoud be short and mean \'Currently unmounting this device\'", "Removing..."))
font.pointSize: theme.smallestFont.pointSize
color: "#99"+(theme.textColor.toString().substr(1))
opacity: deviceItem.state != 0 || container.containsMouse || expanded ? 1 : 0;
Behavior on opacity { NumberAnimation { duration: 150 } }
}
}
}
function idleStatus() {
var actions = hpSource.data[udi]["actions"];
if (actions.length > 1) {
return i18np("1 action for this device", "%1 actions for this device", actions.length);
} else {
return actions[0]["text"];
}
}
PlasmaCore.ToolTip {
target: freeSpaceBar
subText: i18nc("@info:status Free disk space", "%1 free", sdSource.data[udi]["Free Space Text"])
}
MouseEventListener {
id: leftActionArea
width: theme.iconSizes.dialog*0.8
height: width
hoverEnabled: true
anchors {
right: parent.right
verticalCenter: deviceIcon.verticalCenter
}
onClicked: {
notifierDialog.itemFocused();
if (leftAction.visible) {
leftActionTriggered()
}
}
PlasmaCore.IconItem {
id: leftAction
anchors.fill: parent
active: leftActionArea.containsMouse
visible: !busySpinner.visible
}
PlasmaComponents.BusyIndicator {
id: busySpinner
anchors.fill: parent
running: visible
visible: deviceItem.state != 0
}
}
PlasmaCore.ToolTip {
target: leftAction
subText: {
if (!model["Accessible"]) {
return i18n("Click to mount this device.")
} else if (model["Device Types"].indexOf("OpticalDisc") != -1) {
return i18n("Click to eject this disc.")
} else if (model["Removable"]) {
return i18n("Click to safely remove this device.")
} else {
return i18n("Click to access this device from other applications.")
}
}
}
PlasmaCore.ToolTip {
target: deviceIcon
subText: {
if (model["Accessible"] || deviceItem.state != 0) {
if (model["Removable"]) {
return i18n("It is currently <b>not safe</b> to remove this device: applications may be accessing it. Click the eject button to safely remove this device.")
} else {
return i18n("This device is currently accessible.")
}
} else {
if (model["Removable"]) {
if (model["In Use"]) {
return i18n("It is currently <b>not safe</b> to remove this device: applications may be accessing other volumes on this device. Click the eject button on these other volumes to safely remove this device.");
} else {
return i18n("It is currently safe to remove this device.")
}
} else {
return i18n("This device is not currently accessible.")
}
}
}
}
ListView {
id: actionsList
anchors {
top: labelsColumn.bottom
left: deviceIcon.right
right: leftActionArea.left
}
interactive: false
model: hpSource.data[udi]["actions"]
property int actionVerticalMargins: 5
property int actionIconHeight: theme.iconSizes.dialog*0.8
height: expanded ? ((actionIconHeight+(2*actionVerticalMargins))*model.length)+anchors.topMargin : 0
opacity: expanded ? 1 : 0
delegate: actionItem
highlight: PlasmaComponents.Highlight{}
Behavior on opacity { NumberAnimation { duration: 150 } }
Component.onCompleted: currentIndex = -1
}
Component {
id: actionItem
ActionItem {
icon: modelData["icon"]
label: modelData["text"]
predicate: modelData["predicate"]
}
}
}
function makeCurrent()
{
notifierDialog.currentIndex = index;
notifierDialog.highlightItem.opacity = 1;
}
}

View file

@ -1,147 +0,0 @@
/*
* Copyright 2011 Viranch Mehta <viranch.mehta@gmail.com>
* Copyright 2012 Jacopo De Simoi <wilderkde@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 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 Library 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.
*/
import QtQuick 1.0
import org.kde.plasma.core 0.1 as PlasmaCore
import org.kde.plasma.components 0.1 as PlasmaComponents
Item {
id: statusBar
property bool expanded: false
visible: false
height: visible ? (expanded ? statusText.paintedHeight+detailsText.paintedHeight+3 : statusText.paintedHeight) : 0
Behavior on height { NumberAnimation { duration: 200 } }
function setData(error, details, udi) {
shown = visible;
if (shown)
close();
statusText.text = error;
detailsText.text = details;
if (shown)
showTimer.restart();
else
show();
}
function show() {
expanded = false;
visible = true;
showTimer.stop();
hideTimer.restart();
}
function toggleDetails() {
expanded = !expanded;
hideTimer.running = !expanded;
}
function close() {
hideTimer.stop();
showTimer.stop();
expanded = false;
visible = false;
}
Timer {
id: hideTimer
interval: 7500
onTriggered: close();
}
Timer {
id: showTimer
interval: 300
onTriggered: show();
}
PlasmaCore.Svg {
id: iconsSvg
imagePath: "widgets/configuration-icons"
}
property int iconSize: 16
PlasmaCore.SvgItem {
id: closeBtn
width: iconSize
height: iconSize
svg: iconsSvg
elementId: "close"
anchors {
top: parent.top
right: parent.right
}
}
MouseArea {
anchors.fill: closeBtn
onClicked: close();
}
PlasmaCore.SvgItem {
id: detailsBtn
visible: detailsText.text!=""
width: visible ? iconSize : 0
height: visible ? iconSize : 0
svg: iconsSvg
elementId: expanded ? "collapse" : "restore"
anchors {
top: parent.top
right: closeBtn.left
rightMargin: 5
}
}
MouseArea {
anchors.fill: detailsBtn
enabled: detailsBtn.visible
onClicked: toggleDetails();
}
PlasmaComponents.Label {
id: statusText
anchors {
top: parent.top
left: parent.left
right: detailsBtn.left
bottom: detailsText.top
bottomMargin: expanded ? 3 : 0
}
clip: true
wrapMode: Text.WordWrap
}
PlasmaComponents.Label {
id: detailsText
anchors {
left: parent.left
right: parent.right
bottom: parent.bottom
}
font.pointSize: theme.defaultFont.pointSize * 0.8
clip: true
wrapMode: Text.WordWrap
height: expanded ? paintedHeight : 0
Behavior on height { NumberAnimation { duration: 200 } }
}
}

View file

@ -1,64 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>devicenotifierConfig</class>
<widget class="QWidget" name="devicenotifierConfig">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>193</width>
<height>83</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QRadioButton" name="kcfg_removableDevices">
<property name="text">
<string>Removable devices only</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QRadioButton" name="kcfg_nonRemovableDevices">
<property name="text">
<string>Non-removable devices only</string>
</property>
</widget>
</item>
<item row="1" column="1" rowspan="3">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>2</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="0">
<widget class="QRadioButton" name="kcfg_allDevices">
<property name="text">
<string>All devices</string>
</property>
</widget>
</item>
<item row="3" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>3</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<connections/>
</ui>

View file

@ -1,407 +0,0 @@
/*
* Copyright 2011 Viranch Mehta <viranch.mehta@gmail.com>
* Copyright 2012 Jacopo De Simoi <wilderkde@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 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 Library 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.
*/
import QtQuick 1.0
import org.kde.plasma.core 0.1 as PlasmaCore
import org.kde.plasma.components 0.1 as PlasmaComponents
import org.kde.plasma.extras 0.1 as PlasmaExtras
Item {
id: devicenotifier
property int minimumWidth: 290
property int minimumHeight: 340
property string devicesType: "removable"
property string expandedDevice
PlasmaCore.Theme {
id: theme
}
PlasmaCore.DataSource {
id: hpSource
engine: "hotplug"
connectedSources: sources
interval: 0
}
PlasmaCore.DataSource {
id: sdSource
engine: "soliddevice"
connectedSources: hpSource.sources
interval: 0
property string last
onSourceAdded: {
last = source;
processLastDevice(true)
}
onSourceRemoved: {
if (expandedDevice == source) {
notifierDialog.currentExpanded = -1;
expandedDevice = "";
}
}
onDataChanged: {
processLastDevice(true)
}
onNewData: {
last = sourceName;
processLastDevice(false);
}
function processLastDevice(expand) {
if (last != "") {
if (devicesType == "all" ||
(devicesType == "removable" && data[last] && data[last]["Removable"] == true) ||
(devicesType == "nonRemovable" && data[last] && data[last]["Removable"] == false)) {
updateTooltip();
if (expand && hpSource.data[last]["added"]) {
expandDevice(last)
}
last = "";
}
}
}
}
function popupEventSlot(popped) {
if (!popped) {
// reset the property that lets us remember if an item was clicked
// (versus only hovered) for autohide purposes
notifierDialog.itemClicked = true;
expandedDevice = "";
notifierDialog.currentExpanded = -1;
notifierDialog.currentIndex = -1;
}
}
PlasmaCore.DataSource {
id: statusSource
engine: "devicenotifications"
property string last
onSourceAdded: {
last = source;
connectSource(source);
}
onDataChanged: {
if (last != "") {
statusBar.setData(data[last]["error"], data[last]["errorDetails"], data[last]["udi"]);
plasmoid.status = "NeedsAttentionStatus";
plasmoid.showPopup(2500)
}
}
}
Component.onCompleted: {
plasmoid.addEventListener ('ConfigChanged', configChanged);
plasmoid.popupEvent.connect(popupEventSlot);
plasmoid.aspectRatioMode = IgnoreAspectRatio;
if (notifierDialog.count == 0) {
plasmoid.status = "PassiveStatus"
}
updateTooltip()
}
function configChanged()
{
var all = plasmoid.readConfig("allDevices");
var removable = plasmoid.readConfig("removableDevices");
if (all == true) {
devicesType = "all";
filterModel.filterRegExp = "";
} else if (removable == true) {
devicesType = "removable";
filterModel.filterRegExp = "true";
} else {
devicesType = "nonRemovable";
filterModel.filterRegExp = "false";
}
notifierDialog.currentIndex = -1;
notifierDialog.currentExpanded = -1;
}
function expandDevice(udi)
{
if (hpSource.data[udi]["actions"].length > 1) {
expandedDevice = udi
}
// reset the property that lets us remember if an item was clicked
// (versus only hovered) for autohide purposes
notifierDialog.itemClicked = false;
plasmoid.setPopupIconByName("preferences-desktop-notification")
plasmoid.showPopup(7500)
popupIconTimer.restart()
}
function updateTooltip()
{
var tooltip = new Object
if (notifierDialog.count == 0) {
tooltip["image"] = "device-notifier"
tooltip["mainText"] = i18n("No devices available")
} else if (sdSource.last != "") {
tooltip["image"] = sdSource.data[sdSource.last]["Icon"]
tooltip["mainText"] = i18n("Most recent device")
tooltip["subText"] = sdSource.data[sdSource.last]["Description"]
}
plasmoid.popupIconToolTip = tooltip
}
Timer {
id: popupIconTimer
interval: 2500
onTriggered: plasmoid.setPopupIconByName("device-notifier");
}
Timer {
id: passiveTimer
interval: 2500
onTriggered: plasmoid.status = "PassiveStatus"
}
MouseArea {
hoverEnabled: true
anchors.fill: parent
onEntered: notifierDialog.itemHovered()
onExited: notifierDialog.itemUnhovered()
PlasmaComponents.Label {
id: header
text: filterModel.count>0 ? i18n("Available Devices") : i18n("No Devices Available")
anchors { top: parent.top; topMargin: 3; left: parent.left; right: parent.right }
horizontalAlignment: Text.AlignHCenter
}
PlasmaCore.Svg {
id: lineSvg
imagePath: "widgets/line"
}
PlasmaCore.SvgItem {
id: headerSeparator
svg: lineSvg
elementId: "horizontal-line"
anchors {
top: header.bottom
left: parent.left
right: parent.right
topMargin: 3
}
height: lineSvg.elementSize("horizontal-line").height
}
PlasmaExtras.ScrollArea {
anchors {
top : headerSeparator.bottom
topMargin: 10
bottom: statusBarSeparator.top
left: parent.left
right: parent.right
}
ListView {
id: notifierDialog
model: PlasmaCore.SortFilterModel {
id: filterModel
sourceModel: PlasmaCore.DataModel {
dataSource: sdSource
}
filterRole: "Removable"
filterRegExp: "true"
sortRole: "Timestamp"
sortOrder: Qt.DescendingOrder
}
property int currentExpanded: -1
property bool itemClicked: true
delegate: deviceItem
highlight: PlasmaComponents.Highlight{}
//this is needed to make SectionScroller actually work
//acceptable since one doesn't have a billion of devices
cacheBuffer: 1000
onCountChanged: {
if (count == 0) {
updateTooltip();
passiveTimer.restart()
} else {
passiveTimer.stop()
plasmoid.status = "ActiveStatus"
}
}
function itemHovered()
{
// prevent autohide from catching us!
plasmoid.showPopup(0);
}
function itemUnhovered()
{
if (!itemClicked) {
plasmoid.showPopup(1000);
}
}
function itemFocused()
{
if (!itemClicked) {
// prevent autohide from catching us!
itemClicked = true;
plasmoid.showPopup(0)
}
}
section {
property: "Type Description"
delegate: Item {
height: childrenRect.height
width: notifierDialog.width
PlasmaCore.SvgItem {
visible: parent.y > 0
svg: lineSvg
elementId: "horizontal-line"
anchors {
left: parent.left
right: parent.right
}
height: lineSvg.elementSize("horizontal-line").height
}
PlasmaComponents.Label {
x: 8
y: 8
opacity: 0.6
text: section
color: theme.textColor
}
}
}
Component.onCompleted: currentIndex=-1
}
}
Component {
id: deviceItem
DeviceItem {
id: wrapper
width: notifierDialog.width
udi: DataEngineSource
icon: sdSource.data[udi]["Icon"]
deviceName: sdSource.data[udi]["Description"]
emblemIcon: Emblems[0]
state: model["State"]
percentUsage: {
var freeSpace = new Number(sdSource.data[udi]["Free Space"]);
var size = new Number(model["Size"]);
var used = size-freeSpace;
return used*100/size;
}
leftActionIcon: {
if (mounted) {
return QIcon("media-eject");
} else {
return QIcon("emblem-mounted");
}
}
mounted: model["Accessible"]
onLeftActionTriggered: {
operationName = mounted ? "unmount" : "mount";
service = sdSource.serviceForSource(udi);
operation = service.operationParameters(operationName);
service.startOperationCall(operationName, operation);
}
property bool isLast: (expandedDevice == udi)
property int operationResult: (model["Operation result"])
onIsLastChanged: {
if (isLast) {
notifierDialog.currentExpanded = index
makeCurrent();
}
}
onOperationResultChanged: {
if (operationResult == 1) {
plasmoid.setPopupIconByName("dialog-ok")
popupIconTimer.restart()
} else if (operationResult == 2) {
plasmoid.setPopupIconByName("dialog-error")
popupIconTimer.restart()
}
}
Behavior on height { NumberAnimation { duration: 150 } }
}
}
PlasmaCore.SvgItem {
id: statusBarSeparator
svg: lineSvg
elementId: "horizontal-line"
height: lineSvg.elementSize("horizontal-line").height
anchors {
bottom: statusBar.top
bottomMargin: statusBar.visible ? 3:0
left: parent.left
right: parent.right
}
visible: statusBar.height>0
}
StatusBar {
id: statusBar
anchors {
left: parent.left
leftMargin: 5
right: parent.right
rightMargin: 5
bottom: parent.bottom
bottomMargin: 5
}
}
} // MouseArea
function isMounted (udi) {
var types = sdSource.data[udi]["Device Types"];
if (types.indexOf("Storage Access")>=0) {
if (sdSource.data[udi]["Accessible"]) {
return true;
}
else {
return false;
}
}
else if (types.indexOf("Storage Volume")>=0 && types.indexOf("OpticalDisc")>=0) {
return true;
}
else {
return false;
}
}
}

View file

@ -154,16 +154,14 @@ Comment[zh_TW]=通知與存取新裝置
Icon=device-notifier
Type=Service
X-KDE-ServiceTypes=Plasma/Applet,Plasma/PopupApplet
X-KDE-Library=plasma_applet_devicenotifier
X-Plasma-API=declarativeappletscript
X-Plasma-MainScript=ui/devicenotifier.qml
X-Plasma-DefaultSize=290,340
X-Plasma-NotificationArea=true
X-Plasma-ConfigPlugins=solid-actions,device_automounter_kcm
X-Plasma-ConfigPlugins=solidactions
X-KDE-PluginInfo-Author=Viranch Mehta, Jacopo De Simoi
X-KDE-PluginInfo-Email=wilderkde@gmail.com
X-KDE-PluginInfo-Name=notifier
X-KDE-PluginInfo-Author=Ivailo Monev
X-KDE-PluginInfo-Email=xakepa10@gmail.com
X-KDE-PluginInfo-Name=devicenotifier
X-KDE-PluginInfo-Version=1.0
X-KDE-PluginInfo-Website=
X-KDE-PluginInfo-Category=System Information

View file

@ -1,11 +1,9 @@
add_subdirectory(applicationjobs)
add_subdirectory(apps)
add_subdirectory(devicenotifications)
add_subdirectory(dict)
add_subdirectory(favicons)
add_subdirectory(filebrowser)
add_subdirectory(geolocation)
add_subdirectory(hotplug)
add_subdirectory(mpris2)
add_subdirectory(notifications)
add_subdirectory(places)

View file

@ -1,12 +0,0 @@
set(device_notifications_engine_SRCS
devicenotificationsengine.cpp
)
qt4_add_dbus_adaptor( device_notifications_engine_SRCS org.kde.DeviceNotifications.xml devicenotificationsengine.h DeviceNotificationsEngine )
kde4_add_plugin(plasma_engine_devicenotifications ${device_notifications_engine_SRCS})
target_link_libraries(plasma_engine_devicenotifications KDE4::plasma KDE4::kdecore)
install(TARGETS plasma_engine_devicenotifications DESTINATION ${KDE4_PLUGIN_INSTALL_DIR})
install(FILES plasma-dataengine-devicenotifications.desktop DESTINATION ${KDE4_SERVICES_INSTALL_DIR} )

View file

@ -1,60 +0,0 @@
/*
* Copyright (C) 2010 Jacopo De Simoi <wilderkde@gmail.com>
*
* This program is free software you can redistribute it and/or
* modify it under the terms of the GNU Library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#include "devicenotificationsengine.h"
#include "devicenotificationsadaptor.h"
#include <Plasma/DataContainer>
#include <KDebug>
DeviceNotificationsEngine::DeviceNotificationsEngine( QObject* parent, const QVariantList& args )
: Plasma::DataEngine( parent, args ),
m_id(0)
{
new DeviceNotificationsAdaptor(this);
QDBusConnection dbus = QDBusConnection::sessionBus();
dbus.registerService( "org.kde.DeviceNotifications" );
dbus.registerObject( "/org/kde/DeviceNotifications", this );
}
DeviceNotificationsEngine::~DeviceNotificationsEngine()
{
QDBusConnection dbus = QDBusConnection::sessionBus();
dbus.unregisterService( "org.kde.DeviceNotifications" );
}
void DeviceNotificationsEngine::notify(int solidError, const QString& error, const QString& errorDetails, const QString &udi)
{
kDebug() << error << errorDetails << udi;
const QString source = QString("notification %1").arg(m_id++);
Plasma::DataEngine::Data notificationData;
notificationData.insert("solidError", solidError);
notificationData.insert("error", error);
notificationData.insert("errorDetails", errorDetails);
notificationData.insert("udi", udi);
setData(source, notificationData );
}
K_EXPORT_PLASMA_DATAENGINE(devicenotifications, DeviceNotificationsEngine)
#include "moc_devicenotificationsengine.cpp"

View file

@ -1,50 +0,0 @@
/*
* Copyright (C) 2010 Jacopo De Simoi <wilderkde@gmail.com>
*
* This program is free software you can redistribute it and/or
* modify it under the terms of the GNU Library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef DEVICENOTIFICATIONSENGINE_H
#define DEVICENOTIFICATIONSENGINE_H
#include <Plasma/DataEngine>
/**
* Engine which provides data sources for device notifications.
* Each notification is represented by one source.
*/
class DeviceNotificationsEngine : public Plasma::DataEngine
{
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "org.kde.DeviceNotifications")
public:
DeviceNotificationsEngine( QObject* parent, const QVariantList& args );
~DeviceNotificationsEngine();
/**
* This function implements part of Notifications DBus interface.
* Once called, will add notification source to the engine
*/
public slots:
void notify(int solidError, const QString& error, const QString& errorDetails, const QString &udi);
private:
uint m_id;
};
#endif

View file

@ -1,11 +0,0 @@
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
<interface name="org.kde.DeviceNotifications">
<method name="notify">
<arg name="solidError" type="i" direction="in"/>
<arg name="error" type="s" direction="in"/>
<arg name="errorDetails" type="s" direction="in"/>
<arg name="udi" type="s" direction="in"/>
</method>
</interface>
</node>

View file

@ -1,133 +0,0 @@
[Desktop Entry]
Name=Device Notifications
Name[ar]=تنبيهات الأجهزة
Name[ast]=Notificaciones de preséu
Name[bg]=Уведомления от устройства
Name[bn]=ি িি
Name[bs]=Obavještenja o uređajima
Name[ca]=Notificacions dels dispositius
Name[ca@valencia]=Notificacions dels dispositius
Name[cs]=Oznamování zařízení
Name[da]=Enhedsbekendtgørelser
Name[de]=Geräte-Benachrichtigungen
Name[el]=Ειδοποιήσεις συσκευών
Name[en_GB]=Device Notifications
Name[es]=Notificaciones de dispositivo
Name[et]=Seadmete märguanded
Name[eu]=Gailu-jakinarazpenak
Name[fi]=Laiteilmoitukset
Name[fr]=Notifications des périphériques
Name[ga]=Fógraí Gléasanna
Name[gl]=Notificacións dos dispositivos
Name[he]=הודעות של התקנים
Name[hi]=
Name[hr]=Obavijesti uređaja
Name[hu]=Eszközértesítések
Name[ia]=Notificationes de dispositivo
Name[id]=Notifikasi Divais
Name[is]=Tilkynningar um tæki
Name[it]=Notifiche dei dispositivi
Name[ja]=
Name[kk]=Құрылғы құлақтандырулары
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Pranešimai apie įrenginius
Name[lv]=Iekārtu paziņojumi
Name[mr]=
Name[nb]=Enhetsvarslinger
Name[nds]=Reedschap-Bescheden
Name[nl]=Meldingen van apparaten
Name[pa]= ਿ
Name[pl]=Powiadomienia urządzeń
Name[pt]=Notificações de Dispositivos
Name[pt_BR]=Notificações de dispositivos
Name[ro]=Notificări dispozitive
Name[ru]=Уведомления об устройствах
Name[si]=
Name[sk]=Upozornenia zariadení
Name[sl]=Obvestila o napravah
Name[sr]=Обавештења о уређајима
Name[sr@ijekavian]=Обавјештења о уређајима
Name[sr@ijekavianlatin]=Obavještenja o uređajima
Name[sr@latin]=Obaveštenja o uređajima
Name[sv]=Enhetsunderrättelser
Name[tg]=Огоҳиҳои дастгоҳ
Name[th]=
Name[tr]=Aygıt Bildirimleri
Name[ug]=ئۈسكۈنە ئۇقتۇرۇشلىرى
Name[uk]=Сповіщення про пристрої
Name[vi]=Thông báo thiết b
Name[wa]=Notifiaedjes des éndjins
Name[x-test]=xxDevice Notificationsxx
Name[zh_CN]=
Name[zh_TW]=
Comment=Passive device notifications for the user.
Comment[ar]=إشعارات مرئية غير متفاعلة للمستخدم
Comment[ast]=Notificaciones pasives de preseos pal usuariu.
Comment[bg]=Пасивни уведомления от устройствата за потребителя.
Comment[bs]=Pasivna obavještenja o uređajima za korisnika.
Comment[ca]=Notificacions passives de dispositius per a l'usuari.
Comment[ca@valencia]=Notificacions passives de dispositius per a l'usuari.
Comment[cs]=Pasivní upozornění zařízení pro uživatele.
Comment[da]=Passive enhedsbekendtgørelser til brugeren.
Comment[de]=Passive Benachrichtigungen für den Anwender.
Comment[el]=Παθητική συσκευή ειδοποιήσεων για το χρήστη.
Comment[en_GB]=Passive device notifications for the user.
Comment[es]=Notificaciones pasivas de dispositivos para el usuario.
Comment[et]=Passiivsed seadmete märguanded kasutajale.
Comment[eu]=Erabiltzailearentzako gailu-jakinarazpen pasiboak.
Comment[fi]=Passiivisia laiteilmoituksia käyttäjälle.
Comment[fr]=Notifications passives de périphériques pour l'utilisateur.
Comment[gl]=Notificacións pasivas dos dispositivos para o usuario.
Comment[he]=הודעות פאסיביות של התקנים למשתמש.
Comment[hr]=Pasivne obavijesti uređaja za korisnika.
Comment[hu]=Passzív eszközértesítések a felhasználónak.
Comment[ia]=Notificationes de dispositivo passive pro le usator.
Comment[id]=Notifikasi divais pasif untuk pengguna.
Comment[is]=Hlutlausar sjónrænar tilkynningar til notandans.
Comment[it]=Notifiche dei dispositivi passive per l'utente.
Comment[ja]=
Comment[kk]=Құрылғы пайдаланушысына құлақтандырулары
Comment[km]= 
Comment[kn]=ಿಿ ಿಿಿ .
Comment[ko]= .
Comment[lt]=Pasyvūs pranešimai naudotojui apie įrenginius.
Comment[lv]=Pasīvi iekārtu paziņojumi lietotājam.
Comment[mr]= .
Comment[nb]=Passive enhetsvarslinger for brukeren.
Comment[nds]=Passiev Reedschap-Bescheden för den Bruker
Comment[nl]=Passieve meldingen van apparaten voor de gebruiker.
Comment[pa]= ਿ ਿ
Comment[pl]=Bierne powiadomienia urządzenia dla użytkownika.
Comment[pt]=Notificações passivas de dispositivos para o utilizador.
Comment[pt_BR]=Notificações passivas de dispositivos para o usuário.
Comment[ro]=Notificări de dispozitiv pasive pentru utilizator.
Comment[ru]=Пассивные уведомления для пользователя об оборудовании.
Comment[si]= .
Comment[sk]=Pasívne upozornenia zariadení pre užívateľa.
Comment[sl]=Pasivna obvestila o napravah za uporabnika.
Comment[sr]=Пасивна обавештења о уређајима за корисника.
Comment[sr@ijekavian]=Пасивна обавјештења о уређајима за корисника.
Comment[sr@ijekavianlatin]=Pasivna obavještenja o uređajima za korisnika.
Comment[sr@latin]=Pasivna obaveštenja o uređajima za korisnika.
Comment[sv]=Passiva enhetsunderrättelser för användaren.
Comment[th]=
Comment[tr]=Kullanıcı için pasif aygıt bildirimleri.
Comment[ug]=ئىشلەتكۈچىگە پاسسىپ كۆرۈنىدىغان ئۈسكۈنىلەرنى ئۇقتۇرىدۇ.
Comment[uk]=Пасивні сповіщення користувача щодо пристроїв.
Comment[wa]=Notifiaedjes doirmants des éndjins po l' uzeu.
Comment[x-test]=xxPassive device notifications for the user.xx
Comment[zh_CN]=
Comment[zh_TW]=使
X-KDE-ServiceTypes=Plasma/DataEngine
Type=Service
Icon=device-notifier
X-KDE-Library=plasma_engine_devicenotifications
X-KDE-PluginInfo-Author=Jacopo De Simoi
X-KDE-PluginInfo-Email=wilderkde@gmail.com
X-KDE-PluginInfo-Name=devicenotifications
X-KDE-PluginInfo-Version=
X-KDE-PluginInfo-Website=
X-KDE-PluginInfo-Category=

View file

@ -1,22 +0,0 @@
set(hotplug_engine_SRCS
hotplugengine.cpp
hotplugservice.cpp
hotplugjob.cpp
)
kde4_add_plugin(plasma_engine_hotplug ${hotplug_engine_SRCS})
target_link_libraries(plasma_engine_hotplug
KDE4::plasma
KDE4::kdecore
KDE4::solid
KDE4::kio
)
install(
TARGETS plasma_engine_hotplug
DESTINATION ${KDE4_PLUGIN_INSTALL_DIR}
)
install(
FILES plasma-dataengine-hotplug.desktop
DESTINATION ${KDE4_SERVICES_INSTALL_DIR}
)

View file

@ -1,268 +0,0 @@
/*
* Copyright (C) 2007 Menard Alexis <darktears31@gmail.com>
*
* This program is free software you can redistribute it and/or
* modify it under the terms of the GNU Library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#include "hotplugengine.h"
#include "hotplugservice.h"
#include <QTimer>
#include <KDirWatch>
#include <KConfigGroup>
#include <KDebug>
#include <KLocale>
#include <KStandardDirs>
#include <KDesktopFile>
#include <kdesktopfileactions.h>
#include <Plasma/DataContainer>
//solid specific includes
#include <Solid/DeviceNotifier>
#include <Solid/Device>
#include <Solid/DeviceInterface>
#include <Solid/StorageDrive>
#include <Solid/StorageVolume>
#include <Solid/OpticalDisc>
//#define HOTPLUGENGINE_TIMING
HotplugEngine::HotplugEngine(QObject* parent, const QVariantList& args)
: Plasma::DataEngine(parent, args),
m_dirWatch(new KDirWatch(this))
{
m_dirWatch->setInterval(5000);
QStringList folders = KGlobal::dirs()->findDirs("data", "solid/actions/");
foreach (const QString &folder, folders) {
m_dirWatch->addDir(folder);
}
connect(m_dirWatch, SIGNAL(dirty(QString)), this, SLOT(updatePredicates(QString)));
}
HotplugEngine::~HotplugEngine()
{
}
void HotplugEngine::init()
{
findPredicates();
Solid::Predicate p(Solid::DeviceInterface::StorageAccess);
p |= Solid::Predicate(Solid::DeviceInterface::StorageDrive);
p |= Solid::Predicate(Solid::DeviceInterface::StorageVolume);
p |= Solid::Predicate(Solid::DeviceInterface::OpticalDrive);
p |= Solid::Predicate(Solid::DeviceInterface::PortableMediaPlayer);
p |= Solid::Predicate(Solid::DeviceInterface::Camera);
QList<Solid::Device> devices = Solid::Device::listFromQuery(p);
foreach (const Solid::Device &dev, devices) {
m_startList.insert(dev.udi(), dev);
}
connect(Solid::DeviceNotifier::instance(), SIGNAL(deviceAdded(QString)),
this, SLOT(onDeviceAdded(QString)));
connect(Solid::DeviceNotifier::instance(), SIGNAL(deviceRemoved(QString)),
this, SLOT(onDeviceRemoved(QString)));
m_encryptedPredicate = Solid::Predicate("StorageVolume", "usage", "Encrypted");
processNextStartupDevice();
}
Plasma::Service* HotplugEngine::serviceForSource(const QString& source)
{
return new HotplugService (this, source);
}
void HotplugEngine::processNextStartupDevice()
{
if (!m_startList.isEmpty()) {
QHash<QString, Solid::Device>::iterator it = m_startList.begin();
//Solid::Device dev = const_cast<Solid::Device &>(m_startList.takeFirst());
onDeviceAdded(it.value(), false);
m_startList.erase(it);
}
if (m_startList.isEmpty()) {
m_predicates.clear();
} else {
QTimer::singleShot(0, this, SLOT(processNextStartupDevice()));
}
}
void HotplugEngine::findPredicates()
{
m_predicates.clear();
foreach (const QString &path, KGlobal::dirs()->findAllResources("data", "solid/actions/")) {
KDesktopFile cfg(path);
const QString string_predicate = cfg.desktopGroup().readEntry("X-KDE-Solid-Predicate");
//kDebug() << path << string_predicate;
m_predicates.insert(KUrl(path).fileName(), Solid::Predicate::fromString(string_predicate));
}
if (m_predicates.isEmpty()) {
m_predicates.insert(QString(), Solid::Predicate::fromString(QString()));
}
}
void HotplugEngine::updatePredicates(const QString &path)
{
Q_UNUSED(path)
findPredicates();
QHashIterator<QString, Solid::Device> it(m_devices);
while (it.hasNext()) {
it.next();
Solid::Device device(it.value());
QString udi(it.key());
const QStringList predicates = predicatesForDevice(device);
if (!predicates.isEmpty()) {
if (sources().contains(udi)) {
Plasma::DataEngine::Data data;
data.insert("predicateFiles", predicates);
setData(udi, data);
} else {
onDeviceAdded(device, false);
}
} else if (!m_encryptedPredicate.matches(device) && sources().contains(udi)) {
removeSource(udi);
scheduleSourcesUpdated();
}
}
}
QStringList HotplugEngine::predicatesForDevice(Solid::Device &device) const
{
QStringList interestingDesktopFiles;
//search in all desktop configuration file if the device inserted is a correct device
QHashIterator<QString, Solid::Predicate> it(m_predicates);
//kDebug() << "=================" << udi;
while (it.hasNext()) {
it.next();
if (it.value().matches(device)) {
//kDebug() << " hit" << it.key();
interestingDesktopFiles << it.key();
}
}
return interestingDesktopFiles;
}
void HotplugEngine::onDeviceAdded(const QString &udi)
{
Solid::Device device(udi);
onDeviceAdded(device);
}
void HotplugEngine::onDeviceAdded(Solid::Device &device, bool added)
{
//kDebug() << "adding" << device.udi();
#ifdef HOTPLUGENGINE_TIMING
QTime t;
t.start();
#endif
// Skip things we know we don't care about
if (device.is<Solid::StorageDrive>()) {
Solid::StorageDrive *drive = device.as<Solid::StorageDrive>();
if (!drive->isHotpluggable()) {
#ifdef HOTPLUGENGINE_TIMING
kDebug() << "storage, but not pluggable, returning" << t.restart();
#endif
return;
}
} else if (device.is<Solid::StorageVolume>()) {
Solid::StorageVolume *volume = device.as<Solid::StorageVolume>();
Solid::StorageVolume::UsageType type = volume->usage();
if ((type == Solid::StorageVolume::Unused ||
type == Solid::StorageVolume::PartitionTable) && !device.is<Solid::OpticalDisc>()) {
#ifdef HOTPLUGENGINE_TIMING
kDebug() << "storage volume, but not of interest" << t.restart();
#endif
return;
}
}
m_devices.insert(device.udi(), device);
if (m_predicates.isEmpty()) {
findPredicates();
}
const QStringList interestingDesktopFiles = predicatesForDevice(device);
const bool isEncryptedContainer = m_encryptedPredicate.matches(device);
if (!interestingDesktopFiles.isEmpty() || isEncryptedContainer) {
//kDebug() << device.product();
//kDebug() << device.vendor();
//kDebug() << "number of interesting desktop file : " << interestingDesktopFiles.size();
Plasma::DataEngine::Data data;
data.insert("added", added);
data.insert("udi", device.udi());
if (!device.description().isEmpty()) {
data.insert("text", device.description());
} else {
data.insert("text", QString(device.vendor() + QLatin1Char(' ') + device.product()));
}
data.insert("icon", device.icon());
data.insert("emblems", device.emblems());
data.insert("predicateFiles", interestingDesktopFiles);
QVariantList actions;
foreach(const QString& desktop, interestingDesktopFiles) {
QString actionUrl = KStandardDirs::locate("data", "solid/actions/" + desktop);
QList<KServiceAction> services = KDesktopFileActions::userDefinedServices(actionUrl, true);
if (!services.isEmpty()) {
Plasma::DataEngine::Data action;
action.insert("predicate", desktop);
action.insert("text", services[0].text());
action.insert("icon", services[0].icon());
actions << action;
}
}
data.insert("actions", actions);
data.insert("isEncryptedContainer", isEncryptedContainer);
setData(device.udi(), data);
//kDebug() << "add hardware solid : " << udi;
}
#ifdef HOTPLUGENGINE_TIMING
kDebug() << "total time" << t.restart();
#endif
}
void HotplugEngine::onDeviceRemoved(const QString &udi)
{
//kDebug() << "remove hardware:" << udi;
if (m_startList.contains(udi)) {
m_startList.remove(udi);
return;
}
m_devices.remove(udi);
removeSource(udi);
scheduleSourcesUpdated();
}
K_EXPORT_PLASMA_DATAENGINE(hotplug, HotplugEngine)
#include "moc_hotplugengine.cpp"

View file

@ -1,67 +0,0 @@
/*
* Copyright (C) 2007 Menard Alexis <darktears31@gmail.com>
*
* This program is free software you can redistribute it and/or
* modify it under the terms of the GNU Library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef HOTPLUGENGINE_H
#define HOTPLUGENGINE_H
#include <QObject>
#include <Plasma/DataEngine>
#include <Plasma/Service>
#include <Solid/Predicate>
class KDirWatch;
/**
* This class is connected with solid, filter devices and provide signal with source for applet in Plasma
*/
class HotplugEngine : public Plasma::DataEngine
{
Q_OBJECT
public:
HotplugEngine( QObject* parent, const QVariantList& args);
~HotplugEngine();
void init();
Plasma::Service* serviceForSource(const QString& source);
protected Q_SLOTS:
void onDeviceAdded(const QString &udi);
void onDeviceRemoved(const QString &udi);
private:
void onDeviceAdded(Solid::Device &dev, bool added = true);
void findPredicates();
QStringList predicatesForDevice(Solid::Device &device) const;
private Q_SLOTS:
void processNextStartupDevice();
void updatePredicates(const QString &path);
private:
QHash<QString, Solid::Predicate> m_predicates;
QHash<QString, Solid::Device> m_startList;
QHash<QString, Solid::Device> m_devices;
Solid::Predicate m_encryptedPredicate;
KDirWatch *m_dirWatch;
};
#endif

View file

@ -1,45 +0,0 @@
/*
* Copyright (C) 2011 Viranch Mehta <viranch.mehta@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License version 2 as
* published by the Free Software Foundation
*
* 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 Library 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 "hotplugjob.h"
#include "hotplugengine.h"
#include <QtDBus/QDBusInterface>
#include <QtDBus/QDBusReply>
#include <KDebug>
void HotplugJob::start()
{
QString udi (m_dest);
QString operation = operationName();
if (operation == "invokeAction") {
QString action = parameters()["predicate"].toString();
QStringList desktopFiles;
desktopFiles << action;
QDBusInterface soliduiserver("org.kde.kded", "/modules/soliduiserver", "org.kde.SolidUiServer");
QDBusReply<void> reply = soliduiserver.call("showActionsDialog", udi, desktopFiles);
}
emitResult();
}
#include "moc_hotplugjob.cpp"

View file

@ -1,47 +0,0 @@
/*
* Copyright (C) 2011 Viranch Mehta <viranch.mehta@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License version 2 as
* published by the Free Software Foundation
*
* 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 Library 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.
*/
#ifndef HOTPLUG_JOB_H
#define HOTPLUG_JOB_H
#include "hotplugengine.h"
#include <Plasma/ServiceJob>
class HotplugJob : public Plasma::ServiceJob
{
Q_OBJECT
public:
HotplugJob (const QString& destination,
const QString& operation,
const QMap<QString, QVariant>& parameters,
QObject* parent = 0)
: ServiceJob (destination, operation, parameters, parent),
m_dest (destination)
{
}
void start();
private:
QString m_dest;
};
#endif // HOTPLUG_JOB_H

View file

@ -1,41 +0,0 @@
/*
* Copyright (C) 2011 Viranch Mehta <viranch.mehta@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License version 2 as
* published by the Free Software Foundation
*
* 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 Library 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 "hotplugservice.h"
#include "hotplugjob.h"
#include "hotplugengine.h"
HotplugService::HotplugService (HotplugEngine* parent, const QString& source)
: Plasma::Service (parent)
{
setName ("hotplug");
setOperationNames(
QStringList()
<< "invokeAction"
);
setDestination (source);
}
Plasma::ServiceJob* HotplugService::createJob (const QString& operation,
const QMap <QString, QVariant>& parameters)
{
return new HotplugJob (destination(), operation, parameters, this);
}
#include "moc_hotplugservice.cpp"

View file

@ -1,42 +0,0 @@
/*
* Copyright (C) 2011 Viranch Mehta <viranch.mehta@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License version 2 as
* published by the Free Software Foundation
*
* 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 Library 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.
*/
#ifndef HOTPLUG_SERVICE_H
#define HOTPLUG_SERVICE_H
#include <Plasma/Service>
class HotplugEngine;
class HotplugService : public Plasma::Service
{
Q_OBJECT
public:
HotplugService (HotplugEngine* parent, const QString& source);
protected:
Plasma::ServiceJob* createJob (const QString& operation,
const QMap<QString, QVariant>& parameters);
private:
QString m_dest;
};
#endif // HOTPLUG_SERVICE_H

View file

@ -1,146 +0,0 @@
[Desktop Entry]
Name=Hotplug Events
Name[ar]=أحداث التوصيل
Name[ast]=Eventos en caliente
Name[be@latin]=Źjaŭleńnie novych pryładaŭ
Name[bn]=-
Name[bs]=događaji vrućeg uključivanja
Name[ca]=Esdeveniments de connexió en calent
Name[ca@valencia]=Esdeveniments de connexió en calent
Name[cs]=Události hotplugu
Name[csb]=Hotplug Event
Name[da]=Hotplug-begivenheder
Name[de]=Hotplug-Ereignisse
Name[el]=Γεγονότα Hotplug
Name[en_GB]=Hotplug Events
Name[eo]=Dumkura permuteblaj eventoj
Name[es]=Eventos en caliente
Name[et]=Hotplug-sündmused
Name[eu]=Hotplug gertaerak
Name[fi]=Hotplug-tapahtumat
Name[fr]=Événements de branchement à chaud
Name[fy]=Hotplug barren
Name[ga]=Imeachtaí Hotplug
Name[gl]=Acontecementos de Hotplug
Name[gu]=
Name[he]=אירועי חיבור התקנים נשלפים
Name[hi]=
Name[hne]=
Name[hr]=Događaji brzog uštekavanja
Name[hu]=Eszközcsatolást kezelő plazmoid
Name[ia]=Eventos de hotplug
Name[id]=Acara Hotplug
Name[is]=Hraðtengingaatburðir
Name[it]=Eventi di collegamento in marcia
Name[ja]=Hotplug
Name[kk]=Істеп турғанда қосу оқиғалар
Name[km]=
Name[kn]=Hotplug ()
Name[ko]=
Name[lt]=Hotplug įvykiai
Name[lv]=Hotplug notikumi
Name[ml]=
Name[mr]=
Name[nb]=Tilkoblingshendelser
Name[nds]=Tokoppel-Begeefnissen
Name[nl]=Hotplug-gebeurtenissen
Name[nn]=Hotplug-hendingar
Name[pa]=
Name[pl]=Zdarzenia podłączenia "na gorąco"
Name[pt]=Eventos do Hotplug
Name[pt_BR]=Eventos do hotplug
Name[ro]=Evenimente de atașare
Name[ru]=Уведомление о подключении устройств
Name[si]=
Name[sk]=Hotplug udalosti
Name[sl]=Priključitve
Name[sr]=догађаји врућег укључивања
Name[sr@ijekavian]=догађаји врућег укључивања
Name[sr@ijekavianlatin]=događaji vrućeg uključivanja
Name[sr@latin]=događaji vrućeg uključivanja
Name[sv]=Inkopplingshändelser
Name[ta]=Hotplug Events
Name[tg]=Дастгоҳҳои пайвастшаванда
Name[th]= Hot Plug
Name[tr]=Tak Kullan Olayları
Name[ug]=قىزىق قىستۇرۇش ھادىسىسى
Name[uk]=Події гарячого підключення
Name[vi]=Các s kin tháo lp nóng
Name[wa]=Evenmints tchôd-tchôkîs
Name[x-test]=xxHotplug Eventsxx
Name[zh_CN]=
Name[zh_TW]=
Comment=Tracks hot-pluggable devices as they appear and disappear.
Comment[ar]=تتابع الأجهزة المركبة عندما تظهر أو تختفي
Comment[ast]=Rexistra los preseos estrayibles cuando apaecen y desapaecen.
Comment[bs]=Prati pojavljivanja i nestanke vruće uklonjivih uređaja.
Comment[ca]=Segueix els dispositius de connexió en calent quan apareixen i desapareixen.
Comment[ca@valencia]=Segueix els dispositius de connexió en calent quan apareixen i desapareixen.
Comment[cs]=Oznamovat připojení a odpojení za běhu připojitelných zařízení
Comment[da]=Holder styr på flytbare enheder efterhånden som de dukker op og forsvinder.
Comment[de]=Überwacht Hotplug-Geräte auf Aktivierung und Deaktivierung
Comment[el]=Ανίχνευση συσκευών hot-plug καθώς εμφανίζονται και εξαφανίζονται.
Comment[en_GB]=Tracks hot-pluggable devices as they appear and disappear.
Comment[es]=Registra los dispositivos extraíbles cuando aparecen y desaparecen.
Comment[et]=Töö ajal ühendatavate seadmete ilmumise ja kadumise jälgimine.
Comment[eu]=Martxan konekta daitezkeen gailuen jarraipena egiten du agertu eta desagertzen diren heinean.
Comment[fi]=Jäljittää lennosta kytkeytyviä laitteita kun ne ilmaantuvat ja katoavat.
Comment[fr]=Surveille l'apparition ou la disparition des périphériques pouvant être connectés à chaud.
Comment[fy]=Hâld hot-pluggeble aparaten yn de gaten as se ferskine of ferside gean.
Comment[gl]=Segue a pista dos dispositivos conectábeis en quente á medida que van aparecendo e desaparecendo.
Comment[he]=משמש למעקב אחר התקנים נשלפים בעת חיבורם וניתוקם.
Comment[hr]=Pratite uređaje za brzo uštekavanje kako se pojavljuju i nestaju
Comment[hu]=Követi a menet közben csatolható (hot-pluggable) eszközöket.
Comment[ia]=Il tracia dispositivos hot-pluggable (insertabile a calide) assi como illos appare e disappare
Comment[id]=Lacak divais hot-plug ketika mereka muncul atau menghilang.
Comment[is]=Fylgist með hraðtengdum tækjum um leið og þau birtast eða hverfa.
Comment[it]=Sorveglia il collegamento e lo scollegamento dei dispositivi collegabili mentre il sistema è in funzione.
Comment[ja]=
Comment[kk]=Істеп турғанда қосылатын құрылғылардың қосылғанын/ажыратылғанын бақылау.
Comment[km]=  
Comment[kn]=- ಿಿ ಿಿ ಿ.
Comment[ko]= .
Comment[lt]=Seka įrenginių prijungimą ir atjungimą.
Comment[lv]=Seko līdzi noņemamo ierīču pieslēgšanai un atvienošanai.
Comment[ml]= ി ിി ിി.
Comment[mr]= .
Comment[nb]=Sporer enheter som kan kobles til og fra ettersom de dukker opp og forsvinner
Comment[nds]=Luert op Reedschappen, de sik hitt tokoppeln laat
Comment[nl]=Volgt inplugbare apparaten als deze verschijnen en verdwijnen.
Comment[nn]=Sporar hotplug-einingar når dei dukkar opp og forsvinn.
Comment[pa]=- , ਿ
Comment[pl]=Śledzenie urządzeń podłączanych "na gorąco", przy ich pojawianiu i znikaniu.
Comment[pt]=Segue os dispositivos removíveis, à medida que aparecem e desaparecem.
Comment[pt_BR]=Segue os dispositivos removíveis, à medida que aparecem e desaparecem.
Comment[ro]=Urmărește dispozitivele detașabile după cum apar sau dispar.
Comment[ru]=Следит за появлением и исчезновением подключаемых на лету устройств.
Comment[si]=-
Comment[sk]=Sleduje hot-plug zariadenia pri ich zobrazení a zmiznutí.
Comment[sl]=Sledi odstranljivim napravam, ki se pojavljajo in izginjajo.
Comment[sr]=Прати појављивања и нестанке вруће уклоњивих уређаја.
Comment[sr@ijekavian]=Прати појављивања и нестанке вруће уклоњивих уређаја.
Comment[sr@ijekavianlatin]=Prati pojavljivanja i nestanke vruće uklonjivih uređaja.
Comment[sr@latin]=Prati pojavljivanja i nestanke vruće uklonjivih uređaja.
Comment[sv]=Följer enheter som kan kopplas in under spänning när de dyker upp och försvinner.
Comment[th]=/ /
Comment[tr]=Takıldıklarında ve çıkarıldıklarında tak kullan aygıtlarını izler.
Comment[ug]=قىزىق قىستۇرۇلىدىغان ئۈسكۈنىلەرنىڭ ھاسىل بولۇشى ۋە يوقىلىشىنى ئىزلايدۇ.
Comment[uk]=Стежить за зєднанням і відєднанням портативних пристроїв.
Comment[wa]=Shût les édjins tchôd-tchôcåves cwand il aparexhèt et disparexhèt.
Comment[x-test]=xxTracks hot-pluggable devices as they appear and disappear.xx
Comment[zh_CN]=
Comment[zh_TW]=
X-KDE-ServiceTypes=Plasma/DataEngine
Type=Service
Icon=drive-removable-media-usb
X-KDE-Library=plasma_engine_hotplug
X-KDE-PluginInfo-Author=The Plasma Team
X-KDE-PluginInfo-Email=wilderkde@gmail.com
X-KDE-PluginInfo-Name=hotplug
X-KDE-PluginInfo-Version=
X-KDE-PluginInfo-Website=
X-KDE-PluginInfo-Category=
X-KDE-PluginInfo-Depends=
X-KDE-PluginInfo-License=

View file

@ -1,3 +1,7 @@
include_directories(
${CMAKE_SOURCE_DIR}/soliduiserver
)
set(krunner_solid_SRCS
solidrunner.cpp
)

View file

@ -17,6 +17,7 @@
*/
#include "solidrunner.h"
#include "soliduiserver_common.h"
#include <KIcon>
#include <KToolInvocation>
@ -43,76 +44,6 @@ static QString kSolidUDI(const QString &matchid)
return matchid;
}
static void kSolidMountUDI(const QString &solidudi)
{
Solid::Device soliddevice(solidudi);
Solid::StorageAccess* solidstorageacces = soliddevice.as<Solid::StorageAccess>();
if (!solidstorageacces) {
kWarning() << "not storage access" << solidudi;
return;
}
solidstorageacces->setup();
}
static void kSolidUnmountUDI(const QString &solidudi)
{
Solid::Device soliddevice(solidudi);
Solid::StorageAccess* solidstorageacces = soliddevice.as<Solid::StorageAccess>();
if (!solidstorageacces) {
kWarning() << "not storage access" << solidudi;
return;
}
solidstorageacces->teardown();
}
static void kSolidEjectUDI(const QString &solidudi)
{
Solid::Device soliddevice(solidudi);
Solid::OpticalDrive *solidopticaldrive = soliddevice.as<Solid::OpticalDrive>();
if (!solidopticaldrive) {
kWarning() << "not optical drive" << solidudi;
return;
}
solidopticaldrive->eject();
}
// simplified version of KMacroExpander specialized for solid actions
static QStringList kSolidActionCommand(const QString &command, const QString &solidudi)
{
Solid::Device soliddevice(solidudi);
Solid::StorageAccess* solidstorageacces = soliddevice.as<Solid::StorageAccess>();
if (solidstorageacces && !solidstorageacces->isAccessible()) {
kSolidMountUDI(solidudi);
}
QString actioncommand = command;
if (actioncommand.contains(QLatin1String("%f")) || actioncommand.contains(QLatin1String("%F"))) {
if (!solidstorageacces) {
kWarning() << "device is not storage access" << soliddevice.udi();
} else {
const QString devicefilepath = solidstorageacces->filePath();
actioncommand = actioncommand.replace(QLatin1String("%f"), devicefilepath);
actioncommand = actioncommand.replace(QLatin1String("%F"), devicefilepath);
}
}
if (actioncommand.contains(QLatin1String("%d")) || actioncommand.contains(QLatin1String("%D"))) {
const Solid::Block* solidblock = soliddevice.as<Solid::Block>();
if (!solidblock) {
kWarning() << "device is not block" << soliddevice.udi();
} else {
const QString devicedevice = solidblock->device();
actioncommand = actioncommand.replace(QLatin1String("%d"), devicedevice);
actioncommand = actioncommand.replace(QLatin1String("%D"), devicedevice);
}
}
if (actioncommand.contains(QLatin1String("%i")) || actioncommand.contains(QLatin1String("%I"))) {
const QString deviceudi = soliddevice.udi();
actioncommand = actioncommand.replace(QLatin1String("%i"), deviceudi);
actioncommand = actioncommand.replace(QLatin1String("%I"), deviceudi);
}
return KShell::splitArgs(actioncommand);
}
SolidRunner::SolidRunner(QObject *parent, const QVariantList &args)
: AbstractRunner(parent, args),
// TODO: option for it?

View file

@ -1,191 +0,0 @@
/***************************************************************************
* Copyright (C) 2009 by Ben Cooksley <ben@eclipse.endoftheinternet.org> *
* *
* 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 "ActionEditor.h"
#include <KMessageBox>
#include <KLocale>
#include <Solid/Predicate>
ActionEditor::ActionEditor(QWidget *parent) : KDialog(parent)
{
topItem = new PredicateItem( Solid::Predicate(), 0 );
rootItem = 0;
rootModel = new PredicateModel( topItem, this );
// Prepare the dialog
setInitialSize( QSize(600, 600) ); // Set a decent initial size
// setModal( true );
// Set up the interface
ui.setupUi( mainWidget() );
ui.TvPredicateTree->setHeaderHidden( true );
ui.TvPredicateTree->setModel( rootModel );
ui.IbActionIcon->setIconSize( KIconLoader::SizeLarge );
ui.CbDeviceType->addItems( actionData()->interfaceList() );
// Connect up with everything needed -> slot names explain
connect( ui.TvPredicateTree, SIGNAL(activated(QModelIndex)), this, SLOT(updateParameter()) );
connect( ui.PbParameterSave, SIGNAL(clicked()), this, SLOT(saveParameter()) );
connect( ui.PbParameterReset, SIGNAL(clicked()), this, SLOT(updateParameter()) );
connect( ui.CbDeviceType, SIGNAL(currentIndexChanged(int)), this, SLOT(updatePropertyList()) );
connect( ui.CbParameterType, SIGNAL(currentIndexChanged(int)), this, SLOT(manageControlStatus()) );
if( !KGlobalSettings::singleClick() ) {
connect( ui.TvPredicateTree, SIGNAL(clicked(QModelIndex)), this, SLOT(updateParameter()) );
}
}
ActionEditor::~ActionEditor()
{
delete topItem;
}
void ActionEditor::setActionToEdit( ActionItem * item )
{
activeItem = item;
// Set all the text appropriately
ui.IbActionIcon->setIcon( item->icon() );
ui.LeActionFriendlyName->setText( item->name() );
ui.LeActionCommand->setUrl( KUrl(item->exec()) );
setPredicate( item->predicate() );
setCaption( i18n("Editing Action %1", item->name()) ); // Set a friendly i18n caption
}
void ActionEditor::setPredicate( Solid::Predicate predicate )
{
delete topItem;
topItem = new PredicateItem( Solid::Predicate(), 0 );
rootItem = new PredicateItem( predicate, topItem );
rootModel->setRootPredicate( rootItem->parent() );
// Select the top item, not the hidden root
QModelIndex topItem = rootModel->index( 0, 0, QModelIndex() );
ui.TvPredicateTree->setCurrentIndex( topItem );
ui.TvPredicateTree->expandToDepth( 2 );
updateParameter();
}
void ActionEditor::updateParameter()
{
QModelIndex current = ui.TvPredicateTree->currentIndex();
PredicateItem * currentItem = static_cast<PredicateItem*>( current.internalPointer() );
ui.CbParameterType->setCurrentIndex( currentItem->itemType );
updatePropertyList();
ui.CbDeviceType->setCurrentIndex( actionData()->interfacePosition( currentItem->ifaceType ) );
int valuePos = actionData()->propertyPosition( currentItem->ifaceType, currentItem->property );
ui.CbValueName->setCurrentIndex( valuePos );
ui.LeValueMatch->setText( currentItem->value.toString() );
ui.CbValueMatch->setCurrentIndex( currentItem->compOperator );
}
void ActionEditor::saveParameter()
{
QModelIndex current = ui.TvPredicateTree->currentIndex();
PredicateItem * currentItem = static_cast<PredicateItem*>( current.internalPointer() );
// Hold onto this so we can determine if the number of children has changed...
Solid::Predicate::Type oldType = currentItem->itemType;
currentItem->setTypeByInt( ui.CbParameterType->currentIndex() );
currentItem->ifaceType = actionData()->interfaceFromName( ui.CbDeviceType->currentText() );
currentItem->property = actionData()->propertyInternal( currentItem->ifaceType, ui.CbValueName->currentText() );
currentItem->value = QVariant( ui.LeValueMatch->text() );
currentItem->setComparisonByInt( ui.CbValueMatch->currentIndex() );
rootModel->itemUpdated( current );
rootModel->childrenChanging( current, oldType );
}
QString ActionEditor::predicateString()
{
return rootItem->predicate().toString();
}
void ActionEditor::updatePropertyList()
{
Solid::DeviceInterface::Type currentType;
currentType = actionData()->interfaceFromName( ui.CbDeviceType->currentText() );
ui.CbValueName->clear();
ui.CbValueName->addItems( actionData()->propertyList( currentType ) );
}
void ActionEditor::manageControlStatus()
{
bool atomEnable = false;
bool isEnable = false;
switch( ui.CbParameterType->currentIndex() ) {
case Solid::Predicate::PropertyCheck:
atomEnable = true;
case Solid::Predicate::InterfaceCheck:
isEnable = true;
break;
default:
break;
}
ui.CbDeviceType->setEnabled( isEnable );
ui.CbValueName->setEnabled( atomEnable );
ui.CbValueMatch->setEnabled( atomEnable );
ui.LeValueMatch->setEnabled( atomEnable );
}
SolidActionData * ActionEditor::actionData()
{
return SolidActionData::instance();
}
void ActionEditor::accept()
{
// Save any open parameter changes first...
saveParameter();
// Read the data and prepare to save
QString iconName = ui.IbActionIcon->icon();
QString actionName = ui.LeActionFriendlyName->text();
QString command = ui.LeActionCommand->text();
QString predicate = predicateString();
// We need to ensure that they are all valid before applying
if (iconName.isEmpty() || actionName.isEmpty() || command.isEmpty() || !Solid::Predicate::fromString(predicate).isValid()) {
KMessageBox::error(this, i18n("It appears that the action name, command, icon or condition are not valid.\nTherefore, changes will not be applied."), i18n("Invalid action"));
return;
}
// apply the changes
if (iconName != activeItem->icon()) { // Has the icon changed?
activeItem->setIcon( ui.IbActionIcon->icon() ); // Write the change
}
if (actionName != activeItem->name()) { // Has the friendly name changed?
activeItem->setName( ui.LeActionFriendlyName->text() ); // Write the change
}
if (command != activeItem->exec()) { // Has the command changed?
activeItem->setExec( ui.LeActionCommand->text() ); // Write the change
}
if (predicate != activeItem->predicate().toString() ) { // Has it changed?
activeItem->setPredicate( predicate ); // Write the change
}
KDialog::accept();
}
#include "moc_ActionEditor.cpp"

View file

@ -1,62 +0,0 @@
/***************************************************************************
* Copyright (C) 2009 by Ben Cooksley <ben@eclipse.endoftheinternet.org> *
* *
* 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 *
***************************************************************************/
#ifndef ACTIONEDITOR_H
#define ACTIONEDITOR_H
#include <KDialog>
#include "ActionItem.h"
#include "PredicateItem.h"
#include "PredicateModel.h"
#include "SolidActionData.h"
#include "ui_ActionEditor.h"
class ActionEditor : public KDialog
{
Q_OBJECT
public:
ActionEditor(QWidget *parent = 0);
~ActionEditor();
void setActionToEdit( ActionItem * item );
public slots:
virtual void accept();
private:
SolidActionData * actionData();
QString predicateString();
Ui::ActionEditor ui;
ActionItem * activeItem;
PredicateItem * topItem;
PredicateItem * rootItem;
PredicateModel * rootModel;
private slots:
void updatePropertyList();
void manageControlStatus();
void updateParameter();
void saveParameter();
void setPredicate( Solid::Predicate predicate );
};
#endif

View file

@ -1,334 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ActionEditor</class>
<widget class="QWidget" name="ActionEditor">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>602</width>
<height>522</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="0">
<layout class="QGridLayout" name="GlActionIconName">
<item row="0" column="0">
<widget class="KIconButton" name="IbActionIcon">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>80</width>
<height>80</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>75</width>
<height>75</height>
</size>
</property>
<property name="toolTip">
<string>Action icon, click to change it</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="KLineEdit" name="LeActionFriendlyName">
<property name="toolTip">
<string>Action name</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<layout class="QGridLayout" name="GlActionCommand">
<item row="0" column="0">
<widget class="QLabel" name="TlActionCommand">
<property name="minimumSize">
<size>
<width>80</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Command: </string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="KUrlRequester" name="LeActionCommand">
<property name="toolTip">
<string>Command that will trigger the action
This can include any or all of the following case insensitive expands:
%f: The mountpoint for the device - Storage Access devices only
%d: Path to the device node - Block devices only
%i: The identifier of the device</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<layout class="QGridLayout" name="GlPredicateTree">
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="TlPredicateTree">
<property name="minimumSize">
<size>
<width>80</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Devices must match the following parameters for this action:</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QTreeView" name="TvPredicateTree"/>
</item>
</layout>
</item>
<item row="3" column="0">
<widget class="QGroupBox" name="GbParameter">
<property name="title">
<string>Edit Parameter</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<layout class="QGridLayout" name="GlParameterType">
<item row="0" column="0">
<widget class="QLabel" name="LblParameterType">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>150</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Parameter type:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="KComboBox" name="CbParameterType">
<item>
<property name="text">
<string>Property Match</string>
</property>
</item>
<item>
<property name="text">
<string>Content Conjunction</string>
</property>
</item>
<item>
<property name="text">
<string>Content Disjunction</string>
</property>
</item>
<item>
<property name="text">
<string>Device Interface Match</string>
</property>
</item>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<layout class="QGridLayout" name="GlDeviceType">
<item row="0" column="0">
<widget class="QLabel" name="LblDeviceType">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>150</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Device type:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="KComboBox" name="CbDeviceType">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<layout class="QGridLayout" name="GlValueName">
<item row="0" column="0">
<widget class="QLabel" name="LblValueName">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>150</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Value name:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="KComboBox" name="CbValueName">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="0">
<layout class="QGridLayout" name="GlValueMatch">
<item row="0" column="0">
<widget class="KComboBox" name="CbValueMatch">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>150</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>150</width>
<height>16777215</height>
</size>
</property>
<item>
<property name="text">
<string>Equals</string>
</property>
</item>
<item>
<property name="text">
<string>Contains</string>
</property>
</item>
</widget>
</item>
<item row="0" column="1">
<widget class="KLineEdit" name="LeValueMatch"/>
</item>
</layout>
</item>
<item row="4" column="0">
<layout class="QGridLayout" name="GlParameterControl">
<item row="0" column="0">
<spacer name="HsParameterControl">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>227</width>
<height>25</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="PbParameterReset">
<property name="text">
<string>Reset Parameter</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="PbParameterSave">
<property name="text">
<string>Save Parameter Changes</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>KIconButton</class>
<extends>QPushButton</extends>
<header>kicondialog.h</header>
</customwidget>
<customwidget>
<class>KUrlRequester</class>
<extends>QFrame</extends>
<header>kurlrequester.h</header>
</customwidget>
<customwidget>
<class>KLineEdit</class>
<extends>QLineEdit</extends>
<header>klineedit.h</header>
</customwidget>
<customwidget>
<class>KComboBox</class>
<extends>QComboBox</extends>
<header>kcombobox.h</header>
</customwidget>
</customwidgets>
<connections/>
</ui>

View file

@ -1,158 +0,0 @@
/***************************************************************************
* Copyright (C) 2009 by Ben Cooksley <ben@eclipse.endoftheinternet.org> *
* *
* 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 "ActionItem.h"
#include "SolidActionData.h"
#include <QString>
#include <kdesktopfileactions.h>
#include <KDesktopFile>
#include <KConfigGroup>
#include <Solid/DeviceInterface>
ActionItem::ActionItem(const QString& pathToDesktop, const QString& action, QObject *parent)
{
Q_UNUSED(parent);
desktopMasterPath = pathToDesktop;
actionName = action;
// Create the desktop file
desktopFileMaster = new KDesktopFile(desktopMasterPath);
desktopWritePath = desktopFileMaster->locateLocal(desktopMasterPath);
desktopFileWrite = new KDesktopFile(desktopWritePath);
// Now we can fill the action groups list
configGroups.append(desktopFileMaster->desktopGroup());
actionGroups.insertMulti(ActionItem::GroupDesktop, &configGroups.last());
configGroups.append(desktopFileMaster->actionGroup(actionName));
actionGroups.insertMulti(ActionItem::GroupAction, &configGroups.last());
configGroups.append(desktopFileWrite->desktopGroup());
actionGroups.insertMulti(ActionItem::GroupDesktop, &configGroups.last());
configGroups.append(desktopFileWrite->actionGroup(actionName));
actionGroups.insertMulti(ActionItem::GroupAction, &configGroups.last());
QString predicateString = readKey(ActionItem::GroupDesktop, "X-KDE-Solid-Predicate", "");
predicateItem = Solid::Predicate::fromString( predicateString );
}
ActionItem::~ActionItem()
{
delete desktopFileWrite;
delete desktopFileMaster;
}
/// Public functions below
bool ActionItem::isUserSupplied()
{
return hasKey(ActionItem::GroupDesktop, "X-KDE-Action-Custom");
}
QString ActionItem::icon()
{
return readKey(ActionItem::GroupAction, "Icon", "");
}
QString ActionItem::exec()
{
return readKey(ActionItem::GroupAction, "Exec", "");
}
QString ActionItem::name()
{
return readKey(ActionItem::GroupAction, "Name", "");
}
Solid::Predicate ActionItem::predicate() const
{
return predicateItem;
}
QString ActionItem::involvedTypes() const
{
SolidActionData * actData = SolidActionData::instance();
QSet<Solid::DeviceInterface::Type> devTypeList = predicateItem.usedTypes();
QStringList deviceTypes;
foreach( Solid::DeviceInterface::Type devType, devTypeList ) {
deviceTypes << actData->nameFromInterface( devType );
}
return deviceTypes.join(", ");
}
void ActionItem::setIcon(const QString& nameOfIcon)
{
setKey(ActionItem::GroupAction, "Icon", nameOfIcon);
}
void ActionItem::setName(const QString& nameOfAction)
{
setKey(ActionItem::GroupAction, "Name", nameOfAction);
}
void ActionItem::setExec(const QString& execUrl)
{
setKey(ActionItem::GroupAction, "Exec", execUrl);
}
void ActionItem::setPredicate( const QString& newPredicate )
{
setKey(ActionItem::GroupDesktop, "X-KDE-Solid-Predicate", newPredicate);
predicateItem = Solid::Predicate::fromString( newPredicate );
}
/// Private functions below
QString ActionItem::readKey(GroupType keyGroup, const QString& keyName, const QString& defaultValue)
{
return configItem(ActionItem::DesktopRead, keyGroup, keyName)->readEntry(keyName, defaultValue);
}
void ActionItem::setKey(GroupType keyGroup, const QString& keyName, const QString& keyContents)
{
configItem(ActionItem::DesktopWrite, keyGroup)->writeEntry(keyName, keyContents);
}
bool ActionItem::hasKey(GroupType keyGroup, const QString& keyName)
{
return configItem(ActionItem::DesktopRead, keyGroup, keyName)->hasKey(keyName);
}
KConfigGroup * ActionItem::configItem(DesktopAction actionType, GroupType keyGroup, const QString& keyName)
{
int countAccess = 0;
if (actionType == ActionItem::DesktopRead) {
foreach(KConfigGroup * possibleGroup, actionGroups.values(keyGroup)) {
if (possibleGroup->hasKey(keyName)) {
return possibleGroup;
break;
}
}
} else if (actionType == ActionItem::DesktopWrite) {
if (isUserSupplied()) {
countAccess = 1;
}
return actionGroups.values(keyGroup)[countAccess];
}
return actionGroups.values(keyGroup)[0]; // Implement a backstop so a valid value is always returned
}
#include "moc_ActionItem.cpp"

View file

@ -1,76 +0,0 @@
/***************************************************************************
* Copyright (C) 2009 by Ben Cooksley <ben@eclipse.endoftheinternet.org> *
* *
* 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 *
***************************************************************************/
#ifndef ACTION_ITEM_H
#define ACTION_ITEM_H
#include <QObject>
#include <QMap>
#include <Solid/Predicate>
#include <QString>
class KDesktopFile;
class KConfigGroup;
class ActionItem: public QObject
{
Q_OBJECT
public:
ActionItem(const QString& pathToDesktop, const QString& action, QObject *parent = 0);
~ActionItem();
bool isUserSupplied();
QString icon();
QString exec();
QString name();
Solid::Predicate predicate() const;
QString involvedTypes() const;
void setIcon( const QString& nameOfIcon );
void setName( const QString& nameOfAction );
void setExec( const QString& execUrl );
void setPredicate( const QString& newPredicate );
QString desktopMasterPath;
QString desktopWritePath;
QString actionName;
private:
enum DesktopAction { DesktopRead = 0, DesktopWrite = 1 };
enum GroupType { GroupDesktop = 0, GroupAction = 1 };
QString readKey(GroupType keyGroup, const QString& keyName, const QString& defaultValue);
void setKey(GroupType keyGroup, const QString& keyName, const QString& keyContents);
bool hasKey(GroupType keyGroup, const QString& keyName);
KConfigGroup * configItem(DesktopAction actionType, GroupType keyGroup, const QString& keyName = QString());
KDesktopFile * desktopFileMaster;
KDesktopFile * desktopFileWrite;
QMultiMap<GroupType, KConfigGroup*> actionGroups;
QList<KConfigGroup> configGroups;
Solid::Predicate predicateItem;
};
Q_DECLARE_METATYPE( ActionItem * )
#endif

View file

@ -1,121 +0,0 @@
/**************************************************************************
* Copyright (C) 2009 Ben Cooksley <ben@eclipse.endoftheinternet.org> *
* Copyright (C) 2007 Will Stephenson <wstephenson@kde.org> *
* *
* 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 "ActionModel.h"
#include "ActionItem.h"
#include <kdesktopfileactions.h>
#include <KStandardDirs>
#include <KIcon>
class ActionModel::Private {
public:
Private() {}
QList<ActionItem*> actions;
};
static bool sortAction( ActionItem * left, ActionItem * right )
{
return left->name() > right->name();
}
ActionModel::ActionModel( QObject *parent )
: QAbstractTableModel( parent )
, d( new Private() )
{
}
ActionModel::~ActionModel()
{
qDeleteAll( d->actions );
d->actions.clear();
delete d;
}
int ActionModel::columnCount( const QModelIndex &parent ) const
{
Q_UNUSED( parent );
return 2;
}
int ActionModel::rowCount( const QModelIndex &parent ) const
{
if( !parent.isValid() ) {
return d->actions.count();
}
return 0;
}
QVariant ActionModel::data( const QModelIndex &index, int role ) const
{
QVariant theData;
if ( !index.isValid() ) {
return QVariant();
}
ActionItem * mi = d->actions.at( index.row() );
switch ( role ) {
case Qt::DisplayRole:
if( index.column() == 0 ) {
theData.setValue( mi->name() );
} else if( index.column() == 1 ) {
theData.setValue( mi->involvedTypes() );
}
break;
case Qt::DecorationRole:
if( index.column() == 0 ) {
theData = QVariant( KIcon(mi->icon()) );
}
break;
case Qt::UserRole:
theData.setValue( mi );
break;
default:
break;
}
return theData;
}
void ActionModel::buildActionList()
{
qDeleteAll( d->actions );
d->actions.clear();
// Prepare to search for possible actions -> we only want solid types
QStringList allPossibleActions = KGlobal::dirs()->findAllResources("data", "solid/actions/");
// Get service objects for those actions and add them to the display
foreach(const QString &desktop, allPossibleActions) {
// Get contained services list
QList<KServiceAction> services = KDesktopFileActions::userDefinedServices(desktop, true);
foreach( const KServiceAction &deviceAction, services ) {
ActionItem * actionItem = new ActionItem( desktop, deviceAction.name(), this ); // Create an action
d->actions.append( actionItem );
}
}
qSort( d->actions.begin(), d->actions.end(), sortAction );
reset();
}
QList<ActionItem*> ActionModel::actionList() const
{
return d->actions;
}
#include "moc_ActionModel.cpp"

View file

@ -1,48 +0,0 @@
/**************************************************************************
* Copyright (C) 2009 Ben Cooksley <ben@eclipse.endoftheinternet.org> *
* *
* 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. *
***************************************************************************/
#ifndef ACTIONMODEL_H
#define ACTIONMODEL_H
#include <QtCore/qabstractitemmodel.h>
class ActionItem;
class ActionModel : public QAbstractTableModel
{
Q_OBJECT
public:
explicit ActionModel( QObject *parent = 0 );
~ActionModel();
QVariant data( const QModelIndex &index, int role ) const;
int rowCount( const QModelIndex &parent = QModelIndex() ) const;
int columnCount( const QModelIndex &parent = QModelIndex() ) const;
void buildActionList();
QList<ActionItem*> actionList() const;
private:
class Private;
Private * const d;
};
#endif

View file

@ -1,42 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>AddAction</class>
<widget class="QWidget" name="AddAction">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>289</width>
<height>40</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QGridLayout" name="GlActionAdd">
<item row="0" column="0">
<widget class="QLabel" name="LblActionName">
<property name="text">
<string>Action name:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="KLineEdit" name="LeActionName">
<property name="toolTip">
<string>Enter the name for your new action</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>KLineEdit</class>
<extends>QLineEdit</extends>
<header>klineedit.h</header>
</customwidget>
</customwidgets>
<connections/>
</ui>

View file

@ -1,51 +0,0 @@
PROJECT (solid-actions)
ADD_SUBDIRECTORY(device-actions)
########### next target ###############
SET(kcm_solid_actions_srcs
PredicateItem.cpp
PredicateModel.cpp
ActionItem.cpp
ActionModel.cpp
ActionEditor.cpp
SolidActionData.cpp
SolidActions.cpp
SolidActions.ui
AddAction.ui
ActionEditor.ui
)
SET(solid_action_desktop_gen_srcs
DesktopFileGenerator.cpp
SolidActionData.cpp )
KDE4_ADD_PLUGIN(kcm_solid_actions ${kcm_solid_actions_srcs})
add_executable(solid-action-desktop-gen ${solid_action_desktop_gen_srcs})
TARGET_LINK_LIBRARIES(kcm_solid_actions KDE4::kio KDE4::solid )
TARGET_LINK_LIBRARIES(solid-action-desktop-gen KDE4::solid KDE4::kio )
########### install files ###############
INSTALL(
TARGETS kcm_solid_actions
DESTINATION ${KDE4_PLUGIN_INSTALL_DIR}
)
INSTALL(
TARGETS solid-action-desktop-gen
DESTINATION ${KDE4_BIN_INSTALL_DIR}
)
INSTALL(
FILES solid-actions.desktop
DESTINATION ${KDE4_SERVICES_INSTALL_DIR})
INSTALL(
FILES solid-action-template.desktop
DESTINATION ${KDE4_DATA_INSTALL_DIR}/kcmsolidactions
)
INSTALL(
FILES solid-device-type.desktop
DESTINATION ${KDE4_SERVICETYPES_INSTALL_DIR}
)

View file

@ -1,76 +0,0 @@
/***************************************************************************
* Copyright (C) 2009 by Ben Cooksley <ben@eclipse.endoftheinternet.org> *
* *
* 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 <KAboutData>
#include <KCmdLineArgs>
#include <KLocale>
#include <KApplication>
#include <KDesktopFile>
#include <KDebug>
#include <KConfigGroup>
#include <QCoreApplication>
#include "SolidActionData.h"
#include <iostream>
int main( int argc, char *argv[] )
{
// About data
KAboutData aboutData("solid-action-desktop-gen", 0, ki18n("Solid Action Desktop File Generator"), "0.4", ki18n("Tool to automatically generate Desktop Files from Solid DeviceInterface classes for translation"),
KAboutData::License_GPL, ki18n("(c) 2009, Ben Cooksley"));
aboutData.addAuthor(ki18n("Ben Cooksley"), ki18n("Maintainer"), "ben@eclipse.endoftheinternet.org");
KCmdLineArgs::init(argc, argv, &aboutData);
KGlobal::locale()->insertCatalog("solid-action-desktop-gen");
QCoreApplication application(argc, argv);
SolidActionData * availActions = SolidActionData::instance();
foreach( Solid::DeviceInterface::Type internalType, availActions->interfaceTypeList() ) {
QString typeName = Solid::DeviceInterface::typeToString( internalType );
KDesktopFile typeFile( "services", "solid-device-" + typeName + ".desktop" );
KConfigGroup tConfig = typeFile.desktopGroup();
tConfig.writeEntry( "Name", "Solid Device" );
tConfig.writeEntry( "X-KDE-ServiceTypes", "SolidDevice" );
tConfig.writeEntry( "Type", "Service" );
if( !tConfig.hasKey("X-KDE-Solid-Actions-Type") ) {
tConfig.writeEntry( "X-KDE-Solid-Actions-Type", typeName );
}
QStringList typeValues = availActions->propertyInternalList( internalType );
QString actionText = typeValues.join(";").append(";");
tConfig.writeEntry( "Actions", actionText );
kWarning() << "Desktop file created: " + typeFile.fileName();
foreach( const QString &tValue, typeValues ) {
KConfigGroup vConfig = typeFile.actionGroup( tValue );
if( !vConfig.hasKey("Name") ) {
vConfig.writeEntry( "Name", availActions->propertyName( internalType, tValue ) );
}
vConfig.sync();
}
tConfig.sync();
typeFile.sync();
}
kWarning() << "Generation now completed";
return 0;
}

View file

@ -1,4 +0,0 @@
#!/bin/bash
$EXTRACTRC *.ui >> rc.cpp
$XGETTEXT *.cpp -o $podir/kcm_solid_actions.pot
rm -f rc.cpp

View file

@ -1,208 +0,0 @@
/***************************************************************************
* Copyright 2009 Ben Cooksley <ben@eclipse.endoftheinternet.org> *
* *
* 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 "PredicateItem.h"
#include "ActionEditor.h"
#include <QList>
#include <QString>
#include <KLocale>
#include <Solid/Predicate>
class PredicateItem::Private {
public:
Private() {}
PredicateItem * parent;
QList<PredicateItem*> children;
};
PredicateItem::PredicateItem( Solid::Predicate item, PredicateItem * itsParent )
: d( new Private() )
{
d->parent = itsParent;
if ( d->parent ) {
d->parent->children().append( this );
}
// Read data from Solid::Predicate
itemType = item.type();
ifaceType = item.interfaceType();
property = item.propertyName();
value = item.matchingValue();
compOperator = item.comparisonOperator();
if( itemType == Solid::Predicate::Disjunction || itemType == Solid::Predicate::Conjunction ) {
PredicateItem * child = new PredicateItem( item.firstOperand(), this );
PredicateItem * child2 = new PredicateItem( item.secondOperand(), this );
Q_UNUSED( child )
Q_UNUSED( child2 )
}
// We're now ready, no need to keep the Solid::Predicate for now
}
PredicateItem::~PredicateItem()
{
qDeleteAll( d->children );
d->children.clear();
delete d;
}
PredicateItem * PredicateItem::child( int index ) const
{
return d->children.at(index);
}
PredicateItem * PredicateItem::parent() const
{
return d->parent;
}
QList<PredicateItem*>& PredicateItem::children() const
{
return d->children;
}
Solid::Predicate PredicateItem::predicate() const
{
Solid::Predicate item;
switch( itemType ) {
case Solid::Predicate::InterfaceCheck:
item = Solid::Predicate( ifaceType );
break;
case Solid::Predicate::Conjunction:
item = children().at(0)->predicate() & children().at(1)->predicate();
break;
case Solid::Predicate::Disjunction:
item = children().at(0)->predicate() | children().at(1)->predicate();
break;
default:
break;
}
if( itemType != Solid::Predicate::PropertyCheck ) {
return item;
}
switch( compOperator ) {
case Solid::Predicate::Equals:
item = Solid::Predicate( ifaceType, property, value );
break;
case Solid::Predicate::Mask:
item = Solid::Predicate( ifaceType, property, value, Solid::Predicate::Mask );
break;
default:
break;
}
return item;
}
QString PredicateItem::prettyName() const
{
QString typeName;
QString compName;
QString deviceName;
switch( itemType ) {
case Solid::Predicate::InterfaceCheck:
deviceName = SolidActionData::instance()->nameFromInterface(ifaceType);
typeName = i18n("The device must be of the type %1", deviceName);
break;
case Solid::Predicate::Disjunction:
typeName = i18n("Any of the contained properties must match");
break;
case Solid::Predicate::Conjunction:
typeName = i18n("All of the contained properties must match");
break;
default:
break;
}
QString prettyProperty = SolidActionData::instance()->propertyName( ifaceType, property );
switch( compOperator ) {
case Solid::Predicate::Equals:
compName = i18n("The device property %1 must equal %2", prettyProperty, value.toString());
break;
case Solid::Predicate::Mask:
compName = i18n("The device property %1 must contain %2", prettyProperty, value.toString());
break;
default:
break;
}
if( itemType == Solid::Predicate::PropertyCheck ) {
return compName;
}
return typeName;
}
void PredicateItem::setTypeByInt( int item )
{
Solid::Predicate::Type iType = Solid::Predicate::InterfaceCheck;
switch( item ) {
case Solid::Predicate::PropertyCheck:
iType = Solid::Predicate::PropertyCheck;
break;
case Solid::Predicate::Conjunction:
iType = Solid::Predicate::Conjunction;
break;
case Solid::Predicate::Disjunction:
iType = Solid::Predicate::Disjunction;
break;
case Solid::Predicate::InterfaceCheck:
iType = Solid::Predicate::InterfaceCheck;
break;
default:
break;
}
itemType = iType;
}
void PredicateItem::setComparisonByInt( int item )
{
switch( item ) {
case Solid::Predicate::Equals:
compOperator = Solid::Predicate::Equals;
break;
case Solid::Predicate::Mask:
compOperator = Solid::Predicate::Mask;
break;
default:
break;
}
}
void PredicateItem::updateChildrenStatus()
{
if( itemType != Solid::Predicate::Disjunction && itemType != Solid::Predicate::Conjunction ) {
qDeleteAll( d->children );
d->children.clear();
} else if( d->children.count() == 0 ) {
Solid::Predicate templItem = Solid::Predicate::fromString("IS StorageVolume");
new PredicateItem( templItem, this );
new PredicateItem( templItem, this );
}
}

View file

@ -1,56 +0,0 @@
/***************************************************************************
* Copyright 2009 Ben Cooksley <ben@eclipse.endoftheinternet.org> *
* *
* 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 *
***************************************************************************/
#ifndef PREDICATEITEM_H
#define PREDICATEITEM_H
#include <Solid/Predicate>
#include <QString>
#include <QList>
class PredicateItem
{
public:
PredicateItem( Solid::Predicate item, PredicateItem * itsParent );
~PredicateItem();
PredicateItem * child( int index ) const;
PredicateItem * parent() const;
QList<PredicateItem*>& children() const;
Solid::Predicate predicate() const;
QString prettyName() const;
void setTypeByInt( int item );
void setComparisonByInt( int item );
void updateChildrenStatus();
Solid::Predicate::Type itemType;
Solid::DeviceInterface::Type ifaceType;
QString property;
QVariant value;
Solid::Predicate::ComparisonOperator compOperator;
private:
class Private;
Private *const d;
};
Q_DECLARE_METATYPE( PredicateItem * )
#endif

View file

@ -1,176 +0,0 @@
/**************************************************************************
* Copyright (C) 2009 Ben Cooksley <ben@eclipse.endoftheinternet.org> *
* Copyright (C) 2007 Will Stephenson <wstephenson@kde.org> *
* *
* 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 "PredicateModel.h"
#include "PredicateItem.h"
class PredicateModel::Private {
public:
Private() {}
PredicateItem * rootItem;
};
PredicateModel::PredicateModel( PredicateItem * menuRoot, QObject *parent )
: QAbstractItemModel( parent )
, d( new Private() )
{
d->rootItem = menuRoot;
}
PredicateModel::~PredicateModel()
{
delete d;
}
int PredicateModel::columnCount( const QModelIndex &parent ) const
{
Q_UNUSED( parent );
return 1;
}
int PredicateModel::rowCount( const QModelIndex &parent ) const
{
PredicateItem * mi;
if ( parent.isValid() ) {
mi = static_cast<PredicateItem*>( parent.internalPointer() );
} else {
mi = d->rootItem;
}
return mi->children().count();
}
QVariant PredicateModel::data( const QModelIndex &index, int role ) const
{
PredicateItem * mi = 0;
QVariant theData;
if ( !index.isValid() ) {
return QVariant();
}
mi = static_cast<PredicateItem*>( index.internalPointer() );
switch ( role ) {
case Qt::DisplayRole:
theData.setValue( mi->prettyName() );
break;
case Qt::UserRole:
theData.setValue( mi );
break;
default:
break;
}
return theData;
}
Qt::ItemFlags PredicateModel::flags( const QModelIndex &index ) const
{
if ( !index.isValid() ) {
return 0;
}
return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
}
QModelIndex PredicateModel::index( int row, int column, const QModelIndex &parent ) const
{
if ( !hasIndex(row, column, parent) ) {
return QModelIndex();
}
PredicateItem *parentItem;
if ( !parent.isValid() ) {
parentItem = d->rootItem;
} else {
parentItem = static_cast<PredicateItem*>( parent.internalPointer() );
}
PredicateItem *childItem = parentItem->children().value(row);
if ( childItem ) {
return createIndex( row, column, childItem );
} else {
return QModelIndex();
}
}
QModelIndex PredicateModel::parent( const QModelIndex &index ) const
{
PredicateItem *childItem = static_cast<PredicateItem*>( index.internalPointer() );
if( !childItem ) {
return QModelIndex();
}
PredicateItem * parent = childItem->parent();
PredicateItem * grandParent = parent->parent();
int childRow = 0;
if( grandParent ) {
childRow = grandParent->children().indexOf( parent );
}
if ( parent == d->rootItem ) {
return QModelIndex();
}
return createIndex( childRow, 0, parent );
}
PredicateItem * PredicateModel::rootItem() const
{
return d->rootItem;
}
void PredicateModel::setRootPredicate( PredicateItem * item )
{
d->rootItem = item;
reset();
}
void PredicateModel::itemUpdated( const QModelIndex& item )
{
emit dataChanged( item, item );
}
void PredicateModel::childrenChanging( const QModelIndex& item, Solid::Predicate::Type oldType )
{
PredicateItem * currentItem = static_cast<PredicateItem*>( item.internalPointer() );
Solid::Predicate::Type newType = currentItem->itemType;
if( oldType == newType ) {
return;
}
if( rowCount(item) != 0 && newType != Solid::Predicate::Conjunction && newType != Solid::Predicate::Disjunction ) {
emit beginRemoveRows( item, 0, 1 );
currentItem->updateChildrenStatus();
emit endRemoveRows();
return;
}
bool hasChildren = (newType == Solid::Predicate::Conjunction || newType == Solid::Predicate::Disjunction);
if( rowCount(item) == 0 && hasChildren ) {
emit beginInsertRows( item, 0, 1 );
currentItem->updateChildrenStatus();
emit endInsertRows();
}
}
#include "moc_PredicateModel.cpp"

View file

@ -1,56 +0,0 @@
/**************************************************************************
* Copyright (C) 2009 Ben Cooksley <ben@eclipse.endoftheinternet.org> *
* *
* 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. *
***************************************************************************/
#ifndef PREDICATEMODEL_H
#define PREDICATEMODEL_H
#include <QtCore/QAbstractItemModel>
#include <Solid/Predicate>
class PredicateItem;
class PredicateModel : public QAbstractItemModel
{
Q_OBJECT
public:
explicit PredicateModel( PredicateItem * menuRoot, QObject *parent = 0 );
~PredicateModel();
QVariant data( const QModelIndex &index, int role ) const;
Qt::ItemFlags flags( const QModelIndex &index ) const;
QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const;
QModelIndex parent( const QModelIndex &index ) const;
int rowCount( const QModelIndex &parent = QModelIndex() ) const;
int columnCount( const QModelIndex &parent = QModelIndex() ) const;
void setRootPredicate( PredicateItem * item );
void itemUpdated( const QModelIndex& item );
void childrenChanging( const QModelIndex& item, Solid::Predicate::Type oldType );
protected:
PredicateItem * rootItem() const;
private:
class Private;
Private *const d;
};
#endif

View file

@ -1,189 +0,0 @@
/***************************************************************************
* Copyright (C) 2009 by Ben Cooksley <ben@eclipse.endoftheinternet.org> *
* *
* 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 "SolidActionData.h"
#include <QList>
#include <QtCore/qmetaobject.h>
#include <KGlobal>
#include <kdesktopfileactions.h>
#include <KStandardDirs>
#include <KStringHandler>
#include <KDesktopFile>
#include <KConfigGroup>
#include <Solid/AcAdapter>
#include <Solid/AudioInterface>
#include <Solid/Battery>
#include <Solid/Block>
#include <Solid/Button>
#include <Solid/Camera>
#include <Solid/NetworkInterface>
#include <Solid/PortableMediaPlayer>
#include <Solid/Processor>
#include <Solid/StorageAccess>
#include <Solid/StorageDrive>
#include <Solid/OpticalDrive>
#include <Solid/StorageVolume>
#include <Solid/OpticalDisc>
#include <Solid/Video>
#include <Solid/Graphic>
#include <Solid/Input>
static SolidActionData * actData = 0;
SolidActionData::SolidActionData(bool includeFiles)
{
QStringList allPossibleDevices;
int propertyOffset = Solid::DeviceInterface::staticMetaObject.propertyOffset();
QList<QMetaObject> interfaceList = fillInterfaceList();
foreach( const QMetaObject &interface, interfaceList ) {
QString ifaceName = interface.className();
ifaceName.remove(0, ifaceName.lastIndexOf(':') + 1);
Solid::DeviceInterface::Type ifaceDev = Solid::DeviceInterface::stringToType( ifaceName );
QString cleanName = Solid::DeviceInterface::typeDescription( ifaceDev );
types.insert( ifaceDev, cleanName );
QMap<QString, QString> deviceValues;
for( int doneProps = propertyOffset; interface.propertyCount() > doneProps; doneProps = doneProps + 1 ) {
QMetaProperty ifaceProp = interface.property(doneProps);
deviceValues.insert( ifaceProp.name(), generateUserString(ifaceProp.name()) );
}
values.insert( ifaceDev, deviceValues );
}
if( includeFiles ) {
// Fill the lists of possible device types / device values
allPossibleDevices = KGlobal::dirs()->findAllResources("data", "solid/devices/");
// List all the known device actions, then add their name and all values to the appropriate lists
foreach( const QString &desktop, allPossibleDevices ) {
KDesktopFile deviceFile(desktop);
KConfigGroup deviceType = deviceFile.desktopGroup(); // Retrieve the configuration group where the user friendly name is
QString ifaceName = deviceType.readEntry("X-KDE-Solid-Actions-Type");
Solid::DeviceInterface::Type ifaceDev = Solid::DeviceInterface::stringToType( ifaceName );
QString cleanName = Solid::DeviceInterface::typeDescription( ifaceDev );
types.insert( ifaceDev, cleanName ); // Read the user friendly name
QMap<QString,QString> deviceValues = values.value( ifaceDev );
foreach( const QString &text, deviceFile.readActions() ) { // We want every single action
KConfigGroup actionType = deviceFile.actionGroup( text );
deviceValues.insert( text, actionType.readEntry("Name") ); // Add to the type - actions map
}
values.insert( ifaceDev, deviceValues );
}
}
}
QList<QString> SolidActionData::propertyList( Solid::DeviceInterface::Type devInterface )
{
return values.value( devInterface ).values();
}
QList<QString> SolidActionData::propertyInternalList( Solid::DeviceInterface::Type devInterface )
{
return values.value( devInterface ).keys();
}
QString SolidActionData::propertyInternal( Solid::DeviceInterface::Type devInterface, QString property )
{
return values.value( devInterface ).key( property );
}
QString SolidActionData::propertyName( Solid::DeviceInterface::Type devInterface, QString property )
{
return values.value( devInterface ).value( property );
}
int SolidActionData::propertyPosition( Solid::DeviceInterface::Type devInterface, QString property )
{
return values.value( devInterface ).keys().indexOf( property );
}
QList<QString> SolidActionData::interfaceList()
{
return types.values();
}
QList<Solid::DeviceInterface::Type> SolidActionData::interfaceTypeList()
{
return types.keys();
}
Solid::DeviceInterface::Type SolidActionData::interfaceFromName( const QString& name )
{
return types.key( name );
}
QString SolidActionData::nameFromInterface( Solid::DeviceInterface::Type devInterface )
{
return types.value( devInterface );
}
int SolidActionData::interfacePosition( Solid::DeviceInterface::Type devInterface )
{
return types.keys().indexOf( devInterface );
}
QString SolidActionData::generateUserString( QString className )
{
QString finalString;
QRegExp camelCase("([A-Z])"); // Create the split regexp
finalString = className.remove(0, className.lastIndexOf(':') + 1); // Remove any Class information
finalString = finalString.replace( camelCase, " \\1" ); // Use Camel Casing to add spaces
finalString = KStringHandler::capwords( finalString ); // Captialise everything
return finalString.trimmed();
}
SolidActionData * SolidActionData::instance()
{
if( actData == 0 ) {
actData = new SolidActionData( true );
}
return actData;
}
QList<QMetaObject> SolidActionData::fillInterfaceList()
{
QList<QMetaObject> interfaces;
interfaces.append( Solid::AcAdapter::staticMetaObject );
interfaces.append( Solid::AudioInterface::staticMetaObject );
interfaces.append( Solid::Battery::staticMetaObject );
interfaces.append( Solid::Block::staticMetaObject );
interfaces.append( Solid::Button::staticMetaObject );
interfaces.append( Solid::Camera::staticMetaObject );
interfaces.append( Solid::NetworkInterface::staticMetaObject );
interfaces.append( Solid::PortableMediaPlayer::staticMetaObject );
interfaces.append( Solid::Processor::staticMetaObject );
interfaces.append( Solid::StorageAccess::staticMetaObject );
interfaces.append( Solid::StorageDrive::staticMetaObject );
interfaces.append( Solid::OpticalDrive::staticMetaObject );
interfaces.append( Solid::StorageVolume::staticMetaObject );
interfaces.append( Solid::OpticalDisc::staticMetaObject );
interfaces.append( Solid::Video::staticMetaObject );
interfaces.append( Solid::Graphic::staticMetaObject );
interfaces.append( Solid::Input::staticMetaObject );
return interfaces;
}
#include "moc_SolidActionData.cpp"

View file

@ -1,57 +0,0 @@
/***************************************************************************
* Copyright (C) 2009 by Ben Cooksley <ben@eclipse.endoftheinternet.org> *
* *
* 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 *
***************************************************************************/
#ifndef SOLIDACTIONDATA_H
#define SOLIDACTIONDATA_H
#include <QObject>
#include <QMap>
#include <QString>
#include <Solid/DeviceInterface>
class SolidActionData : public QObject
{
Q_OBJECT
public:
QList<QString> propertyList( Solid::DeviceInterface::Type devInterface );
QList<QString> propertyInternalList( Solid::DeviceInterface::Type devInterface );
QString propertyInternal( Solid::DeviceInterface::Type devInterface, QString property );
QString propertyName( Solid::DeviceInterface::Type devInterface, QString property );
int propertyPosition( Solid::DeviceInterface::Type devInterface, QString property );
QList<QString> interfaceList();
QList<Solid::DeviceInterface::Type> interfaceTypeList();
Solid::DeviceInterface::Type interfaceFromName( const QString& name );
QString nameFromInterface( Solid::DeviceInterface::Type devInterface );
int interfacePosition( Solid::DeviceInterface::Type devInterface );
static SolidActionData * instance();
private:
SolidActionData(bool includeFiles);
QString generateUserString(QString className);
QList<QMetaObject> fillInterfaceList();
QMap<Solid::DeviceInterface::Type, QMap<QString,QString> > values;
QMap<Solid::DeviceInterface::Type, QString> types;
};
#endif

View file

@ -1,231 +0,0 @@
/***************************************************************************
* Copyright (C) 2009 by Ben Cooksley <ben@eclipse.endoftheinternet.org> *
* *
* 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 "SolidActions.h"
#include "ActionItem.h"
#include <KUrl>
#include <KDialog>
#include <KAboutData>
#include <KMessageBox>
#include <KDesktopFile>
#include <KIO/NetAccess>
#include <KStandardDirs>
#include <KPluginFactory>
#include <KBuildSycocaProgressDialog>
#include <QComboBox>
#include <QPushButton>
#include <Solid/DeviceInterface>
#include <Solid/Predicate>
K_PLUGIN_FACTORY( SolidActionsFactory, registerPlugin<SolidActions>(); )
K_EXPORT_PLUGIN( SolidActionsFactory("kcmsolidactions", "kcm_solid_actions") )
SolidActions::SolidActions(QWidget* parent, const QVariantList&)
: KCModule(SolidActionsFactory::componentData(), parent)
{
KAboutData * about = new KAboutData("Device Actions", 0, ki18n("Solid Device Actions Editor"), "1.1",
ki18n("Solid Device Actions Control Panel Module"),
KAboutData::License_GPL,
ki18n("(c) 2009 Solid Device Actions team"));
about->addAuthor(ki18n("Ben Cooksley"), ki18n("Maintainer"), "ben@eclipse.endoftheinternet.org");
setAboutData(about);
setButtons(KCModule::Help);
// Prepare main display dialog
actionModel = new ActionModel( this );
mainUi.setupUi( this );
mainUi.TvActions->setModel( actionModel );
mainUi.TvActions->setHeaderHidden( true );
mainUi.TvActions->setRootIsDecorated( false );
mainUi.TvActions->setSelectionMode( QAbstractItemView::SingleSelection );
mainUi.PbAddAction->setGuiItem( KStandardGuiItem::add() );
mainUi.PbEditAction->setIcon( KIcon("document-edit") );
connect( mainUi.PbAddAction, SIGNAL(clicked()), this, SLOT(slotShowAddDialog()) );
connect( mainUi.PbEditAction, SIGNAL(clicked()), this, SLOT(editAction()) );
connect( mainUi.PbDeleteAction, SIGNAL(clicked()), this, SLOT(deleteAction()) );
connect( mainUi.TvActions->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(toggleEditDelete()) );
connect( mainUi.TvActions, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(editAction()) );
// Prepare + connect up with Edit dialog
editUi = new ActionEditor(this);
connect( editUi, SIGNAL(accepted()), this, SLOT(acceptActionChanges()) );
// Prepare + connect up add action dialog
addDialog = new KDialog(this);
addUi.setupUi( addDialog->mainWidget() );
addDialog->setInitialSize( QSize(300, 100) ); // Set a sensible default size
slotTextChanged( addUi.LeActionName->text() );
connect( addUi.LeActionName, SIGNAL(textChanged(QString)), this, SLOT(slotTextChanged(QString)) );
connect( addDialog, SIGNAL(okClicked()), this, SLOT(addAction()) );
}
SolidActions::~SolidActions()
{
delete editUi;
delete actionModel;
}
void SolidActions::slotShowAddDialog()
{
addDialog->show();
addUi.LeActionName->setFocus();
addUi.LeActionName->clear();
}
void SolidActions::slotTextChanged( const QString & text )
{
addDialog->enableButtonOk( !text.isEmpty() );
}
void SolidActions::load()
{
fillActionsList();
}
void SolidActions::defaults()
{
}
void SolidActions::save()
{
}
void SolidActions::addAction()
{
QString enteredName = addUi.LeActionName->text();
KDesktopFile templateDesktop(KStandardDirs::locate("data", "kcmsolidactions/solid-action-template.desktop")); // Lets get the template
// Lets get a desktop file
QString internalName = enteredName; // copy the name the user entered -> we will be making mods
internalName.replace(QChar(' '), QChar('-'), Qt::CaseSensitive); // replace spaces with dashes
QString filePath = KStandardDirs::locateLocal("data", QString()); // Get the location on disk for "data"
filePath = filePath + "solid/actions/" + internalName + ".desktop"; // Create a file path for new action
// Fill in an initial template
KDesktopFile * newDesktop = templateDesktop.copyTo(filePath);
newDesktop->actionGroup("open").writeEntry("Name", enteredName); // ditto
delete newDesktop; // Force file to be written
// Prepare to open the editDialog
fillActionsList();
QList<ActionItem*> actionList = actionModel->actionList();
QModelIndex newAction;
foreach( ActionItem * newItem, actionList ) { // Lets find our new action
if( newItem->desktopMasterPath == filePath ) {
int position = actionList.indexOf( newItem );
newAction = actionModel->index( position, 0, QModelIndex() ); // Grab it
break;
}
}
mainUi.TvActions->setCurrentIndex( newAction ); // Set it as currently active
editAction(); // Open the edit dialog
}
void SolidActions::editAction()
{
ActionItem * selectedItem = selectedAction();
if( !selectedItem ) {
return;
}
// We should error out here if we have to
if( !selectedItem->predicate().isValid() ) {
KMessageBox::error(this, i18n("It appears that the predicate for this action is not valid."), i18n("Error Parsing Device Conditions"));
return;
}
// Display us!
editUi->setActionToEdit( selectedItem );
editUi->setWindowIcon( windowIcon() );
editUi->show();
}
void SolidActions::deleteAction()
{
ActionItem * action = selectedAction();
if( action->isUserSupplied() ) { // Is the action user supplied?
KIO::NetAccess::del( KUrl(action->desktopMasterPath), this); // Remove the main desktop file then
}
KIO::NetAccess::del( KUrl(action->desktopWritePath), this); // Remove the modified desktop file now
fillActionsList(); // Update the list of actions
}
ActionItem * SolidActions::selectedAction()
{
QModelIndex action = mainUi.TvActions->currentIndex();
ActionItem * actionItem = actionModel->data( action, Qt::UserRole ).value<ActionItem*>();
return actionItem;
}
void SolidActions::fillActionsList()
{
mainUi.TvActions->selectionModel()->clearSelection();
actionModel->buildActionList();
mainUi.TvActions->header()->setResizeMode( 0, QHeaderView::Stretch );
mainUi.TvActions->header()->setResizeMode( 1, QHeaderView::ResizeToContents );
toggleEditDelete();
}
void SolidActions::acceptActionChanges()
{
// Re-read the actions list to ensure changes are reflected
KBuildSycocaProgressDialog::rebuildKSycoca(this);
fillActionsList();
}
void SolidActions::toggleEditDelete()
{
bool toggle = true;
if( !mainUi.TvActions->currentIndex().isValid() ) { // Is an action selected?
mainUi.PbDeleteAction->setText( i18n("No Action Selected") ); // Set a friendly disabled text
mainUi.PbDeleteAction->setIcon( KIcon() );
toggle = false;
}
mainUi.PbEditAction->setEnabled(toggle); // Change them to the new state
mainUi.PbDeleteAction->setEnabled(toggle); // Ditto
if( !toggle ) {
return;
}
KUrl writeDesktopFile( selectedAction()->desktopWritePath ); // Get the write desktop file
// What functionality do we need to change?
if( selectedAction()->isUserSupplied() ) {
// We are able to directly delete it, enable full delete functionality
mainUi.PbDeleteAction->setGuiItem( KStandardGuiItem::remove() );
} else if( KIO::NetAccess::exists(writeDesktopFile, KIO::NetAccess::SourceSide, this) ) { // Does the write file exist?
// We are able to revert, lets show it
mainUi.PbDeleteAction->setGuiItem( KStandardGuiItem::discard() );
} else {
// We cannot do anything then, disable delete functionality
mainUi.PbDeleteAction->setText( i18n("Cannot be deleted") );
mainUi.PbDeleteAction->setIcon( KIcon() );
mainUi.PbDeleteAction->setEnabled( false );
}
}
#include "moc_SolidActions.cpp"

View file

@ -1,65 +0,0 @@
/***************************************************************************
* Copyright (C) 2009 by Ben Cooksley <ben@eclipse.endoftheinternet.org> *
* *
* 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 *
***************************************************************************/
#ifndef SOLIDACTIONS_H
#define SOLIDACTIONS_H
#include <KCModule>
#include "SolidActions.h"
#include "ActionModel.h"
#include "ActionEditor.h"
#include "ui_AddAction.h"
#include "ui_SolidActions.h"
class ActionItem;
class SolidActions: public KCModule
{
Q_OBJECT
public:
SolidActions(QWidget* parent, const QVariantList&);
~SolidActions();
void load();
void save();
void defaults();
private slots:
void addAction();
void editAction();
void deleteAction();
ActionItem * selectedAction();
void fillActionsList();
void acceptActionChanges();
void toggleEditDelete();
void slotTextChanged( const QString& );
void slotShowAddDialog();
private:
Ui::SolidActions mainUi;
ActionModel * actionModel;
ActionEditor * editUi;
Ui::AddAction addUi;
KDialog * addDialog;
void clearActions();
};
#endif

View file

@ -1,52 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SolidActions</class>
<widget class="QWidget" name="SolidActions">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>553</width>
<height>384</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QTreeView" name="TvActions"/>
</item>
<item row="1" column="0">
<layout class="QGridLayout" name="GlActions">
<item row="0" column="0">
<widget class="KPushButton" name="PbAddAction">
<property name="text">
<string>Add...</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="KPushButton" name="PbEditAction">
<property name="text">
<string>Edit...</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="KPushButton" name="PbDeleteAction">
<property name="text">
<string>Remove</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>KPushButton</class>
<extends>QPushButton</extends>
<header>kpushbutton.h</header>
</customwidget>
</customwidgets>
<connections/>
</ui>

View file

@ -1,6 +0,0 @@
file(GLOB desktopfile *.desktop)
install(
FILES ${desktopfile}
DESTINATION ${KDE4_DATA_INSTALL_DIR}/solid/devices
)

View file

@ -1,120 +0,0 @@
[Desktop Action plugged]
# ctxt: AC adapter plugged in
Name=Plugged
Name[bs]=Utaknut
Name[ca]=Endollat
Name[ca@valencia]=Endollat
Name[cs]=Připojeno
Name[da]=I stikkontakten
Name[de]=Angeschlossen
Name[el]=Σε σύνδεση
Name[en_GB]=Plugged
Name[es]=Enchufado
Name[et]=Ühendatud
Name[eu]=Konektatuta
Name[fi]=Kytketty
Name[fr]=Branché
Name[ga]=Plugáilte
Name[gl]=Enchufado
Name[he]=מחובר
Name[hu]=Bedugva
Name[ia]=Connectite
Name[is]=Í sambandi
Name[kk]=Қосылған
Name[ko]=
Name[lt]=Prijungtas
Name[mr]=
Name[nb]=Tilkoblet
Name[nds]=Tokoppelt
Name[nl]=Ingeplugd
Name[pa]=
Name[pl]=Podłączony
Name[pt]=Ligado
Name[pt_BR]=Conectado
Name[ro]=Atașat
Name[ru]=Подключён
Name[sk]=Pripojené
Name[sl]=Priključeno
Name[sr]=утакнут
Name[sr@ijekavian]=утакнут
Name[sr@ijekavianlatin]=utaknut
Name[sr@latin]=utaknut
Name[sv]=Ansluten
Name[tr]=Fişe takılı
Name[uk]=Зєднано
Name[x-test]=xxPluggedxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Entry]
Actions=plugged;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=AcAdapter

View file

@ -1,430 +0,0 @@
[Desktop Action deviceType]
Name=Device Type
Name[ar]=نوع الجهاز
Name[ast]=Triba de preséu
Name[bg]=Вид устройство
Name[bn]=ি
Name[bs]=tip uređaja
Name[ca]=Tipus de dispositiu
Name[ca@valencia]=Tipus de dispositiu
Name[cs]=Typ zařízení
Name[csb]=Ôrt ùrządzenia
Name[da]=Enhedstype
Name[de]=Gerätetyp
Name[el]=Τύπος συσκευής
Name[en_GB]=Device Type
Name[eo]=Aparata Tipo
Name[es]=Tipo de dispositivo
Name[et]=Seadme tüüp
Name[eu]=Gailu mota
Name[fa]=نوع دستگاه
Name[fi]=Laitetyyppi
Name[fr]=Type de périphérique
Name[fy]=Apparaat type
Name[ga]=Cineál Gléis
Name[gl]=Tipo do dispositivo
Name[gu]=
Name[he]=סוג ההתקן
Name[hi]=
Name[hr]=Tip uređaja
Name[hu]=Eszköztípus
Name[ia]=Typo de dispositivo
Name[id]=Tipe Divais
Name[is]=Tegund tækis
Name[ja]=
Name[kk]=Құрылғының түрі
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Įrenginio tipas
Name[lv]=Ierīces tips
Name[mk]=Тип на уред
Name[ml]=
Name[mr]=
Name[nb]=Enhetstype
Name[nds]=Reedschaptyp
Name[nl]=Apparaattype
Name[nn]=Einingstype
Name[pa]= ਿ
Name[pl]=Typ urządzenia
Name[pt]=Tipo de Dispositivo
Name[pt_BR]=Tipo de dispositivo
Name[ro]=Tip dispozitiv
Name[ru]=Тип устройства
Name[si]=
Name[sk]=Typ zariadenia
Name[sl]=Vrsta naprave
Name[sr]=тип уређаја
Name[sr@ijekavian]=тип уређаја
Name[sr@ijekavianlatin]=tip uređaja
Name[sr@latin]=tip uređaja
Name[sv]=Enhetstyp
Name[tg]=Дастгоҳҳо
Name[th]=
Name[tr]=Aygıt Tipi
Name[ug]=ئۈسكۈنە تىپى
Name[uk]=Тип пристрою
Name[vi]=Kiu thiết b
Name[wa]=Sôre d' éndjin
Name[x-test]=xxDevice Typexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action driver]
Name=Driver
Name[ar]=المشغل
Name[ast]=Controlador
Name[bg]=Драйвер
Name[bn]=
Name[bs]=drajver
Name[ca]=Controlador
Name[ca@valencia]=Controlador
Name[cs]=Ovladač
Name[csb]=Czérownik
Name[da]=Driver
Name[de]=Treiber
Name[el]=Οδηγός
Name[en_GB]=Driver
Name[eo]=Pelilo
Name[es]=Controlador
Name[et]=Draiver
Name[eu]=Gidaria
Name[fa]=گرداننده
Name[fi]=Ajuri
Name[fr]=Pilote
Name[fy]=Stjoerprogramma
Name[ga]=Tiománaí
Name[gl]=Controlador
Name[gu]=
Name[he]=מנהל התקן
Name[hi]=
Name[hr]=Pogonski program
Name[hu]=Meghajtó
Name[ia]=Driver
Name[id]=Penggerak
Name[is]=Rekill
Name[ja]=
Name[ka]=
Name[kk]=Драйвері
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Tvarkyklė
Name[lv]=Draiveris
Name[mai]=
Name[mk]=Управувач
Name[ml]=ി
Name[mr]=
Name[nb]=Driver
Name[nds]=Driever
Name[nl]=Stuurprogramma
Name[nn]=Drivar
Name[pa]=
Name[pl]=Sterownik
Name[pt]=Controlador
Name[pt_BR]=Driver
Name[ro]=Driver
Name[ru]=Драйвер
Name[si]=
Name[sk]=Ovládač
Name[sl]=Gonilnik
Name[sr]=драјвер
Name[sr@ijekavian]=драјвер
Name[sr@ijekavianlatin]=drajver
Name[sr@latin]=drajver
Name[sv]=Drivrutin
Name[tg]=Драйвер
Name[th]=
Name[tr]=Sürücü
Name[ug]=قوزغاتقۇ
Name[uk]=Драйвер
Name[vi]=Trình điu khin
Name[wa]=Mineu
Name[x-test]=xxDriverxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action driverHandle]
Name=Driver Handle
Name[ar]=مقبض المشغل
Name[ast]=Controlador de preséu
Name[bg]=Управление на драйвера
Name[bn]=
Name[bs]=ručka drajvera
Name[ca]=Gestor de controlador
Name[ca@valencia]=Gestor de controlador
Name[cs]=ID ovladače
Name[csb]=Czérownik Handle
Name[da]=Driver-handle
Name[de]=Treiber-Alias
Name[el]=Χειριστήριο οδηγού
Name[en_GB]=Driver Handle
Name[eo]=Pelila tenilo
Name[es]=Controlador de dispositivo
Name[et]=Draiveri pide
Name[eu]=Gidariaren heldulekua
Name[fi]=Ajuritunniste
Name[fr]=Gestionnaire du pilote
Name[fy]=Stjoerprograma regelaar
Name[ga]=Hanla an Tiománaí
Name[gl]=Xestión do controlador
Name[gu]=
Name[he]=ממשק מנהל ההתקן
Name[hi]=
Name[hr]=Pogonski program
Name[hu]=Meghajtóazonosító
Name[ia]=Maneator de driver
Name[id]=Penanganan Penggerak
Name[is]=Hald rekils
Name[ja]=
Name[kk]=Драйвер өңдеуі
Name[km]=
Name[ko]=
Name[lt]=Tvarkyklės rankena
Name[lv]=Draivera rokturis
Name[ml]=ി ിി
Name[mr]=
Name[nb]=Drivernavn
Name[nds]=Drievergreep
Name[nl]=Stuurprogrammapook
Name[nn]=Drivarnamn
Name[pa]=
Name[pl]=Uchwyt sterownika
Name[pt]=Descritor do Controlador
Name[pt_BR]=Manipulador do driver
Name[ro]=Manipulare driver
Name[ru]=Драйверная ссылка на устройство
Name[si]=
Name[sk]=Rukoväť ovládača
Name[sl]=Ročica gonilnika
Name[sr]=ручка драјвера
Name[sr@ijekavian]=ручка драјвера
Name[sr@ijekavianlatin]=ručka drajvera
Name[sr@latin]=ručka drajvera
Name[sv]=Drivrutinreferens
Name[tg]=Плеери DJ-Mixer
Name[th]=
Name[tr]=Sürücü Tanıtıcı
Name[ug]=قوزغاتقۇ تۇتقۇسى
Name[uk]=Обробка драйвером
Name[vi]=X lý trình điu khin
Name[wa]=Apougnî mineu
Name[x-test]=xxDriver Handlexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action name]
Name=Name
Name[ar]=الاسم
Name[ast]=Nome
Name[bg]=Име
Name[bn]=
Name[bs]=ime
Name[ca]=Nom
Name[ca@valencia]=Nom
Name[cs]=Jméno
Name[csb]=Miono
Name[da]=Navn
Name[de]=Name
Name[el]=Όνομα
Name[en_GB]=Name
Name[eo]=Nomo
Name[es]=Nombre
Name[et]=Nimi
Name[eu]=Izena
Name[fa]=نام
Name[fi]=Nimi
Name[fr]=Nom
Name[fy]=Namme
Name[ga]=Ainm
Name[gl]=Nome
Name[gu]=
Name[he]=שם
Name[hi]=
Name[hr]=Ime
Name[hu]=Név
Name[ia]=Nomine
Name[id]=Nama
Name[is]=Heiti
Name[ja]=
Name[ka]=
Name[kk]=Атауы
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Pavadinimas
Name[lv]=Nosaukums
Name[mk]=Име
Name[ml]=
Name[mr]=
Name[nb]=Navn
Name[nds]=Naam
Name[nl]=Naam
Name[nn]=Namn
Name[pa]=
Name[pl]=Nazwa
Name[pt]=Nome
Name[pt_BR]=Nome
Name[ro]=Denumire
Name[ru]=Имя
Name[si]=
Name[sk]=Názov
Name[sl]=Ime
Name[sr]=име
Name[sr@ijekavian]=име
Name[sr@ijekavianlatin]=ime
Name[sr@latin]=ime
Name[sv]=Namn
Name[tg]=Ном
Name[th]=
Name[tr]=İsim
Name[ug]=ئاتى
Name[uk]=Назва
Name[wa]=No
Name[x-test]=xxNamexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action soundcardType]
Name=Soundcard Type
Name[ar]=نوع بطاقة الصوت
Name[ast]=Triba de tarxeta de soníu
Name[bg]=Вид звукова карта
Name[bn]=
Name[bs]=tip zvučne kartice
Name[ca]=Tipus de targeta de so
Name[ca@valencia]=Tipus de targeta de so
Name[cs]=Typ zvukové karty
Name[csb]=Ôrt zwãkòwi kôrtë
Name[da]=Type af lydkort
Name[de]=Soundkartentyp
Name[el]=Τύπος κάρτας ήχου
Name[en_GB]=Soundcard Type
Name[eo]=Tipo de Sonkarto
Name[es]=Tipo de tarjeta de sonido
Name[et]=Helikaardi tüüp
Name[eu]=Soinu-txartel mota
Name[fi]=Äänikortin tyyppi
Name[fr]=Type de carte son
Name[fy]=Lûdskaart type
Name[ga]=Cineál an Chárta Fuaime
Name[gl]=Tipo de tarxeta de son
Name[gu]=
Name[he]=סוג כרטיס קול
Name[hi]=ि
Name[hr]=Tip zvučne kartice
Name[hu]=Hangkártyatípus
Name[ia]=Typo de carta de sono
Name[id]=Tipe Kartu Suara
Name[is]=Tegund hljóðkorts
Name[ja]=
Name[kk]=Дыбыс картасының түрі
Name[km]=
Name[kn]=ಿಿ
Name[ko]=
Name[lt]=Garso plokštės tipas
Name[lv]=Skaņas kartes tips
Name[mai]=
Name[mk]=Тип на аудиокартичка
Name[ml]= ി
Name[mr]=
Name[nb]=Lydkort-type
Name[nds]=Klangkoort-Typ
Name[nl]=Type geluidskaart
Name[nn]=Lydkorttype
Name[pa]= ਿ
Name[pl]=Typ karty dźwiękowej
Name[pt]=Tipo de Placa de Som
Name[pt_BR]=Tipo de placa de som
Name[ro]=Tipul plăcii de sunet
Name[ru]=Тип звуковой карты
Name[si]=
Name[sk]=Typ zvukovej karty
Name[sl]=Vrsta zvočne kartice
Name[sr]=тип звучне картице
Name[sr@ijekavian]=тип звучне картице
Name[sr@ijekavianlatin]=tip zvučne kartice
Name[sr@latin]=tip zvučne kartice
Name[sv]=Typ av ljudkort
Name[tg]=Намуди корти овозӣ
Name[th]=
Name[tr]=Ses Kartı Tipi
Name[ug]=ئۈن كارتا تىپى
Name[uk]=Тип звукової картки
Name[wa]=Sôre di cwåte son
Name[x-test]=xxSoundcard Typexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Entry]
Actions=deviceType;driver;driverHandle;name;soundcardType;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=AudioInterface

View file

@ -1,407 +0,0 @@
[Desktop Action chargePercent]
Name=Charge Percent
Name[ar]=نسبة الشحن
Name[ast]=Porcentaxe de carga
Name[bg]=Зареждане (%)
Name[bn]=
Name[bs]=popunjenost
Name[ca]=Percentatge de càrrega
Name[ca@valencia]=Percentatge de càrrega
Name[cs]=Procento nabití
Name[da]=Ladningsprocent
Name[de]=Ladestand
Name[el]=Ποσοστό φόρτισης
Name[en_GB]=Charge Percent
Name[eo]=Procento de Ŝargo
Name[es]=Porcentaje de carga
Name[et]=Täituvuse protsent
Name[eu]=Kargaren ehunekoa
Name[fi]=Latauksen tila prosenteissa
Name[fr]=Pourcentage de charge
Name[fy]=Batterijlading prosint
Name[ga]=Céatadán Luchtaithe
Name[gl]=Mudar a porcentaxe
Name[gu]=
Name[he]=אחוז טעינה
Name[hi]= ि
Name[hr]=Postotak preostalog kapaciteta
Name[hu]=Feltöltöttségi százalék
Name[ia]=Percentage de cargamento
Name[id]=Persentase Pengisian
Name[is]=Prósentuhlutfall hleðslu
Name[it]=Percentuale di carica
Name[ja]=
Name[kk]=Толу пайызы
Name[km]=
Name[kn]=ಿ ಿ
Name[ko]=
Name[lt]=Įkrovimas procentais
Name[lv]=Uzlādes procenti
Name[mai]= ि
Name[mk]=Процент на полнеж
Name[ml]=
Name[mr]=
Name[nb]=Prosent lading
Name[nds]=Oplaadperzent
Name[nl]=Ladingspercentage
Name[nn]=Oppladingsprosent
Name[pa]=
Name[pl]=Poziom naładowania
Name[pt]=Percentagem de Carga
Name[pt_BR]=Porcentagem de carga
Name[ro]=Procentaj încărcare
Name[ru]=Уровень заряда
Name[si]=
Name[sk]=Percento nabitia
Name[sl]=Odstotek napolnjenosti
Name[sr]=попуњеност
Name[sr@ijekavian]=попуњеност
Name[sr@ijekavianlatin]=popunjenost
Name[sr@latin]=popunjenost
Name[sv]=Laddningsprocent
Name[tg]=Фоизи барқгирӣ
Name[th]=
Name[tr]=Şarj Yüzdesi
Name[ug]=پىرسەنتىنى ئۆزگەرت
Name[uk]=Рівень заряду
Name[vi]=Phn trăm sc
Name[wa]=Åcintaedje di tcherdjaedje
Name[x-test]=xxCharge Percentxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action chargeState]
Name=Charge State
Name[ar]=حالة الشحن
Name[ast]=Estáu de carga
Name[bg]=Състояние на зареждането
Name[bn]=
Name[bs]=stanje punjenja
Name[ca]=Estat de la càrrega
Name[ca@valencia]=Estat de la càrrega
Name[cs]=Stav nabití
Name[da]=Ladningstilstand
Name[de]=Ladestatus
Name[el]=Κατάσταση φόρτισης
Name[en_GB]=Charge State
Name[eo]=Stato de ŝarĝo
Name[es]=Estado de carga
Name[et]=Täituvuse olek
Name[eu]=Kargaren egoera
Name[fi]=Latauksen tila
Name[fr]=État de charge
Name[fy]=Batterijlading tastân
Name[ga]=Staid Luchtaithe
Name[gl]=Mudar o estado
Name[gu]= િિ
Name[he]=מצב טעינה
Name[hi]= िि
Name[hr]=Stanje preostalog kapaciteta
Name[hu]=Feltöltöttségi állapot
Name[ia]=Stato de cargamento
Name[id]=Tingkat Pengisian
Name[is]=Staða hleðslu
Name[it]=Stato di carica
Name[ja]=
Name[kk]=Толтыру күй-жайы
Name[km]=
Name[kn]=ಿ ಿಿ
Name[ko]=
Name[lt]=Įkrovimo būklė
Name[lv]=Uzlādes stāvoklis
Name[mai]= िि
Name[mk]=Состојба на полнеж
Name[ml]= ിി
Name[mr]= ि
Name[nb]=Ladingstilstand
Name[nds]=Oplaadtostand
Name[nl]=Ladingsstatus
Name[nn]=Oppladingsstatus
Name[pa]=
Name[pl]=Stan ładowania
Name[pt]=Estado da Carga
Name[pt_BR]=Estado da carga
Name[ro]=Starea încărcării
Name[ru]=Состояние заряда
Name[si]=
Name[sk]=Stav nabitia
Name[sl]=Stanje napolnjenosti
Name[sr]=стање пуњења
Name[sr@ijekavian]=стање пуњења
Name[sr@ijekavianlatin]=stanje punjenja
Name[sr@latin]=stanje punjenja
Name[sv]=Laddningstillstånd
Name[tg]=Ҳолати қувва
Name[th]=
Name[tr]=Şarj Durumu
Name[ug]=ھالىتىنى ئۆزگەرت
Name[uk]=Стан зарядженості
Name[vi]=Trng thái sc
Name[wa]=Estat do tcherdjaedje
Name[x-test]=xxCharge Statexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action plugged]
# ctxt: battery plugged in
Name=Plugged
Name[bs]=Utaknut
Name[ca]=Endollada
Name[ca@valencia]=Endollada
Name[cs]=Připojeno
Name[da]=I stikkontakten
Name[de]=Angeschlossen
Name[el]=Σε σύνδεση
Name[en_GB]=Plugged
Name[es]=Enchufado
Name[et]=Ühendatud
Name[eu]=Konektatuta
Name[fi]=Kytketty
Name[fr]=Branchée
Name[ga]=Plugáilte
Name[gl]=Enchufada
Name[he]=מחובר
Name[hu]=Bedugva
Name[ia]=Connectite
Name[is]=Í sambandi
Name[it]=Connessa
Name[kk]=Қосылған
Name[ko]=
Name[lt]=Prijungtas
Name[mr]=
Name[nb]=Tilkoblet
Name[nds]=Tokoppelt
Name[nl]=Ingeplugd
Name[pa]=
Name[pl]=Podłączona
Name[pt]=Ligada
Name[pt_BR]=Conectada
Name[ro]=Atașat
Name[ru]=Подключён
Name[sk]=Pripojené
Name[sl]=Priključena
Name[sr]=утакнута
Name[sr@ijekavian]=утакнута
Name[sr@ijekavianlatin]=utaknuta
Name[sr@latin]=utaknuta
Name[sv]=Anslutet
Name[tr]=Fişe takılı
Name[uk]=Зєднано
Name[x-test]=xxPluggedxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action rechargeable]
Name=Rechargeable
Name[ar]=قابلة للشحن
Name[ast]=Recargable
Name[bg]=Презаредима
Name[bn]=ি
Name[bs]=punjiva
Name[ca]=Recarregable
Name[ca@valencia]=Recarregable
Name[cs]=Nabíjecí
Name[da]=Genopladeligt
Name[de]=Wiederaufladbar
Name[el]=Επαναφορτιζόμενη
Name[en_GB]=Rechargeable
Name[eo]=Reŝarĝebla
Name[es]=Recargable
Name[et]=Laetav
Name[eu]=Kargatzekoa
Name[fi]=Uudelleenladattavissa
Name[fr]=Rechargeable
Name[fy]=Oplaadbaar
Name[ga]=In-Athluchtaithe
Name[gl]=Recargábel
Name[he]=ניתן לטעינה חוזרת
Name[hi]=
Name[hr]=Punjiva
Name[hu]=Újratölthető
Name[ia]=Recargabile
Name[id]=Dapat Diisi Ulang
Name[is]=Endurhlaðanlegt
Name[it]=Ricaricabile
Name[ja]=
Name[kk]=Қайта толтырылатын
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Iš naujo pakraunamas
Name[lv]=Lādējams
Name[mai]=
Name[ml]=
Name[mr]=
Name[nb]=Oppladbar
Name[nds]=Wedderlaadbor
Name[nl]=Oplaadbaar
Name[nn]=Oppladbart
Name[pa]=-
Name[pl]=Do wielokrotnego ładowania
Name[pt]=Recarregável
Name[pt_BR]=Recarregável
Name[ro]=Reîncărcabil
Name[ru]=Перезаряжаемая
Name[si]=
Name[sk]=Dobíjateľná
Name[sl]=Znova napolnljiva
Name[sr]=пуњива
Name[sr@ijekavian]=пуњива
Name[sr@ijekavianlatin]=punjiva
Name[sr@latin]=punjiva
Name[sv]=Uppladdningsbart
Name[th]=
Name[tr]=Yeniden şarj edilebilir
Name[ug]=توكلاشچان
Name[uk]=Перезарядка
Name[wa]=Ritcherdjåve
Name[x-test]=xxRechargeablexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action type]
Name=Type
Name[ar]=النوع
Name[ast]=Triba
Name[bg]=Вид
Name[bn]=
Name[bs]=tip
Name[ca]=Tipus
Name[ca@valencia]=Tipus
Name[cs]=Typ
Name[csb]=Ôrt
Name[da]=Type
Name[de]=Typ
Name[el]=Τύπος
Name[en_GB]=Type
Name[eo]=Tipo
Name[es]=Tipo
Name[et]=Tüüp
Name[eu]=Mota
Name[fa]=نوع
Name[fi]=Tyyppi
Name[fr]=Type
Name[fy]=Type
Name[ga]=Cineál
Name[gl]=Tipo
Name[gu]=
Name[he]=סוג
Name[hi]=
Name[hr]=Tip
Name[hu]=Típus
Name[ia]=Typo
Name[id]=Tipe
Name[is]=Tegund
Name[it]=Tipo
Name[ja]=
Name[ka]=
Name[kk]=Түрі
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Tipas
Name[lv]=Tips
Name[mai]=
Name[mk]=Тип
Name[ml]=
Name[mr]=
Name[nb]=Type
Name[nds]=Typ
Name[nl]=Type
Name[nn]=Type
Name[pa]=ਿ
Name[pl]=Typ
Name[pt]=Tipo
Name[pt_BR]=Tipo
Name[ro]=Tip
Name[ru]=Тип
Name[si]=
Name[sk]=Typ
Name[sl]=Vrsta
Name[sr]=тип
Name[sr@ijekavian]=тип
Name[sr@ijekavianlatin]=tip
Name[sr@latin]=tip
Name[sv]=Typ
Name[tg]=Намуд
Name[th]=
Name[tr]=Tip
Name[ug]=تىپى
Name[uk]=Тип
Name[wa]=Sôre
Name[x-test]=xxTypexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Entry]
Actions=chargePercent;chargeState;plugged;rechargeable;type;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=Battery

View file

@ -1,286 +0,0 @@
[Desktop Action device]
Name=Device
Name[ar]=الجهاز
Name[ast]=Preseos
Name[bg]=Устройство
Name[bn]=ি
Name[bs]=uređaj
Name[ca]=Dispositiu
Name[ca@valencia]=Dispositiu
Name[cs]=Zařízení
Name[csb]=Ùrządzenié
Name[da]=Enhed
Name[de]=Gerät
Name[el]=Συσκευή
Name[en_GB]=Device
Name[eo]=Aparato
Name[es]=Dispositivo
Name[et]=Seade
Name[eu]=Gailua
Name[fa]=دستگاه
Name[fi]=Laite
Name[fr]=Périphérique
Name[fy]=Apparaat
Name[ga]=Gléas
Name[gl]=Dispositivo
Name[gu]=
Name[he]=התקן
Name[hi]=
Name[hr]=Uređaj
Name[hu]=Eszköz
Name[ia]=Dispositivo
Name[id]=Divais
Name[is]=Tæki
Name[it]=Dispositivo
Name[ja]=
Name[ka]=
Name[kk]=Құрылғысы
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Įrenginys
Name[lv]=Ierīce
Name[mk]=Уред
Name[ml]=
Name[mr]=
Name[nb]=Enhet
Name[nds]=Reedschap
Name[nl]=Apparaat
Name[nn]=Eining
Name[pa]=
Name[pl]=Urządzenie
Name[pt]=Dispositivo
Name[pt_BR]=Dispositivo
Name[ro]=Dispozitiv
Name[ru]=Устройство
Name[si]=
Name[sk]=Zariadenie
Name[sl]=Naprava
Name[sr]=уређај
Name[sr@ijekavian]=уређај
Name[sr@ijekavianlatin]=uređaj
Name[sr@latin]=uređaj
Name[sv]=Enhet
Name[tg]=Дастгоҳ
Name[th]=
Name[tr]=Aygıt
Name[ug]=ئۈسكۈنە
Name[uk]=Пристрій
Name[vi]=Thiết b
Name[wa]=Éndjin
Name[x-test]=xxDevicexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action major]
Name=Major
Name[ar]=عام
Name[ast]=Mayor
Name[bn]=
Name[bs]=Glavnii
Name[ca]=Major
Name[ca@valencia]=Major
Name[cs]=Velké
Name[csb]=Wësok
Name[da]=Stor
Name[de]=Hohe Kennzahl
Name[el]=Κύριο
Name[en_GB]=Major
Name[eo]=ĉefa
Name[es]=Mayor
Name[et]=Põhiversioon
Name[eu]=Handiagoa
Name[fi]=Ensisijainen
Name[fr]=Majeur
Name[fy]=Grut
Name[ga]=Príomh
Name[gl]=Maior
Name[gu]=
Name[he]=ראשי
Name[hi]=
Name[hr]=Glavni
Name[hu]=Főszám
Name[ia]=Major
Name[id]=Mayor
Name[is]=Mest
Name[it]=Maggiore
Name[ja]=
Name[kk]=Негізгі
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Pagrindinis
Name[lv]=Galvenais
Name[mk]=Главен
Name[ml]=
Name[mr]=
Name[nb]=Hoved
Name[nds]=Hooch
Name[nl]=Hoofd
Name[nn]=Hovud
Name[pa]=
Name[pl]=Główny numer urządzenia
Name[pt]=Nº Maior
Name[pt_BR]=Maior
Name[ro]=Major
Name[ru]=Старший номер (major)
Name[si]=
Name[sk]=Major
Name[sl]=Velika
Name[sr]=велики
Name[sr@ijekavian]=велики
Name[sr@ijekavianlatin]=veliki
Name[sr@latin]=veliki
Name[sv]=Huvudnummer
Name[tg]=Moria
Name[th]=
Name[tr]=Büyük
Name[ug]=ئاساسىي
Name[uk]=Головний
Name[wa]=Grand
Name[x-test]=xxMajorxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action minor]
Name=Minor
Name[ar]=فرعي
Name[ast]=Menor
Name[bn]=
Name[bs]=Sporedni
Name[ca]=Menor
Name[ca@valencia]=Menor
Name[cs]=Malé
Name[csb]=Niskò
Name[da]=Mindre
Name[de]=Niedrige Kennzahl
Name[el]=Δευτερεύον
Name[en_GB]=Minor
Name[eo]=Malĉefa
Name[es]=Menor
Name[et]=Alamversioon
Name[eu]=Txikiagoa
Name[fi]=Toissijainen
Name[fr]=Mineur
Name[fy]=Lyts
Name[ga]=Mion
Name[gl]=Menor
Name[gu]=
Name[he]=משני
Name[hi]=
Name[hr]=Sporedni
Name[hu]=Alszám
Name[ia]=Minor
Name[id]=Minor
Name[is]=Minnst
Name[it]=Minore
Name[ja]=
Name[kk]=Қосалқы
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Mažesnis
Name[lv]=Mazais
Name[mk]=Спореден
Name[ml]=ി
Name[mr]=
Name[nb]=Under
Name[nds]=Siet
Name[nl]=Onder
Name[nn]=Del
Name[pa]=
Name[pl]=Podrzędny numer urządzenia
Name[pt]=Nº Menor
Name[pt_BR]=Menor
Name[ro]=Minor
Name[ru]=Младший номер (minor)
Name[si]=
Name[sk]=Minor
Name[sl]=Mala
Name[sr]=мали
Name[sr@ijekavian]=мали
Name[sr@ijekavianlatin]=mali
Name[sr@latin]=mali
Name[sv]=Delnummer
Name[tg]=Moria
Name[th]=
Name[tr]=Küçük
Name[ug]=قوشۇمچە
Name[uk]=Додатковий
Name[wa]=Pitit
Name[x-test]=xxMinorxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Entry]
Actions=device;major;minor;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=Block

View file

@ -1,281 +0,0 @@
[Desktop Action hasState]
Name=Has State
Name[ar]=يملك حالة
Name[ast]=Tien estáu
Name[bs]=sa stanjem
Name[ca]=Té estat
Name[ca@valencia]=Té estat
Name[cs]=Má stav
Name[csb]=Mô stón
Name[da]=Har tilstanden
Name[de]=Hat den Status
Name[el]=Έχει κατάσταση
Name[en_GB]=Has State
Name[eo]=Havas Staton
Name[es]=Tiene estado
Name[et]=Olekuga
Name[eu]=Egoera dauka
Name[fi]=On tilassa
Name[fy]=Hat tastân
Name[ga]=Staid Aige
Name[gl]=Ten o estado
Name[gu]= િિ
Name[he]=בעל מצב
Name[hi]=िि
Name[hr]=Ima li stanje
Name[hu]=Van állapota
Name[ia]=Stato Has
Name[id]=Memiliki Tingkat
Name[is]=Er með stöðu
Name[ja]=
Name[kk]=Күй-жайы
Name[km]=
Name[kn]=ಿಿ ಿ
Name[ko]=
Name[lt]=Būklė
Name[lv]=Piemīt stāvoklis
Name[mai]=िि ि
Name[mk]=Има состојба
Name[ml]=ിി
Name[mr]=ि
Name[nb]=Har tilstand
Name[nds]=Hett en Status
Name[nl]=Heeft status
Name[nn]=Har status
Name[pa]=
Name[pl]=Ma stan
Name[pt]=Tem o Estado
Name[pt_BR]=Possui estado
Name[ro]=Are stare
Name[ru]=Переключатель
Name[si]=
Name[sk]=Má stav
Name[sl]=Ima stanje
Name[sr]=има стање
Name[sr@ijekavian]=има стање
Name[sr@ijekavianlatin]=ima stanje
Name[sr@latin]=ima stanje
Name[sv]=Har tillstånd
Name[tg]=Дорои ҳолат
Name[th]=
Name[tr]=Duruma Sahip
Name[ug]=ھالەتلىك
Name[uk]=Має стан
Name[vi]=Có trng thái
Name[wa]=A l' estat
Name[x-test]=xxHas Statexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action stateValue]
Name=State Value
Name[ar]=قيمة الحالة
Name[ast]=Valor del estáu
Name[bs]=vrijednost stanja
Name[ca]=Valor de l'estat
Name[ca@valencia]=Valor de l'estat
Name[cs]=Hodnota stavu
Name[da]=Tilstandsværdi
Name[de]=Status-Wert
Name[el]=Τιμή κατάστασης
Name[en_GB]=State Value
Name[eo]=Valuo de Stato
Name[es]=Valor del estado
Name[et]=Oleku väärtus
Name[eu]=Egoeraren balioa
Name[fi]=Tilan arvo
Name[fy]=Tastân wearde
Name[ga]=Luach na Staide
Name[gl]=Valor do estado
Name[gu]=િિ િ
Name[he]=ערך מצב
Name[hi]=िि
Name[hr]=Vrijednost stanja
Name[hu]=Állapotérték
Name[ia]=Valor de stato
Name[id]=Nilai Tingkat
Name[is]=Stöðugildi
Name[ja]=
Name[kk]=Мөлшері
Name[km]=
Name[kn]=ಿಿ
Name[ko]=
Name[lt]=Būklės vertė
Name[lv]=Stāvokļa vērtība
Name[mk]=Вредност на состојба
Name[ml]=ി
Name[mr]=ि
Name[nb]=Tilstandsverdi
Name[nds]=Statusweert
Name[nl]=Statuswaarde
Name[nn]=Statusverdi
Name[pa]=
Name[pl]=Wartość stanu
Name[pt]=Valor do Estado
Name[pt_BR]=Valor do estado
Name[ro]=Valoarea stării
Name[ru]=Значение состояния
Name[si]=
Name[sk]=Hodnota stavu
Name[sl]=Vrednost stanja
Name[sr]=вредност стања
Name[sr@ijekavian]=вредност стања
Name[sr@ijekavianlatin]=vrednost stanja
Name[sr@latin]=vrednost stanja
Name[sv]=Tillståndsvärde
Name[tg]=Бозиҳои стратегӣ
Name[th]=
Name[tr]=Durum Değeri
Name[ug]=ھالەت قىممىتى
Name[uk]=Значення стану
Name[wa]=Valixhance d' estat
Name[x-test]=xxState Valuexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action type]
Name=Type
Name[ar]=النوع
Name[ast]=Triba
Name[bg]=Вид
Name[bn]=
Name[bs]=tip
Name[ca]=Tipus
Name[ca@valencia]=Tipus
Name[cs]=Typ
Name[csb]=Ôrt
Name[da]=Type
Name[de]=Typ
Name[el]=Τύπος
Name[en_GB]=Type
Name[eo]=Tipo
Name[es]=Tipo
Name[et]=Tüüp
Name[eu]=Mota
Name[fa]=نوع
Name[fi]=Tyyppi
Name[fr]=Type
Name[fy]=Type
Name[ga]=Cineál
Name[gl]=Tipo
Name[gu]=
Name[he]=סוג
Name[hi]=
Name[hr]=Tip
Name[hu]=Típus
Name[ia]=Typo
Name[id]=Tipe
Name[is]=Tegund
Name[it]=Tipo
Name[ja]=
Name[ka]=
Name[kk]=Түрі
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Tipas
Name[lv]=Tips
Name[mai]=
Name[mk]=Тип
Name[ml]=
Name[mr]=
Name[nb]=Type
Name[nds]=Typ
Name[nl]=Type
Name[nn]=Type
Name[pa]=ਿ
Name[pl]=Typ
Name[pt]=Tipo
Name[pt_BR]=Tipo
Name[ro]=Tip
Name[ru]=Тип
Name[si]=
Name[sk]=Typ
Name[sl]=Vrsta
Name[sr]=тип
Name[sr@ijekavian]=тип
Name[sr@ijekavianlatin]=tip
Name[sr@latin]=tip
Name[sv]=Typ
Name[tg]=Намуд
Name[th]=
Name[tr]=Tip
Name[ug]=تىپى
Name[uk]=Тип
Name[wa]=Sôre
Name[x-test]=xxTypexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Entry]
Actions=hasState;stateValue;type;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=Button

View file

@ -1,215 +0,0 @@
[Desktop Action supportedDrivers]
Name=Supported Drivers
Name[ar]=المشغلات المدعومة
Name[ast]=Controladores sofitaos
Name[bg]=Поддържани драйвери
Name[bn]=ি
Name[bs]=podržani drajveri
Name[ca]=Controladors acceptats
Name[ca@valencia]=Controladors acceptats
Name[cs]=Podporované ovladače
Name[csb]=Wspiéróné czérowniczi
Name[da]=Understøttede drivere
Name[de]=Unterstützte Treiber
Name[el]=Υποστηριζόμενοι οδηγοί
Name[en_GB]=Supported Drivers
Name[eo]=subtenataj Peliloj
Name[es]=Dispositivos soportados
Name[et]=Toetatud draiverid
Name[eu]=Onartutzen diren gidariak
Name[fi]=Tuetut ajurit
Name[fr]=Pilotes pris en charge
Name[fy]=Stipe stjoerprogramma's
Name[ga]=Tiománaithe a dTacaítear Leo
Name[gl]=Controladores soportados
Name[gu]=િ
Name[he]=מנהלי התקנים נתמכים
Name[hi]=ि
Name[hr]=Podržani pisači
Name[hu]=Támogatott meghajtók
Name[ia]=Drivers supportate
Name[id]=Penggerak Didukung
Name[is]=Studdir reklar
Name[it]=Driver supportati
Name[ja]=
Name[kk]=Қолдайтын драйверлері
Name[km]=
Name[kn]=ಿ
Name[ko]=
Name[lt]=Palaikomos tvarkyklės
Name[lv]=Atbalstītie draiveri
Name[mai]=ि
Name[mk]=Поддржани управувачи
Name[ml]=ി ി
Name[mr]=
Name[nb]=Støttede drivere
Name[nds]=Ünnerstütt Drievers
Name[nl]=Ondersteunde stuurprogramma's
Name[nn]=Støtta drivarar
Name[pa]=
Name[pl]=Obsługiwane sterowniki
Name[pt]=Controladores Suportados
Name[pt_BR]=Drivers suportados
Name[ro]=Drivere susținute
Name[ru]=Поддерживаемые драйверы
Name[si]=
Name[sk]=Podporované ovládače
Name[sl]=Podprti gonilniki
Name[sr]=подржани драјвери
Name[sr@ijekavian]=подржани драјвери
Name[sr@ijekavianlatin]=podržani drajveri
Name[sr@latin]=podržani drajveri
Name[sv]=Drivrutiner som stöds
Name[tg]=Дастгоҳҳои мувофиқ
Name[th]=
Name[tr]=Desteklenen Sürücüler
Name[ug]=قوللايدىغان قوزغاتقۇلار
Name[uk]=Підтримувані драйвери
Name[wa]=Mineus sopoirtés
Name[x-test]=xxSupported Driversxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action supportedProtocols]
Name=Supported Protocols
Name[ar]=البروتوكولات المدعومة
Name[ast]=Protocolos sofitaos
Name[bg]=Поддържани протоколи
Name[bn]=ি
Name[bs]=podržani protokoli
Name[ca]=Protocols acceptats
Name[ca@valencia]=Protocols acceptats
Name[cs]=Podporované protokoly
Name[csb]=Wspiéróné protokòłë
Name[da]=Understøttede protokoller
Name[de]=Unterstützte Protokolle
Name[el]=Υποστηριζόμενα πρωτόκολλα
Name[en_GB]=Supported Protocols
Name[eo]=Subtenitaj Protokoloj
Name[es]=Protocolos soportados
Name[et]=Toetatud protokollid
Name[eu]=Onartzen diren protokoloak
Name[fi]=Tuetut yhteyskäytännöt
Name[fr]=Protocoles pris en charge
Name[fy]=Stipe protokollen
Name[ga]=Prótacail a dTacaítear Leo
Name[gl]=Protocolos soportados
Name[gu]=િ
Name[he]=פרוטוקולים נתמכים
Name[hi]=ि
Name[hr]=Podržani Protokoli
Name[hu]=Támogatott protokollok
Name[ia]=Protocollos supportate
Name[id]=Protokol Didukung
Name[is]=Studdar samskiptareglur
Name[it]=Protocolli supportati
Name[ja]=
Name[kk]=Қолдайтын протоколдары
Name[km]=
Name[kn]=ಿ ()
Name[ko]=
Name[lt]=Palaikomi protokolai
Name[lv]=Atbalstītie protokoli
Name[mk]=Поддржани протоколи
Name[ml]=ി
Name[mr]= ि
Name[nb]=Støttede protokoller
Name[nds]=Ünnerstütt Protokollen
Name[nl]=Ondersteunde protocollen
Name[nn]=Støtta protokollar
Name[pa]=
Name[pl]=Obsługiwane protokoły
Name[pt]=Protocolos Suportados
Name[pt_BR]=Protocolos suportados
Name[ro]=Protocoale susținute
Name[ru]=Поддерживаемые протоколы
Name[si]=
Name[sk]=Podporované protokoly
Name[sl]=Podprti protokoli
Name[sr]=подржани протоколи
Name[sr@ijekavian]=подржани протоколи
Name[sr@ijekavianlatin]=podržani protokoli
Name[sr@latin]=podržani protokoli
Name[sv]=Protokoll som stöds
Name[tg]=Протоколҳо
Name[th]=
Name[tr]=Desteklenen Protokoller
Name[ug]=قوللايدىغان كېلىشىملەر
Name[uk]=Підтримувані протоколи
Name[wa]=Protocoles sopoirtés
Name[x-test]=xxSupported Protocolsxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Entry]
Actions=supportedDrivers;supportedProtocols;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=Camera

View file

@ -1,146 +0,0 @@
[Desktop Action driver]
Name=Driver
Name[ar]=المشغل
Name[ast]=Controlador
Name[bg]=Драйвер
Name[bn]=
Name[bs]=drajver
Name[ca]=Controlador
Name[ca@valencia]=Controlador
Name[cs]=Ovladač
Name[csb]=Czérownik
Name[da]=Driver
Name[de]=Treiber
Name[el]=Οδηγός
Name[en_GB]=Driver
Name[eo]=Pelilo
Name[es]=Controlador
Name[et]=Draiver
Name[eu]=Gidaria
Name[fa]=گرداننده
Name[fi]=Ajuri
Name[fr]=Pilote
Name[fy]=Stjoerprogramma
Name[ga]=Tiománaí
Name[gl]=Controlador
Name[gu]=
Name[he]=מנהל התקן
Name[hi]=
Name[hr]=Pogonski program
Name[hu]=Meghajtó
Name[ia]=Driver
Name[id]=Penggerak
Name[is]=Rekill
Name[ja]=
Name[ka]=
Name[kk]=Драйвері
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Tvarkyklė
Name[lv]=Draiveris
Name[mai]=
Name[mk]=Управувач
Name[ml]=ി
Name[mr]=
Name[nb]=Driver
Name[nds]=Driever
Name[nl]=Stuurprogramma
Name[nn]=Drivar
Name[pa]=
Name[pl]=Sterownik
Name[pt]=Controlador
Name[pt_BR]=Driver
Name[ro]=Driver
Name[ru]=Драйвер
Name[si]=
Name[sk]=Ovládač
Name[sl]=Gonilnik
Name[sr]=драјвер
Name[sr@ijekavian]=драјвер
Name[sr@ijekavianlatin]=drajver
Name[sr@latin]=drajver
Name[sv]=Drivrutin
Name[tg]=Драйвер
Name[th]=
Name[tr]=Sürücü
Name[ug]=قوزغاتقۇ
Name[uk]=Драйвер
Name[vi]=Trình điu khin
Name[wa]=Mineu
Name[x-test]=xxDriverxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Entry]
Actions=driver;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=Graphic

View file

@ -1,149 +0,0 @@
[Desktop Action driver]
Name=Driver
Name[ar]=المشغل
Name[ast]=Controlador
Name[bg]=Драйвер
Name[bn]=
Name[bs]=drajver
Name[ca]=Controlador
Name[ca@valencia]=Controlador
Name[cs]=Ovladač
Name[csb]=Czérownik
Name[da]=Driver
Name[de]=Treiber
Name[el]=Οδηγός
Name[en_GB]=Driver
Name[eo]=Pelilo
Name[es]=Controlador
Name[et]=Draiver
Name[eu]=Gidaria
Name[fa]=گرداننده
Name[fi]=Ajuri
Name[fr]=Pilote
Name[fy]=Stjoerprogramma
Name[ga]=Tiománaí
Name[gl]=Controlador
Name[gu]=
Name[he]=מנהל התקן
Name[hi]=
Name[hr]=Pogonski program
Name[hu]=Meghajtó
Name[ia]=Driver
Name[id]=Penggerak
Name[is]=Rekill
Name[ja]=
Name[ka]=
Name[kk]=Драйвері
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Tvarkyklė
Name[lv]=Draiveris
Name[mai]=
Name[mk]=Управувач
Name[ml]=ി
Name[mr]=
Name[nb]=Driver
Name[nds]=Driever
Name[nl]=Stuurprogramma
Name[nn]=Drivar
Name[pa]=
Name[pl]=Sterownik
Name[pt]=Controlador
Name[pt_BR]=Driver
Name[ro]=Driver
Name[ru]=Драйвер
Name[si]=
Name[sk]=Ovládač
Name[sl]=Gonilnik
Name[sr]=драјвер
Name[sr@ijekavian]=драјвер
Name[sr@ijekavianlatin]=drajver
Name[sr@latin]=drajver
Name[sv]=Drivrutin
Name[tg]=Драйвер
Name[th]=
Name[tr]=Sürücü
Name[ug]=قوزغاتقۇ
Name[uk]=Драйвер
Name[vi]=Trình điu khin
Name[wa]=Mineu
Name[x-test]=xxDriverxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action inputType]
Name=Input Type
[Desktop Entry]
Actions=driver;inputType;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=Input

View file

@ -1,363 +0,0 @@
[Desktop Action hwAddress]
Name=Hw Address
Name[ar]=عنوان العتاد
Name[ast]=Direición HW
Name[bg]=Хардуерен адрес
Name[bn]=Hw
Name[bs]=hv. adresa
Name[ca]=Adreça maquinari
Name[ca@valencia]=Adreça maquinari
Name[cs]=Hw adresa
Name[csb]=Adresa Hw
Name[da]=HW-adresse
Name[de]=HW-Adresse
Name[el]=Διεύθυνση Hw
Name[en_GB]=Hw Address
Name[eo]=Hw Adreso
Name[es]=Dirección HW
Name[et]=Riistvara-aadress
Name[eu]=HW helbidea
Name[fi]=Rautaosoite
Name[fr]=Adresse matérielle
Name[fy]=Hw adres
Name[ga]=Seoladh Crua-Earraí
Name[gl]=Enderezo hardware
Name[gu]=
Name[he]=כתובת חומרה
Name[hi]=
Name[hr]=Hardverska adresa
Name[hu]=Hardveres cím
Name[ia]=Adresse Hw
Name[id]=Alamat Peranti Keras
Name[is]=HW vistfang
Name[ja]=HW
Name[kk]=Жабд. адресі
Name[km]= Hw
Name[kn]=Hw ಿ
Name[ko]=
Name[lt]=Aparatinis adresas
Name[lv]=Hw adrese
Name[mai]=Hw
Name[mk]=Адреса на хардвер
Name[ml]= ി
Name[mr]=Hw
Name[nb]=Hw-adresse
Name[nds]=Hardware-Adress
Name[nl]=HW-adres
Name[nn]=Maskinvareadresse
Name[pa]=Hw
Name[pl]=Adres sprzętowy
Name[pt]=Endereço de H/W
Name[pt_BR]=Endereço de hardware
Name[ro]=Adresă fizică
Name[ru]=Аппаратный адрес
Name[si]=Hw
Name[sk]=Hw adresa
Name[sl]=Strojni naslov
Name[sr]=хв. адреса
Name[sr@ijekavian]=хв. адреса
Name[sr@ijekavianlatin]=hv. adresa
Name[sr@latin]=hv. adresa
Name[sv]=Hårdvaruadress
Name[tg]=Суроғаи Hw
Name[th]=
Name[tr]=Donanım Adresi
Name[ug]=قاتتىق دېتال ئادرېسى
Name[uk]=Апар. адреса
Name[vi]=Đa ch phn cng
Name[wa]=Adresse Hw
Name[x-test]=xxHw Addressxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action ifaceName]
Name=Iface Name
Name[ar]=اسم الواجهة
Name[ast]=Nome d'interface
Name[bg]=Име на интерфейс
Name[bn]=Iface-
Name[bs]=ime sučelja
Name[ca]=Nom d'interfície
Name[ca@valencia]=Nom d'interfície
Name[cs]=Název rozhraní
Name[csb]=Miono Iface
Name[da]=Navn på grænseflade
Name[de]=Schnittstellen-Name
Name[el]=Όνομα Iface
Name[en_GB]=Iface Name
Name[eo]=Iface Nomo
Name[es]=Nombre de interfaz
Name[et]=Liidese nimi
Name[eu]=Interfaze-izena
Name[fi]=Verkkoliitynnän nimi
Name[fr]=Nom « Iface »
Name[fy]=Iface namme
Name[ga]=Ainm an Chomhéadain
Name[gl]=Nome da interface
Name[gu]=
Name[he]=שם Iface
Name[hi]=Iface
Name[hr]=Ime sučelja
Name[hu]=Felületnév
Name[ia]=Nomine Iface
Name[id]=Nama Antarmuka
Name[is]=IFACE nafn
Name[ja]=
Name[kk]=И-фейс атауы
Name[km]= Iface
Name[kn]=Iface
Name[ko]=
Name[lt]=Sąsajos pavadinimas
Name[lv]=Sask. nosaukums
Name[mk]=Име на интерфејс
Name[ml]=ി
Name[mr]=Iface
Name[nb]=G.snitt-navn
Name[nds]=Koppelsteed-Naam
Name[nl]=Iface-naam
Name[nn]=Grensesnittnamn
Name[pa]=Iface
Name[pl]=Nazwa interfejsu
Name[pt]=Nome da Interface
Name[pt_BR]=Nome da interface
Name[ro]=Denumire interfață
Name[ru]=Название интерфейса
Name[si]=Iface
Name[sk]=Názov rozhrania
Name[sl]=Ime vmesnika
Name[sr]=име сучеља
Name[sr@ijekavian]=име сучеља
Name[sr@ijekavianlatin]=ime sučelja
Name[sr@latin]=ime sučelja
Name[sv]=Gränssnittsnamn
Name[tg]=Бозиҳои Dice
Name[th]=
Name[tr]=Iface Adı
Name[ug]=ئارايۈز ئاتى
Name[uk]=Назва Iface
Name[vi]=Tên Iface
Name[wa]=No Iface
Name[x-test]=xxIface Namexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action macAddress]
Name=Mac Address
Name[ar]=عنوان Mac
Name[ast]=Direición MAC
Name[bg]=МАС-адрес
Name[bn]=
Name[bs]=MAC adresa
Name[ca]=Adreça MAC
Name[ca@valencia]=Adreça MAC
Name[cs]=Mac adresa
Name[csb]=Adresa Mac
Name[da]=MAC-adresse
Name[de]=MAC-Adresse
Name[el]=Διεύθυνση MAC
Name[en_GB]=Mac Address
Name[eo]=Maŝinadreso
Name[es]=Dirección MAC
Name[et]=MAC-aadress
Name[eu]=MAC helbidea
Name[fi]=Mac-osoite
Name[fr]=Adresse « Mac »
Name[fy]=Mac adres
Name[ga]=Seoladh MAC
Name[gl]=Enderezo MAC
Name[gu]=
Name[he]=כתובת MAC
Name[hi]=
Name[hr]=MAC adresa
Name[hu]=MAC cím
Name[ia]=Adresse Mac
Name[id]=Alamat Mac
Name[is]=MAC vistfang
Name[ja]=Mac
Name[ka]=MAC
Name[kk]=Mac адресі
Name[km]= Mac
Name[kn]= ಿ
Name[ko]=MAC
Name[lt]=Mac adresas
Name[lv]=Mac adrese
Name[mai]=Mac
Name[mk]=Mac-адреса
Name[ml]= ി
Name[mr]=Mac
Name[nb]=MAC-adresse
Name[nds]=Mac-Adress
Name[nl]=MAC-adres
Name[nn]=MAC-adresse
Name[pa]=
Name[pl]=Adres Mac
Name[pt]=Endereço MAC
Name[pt_BR]=Endereço MAC
Name[ro]=Adresă MAC
Name[ru]=MAC-адрес
Name[si]=
Name[sk]=Mac adresa
Name[sl]=Naslov MAC
Name[sr]=МАЦ адреса
Name[sr@ijekavian]=МАЦ адреса
Name[sr@ijekavianlatin]=MAC adresa
Name[sr@latin]=MAC adresa
Name[sv]=MAC-adress
Name[tg]=Суроғаи Mac
Name[th]= Mac
Name[tr]=Mac Adresi
Name[ug]=MAC ئادرېس
Name[uk]=Mac-адреса
Name[vi]=Đa ch Mac
Name[wa]=Adresse Mac
Name[x-test]=xxMac Addressxx
Name[zh_CN]=Mac
Name[zh_TW]=Mac
[Desktop Action wireless]
Name=Wireless
Name[ar]=لاسلكي
Name[ast]=Inalámbricu
Name[bg]=Безжична мрежа
Name[bn]=
Name[bs]=bežična
Name[ca]=Xarxa sense fils
Name[ca@valencia]=Xarxa sense fils
Name[cs]=Bezdrátové
Name[csb]=Bezkablowé
Name[da]=Trådløst
Name[de]=Drahtlos
Name[el]=Ασύρματο
Name[en_GB]=Wireless
Name[eo]=Sendrata reto
Name[es]=Inalámbrico
Name[et]=Juhtmeta
Name[eu]=Haririk gabea
Name[fa]=بیسیم
Name[fi]=Langaton
Name[fr]=Sans fil
Name[fy]=Triedleas
Name[ga]=Gan Sreang
Name[gl]=Sen fíos
Name[gu]=
Name[he]=אלחוטי
Name[hi]=
Name[hr]=Bežićna
Name[hu]=Vezeték nélküli
Name[ia]=Wireless (Sin Cablos)
Name[id]=Nirkabel
Name[is]=Þráðlaust
Name[ja]=
Name[ka]=
Name[kk]=Сымсыз
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Bevielis
Name[lv]=Bezvadu
Name[mk]=Бежичен
Name[ml]=
Name[mr]=
Name[nb]=Trådløs
Name[nds]=Funk
Name[nl]=Draadloos
Name[nn]=Trådlaust
Name[pa]=
Name[pl]=Bezprzewodowy
Name[pt]=Sem-Fios
Name[pt_BR]=Sem fio
Name[ro]=Fără fir
Name[ru]=Беспроводная сеть
Name[si]=
Name[sk]=Bezdrôtové
Name[sl]=Brezžično
Name[sr]=бежична
Name[sr@ijekavian]=бежична
Name[sr@ijekavianlatin]=bežična
Name[sr@latin]=bežična
Name[sv]=Trådlöst
Name[tg]=Бесимӣ
Name[th]=
Name[tr]=Kablosuz
Name[ug]=سىمسىز
Name[uk]=Бездротове
Name[wa]=Sins fyi
Name[x-test]=xxWirelessxx
Name[zh_CN]=线
Name[zh_TW]=
[Desktop Action loopback]
Name=Loopback
[Desktop Entry]
Actions=hwAddress;ifaceName;macAddress;wireless;loopback;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=NetworkInterface

View file

@ -1,941 +0,0 @@
[Desktop Action appendable]
Name=Appendable
Name[ar]=قابل للإضافة
Name[ast]=Pue amestase
Name[bg]=Незавършен диск
Name[bn]=
Name[bs]=dopisiv
Name[ca]=Afegible
Name[ca@valencia]=Afegible
Name[cs]=Připojitelný
Name[csb]=Dodôwny
Name[da]=Data kan tilføjes
Name[de]=Anhängbar
Name[el]=Προσαρτήσιμο
Name[en_GB]=Appendable
Name[eo]=Aldonebla
Name[es]=Se puede añadir
Name[et]=Lisatav
Name[eu]=Gehi dakiokeena
Name[fi]=Liitettävä
Name[fr]=Opposable
Name[fy]=Kin taheakje
Name[ga]=In-iarcheangailte
Name[gl]=Poden engadírselle datos
Name[gu]=
Name[he]=ניתן להוסיף עליו
Name[hi]=
Name[hr]=Može se dodavati
Name[hu]=Hozzáfűzhető
Name[ia]=On pote adjunger
Name[id]=Dapat Ditambahkan
Name[is]=Hægt að bæta við
Name[it]=Aggiungibile
Name[ja]=
Name[kk]=Жалғасулы
Name[km]=
Name[kn]=ಿ
Name[ko]=
Name[lt]=Pridedamas
Name[lv]=Papildināms
Name[ml]=
Name[mr]=
Name[nb]=Har plass igjen
Name[nds]=Nich afslaten
Name[nl]=Uitbreidbaar
Name[nn]=Tilleggbar
Name[pa]=
Name[pl]=Z możliwością dopisywania
Name[pt]=Adicionável
Name[pt_BR]=Anexável
Name[ro]=Completabil
Name[ru]=Дозаписываемый
Name[si]=
Name[sk]=Doplniteľné
Name[sl]=Dodajanje je mogoče
Name[sr]=дописив
Name[sr@ijekavian]=дописив
Name[sr@ijekavianlatin]=dopisiv
Name[sr@latin]=dopisiv
Name[sv]=Tilläggbar
Name[tg]=Намуди зоҳирӣ
Name[th]=
Name[tr]=Eklenebilir
Name[ug]=قوشۇشقا بولىدۇ
Name[uk]=Додавання
Name[vi]=Có th ghi thêm
Name[wa]=Adjoutåve
Name[x-test]=xxAppendablexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action availableContent]
Name=Available Content
Name[ar]=المحتويات المتوفرة
Name[ast]=Conteníu disponible
Name[bg]=Налично съдържание
Name[bn]=
Name[bs]=dostupan sadržaj
Name[ca]=Contingut disponible
Name[ca@valencia]=Contingut disponible
Name[cs]=Dostupný obsah
Name[csb]=Przëstãpnô zamkłosc
Name[da]=Tilgængeligt indhold
Name[de]=Verfügbarer Inhalt
Name[el]=Διαθέσιμο περιεχόμενο
Name[en_GB]=Available Content
Name[eo]=Havebla Enhavo
Name[es]=Contenido disponible
Name[et]=Sisuga
Name[eu]=Eduki eskuragarria
Name[fi]=Käytettävissä oleva sisältö
Name[fr]=Contenu disponible
Name[fy]=Beskikbere ynhâld
Name[ga]=Ábhar Le Fáil
Name[gl]=Contido dispoñíbel
Name[gu]= િ
Name[he]=תוכן זמין
Name[hi]= ि
Name[hr]=Dostupni sadržaj
Name[hu]=Elérhető tartalom
Name[ia]=Contento disponibile
Name[id]=Isi Tersedia
Name[is]=Aðgengilegt innihald
Name[it]=Contenuto disponibile
Name[ja]=
Name[kk]=Бар мазмұны
Name[km]=
Name[kn]=ಿ ಿ
Name[ko]=
Name[lt]=Turimas turinys
Name[lv]=Pieejams saturs
Name[mai]=
Name[mk]=Достапна содржина
Name[ml]=
Name[mr]=
Name[nb]=Tilgjengelig innhold
Name[nds]=Verföögbor Inholt
Name[nl]=Beschikbare inhoud
Name[nn]=Tilgjengeleg innhald
Name[pa]=
Name[pl]=Dostępna treść
Name[pt]=Conteúdo Disponível
Name[pt_BR]=Conteúdo disponível
Name[ro]=Conținut disponibil
Name[ru]=Содержимое
Name[si]=
Name[sk]=Dostupný obsah
Name[sl]=Razpoložljiva vsebina
Name[sr]=доступан садржај
Name[sr@ijekavian]=доступан садржај
Name[sr@ijekavianlatin]=dostupan sadržaj
Name[sr@latin]=dostupan sadržaj
Name[sv]=Tillgängligt innehåll
Name[tg]=Мазмуни дастрас
Name[th]=
Name[tr]=Kullanılabilir İçerik
Name[ug]=ئىشلەتكىلى بولىدىغان مەزمۇن
Name[uk]=Доступний вміст
Name[vi]=Ni dung hin hu
Name[wa]=Ådvins disponibe
Name[x-test]=xxAvailable Contentxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action blank]
Name=Blank
Name[ar]=فارغ
Name[ast]=Baleru
Name[bg]=Празен диск
Name[bn]=
Name[bs]=prazan
Name[ca]=En blanc
Name[ca@valencia]=En blanc
Name[cs]=Prázdné
Name[csb]=Czësti
Name[da]=Tom
Name[de]=Leer
Name[el]=Κενό
Name[en_GB]=Blank
Name[eo]=Malplena
Name[es]=En blanco
Name[et]=Tühi
Name[eu]=Hutsik
Name[fi]=Tyhjä
Name[fr]=Vide
Name[fy]=Leech
Name[ga]=Folamh
Name[gl]=Sen gravar
Name[gu]=
Name[he]=ריק
Name[hi]=
Name[hr]=Prazan
Name[hu]=Üres
Name[ia]=Vacue
Name[id]=Kosong
Name[is]=Tómur
Name[it]=Vuoto
Name[ja]=
Name[kk]=Бос
Name[km]=
Name[kn]=ಿ
Name[ko]=
Name[lt]=Tuščias
Name[lv]=Tukšs
Name[mk]=Празен
Name[ml]=
Name[mr]=ि
Name[nb]=Tom
Name[nds]=Leddig
Name[nl]=Blanco
Name[nn]=Tom
Name[pa]=
Name[pl]=Pusty
Name[pt]=Vazio
Name[pt_BR]=Vazio
Name[ro]=Gol
Name[ru]=Пустой
Name[si]=
Name[sk]=Prázdne
Name[sl]=Prazen
Name[sr]=празан
Name[sr@ijekavian]=празан
Name[sr@ijekavianlatin]=prazan
Name[sr@latin]=prazan
Name[sv]=Tom
Name[tg]=Холӣ
Name[th]=
Name[tr]=Boş
Name[ug]=بوش
Name[uk]=Порожньо
Name[vi]=Trng
Name[wa]=Vude
Name[x-test]=xxBlankxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action capacity]
Name=Capacity
Name[ar]=السعة
Name[ast]=Capacidá
Name[bg]=Капацитет
Name[bn]=ি
Name[bs]=kapacitet
Name[ca]=Capacitat
Name[ca@valencia]=Capacitat
Name[cs]=Kapacita
Name[csb]=Plac na diskù
Name[da]=Kapacitet
Name[de]=Kapazität
Name[el]=Χωρητικότητα
Name[en_GB]=Capacity
Name[eo]=Kapacito
Name[es]=Capacidad
Name[et]=Mahtuvus
Name[eu]=Edukiera
Name[fi]=Tilavuus
Name[fr]=Capacité
Name[fy]=kapisiteit
Name[ga]=Toilleadh
Name[gl]=Capacidade
Name[gu]=
Name[he]=קיבולת
Name[hi]=
Name[hr]=Kapacitet
Name[hu]=Kapacitás
Name[ia]=Capacitate
Name[id]=Kapasitas
Name[is]=Rýmd
Name[it]=Capacità
Name[ja]=
Name[ka]=
Name[kk]=Сыйымдылығы
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Galimybės
Name[lv]=Ietilpība
Name[mk]=Капацитет
Name[ml]=ി
Name[mr]=
Name[nb]=Kapasitet
Name[nds]=Grött
Name[nl]=Capaciteit
Name[nn]=Kapasitet
Name[pa]=
Name[pl]=Pojemność
Name[pt]=Capacidade
Name[pt_BR]=Capacidade
Name[ro]=Capacitate
Name[ru]=Ёмкость
Name[si]=
Name[sk]=Kapacita
Name[sl]=Zmogljivost
Name[sr]=капацитет
Name[sr@ijekavian]=капацитет
Name[sr@ijekavianlatin]=kapacitet
Name[sr@latin]=kapacitet
Name[sv]=Kapacitet
Name[tg]=Audacity
Name[th]=
Name[tr]=Kapasite
Name[ug]=سىغىمى
Name[uk]=Місткість
Name[vi]=Dung lưng
Name[wa]=Capacité
Name[x-test]=xxCapacityxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action discType]
Name=Disc Type
Name[ar]=نوع القرص
Name[ast]=Triba de discu
Name[bg]=Вид диск
Name[bn]=ি
Name[bs]=tip diska
Name[ca]=Tipus de disc
Name[ca@valencia]=Tipus de disc
Name[cs]=Typ disku
Name[csb]=Ôrt diskù
Name[da]=Disktype
Name[de]=Disc-Typ
Name[el]=Τύπος δίσκου
Name[en_GB]=Disc Type
Name[eo]=Tipo de Disko
Name[es]=Tipo de disco
Name[et]=Plaadi tüüp
Name[eu]=Disko mota
Name[fi]=Levyn tyyppi
Name[fr]=Type de disque
Name[fy]=Skiif type
Name[ga]=Cineál an Diosca
Name[gl]=Tipo de disco
Name[gu]=િ
Name[he]=סוג דיסק
Name[hi]=ि
Name[hr]=Tip diska
Name[hu]=Lemeztípus
Name[ia]=Typo disco
Name[id]=Tipe Cakram
Name[is]=Gerð disks
Name[it]=Tipo di disco
Name[ja]=
Name[ka]=
Name[kk]=Диск түрі
Name[km]=
Name[kn]=ಿಿ
Name[ko]=
Name[lt]=Disko tipas
Name[lv]=Tiska veids
Name[mai]=ि
Name[mk]=Тип на диск
Name[ml]=ിി
Name[mr]=ि
Name[nb]=Platetype
Name[nds]=Schiev-Typ
Name[nl]=Schijftype
Name[nn]=Disktype
Name[pa]=ਿ ਿ
Name[pl]=Typ dysku
Name[pt]=Tipo de Disco
Name[pt_BR]=Tipo de disco
Name[ro]=Tipul discului
Name[ru]=Тип диска
Name[si]=
Name[sk]=Typ disku
Name[sl]=Vrsta diska
Name[sr]=тип диска
Name[sr@ijekavian]=тип диска
Name[sr@ijekavianlatin]=tip diska
Name[sr@latin]=tip diska
Name[sv]=Skivtyp
Name[tg]=Намуди диск
Name[th]=
Name[tr]=Disk Tipi
Name[ug]=دىسكا تىپى
Name[uk]=Тип диска
Name[vi]=Kiu đĩa
Name[wa]=Sôre di plake
Name[x-test]=xxDisc Typexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action fsType]
Name=Fs Type
Name[ar]=نوع نظام الملفات
Name[ast]=Triba de Fs
Name[bg]=Вид файлова система
Name[bn]=Fs
Name[bs]=tip fsis.
Name[ca]=Tipus de sistema de fitxers
Name[ca@valencia]=Tipus de sistema de fitxers
Name[cs]=Typ FS
Name[csb]=Ôrt Fs
Name[da]=FS-type
Name[de]=Dateisystemtyp
Name[el]=Τύπος συστήματος αρχείων
Name[en_GB]=Fs Type
Name[eo]=Dosiersistema Tipo
Name[es]=Tipo de s. a.
Name[et]=Failisüsteemi tüüp
Name[eu]=Fitxategi-sistema mota
Name[fi]=Tiedostojärjestelmän tyyppi
Name[fr]=Type de système de fichiers
Name[fy]=Fs type
Name[ga]=Cineál an Chórais Comhad
Name[gl]=Sistema de ficheiros
Name[gu]=Fs
Name[he]=סוג מערכת קבצים
Name[hi]=Fs
Name[hr]=Tip datotečnog sustava
Name[hu]=Fájlrendszer
Name[ia]=Typo Fs
Name[id]=Tipe Sistem Berkas
Name[is]=Tegund skráakerfis
Name[it]=Tipo di filesystem
Name[ja]=Fs
Name[kk]=ФЖ түрі
Name[km]= Fs
Name[kn]=Fs
Name[ko]=
Name[lt]=FS tipas
Name[lv]=FS tips
Name[mai]=Fs
Name[mk]=Тип на дат. систем
Name[ml]=
Name[mr]=Fs
Name[nb]=Filsystemtype
Name[nds]=Dateisysteem-Typ
Name[nl]=FS-type
Name[nn]=Filsystemtype
Name[pa]=Fs ਿ
Name[pl]=Typ systemu plików
Name[pt]=Tipo de SF
Name[pt_BR]=Tipo de sistema de arquivos
Name[ro]=Tipul SF
Name[ru]=Файловая система
Name[si]=Fs
Name[sk]=Typ FS
Name[sl]=Vrsta dat. sist.
Name[sr]=тип фсис.
Name[sr@ijekavian]=тип фсис.
Name[sr@ijekavianlatin]=tip fsis.
Name[sr@latin]=tip fsis.
Name[sv]=Filsystemtyp
Name[tg]=Намуди Fs
Name[th]=
Name[tr]=Dosya Sistemi Tipi
Name[ug]=ھۆججەت سىستېما تىپى
Name[uk]=Тип ФС
Name[vi]=Kiu h thng tp tin
Name[wa]=Sôre di Fs
Name[x-test]=xxFs Typexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action ignored]
Name=Ignored
Name[ar]=متجاهَل
Name[ast]=Inoráu
Name[bg]=Пренебрегнат
Name[bn]=ি
Name[bs]=ignorisan
Name[ca]=Ignorat
Name[ca@valencia]=Ignorat
Name[cs]=Ignorováno
Name[csb]=Ignorowóné
Name[da]=Ignoreret
Name[de]=Ignoriert
Name[el]=Παράβλεψη
Name[en_GB]=Ignored
Name[eo]=Ignorita
Name[es]=Ignorado
Name[et]=Eiratav
Name[eu]=Ez ikusi eginda
Name[fi]=Ei otettu huomioon
Name[fr]=Ignoré
Name[fy]=Negearre
Name[ga]=Neamhaird Déanta De
Name[gl]=Ignorado
Name[gu]=
Name[he]=התעלם
Name[hi]=ि
Name[hr]=Zanemareno
Name[hu]=Nem kezelt
Name[ia]=Ignorate
Name[id]=Diabaikan
Name[is]=Hunsað
Name[it]=Ignorato
Name[ja]=
Name[kk]=Еленбеген
Name[km]=
Name[kn]=ಿ
Name[ko]=
Name[lt]=Ignoruota
Name[lv]=Ignorēts
Name[mk]=Игнорирано
Name[ml]=ി
Name[mr]=ि
Name[nb]=Ignorert
Name[nds]=Övergahn
Name[nl]=Genegeerd
Name[nn]=Oversett
Name[pa]=ਿ
Name[pl]=Ignorowany
Name[pt]=Ignorado
Name[pt_BR]=Ignorado
Name[ro]=Ignorat
Name[ru]=Игнорируется
Name[si]=
Name[sk]=Ignorované
Name[sl]=Prezrto
Name[sr]=игнорисан
Name[sr@ijekavian]=игнорисан
Name[sr@ijekavianlatin]=ignorisan
Name[sr@latin]=ignorisan
Name[sv]=Ignorerad
Name[tg]=Радшуда
Name[th]=
Name[tr]=Yoksayılmış
Name[ug]=پەرۋا قىلمىدى
Name[uk]=Ігнорується
Name[vi]=B qua
Name[wa]=Passé houte
Name[x-test]=xxIgnoredxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action label]
Name=Label
Name[ar]=التسمية
Name[ast]=Etiqueta
Name[bg]=Етикет
Name[bn]=
Name[bs]=etiketa
Name[ca]=Etiqueta
Name[ca@valencia]=Etiqueta
Name[cs]=Popisek
Name[csb]=Znakòwnik
Name[da]=Etiket
Name[de]=Beschriftung
Name[el]=Ετικέτα
Name[en_GB]=Label
Name[eo]=Labelo
Name[es]=Etiqueta
Name[et]=Pealdis
Name[eu]=Etiketa
Name[fa]=برچسب
Name[fi]=Nimike
Name[fr]=Étiquette
Name[fy]=Lebel
Name[ga]=Lipéad
Name[gl]=Etiqueta
Name[gu]=
Name[he]=תוויות
Name[hi]=
Name[hr]=Natpis
Name[hu]=Címke
Name[ia]=Etiquetta
Name[id]=Label
Name[is]=Merking
Name[it]=Etichetta
Name[ja]=
Name[kk]=Тамғасы
Name[km]=
Name[kn]=ಿ
Name[ko]=
Name[lt]=Etiketė
Name[lv]=Etiķete
Name[mk]=Натпис
Name[ml]=
Name[mr]=
Name[nb]=Etikett
Name[nds]=Beteker
Name[nl]=Label
Name[nn]=Merkelapp
Name[pa]=
Name[pl]=Etykieta
Name[pt]=Legenda
Name[pt_BR]=Rótulo
Name[ro]=Etichetă
Name[ru]=Метка
Name[si]=
Name[sk]=Štítok
Name[sl]=Oznaka
Name[sr]=етикета
Name[sr@ijekavian]=етикета
Name[sr@ijekavianlatin]=etiketa
Name[sr@latin]=etiketa
Name[sv]=Etikett
Name[tg]=Тамға
Name[th]=
Name[tr]=Etiket
Name[ug]=ئەن
Name[uk]=Мітка
Name[vi]=Nhãn
Name[wa]=Etikete
Name[x-test]=xxLabelxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action rewritable]
Name=Rewritable
Name[ar]=قابل للكتابة
Name[ast]=Regrabable
Name[bg]=Презаписваем диск
Name[bn]=
Name[bs]=prebrisiv
Name[ca]=Regravable
Name[ca@valencia]=Regravable
Name[cs]=Přepisovatelný
Name[csb]=Wielorazowò zapisëwanlné
Name[da]=Genbrændbar
Name[de]=Wiederbeschreibbar
Name[el]=Επανεγγράψιμο
Name[en_GB]=Rewritable
Name[eo]=Re-skribitebla
Name[es]=Regrabable
Name[et]=Korduvkirjutatav
Name[eu]=Birgrabagarria
Name[fi]=Uudelleenkirjoitettavissa
Name[fr]=Réinscriptible
Name[fy]=Wer te beskriuwen
Name[ga]=In-Athscríofa
Name[gl]=Regravábel
Name[gu]=
Name[he]=ניתן לכתיבה חוזרת
Name[hi]=ि ि
Name[hr]=Prebrisiv
Name[hu]=Újraírható
Name[ia]=Que on pote scriber de nove
Name[id]=Dapat Ditulis Ulang
Name[is]=Endurskrifanlegt
Name[it]=Riscrivibile
Name[ja]=
Name[kk]=Қайта жазылмалы
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Perrašomas
Name[lv]=Pārrakstāms
Name[mai]= ि
Name[ml]=
Name[mr]= िि
Name[nb]=Overskrivbar
Name[nds]=Wedderschriefbor
Name[nl]=Herschrijfbaar
Name[nn]=Omskrivbar
Name[pa]=-ਿ
Name[pl]=Z możliwością ponownego zapisu
Name[pt]=Regravável
Name[pt_BR]=Regravável
Name[ro]=Reinscriptibil
Name[ru]=Перезаписываемый
Name[si]=
Name[sk]=Prepisovateľné
Name[sl]=Prepisljiv
Name[sr]=пребрисив
Name[sr@ijekavian]=пребрисив
Name[sr@ijekavianlatin]=prebrisiv
Name[sr@latin]=prebrisiv
Name[sv]=Skrivbar
Name[tg]=Навишташаванда
Name[th]=
Name[tr]=Yeniden yazılabilir
Name[ug]=يېزىشقا بولىدىغان
Name[uk]=Перезапис
Name[wa]=Riscrijhåve
Name[x-test]=xxRewritablexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action size]
Name=Size
Name[ar]=الحجم
Name[ast]=Tamañu
Name[bg]=Големина
Name[bn]=
Name[bs]=veličina
Name[ca]=Mida
Name[ca@valencia]=Mida
Name[cs]=Velikost
Name[csb]=Miara
Name[da]=Størrelse
Name[de]=Größe
Name[el]=Μέγεθος
Name[en_GB]=Size
Name[eo]=Grandeco
Name[es]=Tamaño
Name[et]=Suurus
Name[eu]=Neurria
Name[fa]=اندازه
Name[fi]=Koko
Name[fr]=Taille
Name[fy]=Grutte
Name[ga]=Méid
Name[gl]=Tamaño
Name[gu]=
Name[he]=גודל
Name[hi]=
Name[hr]=Veličina
Name[hu]=Méret
Name[ia]=Dimension
Name[id]=Ukuran
Name[is]=Stærð
Name[it]=Dimensione
Name[ja]=
Name[ka]=
Name[kk]=Көлемі
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Dydis
Name[lv]=Izmērs
Name[mk]=Големина
Name[ml]=ി
Name[mr]=
Name[nb]=Størrelse
Name[nds]=Grött
Name[nl]=Grootte
Name[nn]=Storleik
Name[pa]=
Name[pl]=Rozmiar
Name[pt]=Tamanho
Name[pt_BR]=Tamanho
Name[ro]=Dimensiune
Name[ru]=Размер
Name[si]=
Name[sk]=Veľkosť
Name[sl]=Velikost
Name[sr]=величина
Name[sr@ijekavian]=величина
Name[sr@ijekavianlatin]=veličina
Name[sr@latin]=veličina
Name[sv]=Storlek
Name[tg]=Андоза
Name[th]=
Name[tr]=Boyut
Name[ug]=چوڭلۇقى
Name[uk]=Розмір
Name[wa]=Grandeu
Name[x-test]=xxSizexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action usage]
Name=Usage
Name[ar]=الاستعمال
Name[ast]=Usu
Name[bg]=Използване
Name[bn]=
Name[bs]=upotreba
Name[ca]=Ús
Name[ca@valencia]=Ús
Name[cs]=Použití
Name[csb]=Brëkòwóné
Name[da]=Brug
Name[de]=Verwendung
Name[el]=Χρήση
Name[en_GB]=Usage
Name[eo]=Uzado
Name[es]=Uso
Name[et]=Kasutus
Name[eu]=Erabilera
Name[fi]=Käyttötaso
Name[fr]=Usage
Name[fy]=Brûkens
Name[ga]=Úsáid
Name[gl]=Uso
Name[gu]=
Name[he]=שימוש
Name[hi]=
Name[hr]=Iskorištenost
Name[hu]=Kihasználtság
Name[ia]=Usage
Name[id]=Penggunaan
Name[is]=Notkun
Name[it]=Uso
Name[ja]=使
Name[ka]=
Name[kk]=Толуы
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Naudojimas
Name[lv]=Izlietojums
Name[mk]=Користење
Name[ml]=ി
Name[mr]=
Name[nb]=Bruk
Name[nds]=Bruuk
Name[nl]=Gebruik
Name[nn]=Bruk
Name[pa]=
Name[pl]=Wykorzystanie
Name[pt]=Utilização
Name[pt_BR]=Uso
Name[ro]=Utilizare
Name[ru]=Использование
Name[si]=
Name[sk]=Použitie
Name[sl]=Poraba
Name[sr]=употреба
Name[sr@ijekavian]=употреба
Name[sr@ijekavianlatin]=upotreba
Name[sr@latin]=upotreba
Name[sv]=Användning
Name[tg]=Истифодабарӣ
Name[th]=
Name[tr]=Kullanım
Name[ug]=ئىشلىتىلىشى
Name[uk]=Використання
Name[wa]=Eployaedje
Name[x-test]=xxUsagexx
Name[zh_CN]=
Name[zh_TW]=使
[Desktop Action uuid]
Name=Uuid
Name[ar]=المعرف الفريد عالمياً (Uuid)
Name[ast]=Uuid
Name[bg]=Uuid
Name[bn]=Uuid
Name[bs]=UUID
Name[ca]=UUID
Name[ca@valencia]=UUID
Name[cs]=Uuid
Name[csb]=Uuid
Name[da]=Uuid
Name[de]=UUID
Name[el]=Uuid
Name[en_GB]=Uuid
Name[eo]=Uuid
Name[es]=Uuid
Name[et]=Uuid
Name[eu]=UUIDa
Name[fi]=Uuid
Name[fr]=Uuid
Name[fy]=Uuid
Name[ga]=Uuid
Name[gl]=Uuid
Name[gu]=Uuid
Name[he]=Uuid
Name[hi]=Uuid
Name[hr]=UUID
Name[hu]=UUID
Name[ia]=Uuid
Name[id]=Uuid
Name[is]=UUID
Name[it]=Uuid
Name[ja]=UUID
Name[ka]=Uuid
Name[kk]=Uuid
Name[km]=Uuid
Name[kn]=Uuid
Name[ko]=UUID
Name[lt]=Uuid
Name[lv]=Uuid
Name[mk]=Uuid
Name[ml]=ി
Name[mr]=Uuid
Name[nb]=Uuid
Name[nds]=UUID
Name[nl]=Uuid
Name[nn]=UUID
Name[pa]=Uuid
Name[pl]=Uuid
Name[pt]=UUID
Name[pt_BR]=UUID
Name[ro]=Uuid
Name[ru]=UUID
Name[si]=Uuid
Name[sk]=Uuid
Name[sl]=UUID
Name[sr]=УУИД
Name[sr@ijekavian]=УУИД
Name[sr@ijekavianlatin]=UUID
Name[sr@latin]=UUID
Name[sv]=Uuid
Name[tg]=Phluid
Name[th]= Uuid
Name[tr]=Uuid
Name[ug]=Uuid
Name[uk]=Uuid
Name[wa]=Uuid
Name[x-test]=xxUuidxx
Name[zh_CN]=UUID
Name[zh_TW]=UUID
[Desktop Entry]
Actions=appendable;availableContent;blank;capacity;discType;fsType;ignored;label;rewritable;size;usage;uuid;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=OpticalDisc

View file

@ -1,723 +0,0 @@
[Desktop Action bus]
Name=Bus
Name[ar]=الناقل
Name[ast]=Bus
Name[bg]=Шина
Name[bn]=
Name[bs]=magistrala
Name[ca]=Bus
Name[ca@valencia]=Bus
Name[cs]=Sběrnice
Name[csb]=Bus
Name[da]=Bus
Name[de]=Bus
Name[el]=Δίαυλος
Name[en_GB]=Bus
Name[eo]=Buso
Name[es]=Bus
Name[et]=Siin
Name[eu]=Busa
Name[fa]=گذرگاه
Name[fi]=Väylä
Name[fr]=Bus
Name[fy]=Bus
Name[ga]=Bus
Name[gl]=Bus
Name[gu]=
Name[he]=אפיק
Name[hi]=
Name[hr]=Sabirnica
Name[hu]=Busz
Name[ia]=Bus
Name[id]=Bus
Name[is]=Rás (bus)
Name[it]=Bus
Name[ja]=
Name[ka]=
Name[kk]=Шинасы
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Magistralė
Name[lv]=Kopne
Name[mk]=Магистрала
Name[ml]=
Name[mr]=
Name[nb]=Buss
Name[nds]=Bus
Name[nl]=Bus
Name[nn]=Buss
Name[pa]=
Name[pl]=Szyna
Name[pt]=Barramento
Name[pt_BR]=Barramento
Name[ro]=Magistrală
Name[ru]=Шина
Name[si]=Bus
Name[sk]=Zbernica
Name[sl]=Vodilo
Name[sr]=магистрала
Name[sr@ijekavian]=магистрала
Name[sr@ijekavianlatin]=magistrala
Name[sr@latin]=magistrala
Name[sv]=Buss
Name[tg]=Белоруссия
Name[th]=
Name[tr]=Yol
Name[ug]=باش لىنىيە
Name[uk]=Шина
Name[wa]=Bus
Name[x-test]=xxBusxx
Name[zh_CN]=线
Name[zh_TW]=
[Desktop Action driveType]
Name=Drive Type
Name[ar]=نوع المشغل
Name[ast]=Triba de discu
Name[bg]=Вид устройство
Name[bn]=-
Name[bs]=tip jedinice
Name[ca]=Tipus d'unitat
Name[ca@valencia]=Tipus d'unitat
Name[cs]=Typ mechaniky
Name[csb]=Ôrt nëka
Name[da]=Drevtype
Name[de]=Laufwerkstyp
Name[el]=Τύπος οδηγού
Name[en_GB]=Drive Type
Name[eo]=Tipo de Diskingo
Name[es]=Tipo de disco
Name[et]=Seadme tüüp
Name[eu]=Unitate mota
Name[fi]=Asematyyppi
Name[fr]=Type de lecteur
Name[fy]=Stasjons type
Name[ga]=Cineál an Tiomántáin
Name[gl]=Tipo de dispositivo
Name[gu]=
Name[he]=סוג כונן
Name[hi]=
Name[hr]=Tip uređaja
Name[hu]=Meghajtótípus
Name[ia]=Typo de drive
Name[id]=Tipe Penggerak
Name[is]=Gerð drifs
Name[it]=Tipo di unità
Name[ja]=
Name[ka]=
Name[kk]=Жетек түрі
Name[km]=
Name[kn]=ಿ
Name[ko]=
Name[lt]=Diskasukio tipas
Name[lv]=Dziņa tips
Name[mai]=
Name[mk]=Тип на уред
Name[ml]=ി
Name[mr]=
Name[nb]=Drev-type
Name[nds]=Loopwark-Typ
Name[nl]=Apparaattype
Name[nn]=Einingstype
Name[pa]= ਿ
Name[pl]=Typ napędu
Name[pt]=Tipo de Unidade
Name[pt_BR]=Tipo de unidade
Name[ro]=Tip unitate
Name[ru]=Тип устройства
Name[si]=
Name[sk]=Typ mechaniky
Name[sl]=Vrsta pogona
Name[sr]=тип јединице
Name[sr@ijekavian]=тип јединице
Name[sr@ijekavianlatin]=tip jedinice
Name[sr@latin]=tip jedinice
Name[sv]=Enhetstyp
Name[tg]=Намуди дастгоҳ
Name[th]=
Name[tr]=Sürücü Tipi
Name[ug]=قوزغاتقۇ تىپى
Name[uk]=Тип пристрою
Name[vi]=Kiu trình điu khin
Name[wa]=Sôre di lijheu
Name[x-test]=xxDrive Typexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action hotpluggable]
Name=Hotpluggable
Name[ar]=قابل للتوصيل
Name[ast]=Conexón en caliente
Name[bn]=--
Name[bs]=vruće uključiva
Name[ca]=Connectable en calent
Name[ca@valencia]=Connectable en calent
Name[cs]=Hotplug
Name[da]=Flytbar
Name[de]=Hotplug-fähig
Name[el]=Δυνατότητα Hotplug
Name[en_GB]=Hotpluggable
Name[eo]=Dumkure permutebla
Name[es]=Conexión en caliente
Name[et]=Töö ajal ühendatav
Name[eu]=Hotplug-erako gaitua
Name[fi]=Lennossakytkettävä
Name[fr]=Connectable à chaud
Name[fy]=Hotplug barren
Name[ga]=Inphlugáilte
Name[gl]=Conectábel en quente
Name[gu]=
Name[he]=החלפה חמה
Name[hi]=
Name[hr]=Podržava brzo uštekavanje
Name[hu]=Menet közben csatlakoztatható
Name[ia]=Hotpluggable (On pote connecter lo con machina active)
Name[id]=Dapat di-Hotplug
Name[is]=Hraðtengjanlegt (hotplug)
Name[it]=Collegabile in marcia
Name[ja]=Hotplug
Name[kk]=Істеп турғанда қосылмалы
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Greitai prijungiamas
Name[lv]=Karsti nomaināms
Name[ml]=
Name[mr]=
Name[nb]=Kan kobles til påslått
Name[nds]=Jümmers tokoppelbor
Name[nl]=Hotplugbaar
Name[nn]=Hotplug-kompatibel
Name[pa]=
Name[pl]=Podłączany "na gorąco"
Name[pt]=Conectável em Funcionamento
Name[pt_BR]=Conectável em funcionamento
Name[ro]=Detașabil
Name[ru]=Подключается в любое время
Name[si]=Hotpluggable
Name[sk]=Hotplug
Name[sl]=Priključljivo med delovanjem
Name[sr]=вруће укључива
Name[sr@ijekavian]=вруће укључива
Name[sr@ijekavianlatin]=vruće uključiva
Name[sr@latin]=vruće uključiva
Name[sv]=Inkopplingsbar
Name[tg]=Дастгоҳҳои пайвастшаванда
Name[th]=
Name[tr]=Çıkarılıp takılabilir
Name[ug]=ئىسسىق چېتىلىشچان
Name[uk]=«Гаряче» зєднання
Name[vi]=Tháo lp nóng
Name[wa]=Hotplugåve
Name[x-test]=xxHotpluggablexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action readSpeed]
Name=Read Speed
Name[ar]=سرعة القراءة
Name[ast]=Velocidá de llectura
Name[bg]=Скорост на четене
Name[bn]= ি
Name[bs]=brzina čitanja
Name[ca]=Velocitat de lectura
Name[ca@valencia]=Velocitat de lectura
Name[cs]=Rychlost čtení
Name[csb]=Chùtkòsc czëtaniô
Name[da]=Læsehastighed
Name[de]=Lesegeschwindigkeit
Name[el]=Ταχύτητα ανάγνωσης
Name[en_GB]=Read Speed
Name[eo]=Leg-rapideco
Name[es]=Velocidad de lectura
Name[et]=Lugemiskiirus
Name[eu]=Irakurketa-abiadura
Name[fi]=Lukunopeus
Name[fr]=Vitesse de lecture
Name[fy]=Lês fluggens
Name[ga]=Luas Léite
Name[gl]=Velocidade de lectura
Name[gu]=
Name[he]=מהירות קריאה
Name[hi]= ि
Name[hr]=Brzina čitanja
Name[hu]=Olvasási sebesség
Name[ia]=Velocitate de lectura
Name[id]=Kecepatan Baca
Name[is]=Leshraði
Name[it]=Velocità in lettura
Name[ja]=
Name[kk]=Оқу жылдамдығы
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Skaitymo sparta
Name[lv]=Lasīšanas ātrums
Name[mk]=Брзина на читање
Name[ml]=
Name[mr]=
Name[nb]=Lesehastighet
Name[nds]=Leesgauigkeit
Name[nl]=Leessnelheid
Name[nn]=Lesefart
Name[pa]=
Name[pl]=Szybkość odczytu
Name[pt]=Velocidade de Leitura
Name[pt_BR]=Velocidade de leitura
Name[ro]=Viteză de citire
Name[ru]=Скорость чтения
Name[si]=
Name[sk]=Rýchlosť čítania
Name[sl]=Hitrost branja
Name[sr]=брзина читања
Name[sr@ijekavian]=брзина читања
Name[sr@ijekavianlatin]=brzina čitanja
Name[sr@latin]=brzina čitanja
Name[sv]=Läshastighet
Name[tg]=Суръати хондан
Name[th]=
Name[tr]=Okuma hızı
Name[ug]=ئوقۇش تېزلىكى
Name[uk]=Швидкість читання
Name[wa]=Radisté d' lijhaedje
Name[x-test]=xxRead Speedxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action removable]
Name=Removable
Name[ar]=قابل للإزالة
Name[ast]=Estrayible
Name[bg]=Преносим
Name[bn]=
Name[bs]=uklonjiva
Name[ca]=Extraïble
Name[ca@valencia]=Extraïble
Name[cs]=Odpojitelný
Name[csb]=Przenosné
Name[da]=Flytbar
Name[de]=Wechselbar
Name[el]=Αφαιρούμενο μέσο
Name[en_GB]=Removable
Name[eo]=Demetebla
Name[es]=Extraíble
Name[et]=Eemaldatav
Name[eu]=Aldagarria
Name[fa]=جدا شدنی
Name[fi]=Poistettavissa
Name[fr]=Amovible
Name[fy]=Te ferwiderjen
Name[ga]=Inbhainte
Name[gl]=Eliminábel
Name[gu]=
Name[he]=ניתן להסרה
Name[hi]=
Name[hr]=Moguće ga je izvaditi
Name[hu]=Cserélhető
Name[ia]=Removibile
Name[id]=Dapat Dilepaskan
Name[is]=Fjarlægjanlegt
Name[it]=Rimovibile
Name[ja]=
Name[kk]=Ауыстырмалы
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Keičiamas
Name[lv]=Noņemams
Name[mai]=
Name[mk]=Подвижен
Name[ml]=
Name[mr]=
Name[nb]=Flyttbar
Name[nds]=Tuuschbor
Name[nl]=Verwijderbaar
Name[nn]=Flyttbar
Name[pa]=
Name[pl]=Wymienny
Name[pt]=Removível
Name[pt_BR]=Removível
Name[ro]=Amovibil
Name[ru]=Сменный носитель
Name[si]=
Name[sk]=Vymeniteľné
Name[sl]=Odstranljivo
Name[sr]=уклоњива
Name[sr@ijekavian]=уклоњива
Name[sr@ijekavianlatin]=uklonjiva
Name[sr@latin]=uklonjiva
Name[sv]=Flyttbar
Name[tg]=Дастгоҳи ҷудошаванда
Name[th]=
Name[tr]=Çıkarılabilir
Name[ug]=كۆچمە
Name[uk]=Змінний пристрій
Name[wa]=Bodjåve
Name[x-test]=xxRemovablexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action size]
Name=Size
Name[ar]=الحجم
Name[ast]=Tamañu
Name[bg]=Големина
Name[bn]=
Name[bs]=veličina
Name[ca]=Mida
Name[ca@valencia]=Mida
Name[cs]=Velikost
Name[csb]=Miara
Name[da]=Størrelse
Name[de]=Größe
Name[el]=Μέγεθος
Name[en_GB]=Size
Name[eo]=Grandeco
Name[es]=Tamaño
Name[et]=Suurus
Name[eu]=Neurria
Name[fa]=اندازه
Name[fi]=Koko
Name[fr]=Taille
Name[fy]=Grutte
Name[ga]=Méid
Name[gl]=Tamaño
Name[gu]=
Name[he]=גודל
Name[hi]=
Name[hr]=Veličina
Name[hu]=Méret
Name[ia]=Dimension
Name[id]=Ukuran
Name[is]=Stærð
Name[it]=Dimensione
Name[ja]=
Name[ka]=
Name[kk]=Көлемі
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Dydis
Name[lv]=Izmērs
Name[mk]=Големина
Name[ml]=ി
Name[mr]=
Name[nb]=Størrelse
Name[nds]=Grött
Name[nl]=Grootte
Name[nn]=Storleik
Name[pa]=
Name[pl]=Rozmiar
Name[pt]=Tamanho
Name[pt_BR]=Tamanho
Name[ro]=Dimensiune
Name[ru]=Размер
Name[si]=
Name[sk]=Veľkosť
Name[sl]=Velikost
Name[sr]=величина
Name[sr@ijekavian]=величина
Name[sr@ijekavianlatin]=veličina
Name[sr@latin]=veličina
Name[sv]=Storlek
Name[tg]=Андоза
Name[th]=
Name[tr]=Boyut
Name[ug]=چوڭلۇقى
Name[uk]=Розмір
Name[wa]=Grandeu
Name[x-test]=xxSizexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action supportedMedia]
Name=Supported Media
Name[ar]=الوسائط المدعومة
Name[ast]=Medios sofitaos
Name[bg]=Поддържана медия
Name[bn]=ি িি
Name[bs]=podržani medijumi
Name[ca]=Suports acceptats
Name[ca@valencia]=Suports acceptats
Name[cs]=Podporovaná média
Name[csb]=Wspiéróné media
Name[da]=Understøttede medier
Name[de]=Unterstützte Medien
Name[el]=Υποστηριζόμενα μέσα
Name[en_GB]=Supported Media
Name[eo]=subtenataj Aŭdvidaĵoj
Name[es]=Medios soportados
Name[et]=Toetatud meedia
Name[eu]=Onartzen diren euskarriak
Name[fi]=Tuetut mediat
Name[fr]=Média pris en charge
Name[fy]=Stipe media
Name[ga]=Meáin a dTacaítear Leo
Name[gl]=Medios soportados
Name[gu]=િ િ
Name[he]=מדיה נתמכת
Name[hi]=ि ि
Name[hr]=Podržani mediji
Name[hu]=Támogatott média
Name[ia]=Media supportate
Name[id]=Media Didukung
Name[is]=Studdir miðlar
Name[it]=Dispositivi supportati
Name[ja]=
Name[kk]=Тасушысы
Name[km]=
Name[kn]=ಿ
Name[ko]=
Name[lt]=Palaikomi media tipai
Name[lv]=Atbalstītie datu nesēji
Name[mai]=ि ि
Name[mk]=Поддржани медиуми
Name[ml]=ി
Name[mr]= ि
Name[nb]=Støttede medier
Name[nds]=Ünnerstütt Schieven
Name[nl]=Ondersteunde media
Name[nn]=Støtta medium
Name[pa]= ਿ
Name[pl]=Obsługiwane nośniki
Name[pt]=Discos Suportados
Name[pt_BR]=Mídia suportada
Name[ro]=Mediu susținut
Name[ru]=Поддерживаемые носители
Name[si]=
Name[sk]=Podporované médiá
Name[sl]=Podprti nosilci
Name[sr]=подржани медијуми
Name[sr@ijekavian]=подржани медијуми
Name[sr@ijekavianlatin]=podržani medijumi
Name[sr@latin]=podržani medijumi
Name[sv]=Media som stöds
Name[tg]=Медиаи мувофиқ
Name[th]=
Name[tr]=Desteklenen Ortam
Name[ug]=قوللايدىغان ۋاسىتىلەر
Name[uk]=Підтримувані носії
Name[wa]=Media sopoirté
Name[x-test]=xxSupported Mediaxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action writeSpeed]
Name=Write Speed
Name[ar]=سرعة الكتابة
Name[ast]=Velocidá d'escritura
Name[bg]=Скорост на запис
Name[bn]= ি
Name[bs]=brzina pisanja
Name[ca]=Velocitat d'escriptura
Name[ca@valencia]=Velocitat d'escriptura
Name[cs]=Rychlost zápisu
Name[csb]=Chùtkòsc pisaniô
Name[da]=Brændehastighed
Name[de]=Schreibgeschwindigkeit
Name[el]=Ταχύτητα εγγραφής
Name[en_GB]=Write Speed
Name[eo]=Skribrapideco
Name[es]=Velocidad de escritura
Name[et]=Kirjutamiskiirus
Name[eu]=Idazketa-abiadura
Name[fi]=Kirjoitusnopeus
Name[fr]=Vitesse d'écriture
Name[fy]=Skriuw fluggens
Name[ga]=Luas Scríofa
Name[gl]=Velocidade de gravación
Name[gu]=
Name[he]=מהירות כתיבה
Name[hi]= ि
Name[hr]=Brzina pisanja
Name[hu]=Írási sebesség
Name[ia]=Velocitate de scriptura
Name[id]=Kecepatan Tulis
Name[is]=Skrifhraði
Name[it]=Velocità in scrittura
Name[ja]=
Name[ka]=
Name[kk]=Жазу жылдамдығы
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Rašymo greitis
Name[lv]=Rakstīšanas ātrums
Name[mai]= ि
Name[mk]=Брзина на запишување
Name[ml]=ി
Name[mr]=ि
Name[nb]=Skrivehastighet
Name[nds]=Schriev-Gauigkeit
Name[nl]=Schrijfsnelheid
Name[nn]=Skrivefart
Name[pa]=ਿ
Name[pl]=Szybkość zapisu
Name[pt]=Velocidade de Gravação
Name[pt_BR]=Velocidade de gravação
Name[ro]=Viteză de scriere
Name[ru]=Скорость записи
Name[si]=
Name[sk]=Rýchlosť zápisu
Name[sl]=Hitrost zapisovanja
Name[sr]=брзина писања
Name[sr@ijekavian]=брзина писања
Name[sr@ijekavianlatin]=brzina pisanja
Name[sr@latin]=brzina pisanja
Name[sv]=Skrivhastighet
Name[tg]=Суръати навиштан
Name[th]=
Name[tr]=Yazma Hızı
Name[ug]=يېزىش تېزلىكى
Name[uk]=Швидкість запису
Name[wa]=Radisté d' sicrijhaedje
Name[x-test]=xxWrite Speedxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action writeSpeeds]
Name=Write Speeds
Name[ar]=سرعات الكتابة
Name[ast]=Velocidaes d'escritura
Name[bg]=Скорости на запис
Name[bn]= ি
Name[bs]=brzine pisanja
Name[ca]=Velocitats d'escriptura
Name[ca@valencia]=Velocitats d'escriptura
Name[cs]=Rychlosti zápisu
Name[csb]=Chùtkòscë pisaniô
Name[da]=Brændehastigheder
Name[de]=Schreibgeschwindigkeiten
Name[el]=Ταχύτητες εγγραφής
Name[en_GB]=Write Speeds
Name[eo]=Skribrapidecoj
Name[es]=Velocidades de escritura
Name[et]=Kirjutamiskiirus
Name[eu]=Idazketa-abiadurak
Name[fi]=Kirjoitusnopeudet
Name[fr]=Vitesses d'écriture
Name[fy]=Skriuw fluggens
Name[ga]=Luasanna Scríofa
Name[gl]=Velocidades de gravación
Name[gu]=
Name[he]=מהירויות כתיבה
Name[hi]= ि
Name[hr]=Brzine pisanja
Name[hu]=Írási sebességek
Name[ia]=Velocitates de scriptura
Name[id]=Kecepatan Tulis
Name[is]=Skrifhraðar
Name[it]=Velocità in scrittura
Name[ja]=
Name[ka]=
Name[kk]=Жазу жылдамдықтары
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Rašymo greičiai
Name[lv]=Rakstīšanas ātrumi
Name[mai]= ि
Name[mk]=Брзини на запишување
Name[ml]=ി
Name[mr]=ि
Name[nb]=Skrivehastigheter
Name[nds]=Schriev-Gauigkeiten
Name[nl]=Schrijfsnelheden
Name[nn]=Skrivefartar
Name[pa]=ਿ
Name[pl]=Szybkości zapisu
Name[pt]=Velocidades de Gravação
Name[pt_BR]=Velocidades de gravação
Name[ro]=Viteze de scriere
Name[ru]=Скорости записи
Name[si]=
Name[sk]=Rýchlosti zápisu
Name[sl]=Hitrosti zapisovanja
Name[sr]=брзине писања
Name[sr@ijekavian]=брзине писања
Name[sr@ijekavianlatin]=brzine pisanja
Name[sr@latin]=brzine pisanja
Name[sv]=Skrivhastigheter
Name[tg]=Суръатҳои навиштан
Name[th]=
Name[tr]=yazma Hızları
Name[ug]=يېزىش تېزلىكى
Name[uk]=Швидкості запису
Name[wa]=Radistés d' sicrijhaedje
Name[x-test]=xxWrite Speedsxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Entry]
Actions=bus;driveType;hotpluggable;readSpeed;removable;size;supportedMedia;writeSpeed;writeSpeeds;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=OpticalDrive

View file

@ -1,215 +0,0 @@
[Desktop Action supportedDrivers]
Name=Supported Drivers
Name[ar]=المشغلات المدعومة
Name[ast]=Controladores sofitaos
Name[bg]=Поддържани драйвери
Name[bn]=ি
Name[bs]=podržani drajveri
Name[ca]=Controladors acceptats
Name[ca@valencia]=Controladors acceptats
Name[cs]=Podporované ovladače
Name[csb]=Wspiéróné czérowniczi
Name[da]=Understøttede drivere
Name[de]=Unterstützte Treiber
Name[el]=Υποστηριζόμενοι οδηγοί
Name[en_GB]=Supported Drivers
Name[eo]=subtenataj Peliloj
Name[es]=Dispositivos soportados
Name[et]=Toetatud draiverid
Name[eu]=Onartutzen diren gidariak
Name[fi]=Tuetut ajurit
Name[fr]=Pilotes pris en charge
Name[fy]=Stipe stjoerprogramma's
Name[ga]=Tiománaithe a dTacaítear Leo
Name[gl]=Controladores soportados
Name[gu]=િ
Name[he]=מנהלי התקנים נתמכים
Name[hi]=ि
Name[hr]=Podržani pisači
Name[hu]=Támogatott meghajtók
Name[ia]=Drivers supportate
Name[id]=Penggerak Didukung
Name[is]=Studdir reklar
Name[it]=Driver supportati
Name[ja]=
Name[kk]=Қолдайтын драйверлері
Name[km]=
Name[kn]=ಿ
Name[ko]=
Name[lt]=Palaikomos tvarkyklės
Name[lv]=Atbalstītie draiveri
Name[mai]=ि
Name[mk]=Поддржани управувачи
Name[ml]=ി ി
Name[mr]=
Name[nb]=Støttede drivere
Name[nds]=Ünnerstütt Drievers
Name[nl]=Ondersteunde stuurprogramma's
Name[nn]=Støtta drivarar
Name[pa]=
Name[pl]=Obsługiwane sterowniki
Name[pt]=Controladores Suportados
Name[pt_BR]=Drivers suportados
Name[ro]=Drivere susținute
Name[ru]=Поддерживаемые драйверы
Name[si]=
Name[sk]=Podporované ovládače
Name[sl]=Podprti gonilniki
Name[sr]=подржани драјвери
Name[sr@ijekavian]=подржани драјвери
Name[sr@ijekavianlatin]=podržani drajveri
Name[sr@latin]=podržani drajveri
Name[sv]=Drivrutiner som stöds
Name[tg]=Дастгоҳҳои мувофиқ
Name[th]=
Name[tr]=Desteklenen Sürücüler
Name[ug]=قوللايدىغان قوزغاتقۇلار
Name[uk]=Підтримувані драйвери
Name[wa]=Mineus sopoirtés
Name[x-test]=xxSupported Driversxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action supportedProtocols]
Name=Supported Protocols
Name[ar]=البروتوكولات المدعومة
Name[ast]=Protocolos sofitaos
Name[bg]=Поддържани протоколи
Name[bn]=ি
Name[bs]=podržani protokoli
Name[ca]=Protocols acceptats
Name[ca@valencia]=Protocols acceptats
Name[cs]=Podporované protokoly
Name[csb]=Wspiéróné protokòłë
Name[da]=Understøttede protokoller
Name[de]=Unterstützte Protokolle
Name[el]=Υποστηριζόμενα πρωτόκολλα
Name[en_GB]=Supported Protocols
Name[eo]=Subtenitaj Protokoloj
Name[es]=Protocolos soportados
Name[et]=Toetatud protokollid
Name[eu]=Onartzen diren protokoloak
Name[fi]=Tuetut yhteyskäytännöt
Name[fr]=Protocoles pris en charge
Name[fy]=Stipe protokollen
Name[ga]=Prótacail a dTacaítear Leo
Name[gl]=Protocolos soportados
Name[gu]=િ
Name[he]=פרוטוקולים נתמכים
Name[hi]=ि
Name[hr]=Podržani Protokoli
Name[hu]=Támogatott protokollok
Name[ia]=Protocollos supportate
Name[id]=Protokol Didukung
Name[is]=Studdar samskiptareglur
Name[it]=Protocolli supportati
Name[ja]=
Name[kk]=Қолдайтын протоколдары
Name[km]=
Name[kn]=ಿ ()
Name[ko]=
Name[lt]=Palaikomi protokolai
Name[lv]=Atbalstītie protokoli
Name[mk]=Поддржани протоколи
Name[ml]=ി
Name[mr]= ि
Name[nb]=Støttede protokoller
Name[nds]=Ünnerstütt Protokollen
Name[nl]=Ondersteunde protocollen
Name[nn]=Støtta protokollar
Name[pa]=
Name[pl]=Obsługiwane protokoły
Name[pt]=Protocolos Suportados
Name[pt_BR]=Protocolos suportados
Name[ro]=Protocoale susținute
Name[ru]=Поддерживаемые протоколы
Name[si]=
Name[sk]=Podporované protokoly
Name[sl]=Podprti protokoli
Name[sr]=подржани протоколи
Name[sr@ijekavian]=подржани протоколи
Name[sr@ijekavianlatin]=podržani protokoli
Name[sr@latin]=podržani protokoli
Name[sv]=Protokoll som stöds
Name[tg]=Протоколҳо
Name[th]=
Name[tr]=Desteklenen Protokoller
Name[ug]=قوللايدىغان كېلىشىملەر
Name[uk]=Підтримувані протоколи
Name[wa]=Protocoles sopoirtés
Name[x-test]=xxSupported Protocolsxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Entry]
Actions=supportedDrivers;supportedProtocols;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=PortableMediaPlayer

View file

@ -1,355 +0,0 @@
[Desktop Action canChangeFrequency]
Name=Can Change Frequency
Name[ar]=يمكنه تغير التردد
Name[ast]=Pues camudar la frecuencia
Name[bg]=Може да променя честотата
Name[bn]=
Name[bs]=može da mijenja takt
Name[ca]=Pot canviar la freqüència
Name[ca@valencia]=Pot canviar la freqüència
Name[cs]=Může měnit frekvenci
Name[da]=Kan skifte frekvens
Name[de]=Kann die Frequenz wechseln
Name[el]=Δυνατότητα αλλαγής συχνότητας
Name[en_GB]=Can Change Frequency
Name[es]=Puede cambiar la frecuencia
Name[et]=Muudetava sagedusega
Name[eu]=Maiztasuna alda daiteke
Name[fi]=Osaa vaihtaa taajuutta
Name[fr]=Fréquence modifiable
Name[fy]=Kin frekwinsje feroarje
Name[ga]=Is Féidir Minicíocht a Athrú
Name[gl]=Pode mudar a frecuencia
Name[gu]=િ
Name[he]=יכול לשנות תדירות
Name[hi]=ि
Name[hr]=Može mijenjati frekvenciju
Name[hu]=Frekvenciaváltás lehetséges
Name[ia]=Il pote cambiar frequentia
Name[id]=Dapat Mengubah Frekuensi
Name[is]=Getur breytt tíðni
Name[it]=Può cambiare frequenza
Name[ja]=
Name[kk]=Жиілігі өзгермелі
Name[km]=
Name[kn]= (frequency) ಿ
Name[ko]=
Name[lt]=Gali leisti dažnumą
Name[lv]=Var mainīt frekvenci
Name[mai]=ि ि ि
Name[mk]=Може да смени фреквенција
Name[ml]=ി
Name[mr]=ि
Name[nb]=Kan endre frekvens
Name[nds]=Kann Frequenz wesseln
Name[nl]=Kan de frequentie wijzigen
Name[nn]=Frekvens som kan endrast
Name[pa]=ਿ
Name[pl]=Z możliwością zmiany częstotliwości
Name[pt]=Pode Variar a Frequência
Name[pt_BR]=Pode alterar a frequência
Name[ro]=Poate schimba frecvența
Name[ru]=Возможность изменения частоты
Name[si]=
Name[sk]=Môže meniť frekvenciu
Name[sl]=Lahko spreminja hitrost
Name[sr]=може да мења такт
Name[sr@ijekavian]=може да мијења такт
Name[sr@ijekavianlatin]=može da mijenja takt
Name[sr@latin]=može da menja takt
Name[sv]=Kan ändra frekvens
Name[th]=
Name[tr]=Frekansı Değiştirilebilir
Name[ug]=چاستوتىسىنى ئۆزگەرتكىلى بولىدۇ
Name[uk]=Може змінювати частоту
Name[vi]=Có th thay đi tn s
Name[wa]=Sait candjî d frecwince
Name[x-test]=xxCan Change Frequencyxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action instructionSets]
Name=Instruction Sets
Name[ar]=مجموعة الأوامر
Name[ast]=Conxuntu d'instrucciones
Name[bg]=Набор инструкции
Name[bn]=
Name[bs]=skup instrukcija
Name[ca]=Jocs d'instruccions
Name[ca@valencia]=Jocs d'instruccions
Name[cs]=Instrukční sady
Name[da]=Instruktionssæt
Name[de]=Instruktions-Sätze
Name[el]=Σύνολα εντολών
Name[en_GB]=Instruction Sets
Name[es]=Conjunto de instrucciones
Name[et]=Käsustikud
Name[eu]=Instrukzio sortak
Name[fi]=Käskyjoukko
Name[fr]=Jeux d'instructions
Name[fy]=Ynstruksje set
Name[ga]=Tacair Treoracha
Name[gl]=Xogo de instrucións
Name[gu]=
Name[he]=אוסף פקודות
Name[hi]=
Name[hr]=Instrukcijski skup
Name[hu]=Utasításkészletek
Name[ia]=Insimules de instruction
Name[id]=Perangkat Instruksi
Name[is]=Inntaksaðgerðir (instruction sets)
Name[it]=Serie di istruzioni
Name[ja]=
Name[kk]=Нұсқаулар жиыны
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Instrukcijų rinkiniai
Name[lv]=Instrukciju kopas
Name[mk]=Инструкциски множества
Name[ml]=ി
Name[mr]=
Name[nb]=Instruksjonssett
Name[nds]=Anwiesen-Setten
Name[nl]=Instructiesets
Name[nn]=Instruksjonssett
Name[pa]=
Name[pl]=Zestawy instrukcji
Name[pt]=Conjuntos de Instruções
Name[pt_BR]=Conjuntos de instruções
Name[ro]=Seturi de instrucțiuni
Name[ru]=Наборы команд
Name[si]=
Name[sk]=Inštrukčné sady
Name[sl]=Nabori ukazov
Name[sr]=скуп инструкција
Name[sr@ijekavian]=скуп инструкција
Name[sr@ijekavianlatin]=skup instrukcija
Name[sr@latin]=skup instrukcija
Name[sv]=Instruktionsuppsättningar
Name[tg]=Тарзи вуруд
Name[th]=
Name[tr]=Yönerge Ayarları
Name[ug]=پەرمان توپلىمى
Name[uk]=Набори команд
Name[vi]=Tp lnh
Name[wa]=Djeus d' instruccion
Name[x-test]=xxInstruction Setsxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action maxSpeed]
Name=Max Speed
Name[ar]=السرعة القصوى
Name[ast]=Velocidá máx.
Name[bg]=Макс. скорост
Name[bn]= ি
Name[bs]=najveća brzina
Name[ca]=Velocitat màxima
Name[ca@valencia]=Velocitat màxima
Name[cs]=Maximální rychlost
Name[csb]=Maksymalnô chùtkòsc
Name[da]=Maks. hastighed
Name[de]=Maximalgeschwindigkeit
Name[el]=Μέγιστη ταχύτητα
Name[en_GB]=Max Speed
Name[eo]=Maksimuma Rapideco
Name[es]=Velocidad máx.
Name[et]=Maks. kiirus
Name[eu]=Gehienezko abiadura
Name[fi]=Enimmäisnopeus
Name[fr]=Vitesse maximale
Name[fy]=Maks. fluggens
Name[ga]=Uasluas
Name[gl]=Velocidade máxima
Name[gu]=
Name[he]=מהירות מירבית
Name[hi]=ि ि
Name[hr]=Maksimalna brzina
Name[hu]=Max. sebesség
Name[ia]=Velocitate maxime
Name[id]=Kecepatan Maks
Name[is]=Mesti hraði
Name[it]=Velocità massima
Name[ja]=
Name[ka]=.
Name[kk]=Жылдамдығының шегі
Name[km]=
Name[kn]=ಿ
Name[ko]=
Name[lt]=Maksimalus greitis
Name[lv]=Maks ātrums
Name[mk]=Maкc. брзина
Name[ml]=ി
Name[mr]=
Name[nb]=Maks. hastighet
Name[nds]=Hööchst Gauigkeit
Name[nl]=Maximale snelheid
Name[nn]=Maksfart
Name[pa]=-
Name[pl]=Maksymalna szybkość
Name[pt]=Velocidade Máxima
Name[pt_BR]=Velocidade máxima
Name[ro]=Viteză maximă
Name[ru]=Максимальная скорость
Name[si]=
Name[sk]=Maximálna rýchlosť
Name[sl]=Največja hitrost
Name[sr]=највећа брзина
Name[sr@ijekavian]=највећа брзина
Name[sr@ijekavianlatin]=najveća brzina
Name[sr@latin]=najveća brzina
Name[sv]=Maximal hastighet
Name[tg]=Суръати тезтарин
Name[th]=
Name[tr]=En Yüksek Hız
Name[ug]=ئەڭ چوڭ تېزلىك
Name[uk]=Макс. швидкість
Name[wa]=Radisté macsimom
Name[x-test]=xxMax Speedxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action number]
Name=Number
Name[ar]=الرقم
Name[ast]=Númberu
Name[bg]=Номер
Name[bn]=
Name[bs]=broj
Name[ca]=Número
Name[ca@valencia]=Número
Name[cs]=Číslo
Name[csb]=Numer
Name[da]=Nummer
Name[de]=Nummer
Name[el]=Αριθμός
Name[en_GB]=Number
Name[eo]=Nombro
Name[es]=Número
Name[et]=Arv
Name[eu]=Zenbakia
Name[fi]=Numero
Name[fr]=Numéro
Name[fy]=Nûmer
Name[ga]=Uimhir
Name[gl]=Número
Name[gu]=
Name[he]=מספר
Name[hi]=
Name[hr]=Broj
Name[hu]=Szám
Name[ia]=Numero
Name[id]=Nomor
Name[is]=Fjöldi
Name[it]=Numero
Name[ja]=
Name[kk]=Нөмірі
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Skaičius
Name[lv]=Numurs
Name[mk]=Број
Name[ml]=
Name[mr]=
Name[nb]=Tall
Name[nds]=Nummer
Name[nl]=Nummer
Name[nn]=Nummer
Name[pa]=ਿ
Name[pl]=Numer
Name[pt]=Número
Name[pt_BR]=Número
Name[ro]=Număr
Name[ru]=Номер
Name[si]=
Name[sk]=Číslo
Name[sl]=Število
Name[sr]=број
Name[sr@ijekavian]=број
Name[sr@ijekavianlatin]=broj
Name[sr@latin]=broj
Name[sv]=Antal
Name[tg]=Рақам
Name[th]=
Name[tr]=Numara
Name[ug]=نومۇرى
Name[uk]=Номер
Name[wa]=Nombe
Name[x-test]=xxNumberxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Entry]
Actions=canChangeFrequency;instructionSets;maxSpeed;number;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=Processor

View file

@ -1,217 +0,0 @@
[Desktop Action accessible]
Name=Accessible
Name[ar]=متاح
Name[ast]=Accesible
Name[bg]=Достъпен
Name[bn]= ি
Name[bs]=pristupan
Name[ca]=Accessible
Name[ca@valencia]=Accessible
Name[cs]=Přístupné
Name[csb]=Pòmòce przëstãpù
Name[da]=Tilgængelig
Name[de]=Verfügbar
Name[el]=Προσβάσιμο
Name[en_GB]=Accessible
Name[eo]=Atingebla
Name[es]=Accesible
Name[et]=Juurdepääsuga
Name[eu]=Eskuragarri
Name[fi]=Saatavilla
Name[fr]=Accessible
Name[fy]=Tagonklik
Name[ga]=Inrochtana
Name[gl]=Accesíbel
Name[gu]=
Name[he]=נגיש
Name[hi]=
Name[hr]=Pristupačan
Name[hu]=Elérhető
Name[ia]=Accessibile
Name[id]=Dapat Diakses
Name[is]=Aðgengilegt
Name[it]=Accessibile
Name[ja]=
Name[kk]=Қол жетерлік
Name[km]=
Name[kn]=ಿ
Name[ko]=
Name[lt]=Prieinamas
Name[lv]=Pieejams
Name[mk]=Пристапно
Name[ml]=ി
Name[mr]=
Name[nb]=Tilgjengelig
Name[nds]=Togriepbor
Name[nl]=Toegankelijk
Name[nn]=Tilgjengeleg
Name[pa]=
Name[pl]=Dostępny
Name[pt]=Acessível
Name[pt_BR]=Acessível
Name[ro]=Accesibil
Name[ru]=Доступно
Name[si]=
Name[sk]=Prístupné
Name[sl]=Dostopno
Name[sr]=приступан
Name[sr@ijekavian]=приступан
Name[sr@ijekavianlatin]=pristupan
Name[sr@latin]=pristupan
Name[sv]=Tillgänglig
Name[tg]=Имкониятҳо
Name[th]=
Name[tr]=Erişilebilir
Name[ug]=زىيارەتچان
Name[uk]=Доступний
Name[vi]=Truy cp đưc
Name[wa]=Arinnåve
Name[x-test]=xxAccessiblexx
Name[zh_CN]=访
Name[zh_TW]=
[Desktop Action filePath]
Name=File Path
Name[ar]=مسار الملف
Name[ast]=Camín a ficheru
Name[bg]=Път до файл
Name[bn]=
Name[bs]=putanja datoteke
Name[ca]=Camí al fitxer
Name[ca@valencia]=Camí al fitxer
Name[cs]=Cesta k souboru
Name[csb]=Stegna lopka
Name[da]=Filsti
Name[de]=Dateipfad
Name[el]=Διαδρομή αρχείου
Name[en_GB]=File Path
Name[eo]=Dosiervojo
Name[es]=Ruta a archivo
Name[et]=Faili asukoht
Name[eu]=Fitxategiaren bide-izena
Name[fa]=مسیر پرونده
Name[fi]=Tiedostopolku
Name[fr]=Emplacement du fichier
Name[fy]=Triem paad
Name[ga]=Conair Chomhaid
Name[gl]=Ruta ao ficheiro
Name[gu]=
Name[he]=נתיב קובץ
Name[hi]=
Name[hr]=Putanja datoteke
Name[hu]=Elérési út
Name[ia]=Percurso de file
Name[id]=Alamat Berkas
Name[is]=Skráarslóð
Name[it]=Percorso di file
Name[ja]=
Name[kk]=Файл жолы
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Failo kelias
Name[lv]=Faila ceļš
Name[mk]=Патека на датотека
Name[ml]= ി
Name[mr]=
Name[nb]=Filsti
Name[nds]=Dateipadd
Name[nl]=Bestandspad
Name[nn]=Filadresse
Name[pa]=
Name[pl]=Ścieżka do pliku
Name[pt]=Localização do Ficheiro
Name[pt_BR]=Caminho do arquivo
Name[ro]=Calea fișierului
Name[ru]=Путь к файлу
Name[si]=
Name[sk]=Cesta k súboru
Name[sl]=Pot do datoteke
Name[sr]=путања фајла
Name[sr@ijekavian]=путања фајла
Name[sr@ijekavianlatin]=putanja fajla
Name[sr@latin]=putanja fajla
Name[sv]=Filsökväg
Name[tg]=Роҳи файл
Name[th]=
Name[tr]=Dosya Yolu
Name[ug]=ھۆججەت يولى
Name[uk]=Шлях до файла
Name[vi]=Đưng dn tp tin
Name[wa]=Tchimin do fitchî
Name[x-test]=xxFile Pathxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Entry]
Actions=accessible;filePath;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=StorageAccess

View file

@ -1,434 +0,0 @@
[Desktop Action bus]
Name=Bus
Name[ar]=الناقل
Name[ast]=Bus
Name[bg]=Шина
Name[bn]=
Name[bs]=magistrala
Name[ca]=Bus
Name[ca@valencia]=Bus
Name[cs]=Sběrnice
Name[csb]=Bus
Name[da]=Bus
Name[de]=Bus
Name[el]=Δίαυλος
Name[en_GB]=Bus
Name[eo]=Buso
Name[es]=Bus
Name[et]=Siin
Name[eu]=Busa
Name[fa]=گذرگاه
Name[fi]=Väylä
Name[fr]=Bus
Name[fy]=Bus
Name[ga]=Bus
Name[gl]=Bus
Name[gu]=
Name[he]=אפיק
Name[hi]=
Name[hr]=Sabirnica
Name[hu]=Busz
Name[ia]=Bus
Name[id]=Bus
Name[is]=Rás (bus)
Name[it]=Bus
Name[ja]=
Name[ka]=
Name[kk]=Шинасы
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Magistralė
Name[lv]=Kopne
Name[mk]=Магистрала
Name[ml]=
Name[mr]=
Name[nb]=Buss
Name[nds]=Bus
Name[nl]=Bus
Name[nn]=Buss
Name[pa]=
Name[pl]=Szyna
Name[pt]=Barramento
Name[pt_BR]=Barramento
Name[ro]=Magistrală
Name[ru]=Шина
Name[si]=Bus
Name[sk]=Zbernica
Name[sl]=Vodilo
Name[sr]=магистрала
Name[sr@ijekavian]=магистрала
Name[sr@ijekavianlatin]=magistrala
Name[sr@latin]=magistrala
Name[sv]=Buss
Name[tg]=Белоруссия
Name[th]=
Name[tr]=Yol
Name[ug]=باش لىنىيە
Name[uk]=Шина
Name[wa]=Bus
Name[x-test]=xxBusxx
Name[zh_CN]=线
Name[zh_TW]=
[Desktop Action driveType]
Name=Drive Type
Name[ar]=نوع المشغل
Name[ast]=Triba de discu
Name[bg]=Вид устройство
Name[bn]=-
Name[bs]=tip jedinice
Name[ca]=Tipus d'unitat
Name[ca@valencia]=Tipus d'unitat
Name[cs]=Typ mechaniky
Name[csb]=Ôrt nëka
Name[da]=Drevtype
Name[de]=Laufwerkstyp
Name[el]=Τύπος οδηγού
Name[en_GB]=Drive Type
Name[eo]=Tipo de Diskingo
Name[es]=Tipo de disco
Name[et]=Seadme tüüp
Name[eu]=Unitate mota
Name[fi]=Asematyyppi
Name[fr]=Type de lecteur
Name[fy]=Stasjons type
Name[ga]=Cineál an Tiomántáin
Name[gl]=Tipo de dispositivo
Name[gu]=
Name[he]=סוג כונן
Name[hi]=
Name[hr]=Tip uređaja
Name[hu]=Meghajtótípus
Name[ia]=Typo de drive
Name[id]=Tipe Penggerak
Name[is]=Gerð drifs
Name[it]=Tipo di unità
Name[ja]=
Name[ka]=
Name[kk]=Жетек түрі
Name[km]=
Name[kn]=ಿ
Name[ko]=
Name[lt]=Diskasukio tipas
Name[lv]=Dziņa tips
Name[mai]=
Name[mk]=Тип на уред
Name[ml]=ി
Name[mr]=
Name[nb]=Drev-type
Name[nds]=Loopwark-Typ
Name[nl]=Apparaattype
Name[nn]=Einingstype
Name[pa]= ਿ
Name[pl]=Typ napędu
Name[pt]=Tipo de Unidade
Name[pt_BR]=Tipo de unidade
Name[ro]=Tip unitate
Name[ru]=Тип устройства
Name[si]=
Name[sk]=Typ mechaniky
Name[sl]=Vrsta pogona
Name[sr]=тип јединице
Name[sr@ijekavian]=тип јединице
Name[sr@ijekavianlatin]=tip jedinice
Name[sr@latin]=tip jedinice
Name[sv]=Enhetstyp
Name[tg]=Намуди дастгоҳ
Name[th]=
Name[tr]=Sürücü Tipi
Name[ug]=قوزغاتقۇ تىپى
Name[uk]=Тип пристрою
Name[vi]=Kiu trình điu khin
Name[wa]=Sôre di lijheu
Name[x-test]=xxDrive Typexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action hotpluggable]
Name=Hotpluggable
Name[ar]=قابل للتوصيل
Name[ast]=Conexón en caliente
Name[bn]=--
Name[bs]=vruće uključiva
Name[ca]=Connectable en calent
Name[ca@valencia]=Connectable en calent
Name[cs]=Hotplug
Name[da]=Flytbar
Name[de]=Hotplug-fähig
Name[el]=Δυνατότητα Hotplug
Name[en_GB]=Hotpluggable
Name[eo]=Dumkure permutebla
Name[es]=Conexión en caliente
Name[et]=Töö ajal ühendatav
Name[eu]=Hotplug-erako gaitua
Name[fi]=Lennossakytkettävä
Name[fr]=Connectable à chaud
Name[fy]=Hotplug barren
Name[ga]=Inphlugáilte
Name[gl]=Conectábel en quente
Name[gu]=
Name[he]=החלפה חמה
Name[hi]=
Name[hr]=Podržava brzo uštekavanje
Name[hu]=Menet közben csatlakoztatható
Name[ia]=Hotpluggable (On pote connecter lo con machina active)
Name[id]=Dapat di-Hotplug
Name[is]=Hraðtengjanlegt (hotplug)
Name[it]=Collegabile in marcia
Name[ja]=Hotplug
Name[kk]=Істеп турғанда қосылмалы
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Greitai prijungiamas
Name[lv]=Karsti nomaināms
Name[ml]=
Name[mr]=
Name[nb]=Kan kobles til påslått
Name[nds]=Jümmers tokoppelbor
Name[nl]=Hotplugbaar
Name[nn]=Hotplug-kompatibel
Name[pa]=
Name[pl]=Podłączany "na gorąco"
Name[pt]=Conectável em Funcionamento
Name[pt_BR]=Conectável em funcionamento
Name[ro]=Detașabil
Name[ru]=Подключается в любое время
Name[si]=Hotpluggable
Name[sk]=Hotplug
Name[sl]=Priključljivo med delovanjem
Name[sr]=вруће укључива
Name[sr@ijekavian]=вруће укључива
Name[sr@ijekavianlatin]=vruće uključiva
Name[sr@latin]=vruće uključiva
Name[sv]=Inkopplingsbar
Name[tg]=Дастгоҳҳои пайвастшаванда
Name[th]=
Name[tr]=Çıkarılıp takılabilir
Name[ug]=ئىسسىق چېتىلىشچان
Name[uk]=«Гаряче» зєднання
Name[vi]=Tháo lp nóng
Name[wa]=Hotplugåve
Name[x-test]=xxHotpluggablexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action removable]
Name=Removable
Name[ar]=قابل للإزالة
Name[ast]=Estrayible
Name[bg]=Преносим
Name[bn]=
Name[bs]=uklonjiva
Name[ca]=Extraïble
Name[ca@valencia]=Extraïble
Name[cs]=Odpojitelný
Name[csb]=Przenosné
Name[da]=Flytbar
Name[de]=Wechselbar
Name[el]=Αφαιρούμενο μέσο
Name[en_GB]=Removable
Name[eo]=Demetebla
Name[es]=Extraíble
Name[et]=Eemaldatav
Name[eu]=Aldagarria
Name[fa]=جدا شدنی
Name[fi]=Poistettavissa
Name[fr]=Amovible
Name[fy]=Te ferwiderjen
Name[ga]=Inbhainte
Name[gl]=Eliminábel
Name[gu]=
Name[he]=ניתן להסרה
Name[hi]=
Name[hr]=Moguće ga je izvaditi
Name[hu]=Cserélhető
Name[ia]=Removibile
Name[id]=Dapat Dilepaskan
Name[is]=Fjarlægjanlegt
Name[it]=Rimovibile
Name[ja]=
Name[kk]=Ауыстырмалы
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Keičiamas
Name[lv]=Noņemams
Name[mai]=
Name[mk]=Подвижен
Name[ml]=
Name[mr]=
Name[nb]=Flyttbar
Name[nds]=Tuuschbor
Name[nl]=Verwijderbaar
Name[nn]=Flyttbar
Name[pa]=
Name[pl]=Wymienny
Name[pt]=Removível
Name[pt_BR]=Removível
Name[ro]=Amovibil
Name[ru]=Сменный носитель
Name[si]=
Name[sk]=Vymeniteľné
Name[sl]=Odstranljivo
Name[sr]=уклоњива
Name[sr@ijekavian]=уклоњива
Name[sr@ijekavianlatin]=uklonjiva
Name[sr@latin]=uklonjiva
Name[sv]=Flyttbar
Name[tg]=Дастгоҳи ҷудошаванда
Name[th]=
Name[tr]=Çıkarılabilir
Name[ug]=كۆچمە
Name[uk]=Змінний пристрій
Name[wa]=Bodjåve
Name[x-test]=xxRemovablexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action size]
Name=Size
Name[ar]=الحجم
Name[ast]=Tamañu
Name[bg]=Големина
Name[bn]=
Name[bs]=veličina
Name[ca]=Mida
Name[ca@valencia]=Mida
Name[cs]=Velikost
Name[csb]=Miara
Name[da]=Størrelse
Name[de]=Größe
Name[el]=Μέγεθος
Name[en_GB]=Size
Name[eo]=Grandeco
Name[es]=Tamaño
Name[et]=Suurus
Name[eu]=Neurria
Name[fa]=اندازه
Name[fi]=Koko
Name[fr]=Taille
Name[fy]=Grutte
Name[ga]=Méid
Name[gl]=Tamaño
Name[gu]=
Name[he]=גודל
Name[hi]=
Name[hr]=Veličina
Name[hu]=Méret
Name[ia]=Dimension
Name[id]=Ukuran
Name[is]=Stærð
Name[it]=Dimensione
Name[ja]=
Name[ka]=
Name[kk]=Көлемі
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Dydis
Name[lv]=Izmērs
Name[mk]=Големина
Name[ml]=ി
Name[mr]=
Name[nb]=Størrelse
Name[nds]=Grött
Name[nl]=Grootte
Name[nn]=Storleik
Name[pa]=
Name[pl]=Rozmiar
Name[pt]=Tamanho
Name[pt_BR]=Tamanho
Name[ro]=Dimensiune
Name[ru]=Размер
Name[si]=
Name[sk]=Veľkosť
Name[sl]=Velikost
Name[sr]=величина
Name[sr@ijekavian]=величина
Name[sr@ijekavianlatin]=veličina
Name[sr@latin]=veličina
Name[sv]=Storlek
Name[tg]=Андоза
Name[th]=
Name[tr]=Boyut
Name[ug]=چوڭلۇقى
Name[uk]=Розмір
Name[wa]=Grandeu
Name[x-test]=xxSizexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Entry]
Actions=bus;driveType;hotpluggable;removable;size;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=StorageDrive

View file

@ -1,507 +0,0 @@
[Desktop Action fsType]
Name=Fs Type
Name[ar]=نوع نظام الملفات
Name[ast]=Triba de Fs
Name[bg]=Вид файлова система
Name[bn]=Fs
Name[bs]=tip fsis.
Name[ca]=Tipus de sistema de fitxers
Name[ca@valencia]=Tipus de sistema de fitxers
Name[cs]=Typ FS
Name[csb]=Ôrt Fs
Name[da]=FS-type
Name[de]=Dateisystemtyp
Name[el]=Τύπος συστήματος αρχείων
Name[en_GB]=Fs Type
Name[eo]=Dosiersistema Tipo
Name[es]=Tipo de s. a.
Name[et]=Failisüsteemi tüüp
Name[eu]=Fitxategi-sistema mota
Name[fi]=Tiedostojärjestelmän tyyppi
Name[fr]=Type de système de fichiers
Name[fy]=Fs type
Name[ga]=Cineál an Chórais Comhad
Name[gl]=Sistema de ficheiros
Name[gu]=Fs
Name[he]=סוג מערכת קבצים
Name[hi]=Fs
Name[hr]=Tip datotečnog sustava
Name[hu]=Fájlrendszer
Name[ia]=Typo Fs
Name[id]=Tipe Sistem Berkas
Name[is]=Tegund skráakerfis
Name[it]=Tipo di filesystem
Name[ja]=Fs
Name[kk]=ФЖ түрі
Name[km]= Fs
Name[kn]=Fs
Name[ko]=
Name[lt]=FS tipas
Name[lv]=FS tips
Name[mai]=Fs
Name[mk]=Тип на дат. систем
Name[ml]=
Name[mr]=Fs
Name[nb]=Filsystemtype
Name[nds]=Dateisysteem-Typ
Name[nl]=FS-type
Name[nn]=Filsystemtype
Name[pa]=Fs ਿ
Name[pl]=Typ systemu plików
Name[pt]=Tipo de SF
Name[pt_BR]=Tipo de sistema de arquivos
Name[ro]=Tipul SF
Name[ru]=Файловая система
Name[si]=Fs
Name[sk]=Typ FS
Name[sl]=Vrsta dat. sist.
Name[sr]=тип фсис.
Name[sr@ijekavian]=тип фсис.
Name[sr@ijekavianlatin]=tip fsis.
Name[sr@latin]=tip fsis.
Name[sv]=Filsystemtyp
Name[tg]=Намуди Fs
Name[th]=
Name[tr]=Dosya Sistemi Tipi
Name[ug]=ھۆججەت سىستېما تىپى
Name[uk]=Тип ФС
Name[vi]=Kiu h thng tp tin
Name[wa]=Sôre di Fs
Name[x-test]=xxFs Typexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action ignored]
Name=Ignored
Name[ar]=متجاهَل
Name[ast]=Inoráu
Name[bg]=Пренебрегнат
Name[bn]=ি
Name[bs]=ignorisan
Name[ca]=Ignorat
Name[ca@valencia]=Ignorat
Name[cs]=Ignorováno
Name[csb]=Ignorowóné
Name[da]=Ignoreret
Name[de]=Ignoriert
Name[el]=Παράβλεψη
Name[en_GB]=Ignored
Name[eo]=Ignorita
Name[es]=Ignorado
Name[et]=Eiratav
Name[eu]=Ez ikusi eginda
Name[fi]=Ei otettu huomioon
Name[fr]=Ignoré
Name[fy]=Negearre
Name[ga]=Neamhaird Déanta De
Name[gl]=Ignorado
Name[gu]=
Name[he]=התעלם
Name[hi]=ि
Name[hr]=Zanemareno
Name[hu]=Nem kezelt
Name[ia]=Ignorate
Name[id]=Diabaikan
Name[is]=Hunsað
Name[it]=Ignorato
Name[ja]=
Name[kk]=Еленбеген
Name[km]=
Name[kn]=ಿ
Name[ko]=
Name[lt]=Ignoruota
Name[lv]=Ignorēts
Name[mk]=Игнорирано
Name[ml]=ി
Name[mr]=ि
Name[nb]=Ignorert
Name[nds]=Övergahn
Name[nl]=Genegeerd
Name[nn]=Oversett
Name[pa]=ਿ
Name[pl]=Ignorowany
Name[pt]=Ignorado
Name[pt_BR]=Ignorado
Name[ro]=Ignorat
Name[ru]=Игнорируется
Name[si]=
Name[sk]=Ignorované
Name[sl]=Prezrto
Name[sr]=игнорисан
Name[sr@ijekavian]=игнорисан
Name[sr@ijekavianlatin]=ignorisan
Name[sr@latin]=ignorisan
Name[sv]=Ignorerad
Name[tg]=Радшуда
Name[th]=
Name[tr]=Yoksayılmış
Name[ug]=پەرۋا قىلمىدى
Name[uk]=Ігнорується
Name[vi]=B qua
Name[wa]=Passé houte
Name[x-test]=xxIgnoredxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action label]
Name=Label
Name[ar]=التسمية
Name[ast]=Etiqueta
Name[bg]=Етикет
Name[bn]=
Name[bs]=etiketa
Name[ca]=Etiqueta
Name[ca@valencia]=Etiqueta
Name[cs]=Popisek
Name[csb]=Znakòwnik
Name[da]=Etiket
Name[de]=Beschriftung
Name[el]=Ετικέτα
Name[en_GB]=Label
Name[eo]=Labelo
Name[es]=Etiqueta
Name[et]=Pealdis
Name[eu]=Etiketa
Name[fa]=برچسب
Name[fi]=Nimike
Name[fr]=Étiquette
Name[fy]=Lebel
Name[ga]=Lipéad
Name[gl]=Etiqueta
Name[gu]=
Name[he]=תוויות
Name[hi]=
Name[hr]=Natpis
Name[hu]=Címke
Name[ia]=Etiquetta
Name[id]=Label
Name[is]=Merking
Name[it]=Etichetta
Name[ja]=
Name[kk]=Тамғасы
Name[km]=
Name[kn]=ಿ
Name[ko]=
Name[lt]=Etiketė
Name[lv]=Etiķete
Name[mk]=Натпис
Name[ml]=
Name[mr]=
Name[nb]=Etikett
Name[nds]=Beteker
Name[nl]=Label
Name[nn]=Merkelapp
Name[pa]=
Name[pl]=Etykieta
Name[pt]=Legenda
Name[pt_BR]=Rótulo
Name[ro]=Etichetă
Name[ru]=Метка
Name[si]=
Name[sk]=Štítok
Name[sl]=Oznaka
Name[sr]=етикета
Name[sr@ijekavian]=етикета
Name[sr@ijekavianlatin]=etiketa
Name[sr@latin]=etiketa
Name[sv]=Etikett
Name[tg]=Тамға
Name[th]=
Name[tr]=Etiket
Name[ug]=ئەن
Name[uk]=Мітка
Name[vi]=Nhãn
Name[wa]=Etikete
Name[x-test]=xxLabelxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action size]
Name=Size
Name[ar]=الحجم
Name[ast]=Tamañu
Name[bg]=Големина
Name[bn]=
Name[bs]=veličina
Name[ca]=Mida
Name[ca@valencia]=Mida
Name[cs]=Velikost
Name[csb]=Miara
Name[da]=Størrelse
Name[de]=Größe
Name[el]=Μέγεθος
Name[en_GB]=Size
Name[eo]=Grandeco
Name[es]=Tamaño
Name[et]=Suurus
Name[eu]=Neurria
Name[fa]=اندازه
Name[fi]=Koko
Name[fr]=Taille
Name[fy]=Grutte
Name[ga]=Méid
Name[gl]=Tamaño
Name[gu]=
Name[he]=גודל
Name[hi]=
Name[hr]=Veličina
Name[hu]=Méret
Name[ia]=Dimension
Name[id]=Ukuran
Name[is]=Stærð
Name[it]=Dimensione
Name[ja]=
Name[ka]=
Name[kk]=Көлемі
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Dydis
Name[lv]=Izmērs
Name[mk]=Големина
Name[ml]=ി
Name[mr]=
Name[nb]=Størrelse
Name[nds]=Grött
Name[nl]=Grootte
Name[nn]=Storleik
Name[pa]=
Name[pl]=Rozmiar
Name[pt]=Tamanho
Name[pt_BR]=Tamanho
Name[ro]=Dimensiune
Name[ru]=Размер
Name[si]=
Name[sk]=Veľkosť
Name[sl]=Velikost
Name[sr]=величина
Name[sr@ijekavian]=величина
Name[sr@ijekavianlatin]=veličina
Name[sr@latin]=veličina
Name[sv]=Storlek
Name[tg]=Андоза
Name[th]=
Name[tr]=Boyut
Name[ug]=چوڭلۇقى
Name[uk]=Розмір
Name[wa]=Grandeu
Name[x-test]=xxSizexx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Action usage]
Name=Usage
Name[ar]=الاستعمال
Name[ast]=Usu
Name[bg]=Използване
Name[bn]=
Name[bs]=upotreba
Name[ca]=Ús
Name[ca@valencia]=Ús
Name[cs]=Použití
Name[csb]=Brëkòwóné
Name[da]=Brug
Name[de]=Verwendung
Name[el]=Χρήση
Name[en_GB]=Usage
Name[eo]=Uzado
Name[es]=Uso
Name[et]=Kasutus
Name[eu]=Erabilera
Name[fi]=Käyttötaso
Name[fr]=Usage
Name[fy]=Brûkens
Name[ga]=Úsáid
Name[gl]=Uso
Name[gu]=
Name[he]=שימוש
Name[hi]=
Name[hr]=Iskorištenost
Name[hu]=Kihasználtság
Name[ia]=Usage
Name[id]=Penggunaan
Name[is]=Notkun
Name[it]=Uso
Name[ja]=使
Name[ka]=
Name[kk]=Толуы
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Naudojimas
Name[lv]=Izlietojums
Name[mk]=Користење
Name[ml]=ി
Name[mr]=
Name[nb]=Bruk
Name[nds]=Bruuk
Name[nl]=Gebruik
Name[nn]=Bruk
Name[pa]=
Name[pl]=Wykorzystanie
Name[pt]=Utilização
Name[pt_BR]=Uso
Name[ro]=Utilizare
Name[ru]=Использование
Name[si]=
Name[sk]=Použitie
Name[sl]=Poraba
Name[sr]=употреба
Name[sr@ijekavian]=употреба
Name[sr@ijekavianlatin]=upotreba
Name[sr@latin]=upotreba
Name[sv]=Användning
Name[tg]=Истифодабарӣ
Name[th]=
Name[tr]=Kullanım
Name[ug]=ئىشلىتىلىشى
Name[uk]=Використання
Name[wa]=Eployaedje
Name[x-test]=xxUsagexx
Name[zh_CN]=
Name[zh_TW]=使
[Desktop Action uuid]
Name=Uuid
Name[ar]=المعرف الفريد عالمياً (Uuid)
Name[ast]=Uuid
Name[bg]=Uuid
Name[bn]=Uuid
Name[bs]=UUID
Name[ca]=UUID
Name[ca@valencia]=UUID
Name[cs]=Uuid
Name[csb]=Uuid
Name[da]=Uuid
Name[de]=UUID
Name[el]=Uuid
Name[en_GB]=Uuid
Name[eo]=Uuid
Name[es]=Uuid
Name[et]=Uuid
Name[eu]=UUIDa
Name[fi]=Uuid
Name[fr]=Uuid
Name[fy]=Uuid
Name[ga]=Uuid
Name[gl]=Uuid
Name[gu]=Uuid
Name[he]=Uuid
Name[hi]=Uuid
Name[hr]=UUID
Name[hu]=UUID
Name[ia]=Uuid
Name[id]=Uuid
Name[is]=UUID
Name[it]=Uuid
Name[ja]=UUID
Name[ka]=Uuid
Name[kk]=Uuid
Name[km]=Uuid
Name[kn]=Uuid
Name[ko]=UUID
Name[lt]=Uuid
Name[lv]=Uuid
Name[mk]=Uuid
Name[ml]=ി
Name[mr]=Uuid
Name[nb]=Uuid
Name[nds]=UUID
Name[nl]=Uuid
Name[nn]=UUID
Name[pa]=Uuid
Name[pl]=Uuid
Name[pt]=UUID
Name[pt_BR]=UUID
Name[ro]=Uuid
Name[ru]=UUID
Name[si]=Uuid
Name[sk]=Uuid
Name[sl]=UUID
Name[sr]=УУИД
Name[sr@ijekavian]=УУИД
Name[sr@ijekavianlatin]=UUID
Name[sr@latin]=UUID
Name[sv]=Uuid
Name[tg]=Phluid
Name[th]= Uuid
Name[tr]=Uuid
Name[ug]=Uuid
Name[uk]=Uuid
Name[wa]=Uuid
Name[x-test]=xxUuidxx
Name[zh_CN]=UUID
Name[zh_TW]=UUID
[Desktop Entry]
Actions=fsType;ignored;label;size;usage;uuid;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=StorageVolume

View file

@ -1,144 +0,0 @@
[Desktop Action supportedDrivers]
Name=Supported Drivers
Name[ar]=المشغلات المدعومة
Name[ast]=Controladores sofitaos
Name[bg]=Поддържани драйвери
Name[bn]=ি
Name[bs]=podržani drajveri
Name[ca]=Controladors acceptats
Name[ca@valencia]=Controladors acceptats
Name[cs]=Podporované ovladače
Name[csb]=Wspiéróné czérowniczi
Name[da]=Understøttede drivere
Name[de]=Unterstützte Treiber
Name[el]=Υποστηριζόμενοι οδηγοί
Name[en_GB]=Supported Drivers
Name[eo]=subtenataj Peliloj
Name[es]=Dispositivos soportados
Name[et]=Toetatud draiverid
Name[eu]=Onartutzen diren gidariak
Name[fi]=Tuetut ajurit
Name[fr]=Pilotes pris en charge
Name[fy]=Stipe stjoerprogramma's
Name[ga]=Tiománaithe a dTacaítear Leo
Name[gl]=Controladores soportados
Name[gu]=િ
Name[he]=מנהלי התקנים נתמכים
Name[hi]=ि
Name[hr]=Podržani pisači
Name[hu]=Támogatott meghajtók
Name[ia]=Drivers supportate
Name[id]=Penggerak Didukung
Name[is]=Studdir reklar
Name[it]=Driver supportati
Name[ja]=
Name[kk]=Қолдайтын драйверлері
Name[km]=
Name[kn]=ಿ
Name[ko]=
Name[lt]=Palaikomos tvarkyklės
Name[lv]=Atbalstītie draiveri
Name[mai]=ि
Name[mk]=Поддржани управувачи
Name[ml]=ി ി
Name[mr]=
Name[nb]=Støttede drivere
Name[nds]=Ünnerstütt Drievers
Name[nl]=Ondersteunde stuurprogramma's
Name[nn]=Støtta drivarar
Name[pa]=
Name[pl]=Obsługiwane sterowniki
Name[pt]=Controladores Suportados
Name[pt_BR]=Drivers suportados
Name[ro]=Drivere susținute
Name[ru]=Поддерживаемые драйверы
Name[si]=
Name[sk]=Podporované ovládače
Name[sl]=Podprti gonilniki
Name[sr]=подржани драјвери
Name[sr@ijekavian]=подржани драјвери
Name[sr@ijekavianlatin]=podržani drajveri
Name[sr@latin]=podržani drajveri
Name[sv]=Drivrutiner som stöds
Name[tg]=Дастгоҳҳои мувофиқ
Name[th]=
Name[tr]=Desteklenen Sürücüler
Name[ug]=قوللايدىغان قوزغاتقۇلار
Name[uk]=Підтримувані драйвери
Name[wa]=Mineus sopoirtés
Name[x-test]=xxSupported Driversxx
Name[zh_CN]=
Name[zh_TW]=
[Desktop Entry]
Actions=supportedDrivers;
Name=Solid Device
Name[ar]=جهاز في سوليد
Name[ast]=Preseos de Solid
Name[bn]=ি ি
Name[bs]=uređaj pod Solidom
Name[ca]=Dispositiu del Solid
Name[ca@valencia]=Dispositiu del Solid
Name[cs]=Solid zařízení
Name[da]=Solid-enhed
Name[de]=Solid-Gerät
Name[el]=Συμπαγής συσκευή
Name[en_GB]=Solid Device
Name[eo]=Solid-aparatoj
Name[es]=Dispositivo de Solid
Name[et]=Solidi seade
Name[eu]=Solid gailua
Name[fi]=Kiinteä laite
Name[fr]=Périphérique Solid
Name[fy]=Solid apparaat
Name[ga]=Gléas Solid
Name[gl]=Dispositivo de Solid
Name[gu]=િ
Name[he]=התקן Solid
Name[hi]=ि
Name[hr]=Solid uređaj
Name[hu]=Solid eszköz
Name[ia]=Dispositivo Solid
Name[id]=Divais Solid
Name[is]=Solid tæki
Name[it]=Dispositivo di Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысы
Name[km]=
Name[kn]=
Name[ko]=Solid
Name[lt]=Solid įrenginys
Name[lv]=Solid ierīce
Name[mk]=Полупроводнички уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Solid-enhet
Name[nds]=Solid-Reedschap
Name[nl]=Solid-apparaat
Name[nn]=Solid-eining
Name[pa]=
Name[pl]=Urządzenie Solid
Name[pt]=Dispositivo do Solid
Name[pt_BR]=Dispositivo do Solid
Name[ro]=Dispozitiv Solid
Name[ru]=Устройство Solid
Name[si]=
Name[sk]=Zariadenie Solid
Name[sl]=Naprava Solid
Name[sr]=уређај под Солидом
Name[sr@ijekavian]=уређај под Солидом
Name[sr@ijekavianlatin]=uređaj pod Solidom
Name[sr@latin]=uređaj pod Solidom
Name[sv]=Solid-enhet
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı
Name[ug]=Solid ئۈسكۈنە
Name[uk]=Пристрій Solid
Name[wa]=Éndjins Solid
Name[x-test]=xxSolid Devicexx
Name[zh_CN]=Solid
Name[zh_TW]=
Type=Service
X-KDE-ServiceTypes=SolidDevice
X-KDE-Solid-Actions-Type=Video

View file

@ -1,9 +0,0 @@
[Desktop Entry]
Actions=open;
Type=Service
X-KDE-Action-Custom=true
X-KDE-Solid-Predicate=[ IS StorageVolume AND StorageVolume.ignored == false ]
[Desktop Action open]
Icon=unknown
Exec=

View file

@ -1,178 +0,0 @@
[Desktop Entry]
Exec=kcmshell4 solid-actions
Icon=system-run
Type=Service
X-KDE-ServiceTypes=KCModule
X-DocPath=kcontrol/solid-actions/index.html
X-KDE-Library=kcm_solid_actions
X-KDE-ParentApp=kcontrol
X-KDE-System-Settings-Parent-Category=hardware
Name=Device Actions
Name[ar]=إجراءات الأجهزة
Name[ast]=Aiciones del preséu
Name[bg]=Действия за устройства
Name[bn]=ি
Name[bs]=Radnje uređaja
Name[ca]=Accions de dispositiu
Name[ca@valencia]=Accions de dispositiu
Name[cs]=Činnosti zařízení
Name[csb]=Dzejanié ùrządzenia
Name[da]=Enhedshandlinger
Name[de]=Geräte-Aktionen
Name[el]=Ενέργειες συσκευής
Name[en_GB]=Device Actions
Name[eo]=Aparataj agoj
Name[es]=Acciones del dispositivo
Name[et]=Seadme toimingud
Name[eu]=Gailuaren ekintzak
Name[fi]=Laitetoiminnot
Name[fr]=Actions du périphérique
Name[fy]=Apparaat aksjes
Name[ga]=Gníomhartha Gléis
Name[gl]=Accións do dispositivo
Name[gu]= િ
Name[he]=פעולות התקן
Name[hi]= ि
Name[hr]=Akcije uređaja
Name[hu]=Eszközműveletek
Name[ia]=Actiones de dispositivos
Name[id]=Aksi Divais
Name[is]=Aðgerðir tækis
Name[it]=Azioni dei dispositivi
Name[ja]=
Name[kk]=Құрылғы әрекеттері
Name[km]=
Name[kn]= ಿ
Name[ko]=
Name[lt]=Įrenginių veiksmai
Name[lv]=Ierīces darbības
Name[mk]=Дејства за уреди
Name[ml]=ി ി
Name[mr]= ि
Name[nb]=Enhetshandlinger
Name[nds]=Reedschap-Akschonen
Name[nl]=Apparaatacties
Name[nn]=Einingshandlingar
Name[pa]=
Name[pl]=Działania na urządzeniach
Name[pt]=Acções do Dispositivo
Name[pt_BR]=Ações do dispositivo
Name[ro]=Acțiuni dispozitiv
Name[ru]=Действия для устройств
Name[si]=
Name[sk]=Akcie zariadenia
Name[sl]=Dejanja za napravo
Name[sr]=Радње уређаја
Name[sr@ijekavian]=Радње уређаја
Name[sr@ijekavianlatin]=Radnje uređaja
Name[sr@latin]=Radnje uređaja
Name[sv]=Enhetsåtgärder
Name[tg]=Амалҳои пештанзимшуда
Name[th]=
Name[tr]=Aygıt Eylemleri
Name[ug]=ئۈسكۈنە مەشغۇلاتى
Name[uk]=Дії з пристроями
Name[vi]=Hành đng cho thiết b
Name[wa]=Accions di l' éndjin
Name[x-test]=xxDevice Actionsxx
Name[zh_CN]=
Name[zh_TW]=
Comment=Manage actions available to the user when connecting new devices
Comment[bs]=Upravljanje radnjama dostupnim korisniku pri povezivanju novih uređaja na računar.
Comment[ca]=Gestiona les accions disponibles per a l'usuari en connectar dispositius nous
Comment[ca@valencia]=Gestiona les accions disponibles per a l'usuari en connectar dispositius nous
Comment[cs]=Spravovat činnosti dostupné pro uživatele při připojení nových zařízení
Comment[da]=Håndtér de handlinger som er tilgængelige for brugeren når nye enheder tilsluttes
Comment[de]=Einrichtung der Aktionen, die für den Anwender verfügbar sein sollen, wenn neue Geräte an den Rechner angeschlossen werden.
Comment[el]=Διαχείριση ενεργειών διαθέσιμων στο χρήστη κατά τη σύνδεση νέων συσκευών
Comment[en_GB]=Manage actions available to the user when connecting new devices
Comment[es]=Gestionar las acciones disponibles para el usuario cuando conecta nuevos dispositivos
Comment[et]=Toimingute haldamine, mida kasutaja saab tarvitada uue seadme ühendamisel arvutiga
Comment[eu]=kudeatu gailu berriak konektatzean erabiltzaileak erabilgarri dituen ekintzak
Comment[fi]=Hallitse toimintoja, jotka ovat käyttäjän valittavissa, kun uusia laitteita kytketään
Comment[fr]=Gère les actions disponibles pour l'utilisateur lors de la connexion de nouveaux périphériques
Comment[ga]=Bainistigh na gníomhartha atá ar fáil don úsáideoir agus gléasanna nua á gceangal
Comment[gl]=Xestiona as accións dispoñíbeis para o usuario cando se conecten novos dispositivos
Comment[he]=מנהל פעילויות זמונית למשתמש בעת חיבור של התקנים חדשים
Comment[hu]=Új eszköz csatlakoztatásakor a felhasználónak elérhető műveletek kezelése
Comment[ia]=Gerer actiones disponibile al usator quando il connecte nove dispositivos al computator
Comment[is]=Stillingatól fyrir þær aðgerðir sem verða í boði fyrir notanda þegar ný tæki eru tengd við tölvuna
Comment[it]=Gestisci le azioni disponibili all'utente quando si collegano nuovi dispositivi
Comment[kk]=Жаңа құрылғыларды қосқанда қол жетерлік басқару амалдары
Comment[ko]=
Comment[lt]=Tvarkyti veiksmus pasiekiamus naudotojui kai prijungiami nauji įrenginiai
Comment[mr]= ि
Comment[nb]=Håndter handlingene som er tilgjengelige for brukeren når nye enheter kobles til datamaskinen
Comment[nds]=Akschonen plegen, de för Brukers praatstaht, wenn nieg Reedschappen den Reekner tokoppelt warrt
Comment[nl]=Beheren van acties die beschikbaar zijn voor de gebruiker bij het aankoppelen van nieuwe apparaten
Comment[pa]= ਿ ,
Comment[pl]=Zdecyduj o dostępnych dla użytkownika działaniach przy podłączaniu nowego urządzenia
Comment[pt]=Gerir as acções disponíveis para o utilizador, quando são ligados dispositivos novos ao computador
Comment[pt_BR]=Gerencia as ações disponíveis ao conectar novos dispositivos
Comment[ro]=Gestionează acțiunile oferite utilizatorului la conectarea noilor dispozitive
Comment[ru]=Настройка предлагаемых пользователю действий при подключении устройств
Comment[sk]=Spravovať akcie dostupné aktuálnemu používateľovi pri pripájaní nových zariadení
Comment[sl]=Upravljajte dejanja, ki so na voljo uporabniku, ko se priključi nova naprava
Comment[sr]=Одредите радње доступне кориснику при повезивању нових уређаја
Comment[sr@ijekavian]=Одредите радње доступне кориснику при повезивању нових уређаја
Comment[sr@ijekavianlatin]=Odredite radnje dostupne korisniku pri povezivanju novih uređaja
Comment[sr@latin]=Odredite radnje dostupne korisniku pri povezivanju novih uređaja
Comment[sv]=Hantera tillgängliga åtgärder för användare när nya enheter ansluts
Comment[tr]=Bilgisayara yeni bir aygıt takıldığında kullanıcı tarafından kullanılabilecek eylemleri yönet
Comment[uk]=Керування діями, доступними користувачеві після зєднання пристроїв з компютером
Comment[x-test]=xxManage actions available to the user when connecting new devicesxx
Comment[zh_CN]=
Comment[zh_TW]=
X-KDE-Keywords=Solid Devices Actions
X-KDE-Keywords[bs]=Akcije čvrstih uređaja
X-KDE-Keywords[ca]=Accions de dispositiu del Solid
X-KDE-Keywords[ca@valencia]=Accions de dispositiu del Solid
X-KDE-Keywords[cs]=Činnosti zařízení Solid
X-KDE-Keywords[da]=Solid enhedshandlinger
X-KDE-Keywords[de]=Solid-Geräte-Aktionen
X-KDE-Keywords[el]=Ενέργειες συσκευής Solid
X-KDE-Keywords[en_GB]=Solid Devices Actions
X-KDE-Keywords[es]=Acciones de dispositivos Solid
X-KDE-Keywords[et]=Solidi seadmete toimingud
X-KDE-Keywords[eu]=Solid gailuen ekintzak
X-KDE-Keywords[fi]=solid, laitetoiminnot
X-KDE-Keywords[fr]=Actions du périphérique Solid
X-KDE-Keywords[ga]=Gníomhartha Gléasanna Solid
X-KDE-Keywords[gl]=Accións do dispositivo Solid
X-KDE-Keywords[he]=פעולות התקן של Solid
X-KDE-Keywords[hu]=Solid eszközműveletek
X-KDE-Keywords[ia]=Actiones de dispositivos solid
X-KDE-Keywords[is]=Aðgerðir Solid-tækja
X-KDE-Keywords[it]=Azioni dei dispositivi Solid
X-KDE-Keywords[kk]=Solid Devices Actions
X-KDE-Keywords[km]=
X-KDE-Keywords[ko]=Solid
X-KDE-Keywords[lt]=Solid įrenginių veiksmai
X-KDE-Keywords[lv]=Solid ierīces darbības
X-KDE-Keywords[mr]=ि ि
X-KDE-Keywords[nb]=Solid enhetshandlinger
X-KDE-Keywords[nds]=Solid,Reedschappen,Akschonen
X-KDE-Keywords[nl]=Solid-apparaatacties
X-KDE-Keywords[pa]=
X-KDE-Keywords[pl]=Działania na urządzeniach Solid
X-KDE-Keywords[pt]=Acções do Dispositivo Solid
X-KDE-Keywords[pt_BR]=Ações do dispositivo Solid
X-KDE-Keywords[ro]=Acțiuni dispozitiv Solid
X-KDE-Keywords[ru]=Действия для устройств Solid
X-KDE-Keywords[sk]=Akcie zariadení Solid
X-KDE-Keywords[sl]=solid,naprave,dejanja,strojna oprema
X-KDE-Keywords[sr]=Solid Devices Actions,Солидове радње над уређајима
X-KDE-Keywords[sr@ijekavian]=Solid Devices Actions,Солидове радње над уређајима
X-KDE-Keywords[sr@ijekavianlatin]=Solid Devices Actions,Solidove radnje nad uređajima
X-KDE-Keywords[sr@latin]=Solid Devices Actions,Solidove radnje nad uređajima
X-KDE-Keywords[sv]=Solid enhetsåtgärder
X-KDE-Keywords[tr]=Solid Aygıt Eylemleri
X-KDE-Keywords[uk]=solid,пристрій,пристрої,дія,дії
X-KDE-Keywords[x-test]=xxSolid Devices Actionsxx
X-KDE-Keywords[zh_CN]=Solid Devices Actions,
X-KDE-Keywords[zh_TW]=Solid Devices Actions

View file

@ -1,70 +0,0 @@
[Desktop Entry]
Type=ServiceType
X-KDE-ServiceType=SolidDevice
Name=Solid Device Type
Name[ar]=نوع الجهاز في سوليد
Name[ast]=Triba de preséu de Solid
Name[bn]=ি ি
Name[bs]=tip uređaja pod Solidom
Name[ca]=Tipus de dispositiu del Solid
Name[ca@valencia]=Tipus de dispositiu del Solid
Name[cs]=Typ zařízení Solid
Name[da]=Solid enhedstype
Name[de]=Solid-Gerätetyp
Name[el]=Τύπος συμπαγής συσκευής
Name[en_GB]=Solid Device Type
Name[eo]=Solid Aparata Tipo
Name[es]=Tipo de dispositivo de Solid
Name[et]=Solidi seadme tüüp
Name[eu]=Solid gailu mota
Name[fi]=Kiintolaitetyyppi
Name[fr]=Type de périphérique Solid
Name[fy]=Solid apparaat type
Name[ga]=Cineál Gléis Solid
Name[gl]=Tipo do dispositivo de Solid
Name[gu]=િ
Name[he]=סוג התקן Solid
Name[hi]=ि
Name[hr]=Vrsta Solid uređaja
Name[hu]=Solid eszköztípus
Name[ia]=Typo de dispositivo de Solid
Name[id]=Tipe Divais Solid
Name[is]=Tegund Solid-tækis
Name[it]=Tipo di dispositivo Solid
Name[ja]=Solid
Name[kk]=Solid құрылғысының түрі
Name[km]=
Name[kn]=(ಿ)
Name[ko]=Solid
Name[lt]=Solid įrenginio tipas
Name[lv]=Solid ierīces tips
Name[mk]=Полупроводнички тип на уред
Name[ml]=ി
Name[mr]=ि
Name[nb]=Type solid-enhet
Name[nds]=Solid-Reedschaptyp
Name[nl]=Solid-apparaattype
Name[nn]=Type Solid-eining
Name[pa]= ਿ
Name[pl]=Typ urządzenia Solid
Name[pt]=Tipo de Dispositivo do Solid
Name[pt_BR]=Tipo de dispositivo do Solid
Name[ro]=Tip dispozitiv solid
Name[ru]=Тип устройства Solid
Name[si]=
Name[sk]=Typ zariadenia Solid
Name[sl]=Vrsta naprave Solid
Name[sr]=тип уређаја под Солидом
Name[sr@ijekavian]=тип уређаја под Солидом
Name[sr@ijekavianlatin]=tip uređaja pod Solidom
Name[sr@latin]=tip uređaja pod Solidom
Name[sv]=Solid-enhetstyp
Name[tg]=Намуди дастгоҳи ҷудошаванда
Name[th]= Solid
Name[tr]=Solid Aygıtı Tipi
Name[ug]=Solid ئۈسكۈنە تىپى
Name[uk]=Тип пристрою Solid
Name[wa]=Sôre d' éndjin Solid
Name[x-test]=xxSolid Device Typexx
Name[zh_CN]=Solid
Name[zh_TW]=

View file

@ -1,8 +0,0 @@
project(device_automounter)
include_directories(${KDE4_INCLUDES} ${CMAKE_CURRENT_SOURCE_DIR}/lib)
set(device_automounter_lib_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/lib/AutomounterSettings.cpp)
add_subdirectory(kcm)
add_subdirectory(kded)

View file

@ -1,346 +0,0 @@
NOTE! The GPL below is copyrighted by the Free Software Foundation, but
the instance of code that it refers to (the kde programs) are copyrighted
by the authors who actually wrote it.
---------------------------------------------------------------------------
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
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
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View file

@ -1,23 +0,0 @@
This document describes the kded_device_automounterrc settings and how they affect behavior.
General/AutomountUnknownDevices:If true, all devices get mounted regardles of
the other conditions.
General/AutomountOnPlugin: When this is set to true, devices might get
mounted when they are inserted.
General/AutomountOnLogin: When true, devices might get mounted when
the module is loaded.
General/AutomountEnabled: Determines if automounting is globally enabled.
Devices/<dev>/EverMounted: Used to determine if a device is 'known'. A device
is known if it has ever been mounted.
Devices/<dev>/LastSeenMounted: Saves the 'mounted' state between desktop
sessions. Devices with this set to true are
automagically remounted when the module loads.
Devices/<dev>/ForceAutomount: Determines if this device should get
automounted regardless of anything else,
including AutomountEnabled.

View file

@ -1,20 +0,0 @@
set(kcm_device_automounter_SRCS
DeviceAutomounterKCM.cpp
DeviceModel.cpp
DeviceAutomounterKCM.ui
)
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
kde4_add_kcfg_files(kcm_device_automounter_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/../lib/AutomounterSettingsBase.kcfgc
${CMAKE_CURRENT_SOURCE_DIR}/LayoutSettings.kcfgc
)
kde4_add_plugin(kcm_device_automounter ${kcm_device_automounter_SRCS} ${device_automounter_lib_SRCS})
target_link_libraries(kcm_device_automounter KDE4::kdeui KDE4::solid)
install(TARGETS kcm_device_automounter DESTINATION ${KDE4_PLUGIN_INSTALL_DIR})
install(FILES device_automounter_kcm.desktop DESTINATION ${KDE4_SERVICES_INSTALL_DIR})

View file

@ -1,247 +0,0 @@
/**************************************************************************
* Copyright (C) 2009-2010 Trever Fischer <tdfischer@fedoraproject.org> *
* *
* 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 "DeviceAutomounterKCM.h"
#include <QStandardItemModel>
#include <QItemSelectionModel>
#include <KAboutData>
#include <KConfigGroup>
#include <KInputDialog>
#include <KPluginFactory>
#include <KGlobal>
#include <KLocale>
#include <Solid/DeviceNotifier>
#include <Solid/StorageVolume>
#include "AutomounterSettings.h"
#include "LayoutSettings.h"
#include "DeviceModel.h"
K_PLUGIN_FACTORY(DeviceAutomounterKCMFactory, registerPlugin<DeviceAutomounterKCM>();)
K_EXPORT_PLUGIN(DeviceAutomounterKCMFactory("kcm_device_automounter"))
DeviceAutomounterKCM::DeviceAutomounterKCM(QWidget *parent, const QVariantList &)
: KCModule(DeviceAutomounterKCMFactory::componentData(), parent)
{
KAboutData *about = new KAboutData(
"kcm_device_automounter",
0,
ki18n("Device Automounter"),
"0.1",
ki18n("Automatically mounts devices at login or when attached"),
KAboutData::License_GPL_V2,
ki18n("(c) 2009 Trever Fischer")
);
about->addAuthor(ki18n("Trever Fischer"));
setAboutData(about);
setupUi(this);
m_devices = new DeviceModel(this);
deviceView->setModel(m_devices);
connect(automountOnLogin, SIGNAL(stateChanged(int)), this, SLOT(emitChanged()));
connect(automountOnPlugin, SIGNAL(stateChanged(int)), this, SLOT(emitChanged()));
connect(automountEnabled, SIGNAL(stateChanged(int)), this, SLOT(emitChanged()));
connect(automountUnknownDevices, SIGNAL(stateChanged(int)), this, SLOT(emitChanged()));
connect(m_devices, SIGNAL(dataChanged(const QModelIndex, const QModelIndex)), this, SLOT(emitChanged()));
connect(automountEnabled, SIGNAL(stateChanged(int)), this, SLOT(enabledChanged()));
connect(
deviceView->selectionModel(), SIGNAL(selectionChanged(const QItemSelection, const QItemSelection)),
this, SLOT(updateForgetDeviceButton())
);
connect(forgetDevice, SIGNAL(clicked(bool)), this, SLOT(forgetSelectedDevices()));
forgetDevice->setEnabled(false);
}
void DeviceAutomounterKCM::updateForgetDeviceButton()
{
foreach(QModelIndex idx, deviceView->selectionModel()->selectedIndexes()) {
if (idx.data(DeviceModel::TypeRole) == DeviceModel::Detatched) {
forgetDevice->setEnabled(true);
return;
}
}
forgetDevice->setEnabled(false);
}
void
DeviceAutomounterKCM::forgetSelectedDevices()
{
QItemSelectionModel* selected = deviceView->selectionModel();
int offset = 0;
while(selected->selectedIndexes().size()>0 && selected->selectedIndexes().size() > offset) {
if (selected->selectedIndexes()[offset].data(DeviceModel::TypeRole) == DeviceModel::Attached) {
offset++;
} else {
m_devices->forgetDevice(selected->selectedIndexes()[offset].data(DeviceModel::UdiRole).toString());
}
}
changed();
}
void DeviceAutomounterKCM::emitChanged()
{
changed();
}
void DeviceAutomounterKCM::enabledChanged()
{
if (automountEnabled->checkState() == Qt::Unchecked) {
automountOnLogin->setEnabled(false);
automountOnPlugin->setEnabled(false);
automountUnknownDevices->setEnabled(false);
deviceView->setEnabled(false);
} else {
automountOnLogin->setEnabled(true);
automountOnPlugin->setEnabled(true);
automountUnknownDevices->setEnabled(true);
deviceView->setEnabled(true);
}
}
void DeviceAutomounterKCM::load()
{
if (AutomounterSettings::automountEnabled()) {
automountEnabled->setCheckState(Qt::Checked);
} else {
automountEnabled->setCheckState(Qt::Unchecked);
}
if (AutomounterSettings::automountUnknownDevices()) {
automountUnknownDevices->setCheckState(Qt::Checked);
} else {
automountUnknownDevices->setCheckState(Qt::Unchecked);
}
if (AutomounterSettings::automountOnLogin()) {
automountOnLogin->setCheckState(Qt::Checked);
} else {
automountOnLogin->setCheckState(Qt::Unchecked);
}
if (AutomounterSettings::automountOnPlugin()) {
automountOnPlugin->setCheckState(Qt::Checked);
} else {
automountOnPlugin->setCheckState(Qt::Unchecked);
}
m_devices->reload();
enabledChanged();
loadLayout();
}
void DeviceAutomounterKCM::save()
{
saveLayout();
if (this->automountEnabled->checkState() == Qt::Checked) {
AutomounterSettings::setAutomountEnabled(true);
} else {
AutomounterSettings::setAutomountEnabled(false);
}
if (this->automountUnknownDevices->checkState() == Qt::Checked) {
AutomounterSettings::setAutomountUnknownDevices(true);
} else {
AutomounterSettings::setAutomountUnknownDevices(false);
}
if (this->automountOnLogin->checkState() == Qt::Checked) {
AutomounterSettings::setAutomountOnLogin(true);
} else {
AutomounterSettings::setAutomountOnLogin(false);
}
if (this->automountOnPlugin->checkState() == Qt::Checked) {
AutomounterSettings::setAutomountOnPlugin(true);
} else {
AutomounterSettings::setAutomountOnPlugin(false);
}
QStringList validDevices;
for(int i = 0;i < m_devices->rowCount();i++) {
QModelIndex idx = m_devices->index(i, 0);
for(int j = 0;j < m_devices->rowCount(idx);j++) {
QModelIndex dev = m_devices->index(j, 1, idx);
QString device = dev.data(DeviceModel::UdiRole).toString();
validDevices << device;
if (dev.data(Qt::CheckStateRole).toInt() == Qt::Checked) {
AutomounterSettings::deviceSettings(device).writeEntry("ForceLoginAutomount", true);
} else {
AutomounterSettings::deviceSettings(device).writeEntry("ForceLoginAutomount", false);
}
dev = dev.sibling(j, 2);
if (dev.data(Qt::CheckStateRole).toInt() == Qt::Checked) {
AutomounterSettings::deviceSettings(device).writeEntry("ForceAttachAutomount", true);
} else {
AutomounterSettings::deviceSettings(device).writeEntry("ForceAttachAutomount", false);
}
}
}
foreach(const QString &possibleDevice, AutomounterSettings::knownDevices()) {
if (!validDevices.contains(possibleDevice)) {
AutomounterSettings::deviceSettings(possibleDevice).deleteGroup();
}
}
AutomounterSettings::self()->writeConfig();
}
DeviceAutomounterKCM::~DeviceAutomounterKCM()
{
saveLayout();
}
void DeviceAutomounterKCM::saveLayout()
{
QList<int> widths;
const int nbColumn = m_devices->columnCount();
for (int i = 0; i < nbColumn; ++i) {
widths << deviceView->columnWidth(i);
}
LayoutSettings::setHeaderWidths(widths);
//Check DeviceModel.cpp, thats where the magic row numbers come from.
LayoutSettings::setAttachedExpanded(deviceView->isExpanded(m_devices->index(0,0)));
LayoutSettings::setDetatchedExpanded(deviceView->isExpanded(m_devices->index(1,0)));
LayoutSettings::self()->writeConfig();
}
void DeviceAutomounterKCM::loadLayout()
{
LayoutSettings::self()->readConfig();
//Reset it first, just in case there isn't any layout saved for a particular column.
int nbColumn = m_devices->columnCount();
for (int i = 0; i < nbColumn; ++i) {
deviceView->resizeColumnToContents(i);
}
QList<int> widths = LayoutSettings::headerWidths();
nbColumn = m_devices->columnCount();
for(int i = 0;i<nbColumn && i<widths.size();i++) {
deviceView->setColumnWidth(i, widths[i]);
}
deviceView->setExpanded(m_devices->index(0,0), LayoutSettings::attachedExpanded());
deviceView->setExpanded(m_devices->index(1,0), LayoutSettings::detatchedExpanded());
}

View file

@ -1,54 +0,0 @@
/**************************************************************************
* Copyright (C) 2009-2010 Trever Fischer <tdfischer@fedoraproject.org> *
* *
* 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 . *
***************************************************************************/
#ifndef DEVICEAUTOMOUNTERKCM_H
#define DEVICEAUTOMOUNTERKCM_H
#include <KCModule>
#include <QStandardItemModel>
#include <QStandardItem>
#include "ui_DeviceAutomounterKCM.h"
class DeviceModel;
class DeviceAutomounterKCM : public KCModule, public Ui::DeviceAutomounterKCM
{
Q_OBJECT
public:
explicit DeviceAutomounterKCM(QWidget *parent = 0, const QVariantList &args = QVariantList());
virtual ~DeviceAutomounterKCM();
public slots:
void load();
void save();
private slots:
void emitChanged();
void enabledChanged();
void updateForgetDeviceButton();
void forgetSelectedDevices();
private:
DeviceModel* m_devices;
void saveLayout();
void loadLayout();
};
#endif

View file

@ -1,149 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DeviceAutomounterKCM</class>
<widget class="QWidget" name="DeviceAutomounterKCM">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>615</width>
<height>380</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0" colspan="3">
<widget class="QCheckBox" name="automountEnabled">
<property name="whatsThis">
<string>When this is unchecked, no device automounting of any kind will happen, regardless of anything selected in the &quot;Device Overrides&quot; section.</string>
</property>
<property name="text">
<string>Enable automatic mounting of removable media</string>
</property>
</widget>
</item>
<item row="1" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>22</width>
<height>76</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QCheckBox" name="automountUnknownDevices">
<property name="whatsThis">
<string>When this is checked, only remembered devices will be automatically mounted. A device is 'remembered' if it has ever been mounted before. For instance, plugging in a USB media player to charge is not sufficient to 'remember' it - if the files are not accessed, it will not be automatically mounted the next time it is seen. Once they have been accessed, however, the device's contents will be automatically made available to the system.</string>
</property>
<property name="text">
<string>Only automatically mount removable media that has been manually mounted before</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="automountOnLogin">
<property name="whatsThis">
<string>If any removable storage devices are connected to your system when you login to your desktop, their contents will automatically be made available to your system for other programs to read.</string>
</property>
<property name="text">
<string>Mount all removable media at login</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="automountOnPlugin">
<property name="whatsThis">
<string>When this is checked, the contents of any storage device will automatically be made available to the system when it is plugged in or attached.</string>
</property>
<property name="text">
<string>Automatically mount removable media when attached</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="2">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="0" colspan="3">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Device Overrides</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QTreeView" name="deviceView">
<property name="whatsThis">
<string>This list contains the storage devices known to the system. If &quot;Automount on Login&quot; is checked, the device will be automatically mounted even though &quot;Mount all removable media at login&quot; is unchecked. The same applies for &quot;Automount on Attach&quot;.
If &quot;Enable automatic mounting of removable media&quot; is unchecked, the overrides do not apply and no devices will be automatically mounted.</string>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
<property name="rootIsDecorated">
<bool>true</bool>
</property>
<property name="itemsExpandable">
<bool>true</bool>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<property name="animated">
<bool>true</bool>
</property>
<property name="allColumnsShowFocus">
<bool>true</bool>
</property>
<property name="expandsOnDoubleClick">
<bool>false</bool>
</property>
<attribute name="headerShowSortIndicator" stdset="0">
<bool>true</bool>
</attribute>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="forgetDevice">
<property name="whatsThis">
<string>Clicking this button causes the selected devices to be 'forgotten'. This is only useful if &quot;Only automatically mount removable media that has been manually mounted before&quot; is checked. Once a device is forgotten and the system is set to only automatically mount familiar devices, the device will not be automatically mounted.</string>
</property>
<property name="text">
<string>Forget Device</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<connections/>
</ui>

View file

@ -1,321 +0,0 @@
#include "DeviceModel.h"
#include <KLocalizedString>
#include <KIcon>
#include <KDebug>
#include <Solid/DeviceNotifier>
#include <Solid/Device>
#include <Solid/StorageVolume>
#include "AutomounterSettings.h"
DeviceModel::DeviceModel(QObject *parent)
: QAbstractItemModel(parent)
{
reload();
connect(
Solid::DeviceNotifier::instance(), SIGNAL(deviceAdded(const QString)),
this, SLOT(deviceAttached(const QString))
);
connect(
Solid::DeviceNotifier::instance(), SIGNAL(deviceRemoved(const QString)),
this, SLOT(deviceRemoved(const QString))
);
}
DeviceModel::~DeviceModel()
{
}
void DeviceModel::forgetDevice(const QString &udi)
{
if (m_disconnected.contains(udi)) {
beginRemoveRows(index(1, 0), m_disconnected.indexOf(udi), m_disconnected.indexOf(udi));
m_disconnected.removeOne(udi);
endRemoveRows();
} else if (m_attached.contains(udi)) {
beginRemoveRows(index(0, 0), m_attached.indexOf(udi), m_attached.indexOf(udi));
m_attached.removeOne(udi);
endRemoveRows();
}
m_loginForced.remove(udi);
m_attachedForced.remove(udi);
}
QVariant DeviceModel::headerData(int section, Qt::Orientation orientation, int role) const
{
if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
switch(section) {
case 0:
return i18n("Device");
case 1:
return i18n("Automount on Login");
case 2:
return i18n("Automount on Attach");
}
}
return QVariant();
}
void DeviceModel::deviceAttached(const QString &udi)
{
Solid::Device dev(udi);
if (dev.is<Solid::StorageVolume>()) {
if (m_disconnected.contains(udi)) {
emit layoutAboutToBeChanged();
beginRemoveRows(index(1, 0), m_disconnected.indexOf(udi), m_disconnected.indexOf(udi));
m_disconnected.removeOne(udi);
endRemoveRows();
emit layoutChanged();
}
addNewDevice(udi);
}
}
void DeviceModel::deviceRemoved(const QString &udi)
{
if (m_attached.contains(udi)) {
emit layoutAboutToBeChanged();
beginRemoveRows(index(0, 0), m_attached.indexOf(udi), m_attached.indexOf(udi));
m_attached.removeOne(udi);
endRemoveRows();
emit layoutChanged();
addNewDevice(udi);
}
}
void DeviceModel::addNewDevice(const QString &udi)
{
AutomounterSettings::self()->readConfig();
if (!m_loginForced.contains(udi)) {
m_loginForced[udi] = AutomounterSettings::deviceAutomountIsForced(udi, AutomounterSettings::Login);
}
if (!m_attachedForced.contains(udi)) {
m_loginForced[udi] = AutomounterSettings::deviceAutomountIsForced(udi, AutomounterSettings::Attach);
}
emit layoutAboutToBeChanged();
Solid::Device dev(udi);
if (dev.isValid()) {
beginInsertRows(index(0, 0), m_attached.size(), m_attached.size()+1);
m_attached << udi;
kDebug() << "Adding attached device" << udi;
} else {
beginInsertRows(index(1, 0), m_disconnected.size(), m_disconnected.size()+1);
m_disconnected << udi;
kDebug() << "Adding disconnected device" << udi;
}
endInsertRows();
emit layoutChanged();
}
void DeviceModel::reload()
{
beginResetModel();
m_loginForced.clear();
m_attachedForced.clear();
m_attached.clear();
m_disconnected.clear();
foreach(const QString &dev, AutomounterSettings::knownDevices()) {
addNewDevice(dev);
}
foreach(const QString &udi, m_loginForced.keys()) {
m_loginForced[udi] = AutomounterSettings::deviceAutomountIsForced(udi, AutomounterSettings::Login);
m_attachedForced[udi] = AutomounterSettings::deviceAutomountIsForced(udi, AutomounterSettings::Attach);
}
endResetModel();
}
QModelIndex DeviceModel::index(int row, int column, const QModelIndex &parent) const
{
if (parent.isValid()) {
if (parent.column() > 0)
return QModelIndex();
if (parent.row() == 0) {
if (row >= 0 && row < m_attached.size() && column >= 0 && column <= 2) {
return createIndex(row, column, 0);
}
} else if (parent.row() == 1) {
if (row >= 0 && row < m_disconnected.size() && column >= 0 && column <= 2) {
return createIndex(row, column, 1);
}
}
}
if ((row == 0 || row == 1) && column >= 0 && column <= 2) {
return createIndex(row, column, 3);
}
return QModelIndex();
}
QModelIndex DeviceModel::parent(const QModelIndex &index) const
{
if (index.isValid()) {
if (index.internalId() == 3) {
return QModelIndex();
}
return createIndex(index.internalId(), 0, 3);
}
return QModelIndex();
}
Qt::ItemFlags DeviceModel::flags(const QModelIndex &index) const
{
if (index.isValid()) {
if (index.parent().isValid()) {
if (index.column() > 0) {
return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable;
} else if (index.column() == 0) {
return Qt::ItemIsSelectable | Qt::ItemIsEnabled;
}
}
return Qt::ItemIsEnabled;
}
return Qt::NoItemFlags;
}
bool
DeviceModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
if (index.isValid() && role == Qt::CheckStateRole && index.column() > 0) {
QString udi = index.data(Qt::UserRole).toString();
switch(index.column()) {
case 1:
m_loginForced[udi] = (value.toInt() == Qt::Checked) ? true : false;
break;
case 2:
m_attachedForced[udi] = (value.toInt() == Qt::Checked) ? true : false;
break;
}
emit dataChanged(index, index);
return true;
}
return false;
}
QVariant
DeviceModel::data(const QModelIndex &index, int role) const
{
if (index.isValid() && index.parent().isValid()) {
if (index.parent().row() == 0) {
if (role == TypeRole) {
return Attached;
}
QString udi = m_attached[index.row()];
Solid::Device dev(udi);
if (role == Qt::UserRole) {
return udi;
}
if (index.column() == 0) {
switch(role) {
case Qt::DisplayRole: {
return dev.description();
}
case Qt::ToolTipRole: {
return i18n("UDI: %1", udi);
}
case Qt::DecorationRole: {
return KIcon(dev.icon());
}
}
} else if (index.column() == 1) {
switch(role) {
case Qt::CheckStateRole: {
return m_loginForced[udi] ? Qt::Checked : Qt::Unchecked;
}
case Qt::ToolTipRole: {
if (m_loginForced[udi] || AutomounterSettings::shouldAutomountDevice(udi, AutomounterSettings::Login)) {
return i18n("This device will be automatically mounted at login.");
}
return i18n("This device will not be automatically mounted at login.");
}
}
} else if (index.column() == 2) {
switch(role) {
case Qt::CheckStateRole: {
return m_attachedForced[udi] ? Qt::Checked : Qt::Unchecked;
}
case Qt::ToolTipRole: {
if (m_attachedForced[udi] || AutomounterSettings::shouldAutomountDevice(udi, AutomounterSettings::Attach)) {
return i18n("This device will be automatically mounted when attached.");
}
return i18n("This device will not be automatically mounted when attached.");
}
}
}
} else if (index.parent().row() == 1) {
if (role == TypeRole) {
return Detatched;
}
QString udi = m_disconnected[index.row()];
if (role == Qt::UserRole) {
return udi;
}
if (index.column() == 0) {
switch(role) {
case Qt::DisplayRole: {
return AutomounterSettings::getDeviceName(udi);
}
case Qt::ToolTipRole: {
return i18n("UDI: %1", udi);
}
case Qt::DecorationRole: {
return KIcon(AutomounterSettings::getDeviceIcon(udi));
}
}
} else if (index.column() == 1) {
switch(role) {
case Qt::CheckStateRole: {
return m_loginForced[udi] ? Qt::Checked : Qt::Unchecked;
}
case Qt::ToolTipRole: {
if (m_loginForced[udi] || AutomounterSettings::shouldAutomountDevice(udi, AutomounterSettings::Login)) {
return i18n("This device will be automatically mounted at login.");
}
return i18n("This device will not be automatically mounted at login.");
}
}
} else if (index.column() == 2) {
switch(role) {
case Qt::CheckStateRole: {
return m_attachedForced[udi] ? Qt::Checked : Qt::Unchecked;
}
case Qt::ToolTipRole: {
if (m_attachedForced[udi] || AutomounterSettings::shouldAutomountDevice(udi, AutomounterSettings::Attach)) {
return i18n("This device will be automatically mounted when attached.");
}
return i18n("This device will not be automatically mounted when attached.");
}
}
}
}
} else if (index.isValid()) {
if (role == Qt::DisplayRole && index.column() == 0) {
if (index.row() == 0) {
return i18n("Attached Devices");
} else if (index.row() == 1) {
return i18n("Disconnected Devices");
}
}
}
return QVariant();
}
int DeviceModel::rowCount(const QModelIndex &parent) const
{
if (parent.isValid()) {
if (parent.internalId() < 3 || parent.column() > 0) {
return 0;
}
if (parent.row() == 0) {
return m_attached.size();
}
return m_disconnected.size();
}
return 2;
}
int DeviceModel::columnCount(const QModelIndex &parent) const
{
Q_UNUSED(parent);
return 3;
}

View file

@ -1,51 +0,0 @@
#ifndef DEVICEMODEL_H
#define DEVICEMODEL_H
#include <QAbstractItemModel>
#include <QVariant>
#include <QList>
#include <QHash>
class DeviceModel : public QAbstractItemModel
{
Q_OBJECT
public:
enum DeviceType {
Attached,
Detatched
};
enum {
UdiRole = Qt::UserRole,
TypeRole
};
DeviceModel(QObject* parent = 0);
~DeviceModel();
Qt::ItemFlags flags(const QModelIndex &index) const;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
int rowCount(const QModelIndex &parent = QModelIndex()) const;
int columnCount(const QModelIndex &parent = QModelIndex()) const;
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
QModelIndex parent(const QModelIndex &index) const;
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
public slots:
void forgetDevice(const QString &udi);
void reload();
private slots:
void deviceAttached(const QString &udi);
void deviceRemoved(const QString &udi);
private:
void addNewDevice(const QString &udi);
QList<QString> m_attached;
QList<QString> m_disconnected;
QHash<QString, bool> m_loginForced;
QHash<QString, bool> m_attachedForced;
};
#endif

View file

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE kcfg SYSTEM "http://www.kde.org/standards/kcfg/1.0/kcfg.dtd">
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0/kcfg.xsd">
<kcfgfile name="device_automounter_kcmrc"/>
<group name="Layout">
<entry name="HeaderWidths" type="IntList"/>
<entry name="AttachedExpanded" type="Bool">
<default>true</default>
</entry>
<entry name="DetatchedExpanded" type="Bool">
<default>false</default>
</entry>
</group>
</kcfg>

View file

@ -1,4 +0,0 @@
ClassName=LayoutSettings
File=LayoutSettings.kcfg
Mutators=true
Singleton=true

View file

@ -1,3 +0,0 @@
#! /bin/sh
$EXTRACTRC *.ui *.kcfg >> rc.cpp
$XGETTEXT *.cpp -o $podir/kcm_device_automounter.pot

View file

@ -1,212 +0,0 @@
[Desktop Entry]
Exec=kcmshell4 device_automounter_kcm
Icon=drive-removable-media
Type=Service
X-KDE-ServiceTypes=KCModule
X-KDE-Library=kcm_device_automounter
X-KDE-ParentApp=kcontrol
X-KDE-System-Settings-Parent-Category=hardware
X-KDE-Keywords=Mount,Removable,Devices,Automatic
X-KDE-Keywords[ar]=ضم,قابل للإزالة,أجهزة,تلقائي
X-KDE-Keywords[ast]=Mount,Removable,Devices,Automatic
X-KDE-Keywords[bg]=Mount,Removable,Devices,Automatic,Монтиране,Устройства,Автоматично
X-KDE-Keywords[bn]=Mount,Removable,Devices,Automatic
X-KDE-Keywords[bs]=Mount,Removable,Devices,Automatic,montiranje,uklonjivi,uređaji,automatski
X-KDE-Keywords[ca]=Muntatge,Extraïble,Dispositius,Automàtic
X-KDE-Keywords[ca@valencia]=Muntatge,Extraïble,Dispositius,Automàtic
X-KDE-Keywords[cs]=Připojení,Odpojitelné,Zařízení,Automatické
X-KDE-Keywords[da]=Montering,flytbare,enheder,automatisk
X-KDE-Keywords[de]=Automatische Wechselmedieneinbindung,Wechselmedien,Speichermedien
X-KDE-Keywords[el]=Προσάρτηση,αφαιρούμενες,συσκευές,αυτόματη
X-KDE-Keywords[en_GB]=Mount,Removable,Devices,Automatic
X-KDE-Keywords[eo]=Munti,Demeteblaj,Aparatoj,Aŭtomate
X-KDE-Keywords[es]=Montar,Extraíble,Dispositivos,Automático
X-KDE-Keywords[et]=Eemaldatavad seadmed,seadmed,automaatne,ühendamine
X-KDE-Keywords[eu]=Muntatu,Aldagarria,Gailuak,Automatikoa
X-KDE-Keywords[fa]=Mount,Removable,Devices,Automatic
X-KDE-Keywords[fi]=Liitä,Liittäminen,Irrotettava,Laitteet,Automaattinen
X-KDE-Keywords[fr]=Attacher, amovible, périphériques, automatique
X-KDE-Keywords[ga]=Feistigh,Inbhainte,Gléasanna,Uathoibríoch
X-KDE-Keywords[gl]=Montar,Extraíbel,Dispositivo,Automático
X-KDE-Keywords[gu]=, ,,
X-KDE-Keywords[he]=Mount,Removable,Devices,Automatic,מעגן,אוטומטית,חיבור,נייד
X-KDE-Keywords[hi]=Mount,Removable,Devices,Automatic
X-KDE-Keywords[hu]=Csatolás,Eltávolítható,Eszközök,Automatikus
X-KDE-Keywords[ia]=Montar,Removibile,Dispositivos,Automatic
X-KDE-Keywords[id]=Kait,Dapat Dilepas,Divais,Otomatis
X-KDE-Keywords[is]=Tengja,Fjarlægjanleg,Tæki,Sjálfvirk
X-KDE-Keywords[it]=Montaggio,removibile,dispositivo,automatico
X-KDE-Keywords[ja]=Mount,Removable,Devices,Automatic
X-KDE-Keywords[kk]=Mount,Removable,Devices,Automatic
X-KDE-Keywords[km]=
X-KDE-Keywords[ko]=Mount,Removable,Devices,Automatic,,,,
X-KDE-Keywords[lt]=Prijungti,Keičiamieji,Įrenginiai,Automatiškai
X-KDE-Keywords[lv]=Montēt,noņemams,ierīces,automātiski
X-KDE-Keywords[mr]=, , , ि
X-KDE-Keywords[nb]=Monter,Flyttbare,Enheter,Automatisk
X-KDE-Keywords[nds]=Inhangen,tuuschbor,Reedschappen,automaatsch
X-KDE-Keywords[nl]=Aankoppelen,verwijderbaar,apparaten,automatisch
X-KDE-Keywords[nn]=Montering,Flyttbar,Minnepinne,Einingar,Automatisk
X-KDE-Keywords[pa]=,,,ਿ
X-KDE-Keywords[pl]=Montowanie,Wymienne,Urządzenia,Automatycznie
X-KDE-Keywords[pt]=Montagem,Removível,Automática,Dispositivos
X-KDE-Keywords[pt_BR]=Montagem,Removível,Automática,Dispositivos
X-KDE-Keywords[ro]=Montare,Amoviabil,Dispozitive,Automat
X-KDE-Keywords[ru]=Mount,Removable,Devices,Automatic,подключение,внешние,носители,автоматическое,переносные,съёмные,съемные,устройства,монтирование
X-KDE-Keywords[sk]=Pripojiť,Vymeniteľný,Zariadenia,Automaticky
X-KDE-Keywords[sl]=priklapljanje,priklop,odstranljivo,odstranljive,naprave,samodejno,avtomatično
X-KDE-Keywords[sr]=Mount,Removable,Devices,Automatic,монтирање,монтирна,уклоњив,уређај,аутоматски
X-KDE-Keywords[sr@ijekavian]=Mount,Removable,Devices,Automatic,монтирање,монтирна,уклоњив,уређај,аутоматски
X-KDE-Keywords[sr@ijekavianlatin]=Mount,Removable,Devices,Automatic,montiranje,montirna,uklonjiv,uređaj,automatski
X-KDE-Keywords[sr@latin]=Mount,Removable,Devices,Automatic,montiranje,montirna,uklonjiv,uređaj,automatski
X-KDE-Keywords[sv]=Montera,Flyttbar,Enheter,Automatisk
X-KDE-Keywords[tg]=Васлкунӣ,Ҷудошаванда,Дастгоҳҳо,Худкор
X-KDE-Keywords[tr]=Bağla,Çıkarılabilir,Aygıtlar,Otomatik
X-KDE-Keywords[ug]=ئېگەرلەش، يۆتكىلىشچان، ئۈسكۈنىلەر، ئاپتوماتىك
X-KDE-Keywords[uk]=Mount;Removable;Devices;Automatic;монтування;портативний;змінний;пристрій;пристрої;автоматично;автоматичне
X-KDE-Keywords[vi]=Gn,tháo g đưc,thiết b,t đng,Mount,Removable,Devices,Automatic
X-KDE-Keywords[wa]=Monter,Oiståve,bodjåve,Éndjins,Otomatike
X-KDE-Keywords[x-test]=xxMount,Removable,Devices,Automaticxx
X-KDE-Keywords[zh_CN]=Mount,Removable,Devices,Automatic,,,,
X-KDE-Keywords[zh_TW]=Mount,Removable,Devices,Automatic
X-DocPath=kcontrol/solid-device-automounter/index.html
Name=Removable Devices
Name[ar]=أجهزة قابلة للإزالة
Name[ast]=Preseos estrayibles
Name[bg]=Преносими устройства
Name[bn]= ি
Name[bs]=Uklonjivi uređaji
Name[ca]=Dispositius extraïbles
Name[ca@valencia]=Dispositius extraïbles
Name[cs]=Odpojitelná zařízení
Name[csb]=Przenosné ùrządzenia
Name[da]=Flytbare enheder
Name[de]=Wechselmedien
Name[el]=Αφαιρούμενες συσκευές
Name[en_GB]=Removable Devices
Name[eo]=Demeteblaj aparatoj
Name[es]=Dispositivos extraíbles
Name[et]=Eemaldatavad seadmed
Name[eu]=Gailu aldagarriak
Name[fa]=دستگاههای جداشدنی
Name[fi]=Irrotettavat laitteet
Name[fr]=Périphériques amovibles
Name[fy]=Utnimbere apparaten
Name[ga]=Gléasanna Inbhainte
Name[gl]=Dispositivos extraíbeis
Name[gu]=
Name[he]=התקנים נשלפים
Name[hi]=
Name[hr]=Uklonjivi uređaji
Name[hu]=Cserélhető eszközök
Name[ia]=Dispositivos removibile
Name[id]=Divais Dapat Dilepaskan
Name[is]=Útskiptanleg tæki
Name[it]=Dispositivi rimovibili
Name[ja]=
Name[kk]=Ауыстырмалы құрылғылар
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Keičiamieji įrenginiai
Name[lv]=Noņemamās iekārtas
Name[mk]=Подвижни уреди
Name[ml]=
Name[mr]=
Name[nb]=Flyttbar
Name[nds]=Tuuschbor Reedschappen
Name[nl]=Verwijderbare apparaten
Name[nn]=Flyttbare einingar
Name[pa]=
Name[pl]=Urządzenia wymienne
Name[pt]=Dispositivos Removíveis
Name[pt_BR]=Dispositivos removíveis
Name[ro]=Dispozitive amovibile
Name[ru]=Внешние носители
Name[si]=
Name[sk]=Vymeniteľné zariadenia
Name[sl]=Odstranljive naprave
Name[sr]=Уклоњиви уређаји
Name[sr@ijekavian]=Уклоњиви уређаји
Name[sr@ijekavianlatin]=Uklonjivi uređaji
Name[sr@latin]=Uklonjivi uređaji
Name[sv]=Flyttbara enheter
Name[tg]=Дастгоҳҳои ҷудошаванда
Name[th]=/
Name[tr]=Çıkarılabilir Aygıtlar
Name[ug]=چىقىرىۋېتىشكە بولىدىغان ئۈسكۈنىلەر
Name[uk]=Портативні пристрої
Name[vi]=Thiết b tháo g đưc
Name[wa]=Éndjins bodjåves
Name[x-test]=xxRemovable Devicesxx
Name[zh_CN]=
Name[zh_TW]=
Comment=Configure automatic handling of removable storage media
Comment[ar]=اضبط المعالجة التلقائية لوسائط التخزين القابلة للإزالة
Comment[ast]=Configurar la xestión automática de medios d'atroxamientu estrayibles
Comment[bg]=Настройки на автоматични действия за преносими устройства за съхранение на данни
Comment[bs]=Podešavanje automatskog rukovanja uklonjivim skladišnim medijumima
Comment[ca]=Configura la gestió automàtica dels suports d'emmagatzematge extraïbles
Comment[ca@valencia]=Configura la gestió automàtica dels suports d'emmagatzematge extraïbles
Comment[cs]=Nastavit automatické zacházení s odpojitelnými médii
Comment[csb]=Ùsôdzanié aùtomamtny robòtë z przenosnyma mediama
Comment[da]=Indstil automatisk håndtering af flytbare lagringsmedier
Comment[de]=Automatischen Umgang mit Wechselmedien einrichten
Comment[el]=Διαμόρφωση αυτόματης διαχείρισης των αφαιρούμενων μέσων αποθήκευσης
Comment[en_GB]=Configure automatic handling of removable storage media
Comment[eo]=Agordi aŭtomatan traktadon de demeteblaj datumprotiloj
Comment[es]=Configurar la gestión automática de medios de almacenamiento extraíbles
Comment[et]=Eemaldatavate andmekandjate automaatse käitlemise seadistamine
Comment[eu]=Biltegiratze-euskarri aldagarrien maneiu automatikoa konfiguratzea
Comment[fi]=Irrotettavan tallennusmedian automaattisen käsittelyn asetukset
Comment[fr]=Configure la prise en charge automatique des média amovibles de stockage
Comment[fy]=IT automatysk ôfhanneljen fan útnimbere opslach media ynstelle
Comment[ga]=Cumraigh láimhseáil uathoibríoch meán inbhainte stórála
Comment[gl]=Configura a xestión automática dos medios extraíbeis de almacenaxe
Comment[gu]= િ
Comment[he]=הגדרת תפעול אוטומטי להתקני אחסון נשלפים.
Comment[hi]= ि : ि ि
Comment[hr]=Podesi automatsko korištenje uklonjivih medija za pohranu
Comment[hu]=Cserélhető eszközök automatikus kezelésének beállítása
Comment[ia]=Il configura le tractamento automatic de media de immagazinage removibile
Comment[id]=Mengatur penanganan otomatis dari media penyimpanan dapat dilepas
Comment[is]=Stilla sjálfvirka meðhöndlun á fjarlægjanlegum geymslumiðlum
Comment[it]=Configura la gestione automatica dei supporti rimovibili
Comment[ja]=
Comment[kk]=Ауыстырмалы сақтағыш тасушылармен автоматты түрде айналысуды баптау
Comment[km]=
Comment[ko]=
Comment[lt]=Konfigūruoti automatinį keičiamųjų įrenginių tvarkymą
Comment[lv]=Konfigurēt noņemamo datu nesēju automātisku apstrādi
Comment[mk]=Го конфигурира автоматското ракување со подвижните носачи
Comment[ml]= ി ി.
Comment[mr]= िि
Comment[nb]=Sett opp automatisk håndtering av flyttbare lagringsmedium
Comment[nds]=Dat automaatsche Hanteren vun tuuschbor Spiekerreedschappen instellen
Comment[nl]=Automatische behandeling van verwijderbare opslagmedia configureren
Comment[nn]=Set opp automatisk handtering av flyttbare lagringsmedium
Comment[pa]= ਿ ਿ
Comment[pl]=Ustawienia samoczynnej obsługi urządzeń wymiennych
Comment[pt]=Configurar o tratamento automático dos dispositivos removíveis de armazenamento
Comment[pt_BR]=Configura o funcionamento automático de mídias removíveis
Comment[ro]=Configurează manipularea automată a mediilor de stocare amovibile
Comment[ru]=Настройка автоматического подключения внешних носителей информации
Comment[si]=
Comment[sk]=Nastavenie automatického zaobchádzania s vymeniteľnými médiami
Comment[sl]=Nastavi samodejno rokovanje z odstranljivimi nosilci za shranjevanje
Comment[sr]=Подешавање аутоматског руковања уклоњивим складишним медијумима
Comment[sr@ijekavian]=Подешавање аутоматског руковања уклоњивим складишним медијумима
Comment[sr@ijekavianlatin]=Podešavanje automatskog rukovanja uklonjivim skladišnim medijumima
Comment[sr@latin]=Podešavanje automatskog rukovanja uklonjivim skladišnim medijumima
Comment[sv]=Anpassa automatisk hantering av flyttbara lagringsmedia
Comment[tg]=Танзимоти коркарди худкор барои дастгоҳҳои ҷудошавандаи медиа
Comment[th]=/
Comment[tr]=Çıkarılabilir depolama ortamlarının otomatik yönetimini yapılandır
Comment[ug]=يۆتكىلىشچان ساقلاش ۋاسىتىسىنىڭ ئۆزلۈكىدىن بىر تەرەپ قىلىش سەپلىمىسى
Comment[uk]=Налаштувати автоматичну обробку портативних носіїв даних
Comment[vi]=Cu hình x lý t đng các phương tin lưu tr tháo g đưc
Comment[wa]=Apontyî l' apougnaedje otomatike di sopoirts di stocaedje di masse
Comment[x-test]=xxConfigure automatic handling of removable storage mediaxx
Comment[zh_CN]=
Comment[zh_TW]=
Categories=Qt;KDE;Filesystem;System;X-KDE-settings-components;

View file

@ -1,12 +0,0 @@
set(kded_device_automounter_SRCS DeviceAutomounter.cpp)
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
kde4_add_kcfg_files(kded_device_automounter_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/../lib/AutomounterSettingsBase.kcfgc)
kde4_add_plugin(kded_device_automounter ${device_automounter_lib_SRCS} ${kded_device_automounter_SRCS})
target_link_libraries(kded_device_automounter KDE4::kdeui KDE4::solid)
install(TARGETS kded_device_automounter DESTINATION ${KDE4_PLUGIN_INSTALL_DIR})
install(FILES device_automounter.desktop DESTINATION ${KDE4_SERVICES_INSTALL_DIR}/kded)

View file

@ -1,100 +0,0 @@
/***************************************************************************
* Copyright (C) 2009 by Trever Fischer <wm161@wm161.net> *
* *
* 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 "DeviceAutomounter.h"
#include <KPluginFactory>
#include <Solid/Device>
#include <Solid/DeviceNotifier>
#include <Solid/StorageAccess>
#include <Solid/StorageVolume>
#include <QTimer>
#include <KGlobal>
#include <KLocale>
#include <KDebug>
K_PLUGIN_FACTORY(DeviceAutomounterFactory, registerPlugin<DeviceAutomounter>();)
K_EXPORT_PLUGIN(DeviceAutomounterFactory("kded_device_automounter"))
DeviceAutomounter::DeviceAutomounter(QObject *parent, const QVariantList &args)
: KDEDModule(parent)
{
Q_UNUSED(args);
QTimer::singleShot(0, this, SLOT(init()));
}
DeviceAutomounter::~DeviceAutomounter()
{
}
void
DeviceAutomounter::init()
{
connect(Solid::DeviceNotifier::instance(), SIGNAL(deviceAdded(const QString&)), this, SLOT(deviceAdded(const QString&)));
QList<Solid::Device> volumes = Solid::Device::listFromType(Solid::DeviceInterface::StorageVolume);
foreach(Solid::Device volume, volumes) {
// sa can be 0 (e.g. for the swap partition)
if (Solid::StorageAccess *sa = volume.as<Solid::StorageAccess>())
connect(sa, SIGNAL(accessibilityChanged(bool, const QString)),
this, SLOT(deviceMountChanged(bool, const QString)));
automountDevice(volume, AutomounterSettings::Login);
}
AutomounterSettings::self()->writeConfig();
}
void
DeviceAutomounter::deviceMountChanged(bool accessible, const QString &udi)
{
AutomounterSettings::setDeviceLastSeenMounted(udi, accessible);
AutomounterSettings::self()->writeConfig();
}
void
DeviceAutomounter::automountDevice(Solid::Device &dev, AutomounterSettings::AutomountType type)
{
if (dev.is<Solid::StorageVolume>() && dev.is<Solid::StorageAccess>()) {
Solid::StorageAccess *sa = dev.as<Solid::StorageAccess>();
AutomounterSettings::setDeviceLastSeenMounted(dev.udi(), sa->isAccessible());
AutomounterSettings::saveDevice(dev);
kDebug() << "Saving as" << dev.description();
if (AutomounterSettings::shouldAutomountDevice(dev.udi(), type)) {
Solid::StorageVolume *sv = dev.as<Solid::StorageVolume>();
if (!sv->isIgnored()) {
kDebug() << "Mounting" << dev.udi();
sa->setup();
}
}
}
}
void
DeviceAutomounter::deviceAdded(const QString &udi)
{
AutomounterSettings::self()->readConfig();
Solid::Device dev(udi);
automountDevice(dev, AutomounterSettings::Attach);
AutomounterSettings::self()->writeConfig();
if (dev.is<Solid::StorageAccess>()) {
Solid::StorageAccess *sa = dev.as<Solid::StorageAccess>();
connect(sa, SIGNAL(accessibilityChanged(bool, const QString)), this, SLOT(deviceMountChanged(bool, const QString)));
}
}

View file

@ -1,40 +0,0 @@
/***************************************************************************
* Copyright (C) 2009 by Trever Fischer <wm161@wm161.net> *
* *
* 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 . *
***************************************************************************/
#ifndef DEVICEAUTOMOUNTER_H
#define DEVICEAUTOMOUNTER_H
#include <QtCore/qvariant.h>
#include <KDEDModule>
#include <Solid/Device>
#include "AutomounterSettings.h"
class DeviceAutomounter : public KDEDModule {
Q_OBJECT
public:
explicit DeviceAutomounter(QObject *parent = 0, const QVariantList &args = QVariantList());
virtual ~DeviceAutomounter();
private slots:
void init();
void deviceAdded(const QString &udi);
void deviceMountChanged(bool accessible, const QString &udi);
private:
void automountDevice(Solid::Device &dev, AutomounterSettings::AutomountType type);
};
#endif

View file

@ -1,146 +0,0 @@
[Desktop Entry]
Type=Service
X-KDE-ServiceTypes=KDEDModule
X-KDE-Kded-autoload=true
X-KDE-Kded-load-on-demand=false
X-KDE-Kded-phase=1
X-KDE-Library=device_automounter
X-KDE-DBus-ModuleName=device_automounter
Name=Removable Device Automounter
Name[ar]=المركب الآلي لأجهزة التخزين القابلة للإزالة
Name[ast]=Automontaxe de preseos estrayibles
Name[bg]=Автоматично монтиране на преносими устройства
Name[bn]= ি -
Name[bs]=Automonter uklonjivih uređaja
Name[ca]=Muntador automàtic de dispositius extraïbles
Name[ca@valencia]=Muntador automàtic de dispositius extraïbles
Name[cs]=Automatické připojování odpojitelných zařízení
Name[csb]=Aùtomatné dodôwanié przenosnych mediów
Name[da]=Automontering af flytbare enheder
Name[de]=Automatische Wechselmedieneinbindung
Name[el]=Αυτόματη προσάρτηση αφαιρούμενων συσκευών
Name[en_GB]=Removable Device Automounter
Name[eo]=Aŭtomata muntilo de demeteblaj aparatoj
Name[es]=Automontaje de dispositivos extraíbles
Name[et]=Eemaldatavate seadmete automaatne ühendaja
Name[eu]=Gailu aldagarrien muntaketa automatikoa
Name[fa]=سوارساز خوذکار دستگاههای جداشدنی
Name[fi]=Irrotettavan laitteen automaattiasentaja
Name[fr]=Auto-monteur de périphérique amovible
Name[fy]=Utnimber apparaat autokeppelder
Name[ga]=Feisteoir Uathoibríoch Do Ghléasanna Inbhainte
Name[gl]=Montador automático de dispositivos extraíbeis
Name[gu]=
Name[he]=מעגן אוטומטי של התקנים
Name[hi]= ि
Name[hr]=Automatski monter uklonjivih uređaja
Name[hu]=Automatikus cserélhetőeszköz-csatoló
Name[ia]=Removable Device Automounter (Montator automatic de Dispositivo Removibile)
Name[id]=Pengait Otomatis Divais Dapat Dilepas
Name[is]=Sjálfvirk tenging fjarlægjanlegra geymslumiðla
Name[it]=Montaggio automatico dei dispositivi rimovibili
Name[ja]=
Name[kk]=Ауыстырмалы құрылғының автоттіркегіші
Name[km]=
Name[ko]=
Name[lt]=Keičiamųjų įrenginių automatinis prijungimas
Name[lv]=Noņemamo iekārtu automontētājs
Name[mk]=Автом. монтирање на подвижните уреди
Name[ml]=
Name[mr]= ि
Name[nb]=Automatisk montering av flyttbare enheter
Name[nds]=Autom. Inhangdeenst för tuuschbor Reedschappen
Name[nl]=Automatische aankoppelaar voor verwijderbare apparaten
Name[nn]=Automontering av flyttbare einingar
Name[pa]= -
Name[pl]=Samoczynne montowanie urządzeń wymiennych
Name[pt]=Montagem Automática dos Dispositivos Removíveis
Name[pt_BR]=Montagem automática de dispositivos removíveis
Name[ro]=Montator automat de dispozitive amovibile
Name[ru]=Подключение внешних носителей
Name[si]=
Name[sk]=Automatické pripájanie vymeniteľných zariadení
Name[sl]=Samodejno priklapljanje odstranljivih naprav
Name[sr]=Аутомонтер уклоњивих уређаја
Name[sr@ijekavian]=Аутомонтер уклоњивих уређаја
Name[sr@ijekavianlatin]=Automonter uklonjivih uređaja
Name[sr@latin]=Automonter uklonjivih uređaja
Name[sv]=Automatisk montering av flyttbara enheter
Name[tg]=Худваслкунандаи дасгоҳи ҷудошаванда
Name[th]=/
Name[tr]=Otomatik Çıkarılabilir Aygıt Bağlayıcı
Name[ug]=يۆتكىلىشچان ئۈسكۈنىنى ئۆزلۈكىدىن ئېگەرلىگۈچ
Name[uk]=Автоматичне монтування портативних пристроїв
Name[vi]=Trình t đng gn thiết b tháo g đưc
Name[wa]=Oto-monteu d' éndjin bodjåve
Name[x-test]=xxRemovable Device Automounterxx
Name[zh_CN]=
Name[zh_TW]=
Comment=Automatically mounts devices as needed
Comment[ar]=وصْل الأجهزة تلقائياً عند الحاجة
Comment[ast]=Monta automáticamente preseos cuando se necesiten
Comment[bg]=Автоматично монтиране на устройства при нужда
Comment[bn]= ি ি
Comment[bs]=Automatsko montiranje uređaja po potrebi
Comment[ca]=Munta automàticament els dispositius quan es necessita
Comment[ca@valencia]=Munta automàticament els dispositius quan es necessita
Comment[cs]=Připojí automaticky zařízení podle potřeby
Comment[da]=Monterer automatisk enheder efter behov
Comment[de]=Bindet Geräte bei Bedarf automatisch ein
Comment[el]=Αυτόματη προσάρτηση συσκευών όταν χρειάζεται
Comment[en_GB]=Automatically mounts devices as needed
Comment[eo]=Ĝi aŭtomate muntas la aparatojn kiam necese
Comment[es]=Monta automáticamente dispositivos cuando es necesario
Comment[et]=Seadmete automaatne ühendamine vajaduse korral
Comment[eu]=Gailuak automatikoki muntatzen ditu behar izanez gero
Comment[fa]=درصورت نیاز دستگاهها را به صورت خودکار سوار میکند
Comment[fi]=Liittää laitteet automaattisesti tarpeen mukaan
Comment[fr]=Monte automatiquement les périphériques à la demande
Comment[ga]=Feistigh gléasanna go huathoibríoch nuair a bheidh siad de dhíth
Comment[gl]=Monta automaticamente os dispositivos cando sexa preciso
Comment[gu]=િ
Comment[he]=מעגן התקנים אוטומטית על־פי הצורך
Comment[hi]=
Comment[hr]=Automatski montira uređaje po potrebi
Comment[hu]=Eszközök automatikus csatolása amint szükséges
Comment[ia]=Il monta automaticamente le dispositivos como il necessita
Comment[id]=Secara otomatis mengaitkan divais ketika diperlukan
Comment[is]=Tengir tæki sjálfvirkt eftir þörfum inn í skráakerfi
Comment[it]=Monta automaticamente i dispositivi secondo necessità
Comment[ja]=
Comment[kk]=Құрылғыны керек кезде автоматты түрде тіркеу
Comment[km]=
Comment[kn]=ಿ ಿಿ ಿ
Comment[ko]=
Comment[lt]=Prireikus automatiškai prijungia įrenginius
Comment[lv]=Automātiski piemontē pieslēgtās ierīces
Comment[ml]=
Comment[mr]= िि ि
Comment[nb]=Monterer enheter automatisk når de trengs
Comment[nds]=Hangt bruukt Reedschappen automaatsch in.
Comment[nl]=Koppelt automatisch apparaten aan zoals nodig is
Comment[nn]=Monter einingar automatisk når dei trengst
Comment[pa]= ਿ
Comment[pl]=Samoczynnie montuje urządzenia, gdy są potrzebne
Comment[pt]=Monta automaticamente os dispositivos à medida das necessidades
Comment[pt_BR]=Monta automaticamente os dispositivos quando necessário
Comment[ro]=Montează automat dispozitivele atunci cînd este necesar
Comment[ru]=Автоматически подключает внешние носители информации
Comment[si]=
Comment[sk]=Automaticky pripojí zariadenia podľa potreby
Comment[sl]=Samodejno po potrebi priklopi naprave
Comment[sr]=Аутоматско монтирање уређаја по потреби
Comment[sr@ijekavian]=Аутоматско монтирање уређаја по потреби
Comment[sr@ijekavianlatin]=Automatsko montiranje uređaja po potrebi
Comment[sr@latin]=Automatsko montiranje uređaja po potrebi
Comment[sv]=Monterar automatiskt enheter efter behov
Comment[tg]=Аз рӯи зарурат дастгоҳҳоро ба худкор васл мекунад
Comment[th]=
Comment[tr]=Aygıtları gerektiğinde otomatik olarak bağlar
Comment[ug]=زۆرۈر بولغاندا ئۈسكۈنە ئۆزلۈكىدىن ئېگەرلىنىدۇ
Comment[uk]=Автоматичне монтування пристроїв за вимогою
Comment[vi]=T đng gn các thiết b khi cn thiết
Comment[wa]=Monte otomaticmint des éndjins come mezåjhe
Comment[x-test]=xxAutomatically mounts devices as neededxx
Comment[zh_CN]=
Comment[zh_TW]=

View file

@ -1,127 +0,0 @@
/***************************************************************************
* Copyright (C) 2009 by Trever Fischer <wm161@wm161.net> *
* *
* 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"
#include <QtCore/QDateTime>
KConfigGroup
AutomounterSettings::deviceSettings(const QString &udi)
{
return self()->config()->group("Devices").group(udi);
}
QStringList
AutomounterSettings::knownDevices()
{
return self()->config()->group("Devices").groupList();
}
bool
AutomounterSettings::deviceIsKnown(const QString &udi)
{
return self()->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)
{
/*
* First, we check the device-specific AutomountEnabled-overriding Automount value.
* If thats true, we then check AutomountEnabled. Assuming true, we check if we
* should automount known devices and if it is a known device. If neither, we check if
* we should bother restoring its 'mounted' propery.
*/
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));
kDebug() << "Processing" << udi;
kDebug() << "type:" << type;
kDebug() << "typeCondition:" << typeCondition;
kDebug() << "deviceIsKnown:" << known;
kDebug() << "automountUnknown:" << automountUnknown;
kDebug() << "AutomountEnabled:" << enabled;
kDebug() << "Automount:" << deviceAutomount;
kDebug() << "LastSeenMounted:" << lastSeenMounted;
kDebug() << "ShouldAutomount:" << shouldAutomount;
return shouldAutomount;
}
void
AutomounterSettings::setDeviceLastSeenMounted(const QString &udi, bool mounted)
{
kDebug() << "Marking" << udi << "as lastSeenMounted:" << 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");
}

View file

@ -1,47 +0,0 @@
/***************************************************************************
* Copyright (C) 2009 by Trever Fischer <wm161@wm161.net> *
* *
* 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 . *
***************************************************************************/
#ifndef AUTOMOUNTERSETTINGS_H
#define AUTOMOUNTERSETTINGS_H
#include "AutomounterSettingsBase.h"
#include <KConfigGroup>
#include <Solid/Device>
class AutomounterSettings : public AutomounterSettingsBase {
public:
enum AutomountType {
Login,
Attach
};
static KConfigGroup deviceSettings(const QString &udi);
static QStringList knownDevices();
static bool deviceIsKnown(const QString &udi);
static bool shouldAutomountDevice(const QString &udi, AutomountType type);
static void setDeviceLastSeenMounted(const QString &udi, bool mounted);
static bool deviceAutomountIsForced(const QString &udi, AutomountType type);
static QString getDeviceName(const QString &udi);
static bool getDeviceForcedAutomount(const QString &udi);
static QString getDeviceIcon(const QString &udi);
static void saveDevice(const Solid::Device &dev);
};
#endif

View file

@ -1,21 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE kcfg SYSTEM "http://www.kde.org/standards/kcfg/1.0/kcfg.dtd">
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0/kcfg.xsd">
<kcfgfile name="kded_device_automounterrc"/>
<group name="General">
<entry name="AutomountOnLogin" type="Bool">
<default>true</default>
</entry>
<entry name="AutomountOnPlugin" type="Bool">
<default>true</default>
</entry>
<entry name="AutomountUnknownDevices" type="Bool">
<default>false</default>
</entry>
<entry name="AutomountEnabled" type="Bool">
<default>false</default>
</entry>
</group>
</kcfg>

View file

@ -1,4 +0,0 @@
ClassName=AutomounterSettingsBase
File=AutomounterSettingsBase.kcfg
Mutators=true
Singleton=true

View file

@ -1,17 +0,0 @@
########### next target ###############
set(kded_solidautoeject_SRCS
solidautoeject.cpp
)
kde4_add_plugin(kded_solidautoeject ${kded_solidautoeject_SRCS})
target_link_libraries(kded_solidautoeject KDE4::solid KDE4::kdecore)
install(TARGETS kded_solidautoeject DESTINATION ${KDE4_PLUGIN_INSTALL_DIR})
########### install files ###############
install(FILES solidautoeject.desktop DESTINATION ${KDE4_SERVICES_INSTALL_DIR}/kded)

View file

@ -1,2 +0,0 @@
#!/bin/bash
$XGETTEXT *.cpp -o $podir/solidautoeject.pot

View file

@ -1,65 +0,0 @@
/* This file is part of the KDE Project
Copyright (c) 2009 Kevin Ottens <ervin@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "solidautoeject.h"
#include <kpluginfactory.h>
#include <solid/device.h>
#include <solid/devicenotifier.h>
#include <solid/opticaldrive.h>
K_PLUGIN_FACTORY(SolidAutoEjectFactory, registerPlugin<SolidAutoEject>();)
K_EXPORT_PLUGIN(SolidAutoEjectFactory("solidautoeject"))
SolidAutoEject::SolidAutoEject(QObject* parent, const QList<QVariant>&)
: KDEDModule(parent)
{
QList<Solid::Device> drives = Solid::Device::listFromQuery("IS OpticalDrive");
foreach (const Solid::Device &drive, drives) {
connectDevice(drive);
}
connect(Solid::DeviceNotifier::instance(), SIGNAL(deviceAdded(QString)),
this, SLOT(onDeviceAdded(QString)));
}
SolidAutoEject::~SolidAutoEject()
{
}
void SolidAutoEject::onDeviceAdded(const QString &udi)
{
connectDevice(Solid::Device(udi));
}
void SolidAutoEject::onEjectPressed(const QString &udi)
{
Solid::Device dev(udi);
dev.as<Solid::OpticalDrive>()->eject();
}
void SolidAutoEject::connectDevice(const Solid::Device &device)
{
if ( device.as<Solid::OpticalDrive>() ) {
connect(device.as<Solid::OpticalDrive>(), SIGNAL(ejectPressed(QString)),
this, SLOT(onEjectPressed(QString)));
}
}
#include "moc_solidautoeject.cpp"

View file

@ -1,139 +0,0 @@
[Desktop Entry]
Type=Service
X-KDE-ServiceTypes=KDEDModule
X-KDE-Library=solidautoeject
X-KDE-DBus-ModuleName=solidautoeject
X-KDE-Kded-autoload=true
Name=Drive Ejector
Name[ar]=مُخرج السوّاقات
Name[ast]=Eyector d'unidá
Name[bg]=Изваждане на устройства
Name[bs]=Izbacivač jedinica
Name[ca]=Expulsor d'unitats
Name[ca@valencia]=Expulsor d'unitats
Name[cs]=Vysunutí mechaniky
Name[da]=Udskubning af drev
Name[de]=Laufwerksauswurf
Name[el]=Οδηγός Εξαγωγέα
Name[en_GB]=Drive Ejector
Name[eo]=Elĵetilo de diskingoj
Name[es]=Eyector de unidad
Name[et]=Plaadiväljasti
Name[eu]=Unitate-egozlea
Name[fa]=باز کن دیسک گردان
Name[fi]=Aseman poistaja
Name[fr]=Éjecteur de disque
Name[ga]=Díchurthóir Tiomántáin
Name[gl]=Expulsor de unidades
Name[gu]=
Name[he]=מוציא הכוננים
Name[hi]=
Name[hr]=Izbacivač pogona
Name[hu]=Meghajtókiadó
Name[ia]=Ejector de Drive
Name[id]=Pembuka Penggerak
Name[is]=Diskaútspýting
Name[it]=Espulsore di unità
Name[ja]=
Name[kk]=Тасушысын алып-шығу
Name[km]=
Name[kn]=
Name[ko]=
Name[lt]=Laikmenų išstumiklis
Name[lv]=Disku izgrūdējs
Name[ml]=
Name[mr]=
Name[nb]=Drevutløser
Name[nds]=Schuuvlaad rutfohren
Name[nl]=Uitwerpen uit apparaat
Name[nn]=Stasjonsutløysing
Name[pa]=
Name[pl]=Wysuwanie napędów
Name[pt]=Ejecção de Unidades
Name[pt_BR]=Ejeção de unidades
Name[ro]=Ejector unitate
Name[ru]=Извлечение дисков
Name[si]=
Name[sk]=Vysunutie mechaniky
Name[sl]=Izmetalo pogona
Name[sr]=Избацивач јединица
Name[sr@ijekavian]=Избацивач јединица
Name[sr@ijekavianlatin]=Izbacivač jedinica
Name[sr@latin]=Izbacivač jedinica
Name[sv]=Utmatning av enheter
Name[tg]=Ҷудокунандаи дастгоҳ
Name[th]=
Name[tr]=Sürücü Çıkarıcı
Name[ug]=قوزغاتقۇچ قاڭقىتقۇچ
Name[uk]=Вилучення дисків
Name[vi]=Trình đy đĩa
Name[wa]=Rexheu d' plake
Name[x-test]=xxDrive Ejectorxx
Name[zh_CN]=
Name[zh_TW]=
Comment=Automatically releases drives when their eject button is pushed
Comment[ar]=تحرر السواقات تلقائياً عنج ضغط زر الإخراج الخاص بهن
Comment[ast]=Llibera automáticamente les unidaes cuando se calque'l botón d'espulsar
Comment[bg]=Автоматично освобождаване на устройствата при натискане на бутона за изваждане
Comment[bs]=Automatsko oslobađanje jedinica kada im se prisne dugme za izbacivanje
Comment[ca]=Allibera unitats automàticament quan es prem el seu botó d'expulsió
Comment[ca@valencia]=Allibera unitats automàticament quan es prem el seu botó d'expulsió
Comment[cs]=Umožňuje automaticky uvolnit mechaniku při stisknutí tlačítka vysunutí
Comment[da]=Frigiver automatisk drev når der trykkes på deres skub ud-knap
Comment[de]=Automatisches Lösen der Laufwerkseinbindung bei Betätigung des Auswurfknopfes
Comment[el]=Αυτόματη εξαγωγή μέσων σε οδηγούς όπου πιέστηκε το πλήκτρο εξαγωγής
Comment[en_GB]=Automatically releases drives when their eject button is pushed
Comment[eo]=Ĝi aŭtomate malfermas diskingojn kiam sia elĵeta butono estas premita
Comment[es]=Libera automáticamente las unidades cuando se pulsa el botón de expulsión
Comment[et]=Võimaldab plaatidel automaatselt väljuda, kui vajutatakse väljastamisnuppu
Comment[eu]=Unitateak automatikoki askatzen ditu haien egozteko botoia sakatzen denean
Comment[fi]=Vapauttaa asemat automaattisesti kun niiden poistopainiketta painetaan
Comment[fr]=Libère automatiquement les disques lors d'un appui sur leur bouton d'éjection
Comment[ga]=Ceadaíonn sé seo tiomántán a scaoileadh nuair a bhrúitear a chnaipe díchurtha
Comment[gl]=Permite expulsar automaticamente as unidades cando se lles preme o botón de abrir
Comment[gu]=
Comment[he]=מוציא אוטומטית כוננים בלחיצה על לחצן ההוצאה שלהם
Comment[hi]= ि ि
Comment[hr]=Automatski oslobađa pogone nakon pritiska na njihovu tipku za izbacivanje
Comment[hu]=Automatikusan kiadja a meghajtókat a kiadógomb megnyomásakor
Comment[ia]=Il lassa fora automaticamente le drives quando lor button de expeller es pressate.
Comment[id]=Secara otomatis mengeluarkan penggerak ketika tombol eject ditekan
Comment[is]=Aftengir diskadrif sjálfvirkt þegar ýtt er á útspýtingarhnapp þeirra
Comment[it]=Rilascia automaticamente le unità quando ne viene premuto il pulsante di espulsione
Comment[ja]=
Comment[kk]=Алып-шығару батырмасын басқанда құрылғыны автоматты түрде босату
Comment[km]=
Comment[kn]= ಿ ಿ ಿಿ ಿಿ
Comment[ko]=
Comment[lt]=Automatiškai atjungia įrenginius paspaudus išmetimo mygtuką
Comment[lv]=Ļauj automātiski izgrūst diskus pēc izgrūšanas pogas nospiešanas
Comment[ml]=
Comment[mr]= िि
Comment[nb]=Utløser drev automatisk når utløserknappen trykkes
Comment[nds]=Gifft Loopwarken automaatsch free, wenn Een den Rutfohr-Knoop drückt.
Comment[nl]=Geeft automatisch apparaten vrij als hun uitwerpknop wordt ingedrukt
Comment[nn]=Løyser automatisk ut stasjonar når det vert trykt på utløysingsknappen deira
Comment[pa]= ਿ ਿ ਿ
Comment[pl]=Pozwala na samoczynne wysunięcie napędów po naciśnięciu przycisku
Comment[pt]=Liberta automaticamente as unidades quando se carrega no botão de ejecção
Comment[pt_BR]=Liberar automaticamente as unidades quando o botão de ejeção for pressionado
Comment[ro]=Eliberează automat unitățile la apăsarea butonului de deschidere al acestora
Comment[ru]=Выбрасывает сменный носитель из привода при нажатии кнопки извлечения
Comment[si]=
Comment[sk]=Umožňuje automaticky uvoľniť mechaniku pri stlačení tlačidla vysunúť
Comment[sl]=Samodejno odklopi pogon, ko se na njem pritisne gumb za izmet
Comment[sr]=Аутоматско ослобађање јединица када им се притисне дугме за избацивање
Comment[sr@ijekavian]=Аутоматско ослобађање јединица када им се притисне дугме за избацивање
Comment[sr@ijekavianlatin]=Automatsko oslobađanje jedinica kada im se pritisne dugme za izbacivanje
Comment[sr@latin]=Automatsko oslobađanje jedinica kada im se pritisne dugme za izbacivanje
Comment[sv]=Frisläpper automatiskt enheter vid tryck på deras utmatningsknapp
Comment[tg]=Дастгоҳҳоро ба худкор ҷудо мекунад вақте, ки шумо тугмаҳои ҷудокунии онро зер мекунед
Comment[th]=
Comment[tr]=Çıkarma düğmesine basıldığında sürücüleri otomatik olarak ayırır
Comment[ug]=قاڭقىت توپچا بېسىلغاندا قوزغاتقۇچ مەنبەسىنى ئۆزلۈكىدىن قويۇپ بېرىدۇ
Comment[uk]=Автоматичне вилучення файли пристроїв, після натискання на них кнопки виштовхування
Comment[vi]=T đng đy đĩa khi nút m ca chúng đưc nhn
Comment[wa]=Dislaxhe otomaticmint les plakes cwand leu boton po fé rexhe est tchôkî
Comment[x-test]=xxAutomatically releases drives when their eject button is pushedxx
Comment[zh_CN]=
Comment[zh_TW]=退

View file

@ -1,46 +0,0 @@
/* This file is part of the KDE Project
Copyright (c) 2009 Kevin Ottens <ervin@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef SOLIDAUTOEJECT_H
#define SOLIDAUTOEJECT_H
#include <kdedmodule.h>
namespace Solid
{
class Device;
}
class SolidAutoEject : public KDEDModule
{
Q_OBJECT
public:
SolidAutoEject(QObject* parent, const QList<QVariant>&);
virtual ~SolidAutoEject();
private slots:
void onDeviceAdded(const QString &udi);
void onEjectPressed(const QString &udi);
private:
void connectDevice(const Solid::Device &device);
};
#endif

View file

@ -1,3 +1,5 @@
add_subdirectory(actions)
########### next target ###############
set(soliduiserver_helper_srcs
@ -11,11 +13,7 @@ target_link_libraries(soliduiserver_helper PUBLIC KDE4::kdecore)
set(kded_soliduiserver_SRCS
soliduiserver.cpp
deviceactionsdialog.cpp
deviceaction.cpp
devicenothingaction.cpp
deviceserviceaction.cpp
deviceactionsdialogview.ui
soliduidialog.cpp
)
kde4_add_plugin(kded_soliduiserver ${kded_soliduiserver_SRCS})

View file

@ -0,0 +1,4 @@
install(
FILES openinwindow.desktop
DESTINATION ${KDE4_DATA_INSTALL_DIR}/solid/actions
)

View file

@ -1,53 +0,0 @@
/* This file is part of the KDE Project
Copyright (c) 2005 Jean-Remy Falleri <jr.falleri@laposte.net>
Copyright (c) 2005-2007 Kevin Ottens <ervin@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "deviceaction.h"
#include <kglobal.h>
#include <kiconloader.h>
#include <kicontheme.h>
#include <kcomponentdata.h>
DeviceAction::DeviceAction()
{
}
DeviceAction::~DeviceAction()
{
}
void DeviceAction::setIconName(const QString &iconName)
{
m_iconName = iconName;
}
void DeviceAction::setLabel(const QString &label)
{
m_label = label;
}
QString DeviceAction::iconName() const
{
return m_iconName;
}
QString DeviceAction::label() const
{
return m_label;
}

View file

@ -1,46 +0,0 @@
/* This file is part of the KDE Project
Copyright (c) 2005 Jean-Remy Falleri <jr.falleri@laposte.net>
Copyright (c) 2005-2007 Kevin Ottens <ervin@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef DEVICEACTION_H
#define DEVICEACTION_H
#include <solid/device.h>
class DeviceAction
{
public:
DeviceAction();
virtual ~DeviceAction();
QString label() const;
QString iconName() const;
virtual QString id() const = 0;
virtual void execute(Solid::Device &device) = 0;
protected:
void setLabel(const QString &label);
void setIconName(const QString &icon);
private:
QString m_label;
QString m_iconName;
};
#endif

View file

@ -1,134 +0,0 @@
/* This file is part of the KDE Project
Copyright (c) 2005 Jean-Remy Falleri <jr.falleri@laposte.net>
Copyright (c) 2005-2007 Kevin Ottens <ervin@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "deviceactionsdialog.h"
#include <QLayout>
#include <krun.h>
#include <klocale.h>
#include <kstandarddirs.h>
#include <kio/global.h>
#include <klistwidget.h>
#include <kicon.h>
#include <QCheckBox>
#include "deviceaction.h"
#include "ui_deviceactionsdialogview.h"
DeviceActionsDialog::DeviceActionsDialog(QWidget *parent)
: KDialog(parent)
{
setModal(false);
setButtons(Ok|Cancel);
setDefaultButton(Ok);
QWidget *page = new QWidget(this);
m_view.setupUi(page);
setMainWidget(page);
updateActionsListBox();
resize(QSize(400,400).expandedTo(minimumSizeHint()));
connect(this, SIGNAL(okClicked()),
this, SLOT(slotOk()));
connect(m_view.actionsList, SIGNAL(doubleClicked(QListWidgetItem *, const QPoint &)),
this, SLOT(slotOk()));
connect(this, SIGNAL(finished()),
this, SLOT(delayedDestruct()));
}
DeviceActionsDialog::~DeviceActionsDialog()
{
}
void DeviceActionsDialog::setDevice(const Solid::Device &device)
{
m_device = device;
QString label = device.vendor();
if (!label.isEmpty()) label+=' ';
label+= device.product();
setWindowTitle(label);
m_view.iconLabel->setPixmap(KIcon(device.icon()).pixmap(64));
m_view.descriptionLabel->setText(device.vendor()+' '+device.product());
setWindowIcon(KIcon(device.icon()));
}
Solid::Device DeviceActionsDialog::device() const
{
return m_device;
}
void DeviceActionsDialog::setActions(const QList<DeviceAction*> &actions)
{
qDeleteAll(m_actions);
m_actions.clear();
m_actions = actions;
updateActionsListBox();
}
QList<DeviceAction*> DeviceActionsDialog::actions() const
{
return m_actions;
}
void DeviceActionsDialog::updateActionsListBox()
{
m_view.actionsList->clear();
foreach (DeviceAction *action, m_actions) {
QListWidgetItem *item = new QListWidgetItem(KIcon(action->iconName()),
action->label());
item->setData(Qt::UserRole, action->id());
m_view.actionsList->addItem(item);
}
if (m_view.actionsList->count()>0)
m_view.actionsList->item(0)->setSelected(true);
}
void DeviceActionsDialog::slotOk()
{
QListWidgetItem *item = m_view.actionsList->selectedItems().value(0);
if (item != 0L) {
QString id = item->data(Qt::UserRole).toString();
foreach (DeviceAction *action, m_actions) {
if (action->id()==id) {
launchAction(action);
return;
}
}
}
}
void DeviceActionsDialog::launchAction(DeviceAction *action)
{
action->execute(m_device);
accept();
}
#include "moc_deviceactionsdialog.cpp"

Some files were not shown because too many files have changed in this diff Show more