From 36fff2276be52922bd282eab08c14f6b88d6973f Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Mon, 11 Jan 2016 13:02:16 +0000 Subject: [PATCH 01/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plugins/notifications/kdeconnect_notifications_config.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/notifications/kdeconnect_notifications_config.desktop b/plugins/notifications/kdeconnect_notifications_config.desktop index 333e66477..6fd58baf2 100644 --- a/plugins/notifications/kdeconnect_notifications_config.desktop +++ b/plugins/notifications/kdeconnect_notifications_config.desktop @@ -6,7 +6,7 @@ X-KDE-Library=kdeconnect_notifications_config X-KDE-ParentComponents=kdeconnect_notifications Name=Notification synchronization plugin settings -Name[ca]=Ajustament del connector per a la sincronització de les notificacions +Name[ca]=Ajustament del connector Sincronitza les notificacions Name[ca@valencia]=Ajustament del connector per a la sincronització de les notificacions Name[en_GB]=Notification synchronisation plugin settings Name[es]=Preferencias del complemento de sincronización de notificaciones From 4b5bde48589e5e45b57d97c0a28da6d0e918a8e7 Mon Sep 17 00:00:00 2001 From: Holger Kaelberer Date: Thu, 7 Jan 2016 17:37:35 +0100 Subject: [PATCH 02/34] notifications: synchronize icons if possible and requested Configurably attach icons as payload to notification packages. By design and due to restrictions on mobile devices *only* png is sent. As KIconLoader preferably returns svg icons from iconPath() we fall back to loading from "hicolor" using KIconTheme directly. Otherwise *many* icons are dropped because of svg format. This also improves slightly the test-case to use a tweaked TestDevice to allow for inspecting sent NetworkPackage-s. REVIEW: 126666 --- plugins/notifications/CMakeLists.txt | 3 +- .../notifications/notifications_config.cpp | 6 + plugins/notifications/notifications_config.ui | 16 ++ .../notifications/notificationslistener.cpp | 27 ++- tests/CMakeLists.txt | 4 +- tests/testnotificationlistener.cpp | 199 ++++++++++++++---- 6 files changed, 213 insertions(+), 42 deletions(-) diff --git a/plugins/notifications/CMakeLists.txt b/plugins/notifications/CMakeLists.txt index 448be94d4..d74cca6b2 100644 --- a/plugins/notifications/CMakeLists.txt +++ b/plugins/notifications/CMakeLists.txt @@ -1,4 +1,4 @@ -find_package(KF5 REQUIRED COMPONENTS Notifications KCMUtils I18n) +find_package(KF5 REQUIRED COMPONENTS Notifications KCMUtils I18n IconThemes) set(kdeconnect_notifications_SRCS notification.cpp @@ -15,6 +15,7 @@ target_link_libraries(kdeconnect_notifications Qt5::DBus KF5::Notifications KF5::I18n + KF5::IconThemes ) ####################################### diff --git a/plugins/notifications/notifications_config.cpp b/plugins/notifications/notifications_config.cpp index 5086d9fca..d9532a78d 100644 --- a/plugins/notifications/notifications_config.cpp +++ b/plugins/notifications/notifications_config.cpp @@ -51,6 +51,7 @@ NotificationsConfig::NotificationsConfig(QWidget *parent, const QVariantList& ar connect(m_ui->check_persistent, SIGNAL(toggled(bool)), this, SLOT(changed())); connect(m_ui->spin_urgency, SIGNAL(editingFinished()), this, SLOT(changed())); connect(m_ui->check_body, SIGNAL(toggled(bool)), this, SLOT(changed())); + connect(m_ui->check_icons, SIGNAL(toggled(bool)), this, SLOT(changed())); connect(appModel, SIGNAL(applicationsChanged()), this, SLOT(changed())); @@ -67,6 +68,8 @@ void NotificationsConfig::defaults() KCModule::defaults(); m_ui->check_persistent->setChecked(false); m_ui->spin_urgency->setValue(0); + m_ui->check_body->setChecked(true); + m_ui->check_icons->setChecked(true); Q_EMIT changed(true); } @@ -89,6 +92,8 @@ void NotificationsConfig::load() m_ui->check_persistent->setChecked(persistent); bool body = config()->get("generalIncludeBody", true); m_ui->check_body->setChecked(body); + bool icons = config()->get("generalSynchronizeIcons", true); + m_ui->check_icons->setChecked(icons); int urgency = config()->get("generalUrgency", 0); m_ui->spin_urgency->setValue(urgency); @@ -100,6 +105,7 @@ void NotificationsConfig::save() { config()->set("generalPersistent", m_ui->check_persistent->isChecked()); config()->set("generalIncludeBody", m_ui->check_body->isChecked()); + config()->set("generalSynchronizeIcons", m_ui->check_icons->isChecked()); config()->set("generalUrgency", m_ui->spin_urgency->value()); QVariantList list; diff --git a/plugins/notifications/notifications_config.ui b/plugins/notifications/notifications_config.ui index 3f3d8a471..83b26cc02 100644 --- a/plugins/notifications/notifications_config.ui +++ b/plugins/notifications/notifications_config.ui @@ -80,6 +80,22 @@ + + + + + 50 + false + + + + Synchronize icons of notifying applications if possible? + + + Synchronize icons + + + diff --git a/plugins/notifications/notificationslistener.cpp b/plugins/notifications/notificationslistener.cpp index 22d50fb42..d21f3d733 100644 --- a/plugins/notifications/notificationslistener.cpp +++ b/plugins/notifications/notificationslistener.cpp @@ -23,6 +23,9 @@ #include #include +#include +#include + #include #include @@ -143,7 +146,7 @@ uint NotificationsListener::Notify(const QString &appName, uint replacesId, app.blacklistExpression.match(ticker).hasMatch()) return 0; - //qCDebug(KDECONNECT_PLUGIN_NOTIFICATION) << "Sending notification from" << appName << ":" < 0 ? replacesId : ++id)); np.set("appName", appName); @@ -152,6 +155,28 @@ uint NotificationsListener::Notify(const QString &appName, uint replacesId, // timeout == 0, for other notifications // clearability is pointless + if (!appIcon.isEmpty() && mPlugin->config()->get("generalSynchronizeIcons", true)) { + int size = KIconLoader::SizeEnormous; // use big size to allow for good + // quality on High-DPI mobile devices + QString iconPath = KIconLoader::global()->iconPath(appIcon, -size, true); + if (!iconPath.isEmpty()) { + if (!iconPath.endsWith(QLatin1String(".png")) && + KIconLoader::global()->theme()->name() != QLatin1String("hicolor")) { + // try falling back to hicolor theme: + KIconTheme hicolor(QStringLiteral("hicolor")); + if (hicolor.isValid()) { + iconPath = hicolor.iconPath(appIcon + ".png", size, KIconLoader::MatchBest); + //qCDebug(KDECONNECT_PLUGIN_NOTIFICATION) << "Found non-png icon in default theme trying fallback to hicolor:" << iconPath; + } + } + if (iconPath.endsWith(QLatin1String(".png"))) { + //qCDebug(KDECONNECT_PLUGIN_NOTIFICATION) << "Appending icon " << iconPath; + QSharedPointer iconFile(new QFile(iconPath)); + np.setPayload(iconFile, iconFile->size()); + } + } + } + mPlugin->sendPackage(np); return (replacesId > 0 ? replacesId : id); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 66aeb5f3f..812b4a350 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,5 +1,5 @@ find_package(Qt5 REQUIRED COMPONENTS Test) -find_package(KF5 REQUIRED COMPONENTS KIO Notifications) +find_package(KF5 REQUIRED COMPONENTS KIO Notifications IconThemes) include_directories( ${KDEConnectCore_BINARY_DIR} @@ -26,4 +26,4 @@ ecm_add_test(testnotificationlistener.cpp ../plugins/notifications/notifyingapplication.cpp ../plugins/notifications/notificationsdbusinterface.cpp TEST_NAME testnotificationlistener - LINK_LIBRARIES ${kdeconnect_libraries} Qt5::DBus KF5::Notifications) + LINK_LIBRARIES ${kdeconnect_libraries} Qt5::DBus KF5::Notifications KF5::IconThemes) diff --git a/tests/testnotificationlistener.cpp b/tests/testnotificationlistener.cpp index e1faa1c4d..b43a7d394 100644 --- a/tests/testnotificationlistener.cpp +++ b/tests/testnotificationlistener.cpp @@ -25,6 +25,8 @@ #include #include +#include + #include "core/daemon.h" #include "core/device.h" #include "core/kdeconnectplugin.h" @@ -63,6 +65,52 @@ public: } }; +// Tweaked Device for testing: +class TestDevice: public Device +{ + Q_OBJECT +private: + int sentPackages; + NetworkPackage *lastPackage; + +public: + explicit TestDevice(QObject* parent, const QString& id) + : Device (parent, id) + , sentPackages(0) + , lastPackage(nullptr) + {} + + virtual ~TestDevice() + { + delete lastPackage; + } + + int getSentPackages() const + { + return sentPackages; + } + + const NetworkPackage* getLastPackage() const + { + return lastPackage; + } + +public Q_SLOTS: + virtual bool sendPackage(NetworkPackage& np) override + { + ++sentPackages; + // copy package manually to allow for inspection (can't use copy-constructor) + delete lastPackage; + lastPackage = new NetworkPackage(np.type()); + Q_ASSERT(lastPackage); + for (QVariantMap::ConstIterator iter = np.body().constBegin(); + iter != np.body().constEnd(); iter++) + lastPackage->set(iter.key(), iter.value()); + lastPackage->setPayload(np.payload(), np.payloadSize()); + return true; + } +}; + // Tweaked NotificationsListener for testing: class TestedNotificationsListener: public NotificationsListener { @@ -112,7 +160,10 @@ void TestNotificationListener::testNotify() // QString dId("testid"); - Device *d = new Device(nullptr, dId); // not setting any parent or we will double free the dbusInterface + TestDevice *d = new TestDevice(nullptr, dId); // not setting any parent or we will double free the dbusInterface + + int proxiedNotifications = 0; + QCOMPARE(proxiedNotifications, d->getSentPackages()); plugin = new TestNotificationsPlugin(this, QVariantList({ QVariant::fromValue(d), "notifications_plugin", @@ -144,97 +195,169 @@ void TestNotificationListener::testNotify() uint replacesId = 99; uint retId; + QString appName("some-appName"); + QString body("some-body"); + QString icon("some-icon"); + QString summary("some-summary"); // regular Notify call that is synchronized ... - retId = listener->Notify("testApp", replacesId, "some-icon", "summary", "body", {}, {{}}, 0); + retId = listener->Notify(appName, replacesId, icon, summary, body, {}, {{}}, 0); // ... should return replacesId, QCOMPARE(retId, replacesId); + // ... have triggered sending a package + QCOMPARE(++proxiedNotifications, d->getSentPackages()); + // ... with our properties, + QCOMPARE(d->getLastPackage()->get("id"), replacesId); + QCOMPARE(d->getLastPackage()->get("appName"), appName); + QCOMPARE(d->getLastPackage()->get("ticker"), summary + ": " + body); + QCOMPARE(d->getLastPackage()->get("isClearable"), true); + QCOMPARE(d->getLastPackage()->hasPayload(), false); + // ... and create a new application internally that is initialized correctly: QCOMPARE(listener->getApplications().count(), 1); - QVERIFY(listener->getApplications().contains("testApp")); - QVERIFY(listener->getApplications()["testApp"].active); - QCOMPARE(listener->getApplications()["testApp"].name, QStringLiteral("testApp")); - QVERIFY(listener->getApplications()["testApp"].blacklistExpression.pattern().isEmpty()); - QCOMPARE(listener->getApplications()["testApp"].name, QStringLiteral("testApp")); - QCOMPARE(listener->getApplications()["testApp"].icon, QStringLiteral("some-icon")); + QVERIFY(listener->getApplications().contains(appName)); + QVERIFY(listener->getApplications()[appName].active); + QCOMPARE(listener->getApplications()[appName].name, appName); + QVERIFY(listener->getApplications()[appName].blacklistExpression.pattern().isEmpty()); + QCOMPARE(listener->getApplications()[appName].name, appName); + QCOMPARE(listener->getApplications()[appName].icon, icon); // another one, with other timeout and urgency values: - retId = listener->Notify("testApp2", replacesId+1, "some-icon2", "summary2", "body2", {}, {{"urgency", 2}}, 10); + QString appName2("some-appName2"); + QString body2("some-body2"); + QString icon2("some-icon2"); + QString summary2("some-summary2"); + + retId = listener->Notify(appName2, replacesId+1, icon2, summary2, body2, {}, {{"urgency", 2}}, 10); QCOMPARE(retId, replacesId+1); + QCOMPARE(++proxiedNotifications, d->getSentPackages()); + QCOMPARE(d->getLastPackage()->get("id"), replacesId+1); + QCOMPARE(d->getLastPackage()->get("appName"), appName2); + QCOMPARE(d->getLastPackage()->get("ticker"), summary2 + ": " + body2); + QCOMPARE(d->getLastPackage()->get("isClearable"), false); // timeout != 0 + QCOMPARE(d->getLastPackage()->hasPayload(), false); QCOMPARE(listener->getApplications().count(), 2); - QVERIFY(listener->getApplications().contains("testApp2")); - QVERIFY(listener->getApplications().contains("testApp")); + QVERIFY(listener->getApplications().contains(appName2)); + QVERIFY(listener->getApplications().contains(appName)); // if persistent-only is set, timeouts > 0 are not synced: plugin->config()->set("generalPersistent", true); - retId = listener->Notify("testApp", replacesId, "some-icon", "summary", "body", {}, {{}}, 1); + retId = listener->Notify(appName, replacesId, icon, summary, body, {}, {{}}, 1); QCOMPARE(retId, 0U); - retId = listener->Notify("testApp2", replacesId, "some-icon2", "summary2", "body2", {}, {{}}, 3); + QCOMPARE(proxiedNotifications, d->getSentPackages()); + retId = listener->Notify(appName2, replacesId, icon2, summary2, body2, {}, {{}}, 3); QCOMPARE(retId, 0U); + QCOMPARE(proxiedNotifications, d->getSentPackages()); // but timeout == 0 is - retId = listener->Notify("testApp", replacesId, "some-icon", "summary", "body", {}, {{}}, 0); + retId = listener->Notify(appName, replacesId, icon, summary, body, {}, {{}}, 0); QCOMPARE(retId, replacesId); + QCOMPARE(++proxiedNotifications, d->getSentPackages()); plugin->config()->set("generalPersistent", false); // if min-urgency is set, lower urgency levels are not synced: plugin->config()->set("generalUrgency", 1); - retId = listener->Notify("testApp", replacesId, "some-icon", "summary", "body", {}, {{"urgency", 0}}, 0); + retId = listener->Notify(appName, replacesId, icon, summary, body, {}, {{"urgency", 0}}, 0); QCOMPARE(retId, 0U); + QCOMPARE(proxiedNotifications, d->getSentPackages()); // equal urgency is - retId = listener->Notify("testApp", replacesId, "some-icon", "summary", "body", {}, {{"urgency", 1}}, 0); + retId = listener->Notify(appName, replacesId, icon, summary, body, {}, {{"urgency", 1}}, 0); QCOMPARE(retId, replacesId); + QCOMPARE(++proxiedNotifications, d->getSentPackages()); // higher urgency as well - retId = listener->Notify("testApp", replacesId, "some-icon", "summary", "body", {}, {{"urgency", 2}}, 0); + retId = listener->Notify(appName, replacesId, icon, summary, body, {}, {{"urgency", 2}}, 0); QCOMPARE(retId, replacesId); + QCOMPARE(++proxiedNotifications, d->getSentPackages()); plugin->config()->set("generalUrgency", 0); // notifications for a deactivated application are not synced: - QVERIFY(listener->getApplications().contains("testApp")); - listener->getApplications()["testApp"].active = false; - QVERIFY(!listener->getApplications()["testApp"].active); - retId = listener->Notify("testApp", replacesId, "some-icon", "summary", "body", {}, {{"urgency", 0}}, 0); + QVERIFY(listener->getApplications().contains(appName)); + listener->getApplications()[appName].active = false; + QVERIFY(!listener->getApplications()[appName].active); + retId = listener->Notify(appName, replacesId, icon, summary, body, {}, {{"urgency", 0}}, 0); QCOMPARE(retId, 0U); + QCOMPARE(proxiedNotifications, d->getSentPackages()); // others are still: - retId = listener->Notify("testApp2", replacesId+1, "some-icon2", "summary2", "body2", {}, {{}}, 0); + retId = listener->Notify(appName2, replacesId+1, icon2, summary2, body2, {}, {{}}, 0); QCOMPARE(retId, replacesId+1); + QCOMPARE(++proxiedNotifications, d->getSentPackages()); // back to normal: - listener->getApplications()["testApp"].active = true; - QVERIFY(listener->getApplications()["testApp"].active); - retId = listener->Notify("testApp", replacesId, "some-icon", "summary", "body", {}, {{}}, 0); + listener->getApplications()[appName].active = true; + QVERIFY(listener->getApplications()[appName].active); + retId = listener->Notify(appName, replacesId, icon, summary, body, {}, {{}}, 0); QCOMPARE(retId, replacesId); + QCOMPARE(++proxiedNotifications, d->getSentPackages()); // notifications with blacklisted subjects are not synced: - QVERIFY(listener->getApplications().contains("testApp")); - listener->getApplications()["testApp"].blacklistExpression.setPattern("black[12]|foo(bar|baz)"); - retId = listener->Notify("testApp", replacesId, "some-icon", "summary black1", "body", {}, {{}}, 0); + QVERIFY(listener->getApplications().contains(appName)); + listener->getApplications()[appName].blacklistExpression.setPattern("black[12]|foo(bar|baz)"); + retId = listener->Notify(appName, replacesId, icon, "summary black1", body, {}, {{}}, 0); QCOMPARE(retId, 0U); - retId = listener->Notify("testApp", replacesId, "some-icon", "summary foobar", "body", {}, {{}}, 0); + QCOMPARE(proxiedNotifications, d->getSentPackages()); + retId = listener->Notify(appName, replacesId, icon, "summary foobar", body, {}, {{}}, 0); QCOMPARE(retId, 0U); + QCOMPARE(proxiedNotifications, d->getSentPackages()); // other subjects are synced: - retId = listener->Notify("testApp", replacesId, "some-icon", "summary foo", "body", {}, {{}}, 0); + retId = listener->Notify(appName, replacesId, icon, "summary foo", body, {}, {{}}, 0); QCOMPARE(retId, replacesId); - retId = listener->Notify("testApp", replacesId, "some-icon", "summary black3", "body", {}, {{}}, 0); + QCOMPARE(++proxiedNotifications, d->getSentPackages()); + retId = listener->Notify(appName, replacesId, icon, "summary black3", body, {}, {{}}, 0); QCOMPARE(retId, replacesId); + QCOMPARE(++proxiedNotifications, d->getSentPackages()); // also body is checked by blacklist if requested: plugin->config()->set("generalIncludeBody", true); - retId = listener->Notify("testApp", replacesId, "some-icon", "summary", "body black1", {}, {{}}, 0); + retId = listener->Notify(appName, replacesId, icon, summary, "body black1", {}, {{}}, 0); QCOMPARE(retId, 0U); - retId = listener->Notify("testApp", replacesId, "some-icon", "summary", "body foobaz", {}, {{}}, 0); + QCOMPARE(proxiedNotifications, d->getSentPackages()); + retId = listener->Notify(appName, replacesId, icon, summary, "body foobaz", {}, {{}}, 0); QCOMPARE(retId, 0U); + QCOMPARE(proxiedNotifications, d->getSentPackages()); // body does not matter if inclusion was not requested: plugin->config()->set("generalIncludeBody", false); - retId = listener->Notify("testApp", replacesId, "some-icon", "summary", "body black1", {}, {{}}, 0); + retId = listener->Notify(appName, replacesId, icon, summary, "body black1", {}, {{}}, 0); QCOMPARE(retId, replacesId); - retId = listener->Notify("testApp", replacesId, "some-icon", "summary", "body foobaz", {}, {{}}, 0); + QCOMPARE(++proxiedNotifications, d->getSentPackages()); + // without body, also ticker value is different: + QCOMPARE(d->getLastPackage()->get("ticker"), summary); + retId = listener->Notify(appName, replacesId, icon, summary, "body foobaz", {}, {{}}, 0); QCOMPARE(retId, replacesId); + QCOMPARE(++proxiedNotifications, d->getSentPackages()); // back to normal: - listener->getApplications()["testApp"].blacklistExpression.setPattern(""); + listener->getApplications()[appName].blacklistExpression.setPattern(""); plugin->config()->set("generalIncludeBody", true); - retId = listener->Notify("testApp", replacesId, "some-icon", "summary", "body", {}, {{}}, 0); + retId = listener->Notify(appName, replacesId, icon, summary, body, {}, {{}}, 0); QCOMPARE(retId, replacesId); - retId = listener->Notify("testApp2", replacesId, "some-icon2", "summary2", "body2", {}, {{}}, 0); + QCOMPARE(++proxiedNotifications, d->getSentPackages()); + retId = listener->Notify(appName2, replacesId, icon2, summary2, body2, {}, {{}}, 0); QCOMPARE(retId, replacesId); + QCOMPARE(++proxiedNotifications, d->getSentPackages()); + + // icon synchronization: + int count = 0; + for (const auto& iconName: KIconLoader::global()->queryIcons(-KIconLoader::SizeEnormous, KIconLoader::Application)) { + if (!iconName.endsWith(".png")) + continue; + if (count++ > 3) // max 3 iterations + break; + + // existing icons are sync-ed if requested + plugin->config()->set("generalSynchronizeIcons", true); + QFileInfo fi(iconName); + //qDebug() << "XXX" << iconName << fi.baseName() << fi.size(); + retId = listener->Notify(appName, replacesId, fi.baseName(), summary, body, {}, {{}}, 0); + QCOMPARE(retId, replacesId); + QCOMPARE(++proxiedNotifications, d->getSentPackages()); + QVERIFY(d->getLastPackage()->hasPayload()); + QCOMPARE(d->getLastPackage()->payloadSize(), fi.size()); + + // otherwise no payload: + plugin->config()->set("generalSynchronizeIcons", false); + retId = listener->Notify(appName, replacesId, fi.baseName(), summary, body, {}, {{}}, 0); + QCOMPARE(retId, replacesId); + QCOMPARE(++proxiedNotifications, d->getSentPackages()); + QVERIFY(!d->getLastPackage()->hasPayload()); + QCOMPARE(d->getLastPackage()->payloadSize(), 0); + } } From f9f7f2bbcb195514297894e8389ff82dcfff8950 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sat, 16 Jan 2016 10:23:35 +0000 Subject: [PATCH 03/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plasmoid/package/metadata.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plasmoid/package/metadata.desktop b/plasmoid/package/metadata.desktop index 9d6482284..a7d9b3a11 100644 --- a/plasmoid/package/metadata.desktop +++ b/plasmoid/package/metadata.desktop @@ -33,7 +33,7 @@ Comment=Show notifications from your devices using KDE Connect Comment[ast]=Amuesa avisos de los tos preseos usando KDE Connect Comment[bg]=Показване на уведомления от вашите устройства чрез KDE Connect Comment[bs]=Prikaži obavlještenja sa uređaja koji koriste KDE konekciju -Comment[ca]=Mostra les notificacions dels vostres dispositius usant el KDE Connect +Comment[ca]=Mostra les notificacions dels vostres dispositius emprant el KDE Connect Comment[ca@valencia]=Mostra les notificacions dels vostres dispositius usant el KDE Connect Comment[cs]=Zobrazit upozornění z vašich zařízení pomocí KDE Connect Comment[da]=Vis bekendtgørelser fra dine enheder med KDE Connect From 2b9217fab3f4bf0ded5e74d09aa672c9ede22de3 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sun, 17 Jan 2016 10:49:15 +0000 Subject: [PATCH 04/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plasmoid/package/metadata.desktop | 2 +- plugins/notifications/kdeconnect_notifications_config.desktop | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plasmoid/package/metadata.desktop b/plasmoid/package/metadata.desktop index a7d9b3a11..0823adc16 100644 --- a/plasmoid/package/metadata.desktop +++ b/plasmoid/package/metadata.desktop @@ -34,7 +34,7 @@ Comment[ast]=Amuesa avisos de los tos preseos usando KDE Connect Comment[bg]=Показване на уведомления от вашите устройства чрез KDE Connect Comment[bs]=Prikaži obavlještenja sa uređaja koji koriste KDE konekciju Comment[ca]=Mostra les notificacions dels vostres dispositius emprant el KDE Connect -Comment[ca@valencia]=Mostra les notificacions dels vostres dispositius usant el KDE Connect +Comment[ca@valencia]=Mostra les notificacions dels vostres dispositius emprant el KDE Connect Comment[cs]=Zobrazit upozornění z vašich zařízení pomocí KDE Connect Comment[da]=Vis bekendtgørelser fra dine enheder med KDE Connect Comment[de]=Zeigt Benachrichtigungen von Ihren Geräten mit KDE-Connect diff --git a/plugins/notifications/kdeconnect_notifications_config.desktop b/plugins/notifications/kdeconnect_notifications_config.desktop index 6fd58baf2..0197529fc 100644 --- a/plugins/notifications/kdeconnect_notifications_config.desktop +++ b/plugins/notifications/kdeconnect_notifications_config.desktop @@ -7,7 +7,7 @@ X-KDE-ParentComponents=kdeconnect_notifications Name=Notification synchronization plugin settings Name[ca]=Ajustament del connector Sincronitza les notificacions -Name[ca@valencia]=Ajustament del connector per a la sincronització de les notificacions +Name[ca@valencia]=Ajustament del connector Sincronitza les notificacions Name[en_GB]=Notification synchronisation plugin settings Name[es]=Preferencias del complemento de sincronización de notificaciones Name[fi]=Ilmoitusten synkronointiliitännäisen asetukset From 51e989f454a2f2f760afc4c3856cda4a1676aa1d Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sat, 23 Jan 2016 10:32:56 +0000 Subject: [PATCH 05/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plugins/notifications/kdeconnect_notifications_config.desktop | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/notifications/kdeconnect_notifications_config.desktop b/plugins/notifications/kdeconnect_notifications_config.desktop index 0197529fc..189daa1b5 100644 --- a/plugins/notifications/kdeconnect_notifications_config.desktop +++ b/plugins/notifications/kdeconnect_notifications_config.desktop @@ -8,6 +8,7 @@ X-KDE-ParentComponents=kdeconnect_notifications Name=Notification synchronization plugin settings Name[ca]=Ajustament del connector Sincronitza les notificacions Name[ca@valencia]=Ajustament del connector Sincronitza les notificacions +Name[cs]=Nastavení modulu synchronizace upozornění Name[en_GB]=Notification synchronisation plugin settings Name[es]=Preferencias del complemento de sincronización de notificaciones Name[fi]=Ilmoitusten synkronointiliitännäisen asetukset From 9df0fc1e24c50a278c58c5f086a7bc10ba64ce3e Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sun, 31 Jan 2016 09:40:47 +0000 Subject: [PATCH 06/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plugins/lockdevice/kdeconnect_lockdevice.json | 1 + plugins/mpriscontrol/kdeconnect_mpriscontrol.json | 1 + plugins/pausemusic/kdeconnect_pausemusic.json | 2 +- plugins/remotecontrol/kdeconnect_remotecontrol.json | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/lockdevice/kdeconnect_lockdevice.json b/plugins/lockdevice/kdeconnect_lockdevice.json index 0c22969bd..b163b48d4 100644 --- a/plugins/lockdevice/kdeconnect_lockdevice.json +++ b/plugins/lockdevice/kdeconnect_lockdevice.json @@ -36,6 +36,7 @@ "Id": "kdeconnect_lockdevice", "License": "GPL", "Name": "LockDevice", + "Name[ast]": "Bloquiar preséu", "Name[ca@valencia]": "Bloqueja el dispositiu", "Name[ca]": "Bloqueja el dispositiu", "Name[cs]": "Uzamknout zařízení", diff --git a/plugins/mpriscontrol/kdeconnect_mpriscontrol.json b/plugins/mpriscontrol/kdeconnect_mpriscontrol.json index 202712406..872ce3790 100644 --- a/plugins/mpriscontrol/kdeconnect_mpriscontrol.json +++ b/plugins/mpriscontrol/kdeconnect_mpriscontrol.json @@ -37,6 +37,7 @@ "Id": "kdeconnect_mpriscontrol", "License": "GPL", "Name": "Multimedia control receiver", + "Name[ast]": "Mandu de control multimedia", "Name[ca@valencia]": "Receptor del comandament multimèdia", "Name[ca]": "Receptor del comandament multimèdia", "Name[cs]": "Dálkový ovladač multimédií", diff --git a/plugins/pausemusic/kdeconnect_pausemusic.json b/plugins/pausemusic/kdeconnect_pausemusic.json index 4638ac15d..a9cbd1aad 100644 --- a/plugins/pausemusic/kdeconnect_pausemusic.json +++ b/plugins/pausemusic/kdeconnect_pausemusic.json @@ -9,7 +9,7 @@ } ], "Description": "Pause music/videos during a phone call", - "Description[ast]": "Posa música/videos nuna llamada telefónica", + "Description[ast]": "Posa la música/videos nuna llamada telefónica", "Description[ca@valencia]": "Pausa la música/vídeos durant una trucada telefònica", "Description[ca]": "Pausa la música/vídeos durant una trucada telefònica", "Description[cs]": "Pozastavit hudbu/video během telefonátu", diff --git a/plugins/remotecontrol/kdeconnect_remotecontrol.json b/plugins/remotecontrol/kdeconnect_remotecontrol.json index 4067c1d02..819497cd9 100644 --- a/plugins/remotecontrol/kdeconnect_remotecontrol.json +++ b/plugins/remotecontrol/kdeconnect_remotecontrol.json @@ -36,6 +36,7 @@ "Id": "kdeconnect_remotecontrol", "License": "GPL", "Name": "RemoteControl", + "Name[ast]": "Control remotu", "Name[ca@valencia]": "Control remot", "Name[ca]": "Control remot", "Name[cs]": "Dálkové ovládání", From 95622ded1251d092ca7e4459fa6328cc3db4565d Mon Sep 17 00:00:00 2001 From: Albert Vaca Date: Thu, 4 Feb 2016 03:55:41 -0800 Subject: [PATCH 07/34] Typo BUG: 358972 --- plugins/kdeconnect.notifyrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/kdeconnect.notifyrc b/plugins/kdeconnect.notifyrc index c36bfa635..493eddf02 100644 --- a/plugins/kdeconnect.notifyrc +++ b/plugins/kdeconnect.notifyrc @@ -91,7 +91,7 @@ Name[tr]=Eşleşme İsteği Name[uk]=Запит щодо пов’язування Name[x-test]=xxPairing Requestxx Name[zh_CN]=配对请求 -Comment=Pairing request received from a devices +Comment=Pairing request received from a device Comment[ast]=Solicitú d'empareyamientu d'un preséu Comment[bg]=Получена е заявка за сдвояване от устройство Comment[bs]=Primljen zahtjev za uparivanje od uređaja From 5eb9a54bcca64d49fa58dbbdfde3a39db127460c Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Fri, 5 Feb 2016 09:16:28 +0000 Subject: [PATCH 08/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- app/org.kde.kdeconnect.app.desktop | 3 ++ daemon/kdeconnect.desktop | 2 + daemon/kdeconnectd.desktop.cmake | 1 + .../kdeconnectsendfile.desktop | 2 + kcm/kcm_kdeconnect.desktop | 3 ++ kcm/org.kde.kdeconnect.kcm.desktop | 2 + org.kde.kdeconnect.nonplasma.desktop | 2 + plasmoid/package/metadata.desktop | 2 + plugins/kdeconnect.notifyrc | 45 +++++++------------ plugins/kdeconnect_plugin.desktop | 1 + .../kdeconnect_notifications_config.desktop | 1 + .../kdeconnect_pausemusic_config.desktop | 1 + .../kdeconnect_runcommand_config.desktop | 1 + plugins/share/kdeconnect_share_config.desktop | 1 + 14 files changed, 39 insertions(+), 28 deletions(-) diff --git a/app/org.kde.kdeconnect.app.desktop b/app/org.kde.kdeconnect.app.desktop index 28bb5baa0..257046720 100644 --- a/app/org.kde.kdeconnect.app.desktop +++ b/app/org.kde.kdeconnect.app.desktop @@ -6,6 +6,7 @@ Name[ca@valencia]=Aplicació KDE Connect Name[cs]=Aplikace KDE Connect Name[da]=Programmet KDE Connect Name[de]=KDE-Connect-Anwendung +Name[el]=Εφαρμογή KDE Connect Name[en_GB]=KDE Connect Application Name[es]=Aplicación KDE Connect Name[fi]=KDE Connect -sovellus @@ -33,6 +34,7 @@ GenericName[ca@valencia]=Sincronització de dispositius GenericName[cs]=Synchronizace zařízení GenericName[da]=Enhedssynkronisering GenericName[de]=Geräteabgleich +GenericName[el]=Συγχρονισμός συσκευών GenericName[en_GB]=Device Synchronisation GenericName[es]=Sincronización de dispositivos GenericName[fi]=Laitteiden synkronointi @@ -61,6 +63,7 @@ Comment[ca@valencia]=Fa que tots els vostres dispositius siguen un Comment[cs]=Sjednoťte svá zařízení Comment[da]=Gør alle dine enheder til en Comment[de]=Gleichen Sie alle Ihre Geräte ab +Comment[el]=Όλες οι συσκευές σας σε μία Comment[en_GB]=Make all your devices one Comment[es]=Convertir todos sus dispositivos en uno Comment[fi]=Yhdistä kaikki laitteesi toisiinsa diff --git a/daemon/kdeconnect.desktop b/daemon/kdeconnect.desktop index 8a72584c7..d4f01b71f 100644 --- a/daemon/kdeconnect.desktop +++ b/daemon/kdeconnect.desktop @@ -18,6 +18,7 @@ Name[ca@valencia]=KDE Connect Name[cs]=KDE Connect Name[da]=KDE Connect Name[de]=KDE-Connect +Name[el]=KDE Connect Name[en_GB]=KDE Connect Name[es]=KDE Connect Name[fi]=KDE Connect @@ -49,6 +50,7 @@ Comment[ca@valencia]=Connecta el KDE amb el vostre telèfon intel·ligent Comment[cs]=Propojte KDE s vaším telefonem Comment[da]=Forbind KDE med din smartphone Comment[de]=KDE mit Ihren Smartphone verbinden +Comment[el]=Σύνδεση του KDE με το έξυπνο τηλέφωνό σας Comment[en_GB]=Connect KDE with your smartphone Comment[es]=Conecte KDE con su teléfono móvil Comment[fi]=Yhdistä KDE älypuhelimeesi diff --git a/daemon/kdeconnectd.desktop.cmake b/daemon/kdeconnectd.desktop.cmake index 1d9e13c03..4a7bd36be 100644 --- a/daemon/kdeconnectd.desktop.cmake +++ b/daemon/kdeconnectd.desktop.cmake @@ -15,6 +15,7 @@ Name[ca@valencia]=Dimoni del KDEConnect Name[cs]=Démon KDE Connect Name[da]=KDEConnect-dæmon Name[de]=KDE-Connect-Dienst +Name[el]=Δαίμονας του KDEConnect Name[en_GB]=KDEConnect daemon Name[es]=Demonio de KDE Connect Name[fi]=KDEConnect-taustapalvelu diff --git a/fileitemactionplugin/kdeconnectsendfile.desktop b/fileitemactionplugin/kdeconnectsendfile.desktop index b68720700..e220c9503 100644 --- a/fileitemactionplugin/kdeconnectsendfile.desktop +++ b/fileitemactionplugin/kdeconnectsendfile.desktop @@ -9,6 +9,7 @@ Name[ca@valencia]=Envia un fitxer a través del servei KDE Connect Name[cs]=Poslat soubor přes službu KDE Connect Name[da]=Send fil via KDE Connect-tjeneste Name[de]=Datei mit KDE-Connect -Dienst versenden +Name[el]=Αποστολή αρχείου μέσω της υπηρεσίας KDE Connect Name[en_GB]=Send file via KDE Connect service Name[es]=Enviar archivo usando el servicio KDE Connect Name[fi]=Lähetä tiedosto KDE Connect -palvelulla @@ -38,6 +39,7 @@ X-KDE-Submenu[ca@valencia]=Connecta X-KDE-Submenu[cs]=Připojit X-KDE-Submenu[da]=Forbind X-KDE-Submenu[de]=Verbinden +X-KDE-Submenu[el]=Σύνδεση X-KDE-Submenu[en_GB]=Connect X-KDE-Submenu[es]=Conectar X-KDE-Submenu[fi]=Yhdistä diff --git a/kcm/kcm_kdeconnect.desktop b/kcm/kcm_kdeconnect.desktop index 12d284b77..b31da5122 100755 --- a/kcm/kcm_kdeconnect.desktop +++ b/kcm/kcm_kdeconnect.desktop @@ -19,6 +19,7 @@ Name[ca@valencia]=KDE Connect Name[cs]=KDE Connect Name[da]=KDE Connect Name[de]=KDE-Connect +Name[el]=KDE Connect Name[en_GB]=KDE Connect Name[es]=KDE Connect Name[fi]=KDE Connect @@ -48,6 +49,7 @@ Comment[ca@valencia]=Connecta i sincronitza els vostres dispositius Comment[cs]=Připojte a synchronizujte svá zařízení Comment[da]=Forbind og synkronisér dine enheder Comment[de]=Verbinden und Abgleichen Ihrer Geräte +Comment[el]=Σύνδεση και συγχρονισμός των συσκευών σας Comment[en_GB]=Connect and sync your devices Comment[es]=Conectar y sincronizar sus dispositivos Comment[fi]=Yhdistä ja synkronoi laitteitasi @@ -78,6 +80,7 @@ X-KDE-Keywords[ca@valencia]=Xarxa,Android,Dispositius X-KDE-Keywords[cs]=Síť,Android,Zařízení X-KDE-Keywords[da]=Netværk,Android,Enheder X-KDE-Keywords[de]=Netzwerk,Android,Geräte +X-KDE-Keywords[el]=Δίκτυο,Android,Συσκευές X-KDE-Keywords[en_GB]=Network,Android,Devices X-KDE-Keywords[es]=Red,Android,Dispositivos X-KDE-Keywords[fi]=Verkko,Android,Laitteet diff --git a/kcm/org.kde.kdeconnect.kcm.desktop b/kcm/org.kde.kdeconnect.kcm.desktop index fb52a20bf..521386a80 100755 --- a/kcm/org.kde.kdeconnect.kcm.desktop +++ b/kcm/org.kde.kdeconnect.kcm.desktop @@ -10,6 +10,7 @@ Name[ca@valencia]=Arranjament del KDE Connect Name[cs]=Nastavení KDE Connect Name[da]=Indstilling af KDE Connect Name[de]=KDE-Connect-Einstellungen +Name[el]=Ρυθμίσεις KDE Connect Name[en_GB]=KDE Connect Settings Name[es]=Ajustes de KDE Connect Name[fi]=KDE Connectin asetukset @@ -35,6 +36,7 @@ GenericName[ca@valencia]=Connecta i sincronitza els vostres dispositius GenericName[cs]=Připojte a synchronizujte svá zařízení GenericName[da]=Forbind og synkronisér dine enheder GenericName[de]=Verbinden und Abgleichen Ihrer Geräte +GenericName[el]=Σύνδεση και συγχρονισμός των συσκευών σας GenericName[en_GB]=Connect and sync your devices GenericName[es]=Conectar y sincronizar sus dispositivos GenericName[fi]=Yhdistä ja synkronoi laitteitasi diff --git a/org.kde.kdeconnect.nonplasma.desktop b/org.kde.kdeconnect.nonplasma.desktop index 0b7e2f034..ed65e2c63 100755 --- a/org.kde.kdeconnect.nonplasma.desktop +++ b/org.kde.kdeconnect.nonplasma.desktop @@ -6,6 +6,7 @@ Name[ca@valencia]=Controlador del KDE Connect Name[cs]=Monitor KDE Connect Name[da]=KDE Connect-overvåger Name[de]=KDE-Connect-Monitor +Name[el]=Εφαρμογή εποπτείας του KDE Connect Name[en_GB]=KDE Connect Monitor Name[es]=Monitor de KDE Connect Name[fi]=KDE Connect -valvonta @@ -31,6 +32,7 @@ Comment[ca@valencia]=Mostra la informació dels vostres dispositius Comment[cs]=Zobrazit informace o vašich zařízeních Comment[da]=Vis information om dine enheder Comment[de]=Anzeige von Informationen über Ihre Geräte +Comment[el]=Προβολή πληροφοριών σχετικά με τις συσκευές σας Comment[en_GB]=Display information about your devices Comment[es]=Mostrar información sobre sus dispositivos Comment[fi]=Näyttää tietoa laitteistasi diff --git a/plasmoid/package/metadata.desktop b/plasmoid/package/metadata.desktop index 0823adc16..d96489cb4 100644 --- a/plasmoid/package/metadata.desktop +++ b/plasmoid/package/metadata.desktop @@ -8,6 +8,7 @@ Name[ca@valencia]=KDE Connect Name[cs]=KDE Connect Name[da]=KDE Connect Name[de]=KDE-Connect +Name[el]=KDE Connect Name[en_GB]=KDE Connect Name[es]=KDE Connect Name[fi]=KDE Connect @@ -38,6 +39,7 @@ Comment[ca@valencia]=Mostra les notificacions dels vostres dispositius emprant e Comment[cs]=Zobrazit upozornění z vašich zařízení pomocí KDE Connect Comment[da]=Vis bekendtgørelser fra dine enheder med KDE Connect Comment[de]=Zeigt Benachrichtigungen von Ihren Geräten mit KDE-Connect +Comment[el]=Προβολή ειδοποιήσεων από τις συσκευές σας με το KDE Connect Comment[en_GB]=Show notifications from your devices using KDE Connect Comment[es]=Mostrar notificaciones de sus dispositivos usando KDE Connect Comment[fi]=Näytä laitteidesi ilmoitukset KDE Connectilla diff --git a/plugins/kdeconnect.notifyrc b/plugins/kdeconnect.notifyrc index 493eddf02..ecf35b28a 100644 --- a/plugins/kdeconnect.notifyrc +++ b/plugins/kdeconnect.notifyrc @@ -9,6 +9,7 @@ Name[ca@valencia]=KDE Connect Name[cs]=KDE Connect Name[da]=KDE Connect Name[de]=KDE-Connect +Name[el]=KDE Connect Name[en_GB]=KDE Connect Name[es]=KDE Connect Name[fi]=KDE Connect @@ -39,6 +40,7 @@ Comment[ca@valencia]=Notificacions dels vostres dispositius Comment[cs]=Oznamování z vašich zařízení Comment[da]=Bekendtgørelser fra dine enheder Comment[de]=Benachrichtigungen von Ihren Geräten +Comment[el]=Ειδοποιήσεις από τις συσκευές σας Comment[en_GB]=Notifications from your devices Comment[es]=Notificaciones de sus dispositivos Comment[fi]=Laitteesi ilmoitukset @@ -71,6 +73,7 @@ Name[ca@valencia]=Sol·licitud d'aparellament Name[cs]=Požadavek na párování Name[da]=Parringsanmodning Name[de]=Verbindungsanfrage +Name[el]=Αίτημα σύζευξης Name[en_GB]=Pairing Request Name[es]=Petición de vinculación Name[fi]=Paripyyntö @@ -92,34 +95,6 @@ Name[uk]=Запит щодо пов’язування Name[x-test]=xxPairing Requestxx Name[zh_CN]=配对请求 Comment=Pairing request received from a device -Comment[ast]=Solicitú d'empareyamientu d'un preséu -Comment[bg]=Получена е заявка за сдвояване от устройство -Comment[bs]=Primljen zahtjev za uparivanje od uređaja -Comment[ca]=Les sol·licituds d'aparellament rebudes des d'un dispositiu -Comment[ca@valencia]=Les sol·licituds d'aparellament rebudes des d'un dispositiu -Comment[cs]=Požadavek na párování přijat ze zařízení -Comment[da]=Parringsanmodning modtaget fra en enhed -Comment[de]=Verbindungsanfrage von einem Gerät erhalten -Comment[en_GB]=Pairing request received from a devices -Comment[es]=Petición de vinculación recibida desde un dispositivo -Comment[fi]=Saatiin paripyyntö laitteelta -Comment[fr]=Demande d'appariement provenant d'un périphérique -Comment[gl]=Recibiuse unha solicitude de emparellamento dun dispositivo. -Comment[hu]=Párosítási kérés érkezett egy eszköztől -Comment[it]=Richiesta di associazione ricevuta da un dispositivo -Comment[ko]=장치에서 연결 요청을 받음 -Comment[nl]=Verzoek om een paar te maken ontvangen van een apparaat -Comment[nn]=Mottak parringsførespurnad frå eining -Comment[pl]=Otrzymano żądanie parowania z urządzenia -Comment[pt]=Pedido de emparelhamento recebido de um dispositivo -Comment[pt_BR]=Solicitação de emparelhamento recebida de um dispositivo -Comment[ru]=От мобильного устройства получен запрос на сопряжение -Comment[sk]=Požiadavka na spárovanie prijatá zo zariadenia -Comment[sv]=Begäran om ihopparning mottagen från en apparat -Comment[tr]=Bir aygıttan eşleşme isteği alındı -Comment[uk]=Від пристрою отримано запит щодо пов’язування -Comment[x-test]=xxPairing request received from a devicesxx -Comment[zh_CN]=收到来自一个设备的配对请求 Action=Popup [Event/callReceived] @@ -131,6 +106,7 @@ Name[ca@valencia]=Trucada entrant Name[cs]=Příchozí hovor Name[da]=Indkommende opkald Name[de]=Eingehender Anruf +Name[el]=Εισερχόμενη κλήση Name[en_GB]=Incoming Call Name[es]=Llamada entrante Name[fi]=Saapuva puhelu @@ -160,6 +136,7 @@ Comment[ca@valencia]=Algú vos està trucant Comment[cs]=Někdo vám volá Comment[da]=Nogen ringer til dig Comment[de]=Sie werden angerufen +Comment[el]=Κάποιος σας καλεί Comment[en_GB]=Someone is calling you Comment[es]=Alguien le está llamando Comment[fi]=Sinulle soitetaan @@ -192,6 +169,7 @@ Name[ca@valencia]=Trucada perduda Name[cs]=Zmeškaný hovor Name[da]=Ubesvaret opkald Name[de]=Verpasster Anruf +Name[el]=Αναπάντητη κλήση Name[en_GB]=Missed Call Name[es]=Llamada perdida Name[fi]=Vastaamaton puhelu @@ -221,6 +199,7 @@ Comment[ca@valencia]=Teniu una trucada perduda Comment[cs]=Máte zmeškaný hovor Comment[da]=Du har et ubesvaret opkald Comment[de]=Sie haben einen Anruf verpasst +Comment[el]=Έχετε μια αναπάντητη κλήση Comment[en_GB]=You have a missed call Comment[es]=Tiene una llamada perdida Comment[fi]=Sinulla on vastaamaton puhelu @@ -253,6 +232,7 @@ Name[ca@valencia]=S'ha rebut un SMS Name[cs]=SMS přijata Name[da]=SMS-modtaget Name[de]=SMS empfangen +Name[el]=Λήφθηκε SMS Name[en_GB]=SMS Received Name[es]=SMS recibido Name[fi]=Saatiin tekstiviesti @@ -282,6 +262,7 @@ Comment[ca@valencia]=Algú vos ha enviat un SMS Comment[cs]=Někdo vám poslal SMS Comment[da]=Nogen sendte dig en SMS Comment[de]=Jemand hat Ihnen eine SMS gesendet +Comment[el]=Κάποιος σας έστειλε SMS Comment[en_GB]=Someone sent you an SMS Comment[es]=Alguien le ha enviado un SMS Comment[fi]=Sinulle lähetettiin tekstiviesti @@ -314,6 +295,7 @@ Name[ca@valencia]=Bateria baixa Name[cs]=Baterie je téměř vybitá Name[da]=Lavt batteri Name[de]=Akku-Ladestand niedrig +Name[el]=Μπαταρία χαμηλή Name[en_GB]=Battery Low Name[es]=Batería baja Name[fi]=Akku vähissä @@ -343,6 +325,7 @@ Comment[ca@valencia]=La bateria està baixa Comment[cs]=Máte slabou baterii Comment[da]=Dit batteri er på lavt niveau Comment[de]=Der Ladestand Ihres Akkus ist niedrig +Comment[el]=Η μπαταρία σας είναι σε χαμηλό επίπεδο Comment[en_GB]=Your battery is in low state Comment[es]=La batería está en nivel bajo Comment[fi]=Akkusi virta on vähissä @@ -375,6 +358,7 @@ Name[ca@valencia]=S'ha rebut un ping Name[cs]=Ping přijat Name[da]=Ping modtaget Name[de]=Ping empfangen +Name[el]=Λήφθηκε ping Name[en_GB]=Ping Received Name[es]=Ping recibido Name[fi]=Saatiin tiedustelupaketti @@ -404,6 +388,7 @@ Comment[ca@valencia]=S'ha rebut un ping Comment[cs]=Ping přijat Comment[da]=Ping modtaget Comment[de]=Ping empfangen +Comment[el]=Λήφθηκε ping Comment[en_GB]=Ping received Comment[es]=Ping recibido Comment[fi]=Saatiin tiedustelupaketti @@ -436,6 +421,7 @@ Name[ca@valencia]=Notificació genèrica Name[cs]=Obecná hlášení Name[da]=Generisk bekendtgørelse Name[de]=Allgemeine Benachrichtigung +Name[el]=Γενική ειδοποίηση Name[en_GB]=Generic Notification Name[es]=Notificación genérica Name[fi]=Yleinen ilmoitus @@ -465,6 +451,7 @@ Comment[ca@valencia]=Notificació rebuda Comment[cs]=Bylo přijato upozornění Comment[da]=Bekendtgørelse modtaget Comment[de]=Benachrichtigung eingegangen +Comment[el]=Λήφθηκε ειδοποίηση Comment[en_GB]=Notification received Comment[es]=Notificación recibida Comment[fi]=Saatiin ilmoitus @@ -497,6 +484,7 @@ Name[ca@valencia]=Transferència de fitxers Name[cs]=Přenos souboru Name[da]=Filoverførsel Name[de]=Dateiübertragung +Name[el]=Μεταφορά αρχείου Name[en_GB]=File Transfer Name[es]=Transferencia de archivo Name[fi]=Tiedostonsiirto @@ -525,6 +513,7 @@ Comment[ca@valencia]=Fitxer entrant Comment[cs]=Příchozí soubor Comment[da]=Indkommende fil Comment[de]=Eingehende Datei +Comment[el]=Εισερχόμενο αρχείο Comment[en_GB]=Incoming file Comment[es]=Archivo entrante Comment[fi]=Saapuva tiedosto diff --git a/plugins/kdeconnect_plugin.desktop b/plugins/kdeconnect_plugin.desktop index 8c1b382a9..53de08dbf 100644 --- a/plugins/kdeconnect_plugin.desktop +++ b/plugins/kdeconnect_plugin.desktop @@ -11,6 +11,7 @@ Name[ca@valencia]=Connector del KDE Connect Name[cs]=Modul KDEConnect Name[da]=KDEConnect-plugin Name[de]=KDEConnect-Modul +Name[el]=Πρόσθετο του KDEConnect Name[en_GB]=KDEConnect Plugin Name[es]=Complemento de KDEConnect Name[fi]=KDE Connect -liitännäinen diff --git a/plugins/notifications/kdeconnect_notifications_config.desktop b/plugins/notifications/kdeconnect_notifications_config.desktop index 189daa1b5..fb2ba39bf 100644 --- a/plugins/notifications/kdeconnect_notifications_config.desktop +++ b/plugins/notifications/kdeconnect_notifications_config.desktop @@ -9,6 +9,7 @@ Name=Notification synchronization plugin settings Name[ca]=Ajustament del connector Sincronitza les notificacions Name[ca@valencia]=Ajustament del connector Sincronitza les notificacions Name[cs]=Nastavení modulu synchronizace upozornění +Name[el]=Ρυθμίσεις πρόσθετου συγχρονισμού ειδοποιήσεων Name[en_GB]=Notification synchronisation plugin settings Name[es]=Preferencias del complemento de sincronización de notificaciones Name[fi]=Ilmoitusten synkronointiliitännäisen asetukset diff --git a/plugins/pausemusic/kdeconnect_pausemusic_config.desktop b/plugins/pausemusic/kdeconnect_pausemusic_config.desktop index bbcb9433b..dee068b82 100644 --- a/plugins/pausemusic/kdeconnect_pausemusic_config.desktop +++ b/plugins/pausemusic/kdeconnect_pausemusic_config.desktop @@ -14,6 +14,7 @@ Name[ca@valencia]=Ajustaments del connector Pausa la música Name[cs]=Nastavení modulu Pozastavení hudby Name[da]=Indstilling af plugin til at sætte musik på pause Name[de]=Modul-Einstellungen für das Anhalten der Musikwiedergabe +Name[el]=Ρυθμίσεις προσθέτου παύσης μουσικής Name[en_GB]=Pause Music plugin settings Name[es]=Ajustes del complemento PauseMusic Name[fi]=Keskeytä musiikki -liitännäisen asetukset diff --git a/plugins/runcommand/kdeconnect_runcommand_config.desktop b/plugins/runcommand/kdeconnect_runcommand_config.desktop index 79708a832..4ad408c46 100644 --- a/plugins/runcommand/kdeconnect_runcommand_config.desktop +++ b/plugins/runcommand/kdeconnect_runcommand_config.desktop @@ -12,6 +12,7 @@ Name[ca@valencia]=Ajustaments del connector Executa ordes Name[cs]=Nastavení modulu Spustit příkaz Name[da]=Indstilling af kør kommando-plugin Name[de]=Modul-Einstellungen für Befehlsausführung +Name[el]=Ρυθμίσεις προσθέτου εκτέλεσης εντολής Name[en_GB]=Run Command plugin settings Name[es]=Ajustes del complemento de ejecución de órdenes Name[fi]=Suorita komento -liitännäisen asetukset diff --git a/plugins/share/kdeconnect_share_config.desktop b/plugins/share/kdeconnect_share_config.desktop index 415f43c48..6336050fe 100644 --- a/plugins/share/kdeconnect_share_config.desktop +++ b/plugins/share/kdeconnect_share_config.desktop @@ -14,6 +14,7 @@ Name[ca@valencia]=Ajustaments del connector Compartició Name[cs]=Nastavení modulu sdílení Name[da]=Indstilling af deling-plugin Name[de]=Modul-Einstellungen für Veröffentlichung +Name[el]=Ρυθμίσεις προσθέτου κοινής χρήσης Name[en_GB]=Share plugin settings Name[es]=Ajustes del complemento para compartir Name[fi]=Jakoliitännäisen asetukset From 4b57abd556a126417f06ce88263beaa0253b965f Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sat, 6 Feb 2016 09:47:03 +0000 Subject: [PATCH 09/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plugins/kdeconnect.notifyrc | 8 ++++++++ .../notifications/kdeconnect_notifications_config.desktop | 1 + 2 files changed, 9 insertions(+) diff --git a/plugins/kdeconnect.notifyrc b/plugins/kdeconnect.notifyrc index ecf35b28a..df8df79f9 100644 --- a/plugins/kdeconnect.notifyrc +++ b/plugins/kdeconnect.notifyrc @@ -95,6 +95,14 @@ Name[uk]=Запит щодо пов’язування Name[x-test]=xxPairing Requestxx Name[zh_CN]=配对请求 Comment=Pairing request received from a device +Comment[ca]=Les sol·licituds d'aparellament rebudes des d'un dispositiu +Comment[de]=Verbindungsanfrage von einem Gerät erhalten +Comment[nl]=Verzoek om een paar te maken ontvangen van apparaten +Comment[pl]=Otrzymano żądanie parowania z urządzenia +Comment[pt]=Pedido de emparelhamento recebido de um dispositivo +Comment[pt_BR]=Solicitação de emparelhamento recebida de um dispositivo +Comment[uk]=Від пристрою отримано запит щодо пов’язування +Comment[x-test]=xxPairing request received from a devicexx Action=Popup [Event/callReceived] diff --git a/plugins/notifications/kdeconnect_notifications_config.desktop b/plugins/notifications/kdeconnect_notifications_config.desktop index fb2ba39bf..c9c8b39a8 100644 --- a/plugins/notifications/kdeconnect_notifications_config.desktop +++ b/plugins/notifications/kdeconnect_notifications_config.desktop @@ -9,6 +9,7 @@ Name=Notification synchronization plugin settings Name[ca]=Ajustament del connector Sincronitza les notificacions Name[ca@valencia]=Ajustament del connector Sincronitza les notificacions Name[cs]=Nastavení modulu synchronizace upozornění +Name[de]=Einstellungen für Benachrichtigungsabgleich-Modul Name[el]=Ρυθμίσεις πρόσθετου συγχρονισμού ειδοποιήσεων Name[en_GB]=Notification synchronisation plugin settings Name[es]=Preferencias del complemento de sincronización de notificaciones From 770c3563713537f1d7cd01bf41e441a54457e8a7 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Mon, 8 Feb 2016 13:39:47 +0000 Subject: [PATCH 10/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plugins/kdeconnect.notifyrc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/kdeconnect.notifyrc b/plugins/kdeconnect.notifyrc index df8df79f9..401c378cf 100644 --- a/plugins/kdeconnect.notifyrc +++ b/plugins/kdeconnect.notifyrc @@ -96,11 +96,15 @@ Name[x-test]=xxPairing Requestxx Name[zh_CN]=配对请求 Comment=Pairing request received from a device Comment[ca]=Les sol·licituds d'aparellament rebudes des d'un dispositiu +Comment[ca@valencia]=Les sol·licituds d'aparellament rebudes des d'un dispositiu Comment[de]=Verbindungsanfrage von einem Gerät erhalten +Comment[fi]=Saatiin paripyyntö laitteelta +Comment[gl]=Recibiuse unha solicitude de emparellamento dun dispositivo. Comment[nl]=Verzoek om een paar te maken ontvangen van apparaten Comment[pl]=Otrzymano żądanie parowania z urządzenia Comment[pt]=Pedido de emparelhamento recebido de um dispositivo Comment[pt_BR]=Solicitação de emparelhamento recebida de um dispositivo +Comment[sv]=Begäran om ihopparning mottagen från en apparat Comment[uk]=Від пристрою отримано запит щодо пов’язування Comment[x-test]=xxPairing request received from a devicexx Action=Popup From 8c515e711041b063da68d98f2257b005165331ca Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Tue, 9 Feb 2016 08:28:33 +0000 Subject: [PATCH 11/34] SVN_SILENT made messages (after extraction) --- kdeconnect.appdata.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kdeconnect.appdata.xml b/kdeconnect.appdata.xml index b63bf1bc2..8e55f8945 100644 --- a/kdeconnect.appdata.xml +++ b/kdeconnect.appdata.xml @@ -4,6 +4,7 @@ CC0-1.0 GPL-2.0+ KDE Connect + كدي المتّصل KDE Connect KDE Connect KDE Connect @@ -27,6 +28,7 @@ xxKDE Connectxx KDE Connect Seamless connection of your devices + اتّصال سلس بين أجهزتك Conexón de los tos preseos ensin esfuerciu Connexió transparent amb els vostres dispositius Connexió transparent amb els vostres dispositius @@ -51,6 +53,7 @@ 无缝连接您的设备

KDE Connect provides integration between your Android phone and your desktop.

+

يوفّر «كدي المتصّل» التّكامل بين هاتف أندرويد وسطح المكتب.

KDE Connect forne integración ente'l to preséu Android y el to escritoriu.

El KDE Connect proporciona la integració entre el telèfon Android i el vostre escriptori.

El KDE Connect proporciona la integració entre el telèfon Android i el vostre escriptori.

@@ -83,6 +86,7 @@ KDE Connect + كدي المتّصل KDE Connect KDE Connect KDE Connect From 024c1d0860161706d5e2323bd51bbbf128b67d42 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Tue, 9 Feb 2016 10:33:53 +0000 Subject: [PATCH 12/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plugins/kdeconnect.notifyrc | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/kdeconnect.notifyrc b/plugins/kdeconnect.notifyrc index 401c378cf..e1435bddf 100644 --- a/plugins/kdeconnect.notifyrc +++ b/plugins/kdeconnect.notifyrc @@ -98,6 +98,7 @@ Comment=Pairing request received from a device Comment[ca]=Les sol·licituds d'aparellament rebudes des d'un dispositiu Comment[ca@valencia]=Les sol·licituds d'aparellament rebudes des d'un dispositiu Comment[de]=Verbindungsanfrage von einem Gerät erhalten +Comment[el]=Λήφθηκε αίτημα σύζευξης από μια συσκευή Comment[fi]=Saatiin paripyyntö laitteelta Comment[gl]=Recibiuse unha solicitude de emparellamento dun dispositivo. Comment[nl]=Verzoek om een paar te maken ontvangen van apparaten From a9670e5a81645572ed1dec08a2b37268879a3e02 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Fri, 12 Feb 2016 09:32:36 +0000 Subject: [PATCH 13/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plugins/clipboard/kdeconnect_clipboard.json | 2 +- plugins/screensaver-inhibit/kdeconnect_screensaver_inhibit.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/clipboard/kdeconnect_clipboard.json b/plugins/clipboard/kdeconnect_clipboard.json index 13c217f36..d3e6ee4ef 100644 --- a/plugins/clipboard/kdeconnect_clipboard.json +++ b/plugins/clipboard/kdeconnect_clipboard.json @@ -24,7 +24,7 @@ "Description[nn]": "Del utklippstavla mellom einingar", "Description[pl]": "Współdziel schowek pomiędzy urządzeniami", "Description[pt]": "Partilhar a área de transferência entre dispositivos", - "Description[pt_BR]": "Compartilhar a área de transferência entre dispositivos", + "Description[pt_BR]": "Compartilha a área de transferência entre dispositivos", "Description[ru]": "Общий буфер обмена между устройствами", "Description[sk]": "Zdieľať schránku medzi zariadeniami", "Description[sv]": "Dela klippbordet mellan apparater", diff --git a/plugins/screensaver-inhibit/kdeconnect_screensaver_inhibit.json b/plugins/screensaver-inhibit/kdeconnect_screensaver_inhibit.json index 9696d18d1..8cff72377 100644 --- a/plugins/screensaver-inhibit/kdeconnect_screensaver_inhibit.json +++ b/plugins/screensaver-inhibit/kdeconnect_screensaver_inhibit.json @@ -24,7 +24,7 @@ "Description[nn]": "Hindra pauseskjermen i å starta når eininga er kopla til", "Description[pl]": "Powstrzymaj wygaszacz ekrany po podłączeniu urządzenia", "Description[pt]": "Inibir o protector de ecrã quando o dispositivo estiver ligado", - "Description[pt_BR]": "Inibir o protetor de tela quando o dispositivo estiver conectado", + "Description[pt_BR]": "Inibe o protetor de tela quando o dispositivo estiver conectado", "Description[ru]": "Предотвращение запуска блокировщика экрана, когда устройство подключено", "Description[sk]": "Obmedziť šetrič obrazovky keď je pripojené zariadenie", "Description[sv]": "Stoppa skärmsläckaren när apparaten ansluts", From 7f668b59a3e6432404b6b8524a0ec96327136682 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sat, 13 Feb 2016 09:43:43 +0000 Subject: [PATCH 14/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plugins/kdeconnect.notifyrc | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/kdeconnect.notifyrc b/plugins/kdeconnect.notifyrc index e1435bddf..59bf0b334 100644 --- a/plugins/kdeconnect.notifyrc +++ b/plugins/kdeconnect.notifyrc @@ -99,6 +99,7 @@ Comment[ca]=Les sol·licituds d'aparellament rebudes des d'un dispositiu Comment[ca@valencia]=Les sol·licituds d'aparellament rebudes des d'un dispositiu Comment[de]=Verbindungsanfrage von einem Gerät erhalten Comment[el]=Λήφθηκε αίτημα σύζευξης από μια συσκευή +Comment[es]=Petición de vinculación recibida desde un dispositivo Comment[fi]=Saatiin paripyyntö laitteelta Comment[gl]=Recibiuse unha solicitude de emparellamento dun dispositivo. Comment[nl]=Verzoek om een paar te maken ontvangen van apparaten From f6724de704709756756aceefb975f351ac8ec1b4 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sun, 14 Feb 2016 09:18:22 +0000 Subject: [PATCH 15/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- app/org.kde.kdeconnect.app.desktop | 3 +++ daemon/kdeconnect.desktop | 2 ++ daemon/kdeconnectd.desktop.cmake | 1 + .../kdeconnectsendfile.desktop | 2 ++ kcm/kcm_kdeconnect.desktop | 3 +++ kcm/org.kde.kdeconnect.kcm.desktop | 2 ++ org.kde.kdeconnect.nonplasma.desktop | 2 ++ plasmoid/package/metadata.desktop | 2 ++ plugins/kdeconnect.notifyrc | 18 ++++++++++++++++++ plugins/kdeconnect_plugin.desktop | 1 + .../kdeconnect_notifications_config.desktop | 1 + .../kdeconnect_pausemusic_config.desktop | 1 + .../kdeconnect_runcommand_config.desktop | 1 + plugins/share/kdeconnect_share_config.desktop | 1 + 14 files changed, 40 insertions(+) diff --git a/app/org.kde.kdeconnect.app.desktop b/app/org.kde.kdeconnect.app.desktop index 257046720..4a33017c2 100644 --- a/app/org.kde.kdeconnect.app.desktop +++ b/app/org.kde.kdeconnect.app.desktop @@ -1,5 +1,6 @@ [Desktop Entry] Name=KDE Connect Application +Name[ar]=تطبيق كدي المتّصل Name[ast]=Aplicación KDE Connect Name[ca]=Aplicació KDE Connect Name[ca@valencia]=Aplicació KDE Connect @@ -28,6 +29,7 @@ Name[uk]=Програма KDE Connect Name[x-test]=xxKDE Connect Applicationxx Name[zh_CN]=KDE Connect 应用程序 GenericName=Device Synchronization +GenericName[ar]=مزامنة الأجهزة GenericName[ast]=Sincronización de preseos GenericName[ca]=Sincronització de dispositius GenericName[ca@valencia]=Sincronització de dispositius @@ -57,6 +59,7 @@ GenericName[uk]=Синхронізація із пристроями GenericName[x-test]=xxDevice Synchronizationxx GenericName[zh_CN]=设备同步 Comment=Make all your devices one +Comment[ar]=اجعل أجهزتك كلّها واحدًا Comment[ast]=Fai tolos tos preseos ún mesmu Comment[ca]=Fa que tots els vostres dispositius siguin un Comment[ca@valencia]=Fa que tots els vostres dispositius siguen un diff --git a/daemon/kdeconnect.desktop b/daemon/kdeconnect.desktop index d4f01b71f..9564bbc26 100644 --- a/daemon/kdeconnect.desktop +++ b/daemon/kdeconnect.desktop @@ -10,6 +10,7 @@ X-KDE-Kded-load-on-demand=false X-KDE-Kded-phase=1 Name=KDE Connect +Name[ar]=كدي المتّصل Name[ast]=KDE Connect Name[bg]=KDE Connect Name[bs]=Konekcija KDE @@ -42,6 +43,7 @@ Name[x-test]=xxKDE Connectxx Name[zh_CN]=KDE Connect Comment=Connect KDE with your smartphone +Comment[ar]=أوصل كدي بهاتفك الذّكيّ Comment[ast]=Coneuta KDE col to preséu Comment[bg]=Свържете КДЕ с вашия смартфон Comment[bs]=Konektujte se na KDE sa Vašim mobitelom diff --git a/daemon/kdeconnectd.desktop.cmake b/daemon/kdeconnectd.desktop.cmake index 4a7bd36be..550860e2c 100644 --- a/daemon/kdeconnectd.desktop.cmake +++ b/daemon/kdeconnectd.desktop.cmake @@ -8,6 +8,7 @@ OnlyShowIn=KDE;GNOME;Unity;XFCE; NoDisplay=true Name=KDEConnect daemon +Name[ar]=عفريت KDEConnect Name[ast]=Degorriu KDEConnect Name[bg]=Услуга KDE Connect Name[ca]=Dimoni del KDEConnect diff --git a/fileitemactionplugin/kdeconnectsendfile.desktop b/fileitemactionplugin/kdeconnectsendfile.desktop index e220c9503..d678fd49c 100644 --- a/fileitemactionplugin/kdeconnectsendfile.desktop +++ b/fileitemactionplugin/kdeconnectsendfile.desktop @@ -1,6 +1,7 @@ [Desktop Entry] Type=Service Name=Send file via KDE Connect service +Name[ar]=أرسل ملفًّا عبر خدمة «كدي المتّصل» Name[ast]=Unviar ficheru pente'l serviciu KDE Connect Name[bg]=Изпращане на файл през услугата KDE Connect Name[bs]=Pošalji datoteku putem KDE Connect servisa @@ -32,6 +33,7 @@ Name[x-test]=xxSend file via KDE Connect servicexx Name[zh_CN]=通过 KDE Connect 服务发送文件 X-KDE-Library=kdeconnectfiletiemaction X-KDE-Submenu=Connect +X-KDE-Submenu[ar]=اتّصل,اتصل X-KDE-Submenu[bg]=Свързване X-KDE-Submenu[bs]=Uspostavi vezu X-KDE-Submenu[ca]=Connecta diff --git a/kcm/kcm_kdeconnect.desktop b/kcm/kcm_kdeconnect.desktop index b31da5122..6952ef657 100755 --- a/kcm/kcm_kdeconnect.desktop +++ b/kcm/kcm_kdeconnect.desktop @@ -11,6 +11,7 @@ X-KDE-ParentApp=kcontrol X-KDE-System-Settings-Parent-Category=hardware Name=KDE Connect +Name[ar]=كدي المتّصل Name[ast]=KDE Connect Name[bg]=KDE Connect Name[bs]=Konekcija KDE @@ -43,6 +44,7 @@ Name[x-test]=xxKDE Connectxx Name[zh_CN]=KDE Connect Comment=Connect and sync your devices +Comment[ar]=اتّصل وزامن أجهزتك Comment[ast]=Coneuta y sincroniza los tos preseos Comment[ca]=Connecta i sincronitza els vostres dispositius Comment[ca@valencia]=Connecta i sincronitza els vostres dispositius @@ -72,6 +74,7 @@ Comment[x-test]=xxConnect and sync your devicesxx Comment[zh_CN]=连接并同步您的设备 X-KDE-Keywords=Network,Android,Devices +X-KDE-Keywords[ar]=شبكة,أندرويد,اندرويد,جهاز,أجهزة X-KDE-Keywords[ast]=Rede,Android,Preseos X-KDE-Keywords[bg]=Мрежа,Андроид,Устройства X-KDE-Keywords[bs]=Mreža,Android,Uređaji diff --git a/kcm/org.kde.kdeconnect.kcm.desktop b/kcm/org.kde.kdeconnect.kcm.desktop index 521386a80..c5ac23399 100755 --- a/kcm/org.kde.kdeconnect.kcm.desktop +++ b/kcm/org.kde.kdeconnect.kcm.desktop @@ -4,6 +4,7 @@ Icon=kdeconnect Terminal=false Exec=kcmshell5 kcm_kdeconnect Name=KDE Connect Settings +Name[ar]=إعدادات كدي المتّصل Name[ast]=Axustes KDE Connect Name[ca]=Arranjament del KDE Connect Name[ca@valencia]=Arranjament del KDE Connect @@ -30,6 +31,7 @@ Name[uk]=Параметри KDE Connect Name[x-test]=xxKDE Connect Settingsxx Name[zh_CN]=KDE Connect 设置 GenericName=Connect and sync your devices +GenericName[ar]=اتّصل وزامن أجهزتك GenericName[ast]=Coneuta y sincroniza los tos preseos GenericName[ca]=Connecta i sincronitza els vostres dispositius GenericName[ca@valencia]=Connecta i sincronitza els vostres dispositius diff --git a/org.kde.kdeconnect.nonplasma.desktop b/org.kde.kdeconnect.nonplasma.desktop index ed65e2c63..d07a6f93b 100755 --- a/org.kde.kdeconnect.nonplasma.desktop +++ b/org.kde.kdeconnect.nonplasma.desktop @@ -1,5 +1,6 @@ [Desktop Entry] Name=KDE Connect Monitor +Name[ar]=مرقاب «كدي المتّصل» Name[ast]=Monitor de KDE Connect Name[ca]=Controlador del KDE Connect Name[ca@valencia]=Controlador del KDE Connect @@ -26,6 +27,7 @@ Name[uk]=Монітор KDE Connect Name[x-test]=xxKDE Connect Monitorxx Name[zh_CN]=KDE Connect 监视器 Comment=Display information about your devices +Comment[ar]=اعرض معلومات عن أجهزتك Comment[ast]=Amuesa información tocante a los tos preseos Comment[ca]=Mostra la informació dels vostres dispositius Comment[ca@valencia]=Mostra la informació dels vostres dispositius diff --git a/plasmoid/package/metadata.desktop b/plasmoid/package/metadata.desktop index d96489cb4..14b44a1fb 100644 --- a/plasmoid/package/metadata.desktop +++ b/plasmoid/package/metadata.desktop @@ -1,5 +1,6 @@ [Desktop Entry] Name=KDE Connect +Name[ar]=كدي المتّصل Name[ast]=KDE Connect Name[bg]=KDE Connect Name[bs]=Konekcija KDE @@ -31,6 +32,7 @@ Name[uk]=З’єднання KDE Name[x-test]=xxKDE Connectxx Name[zh_CN]=KDE Connect Comment=Show notifications from your devices using KDE Connect +Comment[ar]=أظهر الإخطارات من أجهزتك باستخدام «كدي المتّصل» Comment[ast]=Amuesa avisos de los tos preseos usando KDE Connect Comment[bg]=Показване на уведомления от вашите устройства чрез KDE Connect Comment[bs]=Prikaži obavlještenja sa uređaja koji koriste KDE konekciju diff --git a/plugins/kdeconnect.notifyrc b/plugins/kdeconnect.notifyrc index 59bf0b334..42b4489b5 100644 --- a/plugins/kdeconnect.notifyrc +++ b/plugins/kdeconnect.notifyrc @@ -1,6 +1,7 @@ [Global] IconName=kdeconnect Name=KDE Connect +Name[ar]=كدي المتّصل Name[ast]=KDE Connect Name[bg]=KDE Connect Name[bs]=Konekcija KDE @@ -32,6 +33,7 @@ Name[uk]=З’єднання KDE Name[x-test]=xxKDE Connectxx Name[zh_CN]=KDE Connect Comment=Notifications from your devices +Comment[ar]=الإخطارات من أجهزتك Comment[ast]=Avisos de los tos preseos Comment[bg]=Уведомления от устройствата ви Comment[bs]=Notifikacija sa Vašeg uređaja @@ -65,6 +67,7 @@ Comment[zh_CN]=来自你设备的通知 [Event/pairingRequest] Name=Pairing Request +Name[ar]=طلب اقتران Name[ast]=Solicitú d'empareyamientu Name[bg]=Заявка за сдвояване Name[bs]=Zahtjev za uparivanje @@ -95,6 +98,7 @@ Name[uk]=Запит щодо пов’язування Name[x-test]=xxPairing Requestxx Name[zh_CN]=配对请求 Comment=Pairing request received from a device +Comment[ar]=استُلم طلب اقتران من جهاز Comment[ca]=Les sol·licituds d'aparellament rebudes des d'un dispositiu Comment[ca@valencia]=Les sol·licituds d'aparellament rebudes des d'un dispositiu Comment[de]=Verbindungsanfrage von einem Gerät erhalten @@ -113,6 +117,7 @@ Action=Popup [Event/callReceived] Name=Incoming Call +Name[ar]=مكالمة واردة Name[ast]=Llamada entrante Name[bg]=Входящо обаждане Name[ca]=Trucada entrant @@ -142,6 +147,7 @@ Name[uk]=Вхідний дзвінок Name[x-test]=xxIncoming Callxx Name[zh_CN]=收到呼叫 Comment=Someone is calling you +Comment[ar]=ثمّة من يتّصل بك Comment[ast]=Daquién ta llamándote Comment[bg]=Някой ви се обажда Comment[bs]=Neko Vas zove @@ -176,6 +182,7 @@ Action=Popup [Event/missedCall] Name=Missed Call +Name[ar]=مكالمة فائتة Name[ast]=Llamada perdida Name[bg]=Пропуснато обаждане Name[ca]=Trucada perduda @@ -205,6 +212,7 @@ Name[uk]=Пропущений дзвінок Name[x-test]=xxMissed Callxx Name[zh_CN]=未接来电 Comment=You have a missed call +Comment[ar]=لقد فاتتك مكالمة Comment[ast]=Tienes una llamada perdida Comment[bg]=Имате неприето обаждане Comment[bs]=Imate propušten poziv @@ -239,6 +247,7 @@ Action=Popup [Event/smsReceived] Name=SMS Received +Name[ar]=استُلمت رسالة Name[ast]=SMS recibíu Name[bg]=Получен SMS Name[ca]=S'ha rebut un SMS @@ -268,6 +277,7 @@ Name[uk]=Отримано SMS Name[x-test]=xxSMS Receivedxx Name[zh_CN]=收到短信 Comment=Someone sent you an SMS +Comment[ar]=ثمّة من أرسل رسالة إليك Comment[ast]=Daquién unvióte un SMS Comment[bg]=Някой ви изпрати текстово съобщение Comment[bs]=Neko Vam je poslao SMS poruku @@ -302,6 +312,7 @@ Action=Popup [Event/batteryLow] Name=Battery Low +Name[ar]=البطّاريّة ضعيفة Name[ast]=Batería baxa Name[bg]=Изтощена батерия Name[ca]=Bateria baixa @@ -331,6 +342,7 @@ Name[uk]=Низький рівень заряду Name[x-test]=xxBattery Lowxx Name[zh_CN]=电池电量低 Comment=Your battery is in low state +Comment[ar]=بطّاريّتك في الحالة الضعيفة Comment[ast]=La to batería ta nun estáu baxu Comment[bg]=Батерията ви е с нисък заряд Comment[bs]=Vaša baterija je gotovo prazna @@ -365,6 +377,7 @@ Action=Popup [Event/pingReceived] Name=Ping Received +Name[ar]=استُلمت وكزة Name[ast]=Ping recibíu Name[bg]=Пингът е приет Name[ca]=S'ha rebut un ping @@ -394,6 +407,7 @@ Name[uk]=Отримано сигнал підтримки зв’язку Name[x-test]=xxPing Receivedxx Name[zh_CN]=收到 Ping Comment=Ping received +Comment[ar]=استُلمت وكزة Comment[ast]=Recibióse un ping Comment[bg]=Пингът е приет Comment[bs]=Primili ste ping @@ -428,6 +442,7 @@ Action=Popup [Event/notification] Name=Generic Notification +Name[ar]=إخطار عموميّ Name[ast]=Avisu xenéricu Name[bg]=Общо уведомление Name[ca]=Notificació genèrica @@ -457,6 +472,7 @@ Name[uk]=Загальне сповіщення Name[x-test]=xxGeneric Notificationxx Name[zh_CN]=一般通知 Comment=Notification received +Comment[ar]=استُلم إخطار Comment[ast]=Avisu recibíu Comment[bg]=Уведомлението е прието Comment[bs]=Primjeno obavještenje @@ -491,6 +507,7 @@ Action=Popup [Event/transferReceived] Name=File Transfer +Name[ar]=نقل الملفّات Name[ast]=Tresferencia de ficheros Name[bg]=Прехвърляне на файл Name[ca]=Transferència de fitxers @@ -520,6 +537,7 @@ Name[uk]=Перенесення файлів Name[x-test]=xxFile Transferxx Name[zh_CN]=文件传送 Comment=Incoming file +Comment[ar]=ملفّ قادم Comment[ast]=Ficheru entrante Comment[bg]=Входящ файл Comment[ca]=Fitxer entrant diff --git a/plugins/kdeconnect_plugin.desktop b/plugins/kdeconnect_plugin.desktop index 53de08dbf..9410d5fc7 100644 --- a/plugins/kdeconnect_plugin.desktop +++ b/plugins/kdeconnect_plugin.desktop @@ -3,6 +3,7 @@ Type=ServiceType X-KDE-ServiceType=KdeConnect/Plugin X-KDE-Derived=KPluginInfo Name=KDEConnect Plugin +Name[ar]=ملحقة KDEConnect Name[ast]=Complementu KDEConnect Name[bg]=Приставка на KDEConnect Name[bs]=Priključak za KDE konekciju diff --git a/plugins/notifications/kdeconnect_notifications_config.desktop b/plugins/notifications/kdeconnect_notifications_config.desktop index c9c8b39a8..80e8f4dc6 100644 --- a/plugins/notifications/kdeconnect_notifications_config.desktop +++ b/plugins/notifications/kdeconnect_notifications_config.desktop @@ -6,6 +6,7 @@ X-KDE-Library=kdeconnect_notifications_config X-KDE-ParentComponents=kdeconnect_notifications Name=Notification synchronization plugin settings +Name[ar]=إعدادات ملحقة مزامنة الإخطارات Name[ca]=Ajustament del connector Sincronitza les notificacions Name[ca@valencia]=Ajustament del connector Sincronitza les notificacions Name[cs]=Nastavení modulu synchronizace upozornění diff --git a/plugins/pausemusic/kdeconnect_pausemusic_config.desktop b/plugins/pausemusic/kdeconnect_pausemusic_config.desktop index dee068b82..aa13b6317 100644 --- a/plugins/pausemusic/kdeconnect_pausemusic_config.desktop +++ b/plugins/pausemusic/kdeconnect_pausemusic_config.desktop @@ -6,6 +6,7 @@ X-KDE-Library=kdeconnect_pausemusic_config X-KDE-ParentComponents=kdeconnect_pausemusic Name=Pause Music plugin settings +Name[ar]=إعدادات ملحقة إلباث الموسيقى Name[ast]=Axustes del complementu de posar música Name[bg]=Настройки на приставката за поставяне на пауза Name[bs]=Zaustavi Muziku postavke dodatka diff --git a/plugins/runcommand/kdeconnect_runcommand_config.desktop b/plugins/runcommand/kdeconnect_runcommand_config.desktop index 4ad408c46..a8b2beb84 100644 --- a/plugins/runcommand/kdeconnect_runcommand_config.desktop +++ b/plugins/runcommand/kdeconnect_runcommand_config.desktop @@ -6,6 +6,7 @@ X-KDE-Library=kdeconnect_runcommand_config X-KDE-ParentComponents=kdeconnect_runcommand Name=Run Command plugin settings +Name[ar]=إعدادات ملحقة تشغيل الأوامر Name[ast]=Axustes del complementu d'executar comandos Name[ca]=Ajustaments del connector Executa ordres Name[ca@valencia]=Ajustaments del connector Executa ordes diff --git a/plugins/share/kdeconnect_share_config.desktop b/plugins/share/kdeconnect_share_config.desktop index 6336050fe..1130e488d 100644 --- a/plugins/share/kdeconnect_share_config.desktop +++ b/plugins/share/kdeconnect_share_config.desktop @@ -6,6 +6,7 @@ X-KDE-Library=kdeconnect_share_config X-KDE-ParentComponents=kdeconnect_share Name=Share plugin settings +Name[ar]=إعدادات ملحقة المشاركة Name[ast]=Axustes del complementu de compartir Name[bg]=Настройки на приставката за споделяне Name[bs]=Podijeli postavke dodatka From 5df0923b22660305733ba78b589fc954183b76e4 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Mon, 22 Feb 2016 10:51:54 +0000 Subject: [PATCH 16/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plugins/kdeconnect.notifyrc | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/kdeconnect.notifyrc b/plugins/kdeconnect.notifyrc index 42b4489b5..8f20f4373 100644 --- a/plugins/kdeconnect.notifyrc +++ b/plugins/kdeconnect.notifyrc @@ -103,6 +103,7 @@ Comment[ca]=Les sol·licituds d'aparellament rebudes des d'un dispositiu Comment[ca@valencia]=Les sol·licituds d'aparellament rebudes des d'un dispositiu Comment[de]=Verbindungsanfrage von einem Gerät erhalten Comment[el]=Λήφθηκε αίτημα σύζευξης από μια συσκευή +Comment[en_GB]=Pairing request received from a device Comment[es]=Petición de vinculación recibida desde un dispositivo Comment[fi]=Saatiin paripyyntö laitteelta Comment[gl]=Recibiuse unha solicitude de emparellamento dun dispositivo. From 1dbadf133a2865a9662a218ccced3b4517232cb9 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Wed, 24 Feb 2016 09:10:43 +0000 Subject: [PATCH 17/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plugins/kdeconnect.notifyrc | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/kdeconnect.notifyrc b/plugins/kdeconnect.notifyrc index 8f20f4373..d996197a5 100644 --- a/plugins/kdeconnect.notifyrc +++ b/plugins/kdeconnect.notifyrc @@ -111,6 +111,7 @@ Comment[nl]=Verzoek om een paar te maken ontvangen van apparaten Comment[pl]=Otrzymano żądanie parowania z urządzenia Comment[pt]=Pedido de emparelhamento recebido de um dispositivo Comment[pt_BR]=Solicitação de emparelhamento recebida de um dispositivo +Comment[sk]=Požiadavka na spárovanie prijatá zo zariadenia Comment[sv]=Begäran om ihopparning mottagen från en apparat Comment[uk]=Від пристрою отримано запит щодо пов’язування Comment[x-test]=xxPairing request received from a devicexx From 2c88a0ab39ea8419e76c4ca82c4762640d5191d9 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sat, 27 Feb 2016 09:28:44 +0000 Subject: [PATCH 18/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plugins/kdeconnect.notifyrc | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/kdeconnect.notifyrc b/plugins/kdeconnect.notifyrc index d996197a5..1ca7f06ae 100644 --- a/plugins/kdeconnect.notifyrc +++ b/plugins/kdeconnect.notifyrc @@ -107,6 +107,7 @@ Comment[en_GB]=Pairing request received from a device Comment[es]=Petición de vinculación recibida desde un dispositivo Comment[fi]=Saatiin paripyyntö laitteelta Comment[gl]=Recibiuse unha solicitude de emparellamento dun dispositivo. +Comment[it]=Richiesta di associazione ricevuta da un dispositivo Comment[nl]=Verzoek om een paar te maken ontvangen van apparaten Comment[pl]=Otrzymano żądanie parowania z urządzenia Comment[pt]=Pedido de emparelhamento recebido de um dispositivo From c2ff5c5101e6b9e062b8dd7ac6679846c4acb595 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Thu, 3 Mar 2016 09:54:08 +0000 Subject: [PATCH 19/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- fileitemactionplugin/kdeconnectsendfile.desktop | 1 + plugins/kdeconnect.notifyrc | 1 + plugins/notifications/kdeconnect_notifications_config.desktop | 1 + 3 files changed, 3 insertions(+) diff --git a/fileitemactionplugin/kdeconnectsendfile.desktop b/fileitemactionplugin/kdeconnectsendfile.desktop index d678fd49c..34d6fbbf2 100644 --- a/fileitemactionplugin/kdeconnectsendfile.desktop +++ b/fileitemactionplugin/kdeconnectsendfile.desktop @@ -34,6 +34,7 @@ Name[zh_CN]=通过 KDE Connect 服务发送文件 X-KDE-Library=kdeconnectfiletiemaction X-KDE-Submenu=Connect X-KDE-Submenu[ar]=اتّصل,اتصل +X-KDE-Submenu[ast]=Coneutar X-KDE-Submenu[bg]=Свързване X-KDE-Submenu[bs]=Uspostavi vezu X-KDE-Submenu[ca]=Connecta diff --git a/plugins/kdeconnect.notifyrc b/plugins/kdeconnect.notifyrc index 1ca7f06ae..2ec8dc615 100644 --- a/plugins/kdeconnect.notifyrc +++ b/plugins/kdeconnect.notifyrc @@ -99,6 +99,7 @@ Name[x-test]=xxPairing Requestxx Name[zh_CN]=配对请求 Comment=Pairing request received from a device Comment[ar]=استُلم طلب اقتران من جهاز +Comment[ast]=Solicitú d'empareyamientu recibida d'un preséu Comment[ca]=Les sol·licituds d'aparellament rebudes des d'un dispositiu Comment[ca@valencia]=Les sol·licituds d'aparellament rebudes des d'un dispositiu Comment[de]=Verbindungsanfrage von einem Gerät erhalten diff --git a/plugins/notifications/kdeconnect_notifications_config.desktop b/plugins/notifications/kdeconnect_notifications_config.desktop index 80e8f4dc6..b582e1f97 100644 --- a/plugins/notifications/kdeconnect_notifications_config.desktop +++ b/plugins/notifications/kdeconnect_notifications_config.desktop @@ -7,6 +7,7 @@ X-KDE-ParentComponents=kdeconnect_notifications Name=Notification synchronization plugin settings Name[ar]=إعدادات ملحقة مزامنة الإخطارات +Name[ast]=Axustes del complementu de sincronización d'avisos Name[ca]=Ajustament del connector Sincronitza les notificacions Name[ca@valencia]=Ajustament del connector Sincronitza les notificacions Name[cs]=Nastavení modulu synchronizace upozornění From 6e17178c0f2e83656852ebfb93409e95858d96f3 Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Fri, 4 Mar 2016 09:11:29 +0000 Subject: [PATCH 20/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plugins/kdeconnect.notifyrc | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/kdeconnect.notifyrc b/plugins/kdeconnect.notifyrc index 2ec8dc615..9c4240030 100644 --- a/plugins/kdeconnect.notifyrc +++ b/plugins/kdeconnect.notifyrc @@ -102,6 +102,7 @@ Comment[ar]=استُلم طلب اقتران من جهاز Comment[ast]=Solicitú d'empareyamientu recibida d'un preséu Comment[ca]=Les sol·licituds d'aparellament rebudes des d'un dispositiu Comment[ca@valencia]=Les sol·licituds d'aparellament rebudes des d'un dispositiu +Comment[cs]=Požadavek na párování přijat ze zařízení Comment[de]=Verbindungsanfrage von einem Gerät erhalten Comment[el]=Λήφθηκε αίτημα σύζευξης από μια συσκευή Comment[en_GB]=Pairing request received from a device From 5d80bf9f235b8094a5a0296a2386cae553f80c0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=80lex=20Fiestas?= Date: Mon, 7 Mar 2016 11:34:41 +0100 Subject: [PATCH 21/34] If the package contains a photo, show it in the notification If the received packet has a photo, set it as pixmap in the notification, otherwise keep showing the icon. REVIEW:127298 --- plugins/telephony/telephonyplugin.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/telephony/telephonyplugin.cpp b/plugins/telephony/telephonyplugin.cpp index c774c41b9..449a22d13 100644 --- a/plugins/telephony/telephonyplugin.cpp +++ b/plugins/telephony/telephonyplugin.cpp @@ -47,6 +47,7 @@ KNotification* TelephonyPlugin::createNotification(const NetworkPackage& np) const QString event = np.get("event"); const QString phoneNumber = np.get("phoneNumber", i18n("unknown number")); const QString contactName = np.get("contactName", phoneNumber); + const QByteArray phoneThumbnail = QByteArray::fromBase64(np.get("phoneThumbnail", "")); QString content, type, icon; KNotification::NotificationFlags flags = KNotification::CloseOnTimeout | KNotification::CloseWhenWidgetActivated; @@ -83,7 +84,13 @@ KNotification* TelephonyPlugin::createNotification(const NetworkPackage& np) qCDebug(KDECONNECT_PLUGIN_TELEPHONY) << "Creating notification with type:" << type; KNotification* notification = new KNotification(type, flags, this); - notification->setIconName(icon); + if (!phoneThumbnail.isEmpty()) { + QPixmap photo; + photo.loadFromData(phoneThumbnail, "JPEG"); + notification->setPixmap(photo); + } else { + notification->setIconName(icon); + } notification->setComponentName("kdeconnect"); notification->setTitle(title); notification->setText(content); From 6b8595d418b102097516ba36f9461d76ad8f3132 Mon Sep 17 00:00:00 2001 From: Elias Probst Date: Thu, 24 Mar 2016 23:47:55 +0100 Subject: [PATCH 22/34] =?UTF-8?q?Fix=20typo=20in=20debug=20msg=20(Batttery?= =?UTF-8?q?=20=E2=86=92=20Battery)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/battery/batterydbusinterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/battery/batterydbusinterface.cpp b/plugins/battery/batterydbusinterface.cpp index 006db4cc2..d836dff78 100644 --- a/plugins/battery/batterydbusinterface.cpp +++ b/plugins/battery/batterydbusinterface.cpp @@ -37,7 +37,7 @@ BatteryDbusInterface::BatteryDbusInterface(const Device *device) // destructor. QMap::iterator oldInterfaceIter = s_dbusInterfaces.find(device->id()); if (oldInterfaceIter != s_dbusInterfaces.end()) { - qCDebug(KDECONNECT_PLUGIN_BATTERY) << "Deleting stale BattteryDbusInterface for" << device->name(); + qCDebug(KDECONNECT_PLUGIN_BATTERY) << "Deleting stale BatteryDbusInterface for" << device->name(); //FIXME: This still crashes sometimes even after the workaround made in 38aa970, commented out by now //oldInterfaceIter.value()->deleteLater(); s_dbusInterfaces.erase(oldInterfaceIter); From ebce5091583ba827ef9e0d22737c4af5d7f5aea4 Mon Sep 17 00:00:00 2001 From: Heiko Becker Date: Mon, 4 Apr 2016 09:33:20 +0200 Subject: [PATCH 23/34] Silence CMake policy CMP0063 warning ...by adding the NO_POLICY_SCOPE flag as recommended by ECM's documentation. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ff2be365..1614107f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ include_directories(${CMAKE_SOURCE_DIR}) configure_file(kdeconnect-version.h.in ${CMAKE_CURRENT_BINARY_DIR}/kdeconnect-version.h) include(KDEInstallDirs) -include(KDECompilerSettings) +include(KDECompilerSettings NO_POLICY_SCOPE) include(KDECMakeSettings) include(ECMAddTests) include(ECMSetupVersion) From a8bd062baf15356975a76bd84b48afc5d5d3540a Mon Sep 17 00:00:00 2001 From: David Kahles Date: Thu, 31 Mar 2016 23:32:36 +0200 Subject: [PATCH 24/34] Stop clearing the notification list twice There were two clearNotifications() calls when refreshing the notification list. As there happens nothing relevant in between them, the second call is useless. REVIEW: 127542 --- interfaces/notificationsmodel.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/interfaces/notificationsmodel.cpp b/interfaces/notificationsmodel.cpp index 20d242e3d..ddf5c1fe5 100644 --- a/interfaces/notificationsmodel.cpp +++ b/interfaces/notificationsmodel.cpp @@ -133,7 +133,6 @@ void NotificationsModel::receivedNotifications(QDBusPendingCallWatcher* watcher) clearNotifications(); QDBusPendingReply pendingNotificationIds = *watcher; - clearNotifications(); if (pendingNotificationIds.isError()) { qCWarning(KDECONNECT_INTERFACES) << pendingNotificationIds.error(); return; From e86ea7b3bde7af3d4415299afbf1fa467ed311c5 Mon Sep 17 00:00:00 2001 From: David Kahles Date: Thu, 31 Mar 2016 23:37:35 +0200 Subject: [PATCH 25/34] Remove the keys from the notification hashmap When disabling the notifications plugin, we can't delete the notification adapter due to a QT bug. Thus we leak it, and to not expose the notifications anymore, we clean up the notifications in the adaptor. Therefore we delete the QStrings in the notification hashmap (mNotifications) with qDeleteAll(). But this function does only free the QStrings, but no remove the keys from the hashmap. Thus, a subsequent call to activeNotifications() has an undefined behavior, as there are dangling pointers in the hashmap. This is solved by removing the keys from the hashmap. REVIEW: 127543 --- plugins/notifications/notificationsdbusinterface.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/notifications/notificationsdbusinterface.cpp b/plugins/notifications/notificationsdbusinterface.cpp index 4e2c7e0ea..2e9132b6b 100644 --- a/plugins/notifications/notificationsdbusinterface.cpp +++ b/plugins/notifications/notificationsdbusinterface.cpp @@ -51,6 +51,7 @@ NotificationsDbusInterface::~NotificationsDbusInterface() void NotificationsDbusInterface::clearNotifications() { qDeleteAll(mNotifications); + mNotifications.clear(); } QStringList NotificationsDbusInterface::activeNotifications() From 6cc194644340ad7037ca86f07e30b337ccc78326 Mon Sep 17 00:00:00 2001 From: David Kahles Date: Fri, 1 Apr 2016 15:18:14 +0200 Subject: [PATCH 26/34] Allow paired and not reachable devices in the model The server supports this device state (e.g. if a device was saved as paired, but isn't reachable), so let's expose it to the model. The display filter should take care of excluding such devices if nessecarry. To make sure that such devices aren't shown in the kcm (we can't do anything useful with them at the moment), set the display filter accordingly. REVIEW: 127553 --- interfaces/devicesmodel.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interfaces/devicesmodel.cpp b/interfaces/devicesmodel.cpp index 7b0fdbb77..af192c814 100644 --- a/interfaces/devicesmodel.cpp +++ b/interfaces/devicesmodel.cpp @@ -262,10 +262,10 @@ QVariant DevicesModel::data(const QModelIndex& index, int role) const } case StatusModelRole: { int status = StatusFilterFlag::NoFilter; - if (device->isReachable()) { + if (device->isReachable()) status |= StatusFilterFlag::Reachable; - if (device->isPaired()) status |= StatusFilterFlag::Paired; - } + if (device->isPaired()) + status |= StatusFilterFlag::Paired; return status; } case IconNameRole: From 12ccbaef98b5b0d2beba1bbac95199becf633751 Mon Sep 17 00:00:00 2001 From: David Kahles Date: Sun, 3 Apr 2016 16:48:28 +0200 Subject: [PATCH 27/34] Improve NotificationsModel Don't refresh the whole notification list, if a notification is added or removed. REVIEW: 127565 --- interfaces/dbusinterfaces.cpp | 1 + interfaces/dbusinterfaces.h | 4 ++++ interfaces/notificationsmodel.cpp | 20 ++++++++++++++------ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/interfaces/dbusinterfaces.cpp b/interfaces/dbusinterfaces.cpp index d0883f8be..74d485269 100644 --- a/interfaces/dbusinterfaces.cpp +++ b/interfaces/dbusinterfaces.cpp @@ -87,6 +87,7 @@ DeviceNotificationsDbusInterface::~DeviceNotificationsDbusInterface() NotificationDbusInterface::NotificationDbusInterface(const QString& deviceId, const QString& notificationId, QObject* parent) : OrgKdeKdeconnectDeviceNotificationsNotificationInterface(DaemonDbusInterface::activatedService(), "/modules/kdeconnect/devices/"+deviceId+"/notifications/"+notificationId, QDBusConnection::sessionBus(), parent) + , id(notificationId) { } diff --git a/interfaces/dbusinterfaces.h b/interfaces/dbusinterfaces.h index b5705e684..bccf9fad7 100644 --- a/interfaces/dbusinterfaces.h +++ b/interfaces/dbusinterfaces.h @@ -99,6 +99,10 @@ class KDECONNECTINTERFACES_EXPORT NotificationDbusInterface public: NotificationDbusInterface(const QString& deviceId, const QString& notificationId, QObject* parent = nullptr); virtual ~NotificationDbusInterface(); + + QString notificationId() { return id; } +private: + const QString id; }; diff --git a/interfaces/notificationsmodel.cpp b/interfaces/notificationsmodel.cpp index ddf5c1fe5..0844d03f7 100644 --- a/interfaces/notificationsmodel.cpp +++ b/interfaces/notificationsmodel.cpp @@ -95,16 +95,24 @@ void NotificationsModel::setDeviceId(const QString& deviceId) void NotificationsModel::notificationAdded(const QString& id) { - //TODO: Actually add instead of refresh - Q_UNUSED(id); - refreshNotificationList(); + int currentSize = m_notificationList.size(); + beginInsertRows(QModelIndex(), currentSize, currentSize); + NotificationDbusInterface* dbusInterface = new NotificationDbusInterface(m_deviceId, id, this); + m_notificationList.append(dbusInterface); + endInsertRows(); } void NotificationsModel::notificationRemoved(const QString& id) { - //TODO: Actually remove instead of refresh - Q_UNUSED(id); - refreshNotificationList(); + for (int i = 0; i < m_notificationList.size(); ++i) { + if (m_notificationList[i]->notificationId() == id) { + beginRemoveRows(QModelIndex(), i, i); + m_notificationList.removeAt(i); + endRemoveRows(); + return; + } + } + qCWarning(KDECONNECT_INTERFACES) << "Attempted to remove unknown notification: " << id; } void NotificationsModel::refreshNotificationList() From aefa51fa8613cb3add5cbd783849781ac5e50a0e Mon Sep 17 00:00:00 2001 From: David Kahles Date: Wed, 6 Apr 2016 00:25:12 +0200 Subject: [PATCH 28/34] Remove notifications from plasmoid, if the notifications plugin gets disabled Therefore notify the client that we're deleting all notifications. Otherwise the client wouldn't notice this and the notifications would still be available in the plasmoid. REVIEW: 127582 --- interfaces/notificationsmodel.cpp | 2 ++ interfaces/notificationsmodel.h | 3 +-- plugins/notifications/notificationsdbusinterface.cpp | 1 + plugins/notifications/notificationsdbusinterface.h | 1 + 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/interfaces/notificationsmodel.cpp b/interfaces/notificationsmodel.cpp index 0844d03f7..3469cd5f6 100644 --- a/interfaces/notificationsmodel.cpp +++ b/interfaces/notificationsmodel.cpp @@ -87,6 +87,8 @@ void NotificationsModel::setDeviceId(const QString& deviceId) this, SLOT(notificationAdded(QString))); connect(m_dbusInterface, SIGNAL(notificationRemoved(QString)), this, SLOT(notificationRemoved(QString))); + connect(m_dbusInterface, SIGNAL(allNotificationsRemoved()), + this, SLOT(clearNotifications())); refreshNotificationList(); diff --git a/interfaces/notificationsmodel.h b/interfaces/notificationsmodel.h index 0eb3a4deb..83a93753c 100644 --- a/interfaces/notificationsmodel.h +++ b/interfaces/notificationsmodel.h @@ -69,6 +69,7 @@ private Q_SLOTS: void notificationRemoved(const QString& id); void refreshNotificationList(); void receivedNotifications(QDBusPendingCallWatcher* watcher); + void clearNotifications(); Q_SIGNALS: void deviceIdChanged(const QString& value); @@ -76,8 +77,6 @@ Q_SIGNALS: void rowsChanged(); private: - void clearNotifications(); - DeviceNotificationsDbusInterface* m_dbusInterface; QList m_notificationList; QString m_deviceId; diff --git a/plugins/notifications/notificationsdbusinterface.cpp b/plugins/notifications/notificationsdbusinterface.cpp index 2e9132b6b..6f55db092 100644 --- a/plugins/notifications/notificationsdbusinterface.cpp +++ b/plugins/notifications/notificationsdbusinterface.cpp @@ -52,6 +52,7 @@ void NotificationsDbusInterface::clearNotifications() { qDeleteAll(mNotifications); mNotifications.clear(); + Q_EMIT allNotificationsRemoved(); } QStringList NotificationsDbusInterface::activeNotifications() diff --git a/plugins/notifications/notificationsdbusinterface.h b/plugins/notifications/notificationsdbusinterface.h index fd36a1088..ada6bb89c 100644 --- a/plugins/notifications/notificationsdbusinterface.h +++ b/plugins/notifications/notificationsdbusinterface.h @@ -53,6 +53,7 @@ public Q_SLOTS: Q_SIGNALS: Q_SCRIPTABLE void notificationPosted(const QString& publicId); Q_SCRIPTABLE void notificationRemoved(const QString& publicId); + Q_SCRIPTABLE void allNotificationsRemoved(); private /*methods*/: void removeNotification(const QString& internalId); From 8d7dad3604cdda2f9ffaf234bf896d1bd9e53a86 Mon Sep 17 00:00:00 2001 From: David Kahles Date: Wed, 6 Apr 2016 02:55:50 +0200 Subject: [PATCH 29/34] Introduce QML component to check for plugin availability Remove those checks from three different places and put them into a reusable component, which can be used for different plugins. REVIEW: 127583 --- plasmoid/package/contents/ui/Battery.qml | 27 ++++------- plasmoid/package/contents/ui/FindMyPhone.qml | 23 ++++------ .../package/contents/ui/PluginChecker.qml | 45 +++++++++++++++++++ plasmoid/package/contents/ui/Sftp.qml | 23 ++++------ 4 files changed, 69 insertions(+), 49 deletions(-) create mode 100644 plasmoid/package/contents/ui/PluginChecker.qml diff --git a/plasmoid/package/contents/ui/Battery.qml b/plasmoid/package/contents/ui/Battery.qml index 4538437b9..02bf7cf91 100644 --- a/plasmoid/package/contents/ui/Battery.qml +++ b/plasmoid/package/contents/ui/Battery.qml @@ -27,9 +27,14 @@ QtObject { id: root - property string deviceId: "" - property variant device: DeviceDbusInterfaceFactory.create(deviceId) - property bool available: false + property alias deviceId: checker.deviceId + readonly property alias device: checker.device + readonly property alias available: checker.available + + readonly property PluginChecker pluginChecker: PluginChecker { + id: checker + pluginName: "battery" + } property bool charging: false property int charge: -1 @@ -48,7 +53,6 @@ QtObject { onSuccess: root.charge = result } - // Note: magically called by qml onAvailableChanged: { if (available) { battery = DeviceBatteryDbusInterfaceFactory.create(deviceId) @@ -62,19 +66,4 @@ QtObject { battery = null } } - - function pluginsChanged() { - var result = DBusResponseWaiter.waitForReply(device.hasPlugin("kdeconnect_battery")) - - if (result && result != "error") { - available = true - } else { - available = false - } - } - - Component.onCompleted: { - device.pluginsChanged.connect(pluginsChanged) - device.pluginsChanged() - } } diff --git a/plasmoid/package/contents/ui/FindMyPhone.qml b/plasmoid/package/contents/ui/FindMyPhone.qml index 8a666b7bc..3a23fde76 100644 --- a/plasmoid/package/contents/ui/FindMyPhone.qml +++ b/plasmoid/package/contents/ui/FindMyPhone.qml @@ -27,9 +27,14 @@ QtObject { id: root - property string deviceId: "" - property variant device: DeviceDbusInterfaceFactory.create(deviceId) - property bool available: false + property alias deviceId: checker.deviceId + readonly property alias device: checker.device + readonly property alias available: checker.available + + readonly property PluginChecker pluginChecker: PluginChecker { + id: checker + pluginName: "findmyphone" + } property variant findMyPhone: null @@ -39,12 +44,6 @@ QtObject { } } - Component.onCompleted: { - device.pluginsChanged.connect(pluginsChanged) - pluginsChanged() - } - - // Note: magically called by qml onAvailableChanged: { if (available) { findMyPhone = FindMyPhoneDbusInterfaceFactory.create(deviceId) @@ -52,10 +51,4 @@ QtObject { findMyPhone = null } } - - function pluginsChanged() { - var result = DBusResponseWaiter.waitForReply(device.hasPlugin("kdeconnect_findmyphone")) - available = (result && result != "error"); - } - } diff --git a/plasmoid/package/contents/ui/PluginChecker.qml b/plasmoid/package/contents/ui/PluginChecker.qml new file mode 100644 index 000000000..adfc72767 --- /dev/null +++ b/plasmoid/package/contents/ui/PluginChecker.qml @@ -0,0 +1,45 @@ +/** + * Copyright 2014 Samoilenko Yuri + * Copyright 2016 David Kahles + * + * 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) version 3 or any later version + * accepted by the membership of KDE e.V. (or its successor approved + * by the membership of KDE e.V.), which shall act as a proxy + * defined in Section 14 of version 3 of the license. + * + * 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, see . + */ + +import QtQml 2.2 +import org.kde.kdeconnect 1.0 + +QtObject { + + id: root + + property string deviceId: "" + property string pluginName: "" + readonly property variant device: DeviceDbusInterfaceFactory.create(deviceId) + property bool available: false + + property Connections connection: Connections { + target: device + onPluginsChanged: pluginsChanged() + } + + Component.onCompleted: pluginsChanged() + + function pluginsChanged() { + var result = DBusResponseWaiter.waitForReply(device.hasPlugin("kdeconnect_" + pluginName)) + available = (result && result != "error"); + } +} diff --git a/plasmoid/package/contents/ui/Sftp.qml b/plasmoid/package/contents/ui/Sftp.qml index 9ef4f4176..fd817e567 100644 --- a/plasmoid/package/contents/ui/Sftp.qml +++ b/plasmoid/package/contents/ui/Sftp.qml @@ -27,9 +27,14 @@ QtObject { id: root - property string deviceId: "" - property variant device: DeviceDbusInterfaceFactory.create(deviceId) - property bool available: false + property alias deviceId: checker.deviceId + readonly property alias device: checker.device + readonly property alias available: checker.available + + readonly property PluginChecker pluginChecker: PluginChecker { + id: checker + pluginName: "sftp" + } property variant sftp: null @@ -38,12 +43,6 @@ QtObject { sftp.startBrowsing(); } - Component.onCompleted: { - device.pluginsChanged.connect(pluginsChanged) - pluginsChanged() - } - - // Note: magically called by qml onAvailableChanged: { if (available) { sftp = SftpDbusInterfaceFactory.create(deviceId) @@ -51,10 +50,4 @@ QtObject { sftp = null } } - - function pluginsChanged() { - var result = DBusResponseWaiter.waitForReply(device.hasPlugin("kdeconnect_sftp")) - available = (result && result != "error"); - } - } From 337dd191e459011faae2f1b8a27a5760ad996e70 Mon Sep 17 00:00:00 2001 From: David Kahles Date: Fri, 8 Apr 2016 01:12:10 +0200 Subject: [PATCH 30/34] Fix mpris player discovery The previous used QDbusServiceWatcher doesn't work as it does only watch out for specific services, but the players use different, unpredictable names, so we need to check all service registrations for mpris players. BUG: 361367 REVIEW: 127611 --- plugins/mpriscontrol/mpriscontrolplugin.cpp | 28 ++++++++++++--------- plugins/mpriscontrol/mpriscontrolplugin.h | 4 +-- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/plugins/mpriscontrol/mpriscontrolplugin.cpp b/plugins/mpriscontrol/mpriscontrolplugin.cpp index cc2fcde97..21b8abe1a 100644 --- a/plugins/mpriscontrol/mpriscontrolplugin.cpp +++ b/plugins/mpriscontrol/mpriscontrolplugin.cpp @@ -44,27 +44,31 @@ MprisControlPlugin::MprisControlPlugin(QObject* parent, const QVariantList& args { m_watcher = new QDBusServiceWatcher(QString(), QDBusConnection::sessionBus(), QDBusServiceWatcher::WatchForOwnerChange, this); - connect(m_watcher, &QDBusServiceWatcher::serviceRegistered, this, &MprisControlPlugin::addService); - connect(m_watcher, &QDBusServiceWatcher::serviceUnregistered, this, &MprisControlPlugin::removeService); + // TODO: QDBusConnectionInterface::serviceOwnerChanged is deprecated, maybe query org.freedesktop.DBus directly? + connect(QDBusConnection::sessionBus().interface(), &QDBusConnectionInterface::serviceOwnerChanged, this, &MprisControlPlugin::serviceOwnerChanged); //Add existing interfaces QStringList services = QDBusConnection::sessionBus().interface()->registeredServiceNames().value(); Q_FOREACH (const QString& service, services) { - addService(service); + // The string doesn't matter, it just needs to be empty/non-empty + serviceOwnerChanged(service, QLatin1String(""), QLatin1String("1")); } } -void MprisControlPlugin::addService(const QString& service) +// Copied from the mpris2 dataengine in the plasma-workspace repository +void MprisControlPlugin::serviceOwnerChanged(const QString& serviceName, const QString& oldOwner, const QString& newOwner) { - if (service.startsWith(QLatin1String("org.mpris.MediaPlayer2"))) { - addPlayer(service); - } -} + if (!serviceName.startsWith(QLatin1String("org.mpris.MediaPlayer2."))) + return; -void MprisControlPlugin::removeService(const QString& service) -{ - if (service.startsWith(QLatin1String("org.mpris.MediaPlayer2"))) { - removePlayer(service); + if (!oldOwner.isEmpty()) { + qCDebug(KDECONNECT_PLUGIN_MPRIS) << "MPRIS service" << serviceName << "just went offline"; + removePlayer(serviceName); + } + + if (!newOwner.isEmpty()) { + qCDebug(KDECONNECT_PLUGIN_MPRIS) << "MPRIS service" << serviceName << "just came online"; + addPlayer(serviceName); } } diff --git a/plugins/mpriscontrol/mpriscontrolplugin.h b/plugins/mpriscontrol/mpriscontrolplugin.h index e7839eba9..f61438a04 100644 --- a/plugins/mpriscontrol/mpriscontrolplugin.h +++ b/plugins/mpriscontrol/mpriscontrolplugin.h @@ -49,9 +49,7 @@ private Q_SLOTS: void seeked(qlonglong); private: - void addService(const QString& service); - void removeService(const QString& service); - + void serviceOwnerChanged(const QString& serviceName, const QString& oldOwner, const QString& newOwner); void addPlayer(const QString& ifaceName); void removePlayer(const QString& ifaceName); void sendPlayerList(); From 3103bd0c5a5905922fcc5c32d87fe9949809087a Mon Sep 17 00:00:00 2001 From: David Kahles Date: Fri, 1 Apr 2016 15:01:42 +0200 Subject: [PATCH 31/34] Improve filtering of devices in the DevicesModel We need to remove devices from the model if the filter doesn't match, to prevent listing disconnected devices in the plasmoid. REVIEW: 127610 --- interfaces/devicesmodel.cpp | 37 +++++++++++++++++++++++++------------ interfaces/devicesmodel.h | 8 ++++++-- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/interfaces/devicesmodel.cpp b/interfaces/devicesmodel.cpp index af192c814..0bf781548 100644 --- a/interfaces/devicesmodel.cpp +++ b/interfaces/devicesmodel.cpp @@ -102,10 +102,7 @@ void DevicesModel::deviceAdded(const QString& id) DeviceDbusInterface* dev = new DeviceDbusInterface(id, this); Q_ASSERT(dev->isValid()); - bool onlyPaired = (m_displayFilter & StatusFilterFlag::Paired); - bool onlyReachable = (m_displayFilter & StatusFilterFlag::Reachable); - - if ((onlyReachable && !dev->isReachable()) || (onlyPaired && !dev->isPaired())) { + if (! passesFilter(dev)) { delete dev; return; } @@ -127,21 +124,29 @@ void DevicesModel::deviceRemoved(const QString& id) void DevicesModel::deviceUpdated(const QString& id, bool isVisible) { + Q_UNUSED(isVisible); int row = rowForDevice(id); - if (row < 0 && isVisible) { + if (row < 0) { // FIXME: when m_dbusInterface is not valid refreshDeviceList() does // nothing and we can miss some devices. // Someone can reproduce this problem by restarting kdeconnectd while // kdeconnect's plasmoid is still running. - qCDebug(KDECONNECT_INTERFACES) << "Adding missing device" << id; + // Another reason for this branch is that we removed the device previously + // because of the filter settings. + qCDebug(KDECONNECT_INTERFACES) << "Adding missing or previously removed device" << id; deviceAdded(id); - row = rowForDevice(id); - } - - if (row >= 0) { - const QModelIndex idx = index(row); - Q_EMIT dataChanged(idx, idx); + } else { + DeviceDbusInterface *dev = getDevice(row); + if (! passesFilter(dev)) { + beginRemoveRows(QModelIndex(), row, row); + delete m_deviceList.takeAt(row); + endRemoveRows(); + qCDebug(KDECONNECT_INTERFACES) << "Removed changed device " << id; + } else { + const QModelIndex idx = index(row); + Q_EMIT dataChanged(idx, idx); + } } } @@ -295,3 +300,11 @@ int DevicesModel::rowCount(const QModelIndex& parent) const return m_deviceList.size(); } + +bool DevicesModel::passesFilter(DeviceDbusInterface* dev) const +{ + bool onlyPaired = (m_displayFilter & StatusFilterFlag::Paired); + bool onlyReachable = (m_displayFilter & StatusFilterFlag::Reachable); + + return !((onlyReachable && !dev->isReachable()) || (onlyPaired && !dev->isPaired())); +} diff --git a/interfaces/devicesmodel.h b/interfaces/devicesmodel.h index 283a41d72..fce91f83f 100644 --- a/interfaces/devicesmodel.h +++ b/interfaces/devicesmodel.h @@ -48,10 +48,13 @@ public: DeviceRole }; Q_ENUMS(ModelRoles); + + // A device is always paired or reachable or both + // You can combine the Paired and Reachable flags enum StatusFilterFlag { NoFilter = 0x00, - Paired = 0x01, - Reachable = 0x02 + Paired = 0x01, // show device only if it's paired + Reachable = 0x02 // show device only if it's reachable }; Q_DECLARE_FLAGS(StatusFilterFlags, StatusFilterFlag) Q_FLAGS(StatusFilterFlags) @@ -84,6 +87,7 @@ private: int rowForDevice(const QString& id) const; void clearDevices(); void appendDevice(DeviceDbusInterface* dev); + bool passesFilter(DeviceDbusInterface *dev) const; DaemonDbusInterface* m_dbusInterface; QVector m_deviceList; From 05cc6fa1314d26fcd244bf4aa4a156042cd0857c Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Sat, 9 Apr 2016 09:56:16 +0000 Subject: [PATCH 32/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plugins/findmyphone/kdeconnect_findmyphone.json | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/findmyphone/kdeconnect_findmyphone.json b/plugins/findmyphone/kdeconnect_findmyphone.json index 1b75c8b3a..a7ff2e5a3 100644 --- a/plugins/findmyphone/kdeconnect_findmyphone.json +++ b/plugins/findmyphone/kdeconnect_findmyphone.json @@ -43,6 +43,7 @@ "Name[ca@valencia]": "Troba el meu telèfon", "Name[ca]": "Troba el meu telèfon", "Name[cs]": "Najít můj telefon", + "Name[de]": "Telefon suchen", "Name[es]": "Encontrar mi teléfono", "Name[fi]": "Löydä puhelimeni", "Name[gl]": "Atopar o móbil", From ef488d10a885fb5831ffc4d2c11a2ca4be4bd0aa Mon Sep 17 00:00:00 2001 From: l10n daemon script Date: Mon, 11 Apr 2016 10:21:02 +0000 Subject: [PATCH 33/34] SVN_SILENT made messages (.desktop file) - always resolve ours In case of conflict in i18n, keep the version of the branch "ours" To resolve a particular conflict, "git checkout --ours path/to/file.desktop" --- plugins/findmyphone/kdeconnect_findmyphone.json | 1 + plugins/runcommand/kdeconnect_runcommand.json | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/findmyphone/kdeconnect_findmyphone.json b/plugins/findmyphone/kdeconnect_findmyphone.json index a7ff2e5a3..122315f42 100644 --- a/plugins/findmyphone/kdeconnect_findmyphone.json +++ b/plugins/findmyphone/kdeconnect_findmyphone.json @@ -17,6 +17,7 @@ "Description[ca@valencia]": "Troba el vostra telèfon perdut fent que reproduïsca un so d'alarma ", "Description[ca]": "Troba el vostra telèfon perdut fent que reprodueixi un so d'alarma ", "Description[cs]": "Najděte dsvůj telefon tím, že jej necháte přehrát zvuk upomínky", + "Description[de]": "Finden Sie Ihr verlegtes Telefon, indem Sie mit ihm eine Warnton abspielen", "Description[es]": "Encuentre su teléfono perdido haciéndole reproducir un sonido de alarma", "Description[fi]": "Löydä hukkaamasi puhelin laittamalla se soittamaan hälytysääntä ", "Description[gl]": "Reproducir un son de alarma nun teléfono móbil perdido para atopalo.", diff --git a/plugins/runcommand/kdeconnect_runcommand.json b/plugins/runcommand/kdeconnect_runcommand.json index 134a22841..b38b6deb3 100644 --- a/plugins/runcommand/kdeconnect_runcommand.json +++ b/plugins/runcommand/kdeconnect_runcommand.json @@ -18,6 +18,7 @@ "Description[ca@valencia]": "Executa ordes de la consola de forma remota", "Description[ca]": "Executa ordres de la consola de forma remota", "Description[cs]": "Spouštět konzolové příkazy vzdáleně", + "Description[de]": "Entfernte Konsolenbefehle ausführen", "Description[es]": "Ejecute órdenes de consola remotamente", "Description[fi]": "Suorita konsolikomentoja etänä", "Description[gl]": "Executar ordes de consola remotamente.", From 174cf3d3ce3d10fdaf7ce1379a889a51bc47b2d6 Mon Sep 17 00:00:00 2001 From: David Kahles Date: Tue, 12 Apr 2016 02:34:23 +0200 Subject: [PATCH 34/34] Don't reset m_pairStatus when unpair is requested by remote device unpairInternal() will take care of this, otherwise pairingChanged() will not be emited and though, the model won't notice it. REVIEW: 127641 --- core/device.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/core/device.cpp b/core/device.cpp index 816b37a56..e4d584e95 100644 --- a/core/device.cpp +++ b/core/device.cpp @@ -395,13 +395,11 @@ void Device::privateReceivedPackage(const NetworkPackage& np) qCDebug(KDECONNECT_CORE) << "Unpair request"; - PairStatus prevPairStatus = m_pairStatus; - m_pairStatus = Device::NotPaired; - - if (prevPairStatus == Device::Requested) { + if (m_pairStatus == Device::Requested) { m_pairingTimeut.stop(); + m_pairStatus = Device::NotPaired; Q_EMIT pairingFailed(i18n("Canceled by other peer")); - } else if (prevPairStatus == Device::Paired) { + } else if (m_pairStatus == Device::Paired) { unpairInternal(); }