Compare commits

..

27 commits

Author SHA1 Message Date
Carl Schwan
e62e31ec09
Modernize code 2024-11-03 22:27:45 +01:00
Carl Schwan
976c400489
Listen to providersChanged in the KCM ui 2024-11-03 22:26:10 +01:00
Carl Schwan
821534271a
Remove all the non relevant change to the UI file 2024-11-03 22:26:10 +01:00
Carl Schwan
b2d0d5fa48
Provide a QML UI to the new functionality 2024-11-03 22:26:10 +01:00
Carl Schwan
5b10d9632c
Simplify backend by only storing the list of disabled link providers
Previously the list of enabled and disabled providers was too easy to
get out of sync. Only having one list simplify the code and avoids issue
with for example the default state which should contains no disabled
backends.
2024-11-03 22:26:09 +01:00
Rob Emery
e2e36e698c
Refactoring 2024-11-03 22:26:09 +01:00
Rob Emery
e82d2e5e4a
Not sure why the display has changed so much, but switching things to minimum
rather than expanding seems to make it look more like it used to
2024-11-03 22:26:09 +01:00
Rob Emery
5895daf612
Adding dedicated button for backend saving 2024-11-03 22:26:09 +01:00
Rob Emery
27f5882dc1
By ref 2024-11-03 22:26:09 +01:00
Rob Emery
b5bf26c919
Refactoring 2024-11-03 22:26:09 +01:00
Rob Emery
fd07c7bea6
Injecting disabled status from the very start 2024-11-03 22:26:08 +01:00
Rob Emery
9800664360
These all need to be near-idempotent 2024-11-03 22:26:08 +01:00
Rob Emery
732bf0636f
Fixing rebase mangle 2024-11-03 22:26:08 +01:00
Rob Emery
97841c8634
Rough enable/disable for lanlink 2024-11-03 22:26:08 +01:00
Rob Emery
bc48c5e9f8
Hacking in a very rough enable/disable (untested) implementation 2024-11-03 22:26:08 +01:00
Rob Emery
21b081ad14
Wiring up config and forcing implementation of enable/disable per
provider
2024-11-03 22:26:07 +01:00
Rob Emery
44e85d73df
Fixed marshalling of the message so we now pass the status back 2024-11-03 22:26:07 +01:00
Rob Emery
355c2e1ff8
Wiring this up to send through, looks like the array is empty for some
reason that I'm not seeing at a glance at current
2024-11-03 22:26:07 +01:00
Rob Emery
e97461937c
Using string serialisation to workaround the weird build failure if
I make the return type anything more complex
2024-11-03 22:26:07 +01:00
Rob Emery
cc2dc39f92
OK this only works with QString and QStringList for some reason;
so I'll hack some substringing stuff together for now
2024-11-03 22:26:07 +01:00
Rob Emery
5b5fac2d5d
So this doesn't seem to work, if the return type is anything other than
QString or QStringList then it blows up with:
/home/rob/kde/src/kdeconnect-kde/kcm/kcm.cpp: In constructor ‘KdeConnectKcm::KdeConnectKcm(QObject*, const KPluginMetaData&, const QVariantList&)’:
/home/rob/kde/src/kdeconnect-kde/kcm/kcm.cpp:82:17: error: ‘class DaemonDbusInterface’ has no member named ‘linkProviders’
   82 |         daemon->linkProviders(),

even though the signatures are correct etc. No idea, I'll have
to fix this ultimately but I'll workaround it for now
2024-11-03 22:26:07 +01:00
Rob Emery
0bb9c8e294
OK, so this builds; but doesn't return the right type now. Untested if
the UI does what we want
2024-11-03 22:26:06 +01:00
Rob Emery
837c2af9bf
This now works at least 2024-11-03 22:26:06 +01:00
Rob Emery
e1ce928d01
This at least compiles 2024-11-03 22:26:06 +01:00
Rob Emery
0856afe216
New tact, lets create a new endpoint entirely based on "devices" 2024-11-03 22:26:06 +01:00
Rob Emery
811542cf84
This thows an error in kdeconnectd
qt.dbus.integration: QDBusConnection: couldn't handle call to getLinkProviders, no slot matched

but we are getting nearer
2024-11-03 22:26:06 +01:00
Rob Emery
01897942a0
Trying to get end-to-end of the link providers out so we can pass back
lists
2024-11-03 22:26:05 +01:00
39 changed files with 412 additions and 150 deletions

View file

@ -1,8 +1,8 @@
cmake_minimum_required(VERSION 3.16)
# KDE Release Service Version, managed by release script
set (RELEASE_SERVICE_VERSION_MAJOR "25")
set (RELEASE_SERVICE_VERSION_MINOR "03")
set (RELEASE_SERVICE_VERSION_MAJOR "24")
set (RELEASE_SERVICE_VERSION_MINOR "11")
set (RELEASE_SERVICE_VERSION_MICRO "70")
set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")

View file

@ -29,6 +29,44 @@ FormCard.FormCardPage {
}
}
FormCard.FormHeader {
title: i18nc("@title:group", "Backends")
}
FormCard.FormCard {
DBusProperty {
id: linkProvidersProperty
object: DaemonDbusInterface
read: "linkProviders"
defaultValue: []
}
Repeater {
model: linkProvidersProperty.value
FormCard.FormCheckDelegate {
required property string modelData
readonly property string linkProviderId: modelData.split('|')[0]
readonly property string displayName: switch (linkProviderId) {
case 'BluetoothLinkProvider':
return i18nc("@info KDE Connect provider name", "Bluetooth")
case 'LoopbackLinkProvider':
return i18nc("@info KDE Connect provider name", "Loopback")
case 'LanLinkProvider':
return i18nc("@info KDE Connect provider name", "WiFi Network")
}
checked: modelData.split('|')[1] === 'enabled'
text: displayName
onCheckedChanged: {
DaemonDbusInterface.setLinkProviderState(linkProviderId, checked);
}
}
}
}
FormCard.FormCard {
Layout.topMargin: Kirigami.Units.gridUnit

View file

@ -13,11 +13,12 @@
#include <QBluetoothServiceInfo>
BluetoothLinkProvider::BluetoothLinkProvider()
BluetoothLinkProvider::BluetoothLinkProvider(bool isDisabled)
: mServiceUuid(QBluetoothUuid(QStringLiteral("185f3df4-3268-4e3f-9fca-d4d5059915bd")))
, mServiceDiscoveryAgent(new QBluetoothServiceDiscoveryAgent(this))
, connectTimer(new QTimer(this))
{
this->mDisabled = isDisabled;
connectTimer->setInterval(30000);
connectTimer->setSingleShot(false);
@ -32,8 +33,10 @@ BluetoothLinkProvider::BluetoothLinkProvider()
void BluetoothLinkProvider::onStart()
{
qCDebug(KDECONNECT_CORE) << "BluetoothLinkProvider::onStart executed";
if (!mDisabled) {
tryToInitialise();
}
}
void BluetoothLinkProvider::tryToInitialise()
{
@ -57,6 +60,7 @@ void BluetoothLinkProvider::tryToInitialise()
void BluetoothLinkProvider::onStop()
{
if (!mDisabled) {
qCDebug(KDECONNECT_CORE) << "BluetoothLinkProvider::onStop executed";
if (!mBluetoothServer) {
return;
@ -68,12 +72,34 @@ void BluetoothLinkProvider::onStop()
mBluetoothServer->close();
mBluetoothServer->deleteLater();
}
}
void BluetoothLinkProvider::enable()
{
if (mDisabled) {
mDisabled = false;
tryToInitialise();
}
}
void BluetoothLinkProvider::disable()
{
if (!mDisabled) {
mDisabled = true;
onStop();
mBluetoothServer = nullptr;
mServiceDiscoveryAgent = nullptr;
}
}
void BluetoothLinkProvider::onNetworkChange()
{
qCDebug(KDECONNECT_CORE) << "BluetoothLinkProvider::onNetworkChange executed";
if (!mDisabled) {
tryToInitialise();
}
}
void BluetoothLinkProvider::connectError()
{

View file

@ -29,7 +29,8 @@ class KDECONNECTCORE_EXPORT BluetoothLinkProvider : public LinkProvider
Q_OBJECT
public:
BluetoothLinkProvider();
BluetoothLinkProvider(bool disabled = false);
virtual ~BluetoothLinkProvider();
QString name() override
@ -42,6 +43,10 @@ public:
return 10;
}
void enable() override;
void disable() override;
public Q_SLOTS:
virtual void onNetworkChange() override;
virtual void onStart() override;
@ -69,6 +74,7 @@ private:
QBluetoothServiceInfo mKdeconnectService;
QBluetoothServiceDiscoveryAgent *mServiceDiscoveryAgent;
QTimer *connectTimer;
bool mDisabled;
QMap<QString, DeviceLink *> mLinks;

View file

@ -34,12 +34,7 @@ protected:
bool doKill() override;
private:
enum {
NoPortAvailable = UserDefinedError,
SendingNetworkPacketFailed,
SocketError,
SslError,
};
enum { NoPortAvailable = UserDefinedError, SendingNetworkPacketFailed, SocketError, SslError };
Server *const m_server;
QSslSocket *m_socket;

View file

@ -42,12 +42,13 @@ static const int MAX_REMEMBERED_IDENTITY_PACKETS = 42;
static const long MILLIS_DELAY_BETWEEN_CONNECTIONS_TO_SAME_DEVICE = 500;
LanLinkProvider::LanLinkProvider(bool testMode)
LanLinkProvider::LanLinkProvider(bool testMode, bool isDisabled)
: m_server(new Server(this))
, m_udpSocket(this)
, m_tcpPort(0)
, m_testMode(testMode)
, m_combineNetworkChangeTimer(this)
, m_disabled(isDisabled)
#ifdef KDECONNECT_MDNS
, m_mdnsDiscovery(this)
#endif
@ -84,8 +85,27 @@ LanLinkProvider::~LanLinkProvider()
{
}
void LanLinkProvider::enable()
{
if (m_disabled == true) {
m_disabled = false;
onStart();
}
}
void LanLinkProvider::disable()
{
if (m_disabled == false) {
onStop();
m_disabled = true;
}
}
void LanLinkProvider::onStart()
{
if (m_disabled) {
return;
}
const QHostAddress bindAddress = m_testMode ? QHostAddress::LocalHost : QHostAddress::Any;
bool success = m_udpSocket.bind(bindAddress, UDP_PORT, QUdpSocket::ShareAddress);
@ -118,6 +138,9 @@ void LanLinkProvider::onStart()
void LanLinkProvider::onStop()
{
if (m_disabled) {
return;
}
#ifdef KDECONNECT_MDNS
m_mdnsDiscovery.onStop();
#endif
@ -128,6 +151,9 @@ void LanLinkProvider::onStop()
void LanLinkProvider::onNetworkChange()
{
if (m_disabled) {
return;
}
if (m_combineNetworkChangeTimer.isActive()) {
qCDebug(KDECONNECT_CORE) << "Device discovery triggered too fast, ignoring";
return;
@ -138,6 +164,9 @@ void LanLinkProvider::onNetworkChange()
// I'm in a new network, let's be polite and introduce myself
void LanLinkProvider::combinedOnNetworkChange()
{
if (m_disabled) {
return;
}
if (!m_server->isListening()) {
qWarning() << "TCP server not listening, not broadcasting";
return;

View file

@ -30,7 +30,7 @@ public:
/**
* @param testMode Some special overrides needed while testing
*/
LanLinkProvider(bool testMode = false);
LanLinkProvider(bool testMode = false, bool disabled = false);
~LanLinkProvider() override;
QString name() override
@ -43,6 +43,9 @@ public:
return 20;
}
void enable() override;
void disable() override;
void sendUdpIdentityPacket(const QList<QHostAddress> &addresses);
static void configureSslSocket(QSslSocket *socket, const QString &deviceId, bool isDeviceTrusted);
@ -92,6 +95,8 @@ private:
const bool m_testMode;
QTimer m_combineNetworkChangeTimer;
bool m_disabled;
#ifdef KDECONNECT_MDNS
MdnsDiscovery m_mdnsDiscovery;
#endif

View file

@ -24,6 +24,9 @@ public:
virtual QString name() = 0;
virtual int priority() = 0;
virtual void enable() = 0;
virtual void disable() = 0;
public Q_SLOTS:
virtual void onStart() = 0;
virtual void onStop() = 0;

View file

@ -27,6 +27,14 @@ public:
return 0;
}
void enable() override
{
}
void disable() override
{
}
void onStart() override;
void onStop() override;
void onNetworkChange() override;

View file

@ -72,18 +72,22 @@ void Daemon::init()
qCDebug(KDECONNECT_CORE) << "DBus registration complete";
auto configInstance = KdeConnectConfig::instance();
const auto disabledLinkProviders = configInstance.disabledLinkProviders();
// Load backends
if (d->m_testMode)
if (d->m_testMode) {
d->m_linkProviders.insert(new LoopbackLinkProvider());
else {
d->m_linkProviders.insert(new LanLinkProvider());
} else {
d->m_linkProviders.insert(new LanLinkProvider(false, disabledLinkProviders.contains(QStringLiteral("LanLinkProvider"))));
#ifdef KDECONNECT_BLUETOOTH
d->m_linkProviders.insert(new BluetoothLinkProvider());
d->m_linkProviders.insert(new BluetoothLinkProvider(disabledLinkProviders.contains(QStringLiteral("BluetoothLinkProvider"))));
#endif
#ifdef KDECONNECT_LOOPBACK
d->m_linkProviders.insert(new LoopbackLinkProvider());
#endif
}
Q_EMIT linkProvidersChanged(linkProviders());
qCDebug(KDECONNECT_CORE) << "Backends loaded";
@ -147,6 +151,55 @@ QSet<LinkProvider *> Daemon::getLinkProviders() const
return d->m_linkProviders;
}
QStringList Daemon::linkProviders() const
{
auto configInstance = KdeConnectConfig::instance();
const auto disabledLinkProviders = configInstance.disabledLinkProviders();
QStringList returnValue;
for (LinkProvider *a : std::as_const(d->m_linkProviders)) {
QString line(a->name());
if (disabledLinkProviders.contains(a->name())) {
line += QStringLiteral("|disabled");
} else {
line += QStringLiteral("|enabled");
}
returnValue.append(line);
}
return returnValue;
}
void Daemon::setDisabledLinkProviders(const QStringList &disabledLinkProviders)
{
qCDebug(KDECONNECT_CORE) << "setDisabledLinkProviders called" << disabledLinkProviders;
KdeConnectConfig configInstance = KdeConnectConfig::instance();
configInstance.setDisabledLinkProviders(disabledLinkProviders);
Q_EMIT linkProvidersChanged(linkProviders());
}
void Daemon::setLinkProviderState(const QString &linkProvider, bool state)
{
qCDebug(KDECONNECT_CORE) << "setLinkProviderState called" << linkProvider << state;
KdeConnectConfig configInstance = KdeConnectConfig::instance();
auto disabledLinkProviders = configInstance.disabledLinkProviders();
if (!state && !disabledLinkProviders.contains(linkProvider)) {
disabledLinkProviders.append(linkProvider);
} else if (state && disabledLinkProviders.contains(linkProvider)) {
disabledLinkProviders.removeAll(linkProvider);
} else {
return; // no change
}
configInstance.setDisabledLinkProviders(disabledLinkProviders);
Q_EMIT linkProvidersChanged(linkProviders());
}
QStringList Daemon::devices(bool onlyReachable, bool onlyTrusted) const
{
QStringList ret;

View file

@ -61,11 +61,19 @@ public Q_SLOTS:
// Returns a list of ids. The respective devices can be manipulated using the dbus path: "/modules/kdeconnect/Devices/"+id
Q_SCRIPTABLE QStringList devices(bool onlyReachable = false, bool onlyPaired = false) const;
Q_SCRIPTABLE QMap<QString, QString> deviceNames(bool onlyReachable = false, bool onlyPaired = false) const;
Q_SCRIPTABLE QString deviceIdByName(const QString &name) const;
/// Return the list of link providers with their state e.g. "BluetoothLinkProvider|enabled"
Q_SCRIPTABLE QStringList linkProviders() const;
/// Set the list of disabled link providers.
Q_SCRIPTABLE void setDisabledLinkProviders(const QStringList &disabledLinkProviders);
/// Set the state of a link provider.
Q_SCRIPTABLE void setLinkProviderState(const QString &linkProvider, bool state);
Q_SCRIPTABLE virtual void sendSimpleNotification(const QString &eventId, const QString &title, const QString &text, const QString &iconName) = 0;
Q_SIGNALS:
@ -75,6 +83,7 @@ Q_SIGNALS:
Q_SCRIPTABLE void deviceListChanged(); // Emitted when any of deviceAdded, deviceRemoved or deviceVisibilityChanged is emitted
Q_SCRIPTABLE void announcedNameChanged(const QString &announcedName);
Q_SCRIPTABLE void pairingRequestsChanged();
Q_SCRIPTABLE void linkProvidersChanged(const QStringList &linkProviders);
Q_SCRIPTABLE void customDevicesChanged(const QStringList &customDevices);
private Q_SLOTS:

View file

@ -76,6 +76,17 @@ void KdeConnectConfig::setName(const QString &name)
d->m_config->sync();
}
void KdeConnectConfig::setDisabledLinkProviders(const QStringList disabledProviders)
{
d->m_config->setValue(QStringLiteral("disabled_providers"), disabledProviders);
d->m_config->sync();
}
QStringList KdeConnectConfig::disabledLinkProviders() const
{
return d->m_config->value(QStringLiteral("disabled_providers")).toStringList();
}
DeviceType KdeConnectConfig::deviceType()
{
const QByteArrayList platforms = qgetenv("PLASMA_PLATFORM").split(':');

View file

@ -35,6 +35,8 @@ public:
QString certificatePath();
void setName(const QString &name);
void setDisabledLinkProviders(const QStringList disabledProviders);
QStringList disabledLinkProviders() const;
/*
* Trusted devices

View file

@ -14,10 +14,7 @@ class KDECONNECTCORE_EXPORT NotificationServerInfo : public QObject
Q_OBJECT
public:
enum Hint {
X_KDE_DISPLAY_APPNAME = 1,
X_KDE_ORIGIN_NAME = 2,
};
enum Hint { X_KDE_DISPLAY_APPNAME = 1, X_KDE_ORIGIN_NAME = 2 };
Q_DECLARE_FLAGS(Hints, Hint)

View file

@ -122,7 +122,6 @@
<p xml:lang="fr">KDE Connect permet à votre téléphone et à votre ordinateur de mieux fonctionner ensemble : partagez votre presse-papier, accédez aux fichiers entre périphériques, transformez votre téléphone en télécommande pour votre ordinateur, trouvez votre téléphone lorsqu'il a glissé à l'arrière de votre canapé, voyez les notifications de votre téléphone sur votre ordinateur, et bien plus encore !</p>
<p xml:lang="gl">KDE Connect fai que o seu teléfono e computador traballen mellor xuntos: comparta o portapapeis e ficheiros entre os dispositivos, use o teléfono como mando a distancia do computador, faga soar o teléfono para atopalo, reciba as notificacións do teléfono no computador, e moito máis!</p>
<p xml:lang="he">KDE Connect משפר את החיבוריות בין הטלפון למחשב שלך: אפשר לשתף לוח גזירים ולגשת לקבצים בין המכשירים, להפוך את הטלפון שלך לשלט רחוק למחשב, לאתר את הטלפון שלך אם הוא נתקע בחריצים של הספה, לראות את ההתראות הטלפון שלך במחשב ועוד המון יכולות משובחות!</p>
<p xml:lang="hu">A KDE Connect segítségével telefonja és számítógépe jobban együttműködik: megoszthatja a vágólapot és a fájlok elérését az eszközök között, a telefonját számítógépe távvezérlőjévé alakíthatja, megtalálja a telefonját, ha az becsúszott a kanapé hátuljába, láthatja a telefonos értesítéseket a számítógépéről, és még sok minden mást!</p>
<p xml:lang="ia">KDE Connect face que tu telephono e computator functiona meliormente insimul: comparti tu area de transferentia e accede a files trans dispositivos, transforma tu telephono in un dispositivo de controlo remote per tu computator, trova tu telephonjo quando il es slippate retro tu sofa, vide tu notificationes de telephono ab tu computator, e multe altere!</p>
<p xml:lang="is">Með KDE Connect vinna síminn þinn og tölvan betur saman: þú getur deilt klippispjaldinu og opnað skrár á milli tækja, breytt símanum í fjarstýringu fyrir tölvuna þína, fundið símann þegar hann dettur upp fyrir sófann þinn, skoðað símatilkynningar í tölvunni þinni og margt fleira!</p>
<p xml:lang="it">KDE Connect fa sì che il tuo telefono e il tuo computer lavorino meglio insieme: condividi gli appunti e accedi ai file su più dispositivi, trasforma il tuo telefono in un telecomando per il tuo computer, ritrova il telefono quando è scivolato sullo schienale del divano, visualizza le notifiche del telefono dal tuo computer e molto altro ancora!</p>
@ -132,7 +131,6 @@
<p xml:lang="nl">KDE Connect maakt dat uw telefoon en computer beter samenwerken: deel uw klembord en heb toegang tot bestanden tussen apparaten, verander uw telefoon in een afstandsbediening voor uw computer, zoek uw telefoon wanneer het achter uw bank is gevallen, bekijk uw telefoonmeldingen vanuit uw computer en veel meer!</p>
<p xml:lang="nn">KDE Connect lèt deg kopla telefonen din og datamaskina di saman. Du kan dela utklippstavle, få tilgang til filer på tvers av einingane, bruka telefonen som fjernkontroll for datamaskina, finn att telefonen når han har dotte ned bak sofaputene, sjå varslingar frå telefonen på datamaskina  og mykje anna!</p>
<p xml:lang="pl">KDE Connect sprawia, że twój telefon i komputer lepiej współpracują: udostępnianie twojego schowka i dostęp do plików między urządzeniami, obsługa komputera z telefonu, znajdowanie telefonu, gdy wpadnie za łóżko, oglądanie powiadomień z telefonu na komputerze i wiele więcej!</p>
<p xml:lang="pt-BR">O KDE Connect faz com que seu telefone e computador funcionem melhor juntos: compartilhe sua área de transferência e acesse arquivos entre dispositivos, transforme seu telefone em um controle remoto para seu computador, encontre seu telefone quando ele escorregar para o encosto do sofá, veja as notificações do seu telefone no computador e muito mais!</p>
<p xml:lang="sl">KDE Connect izboljša skupno delovanje vašega telefona in računalnika: delite svoje odložišče in dostopajte do datotek med napravami, spremenite svoj telefon v daljinski upravljalnik za svoj računalnik, poiščite svoj telefon, ko je zdrsnil za naslonjalo vašega kavča, oglejte si telefonska obvestila iz vašega računalnika in še veliko več!</p>
<p xml:lang="sv">KDE-anslut får din telefon och dator att fungera bättre tillsammans: dela klippbordet och få tillgång till filer mellan apparater, förvandla telefonen till en fjärrkontroll för datorn, hitta telefonen när den har glidit ner på baksidan av soffan, se telefonunderrättelser från datorn och mycket mer.</p>
<p xml:lang="tr">KDE Bağlan, telefonunuzun ve bilgisayarınızın birlikte daha iyi çalışmasını sağlar: Panonuzu paylaşın ve dosyalara başka aygıtlardan erişin, telefonunuzu bilgisayarınızın uzaktan kumandasına dönüştürün, telefonunuz koltuğunuzun arkasına kaydığında onu bulun, telefon bildirimlerinizi bilgisayarınızdan görün ve çok daha fazlasını yapın!</p>
@ -179,7 +177,6 @@
<value key="KDE::google_play">https://play.google.com/store/apps/details?id=org.kde.kdeconnect_tp</value>
<value key="KDE::windows_store">https://www.microsoft.com/store/apps/9n93mrmsxbf0</value>
<value key="KDE::app_store">https://apps.apple.com/app/kde-connect/id1580245991</value>
<value key="KDE::supporters">[fat_malama](https://www.instagram.com/fat_malama/); Alexandru Traistaru; Neeko iko; Daniel Lloyd-Miller; [mdPlusPlus](https://github.com/mdPlusPlus)</value>
</custom>
<releases>
<release version="24.08.3" date="2024-11-07"/>

View file

@ -33,7 +33,8 @@ DBusResponseWaiter::DBusResponseWaiter()
m_registered << qRegisterMetaType<QDBusPendingReply<>>("QDBusPendingReply<>")
<< qRegisterMetaType<QDBusPendingReply<QVariant>>("QDBusPendingReply<QVariant>")
<< qRegisterMetaType<QDBusPendingReply<bool>>("QDBusPendingReply<bool>") << qRegisterMetaType<QDBusPendingReply<int>>("QDBusPendingReply<int>")
<< qRegisterMetaType<QDBusPendingReply<QString>>("QDBusPendingReply<QString>");
<< qRegisterMetaType<QDBusPendingReply<QString>>("QDBusPendingReply<QString>")
<< qRegisterMetaType<QDBusPendingReply<QStringList>>("QDBusPendingReply<QStringList>");
}
QVariant DBusResponseWaiter::waitForReply(QVariant variant) const
@ -73,6 +74,8 @@ void DBusAsyncResponse::setPendingCall(QVariant variant)
connect(watcher, &QDBusPendingCallWatcher::finished, watcher, &QObject::deleteLater);
connect(&m_timeout, &QTimer::timeout, watcher, &QObject::deleteLater);
m_timeout.start();
} else {
qWarning() << "error: extractPendingCall didn't work";
}
}

View file

@ -23,11 +23,7 @@ class KDECONNECTINTERFACES_EXPORT CommandsModel : public QAbstractListModel
Q_PROPERTY(QString deviceId READ deviceId WRITE setDeviceId NOTIFY deviceIdChanged)
public:
enum ModelRoles {
KeyRole,
NameRole,
CommandRole,
};
enum ModelRoles { KeyRole, NameRole, CommandRole };
explicit CommandsModel(QObject *parent = nullptr);
~CommandsModel() override;

View file

@ -23,11 +23,7 @@ class KDECONNECTINTERFACES_EXPORT RemoteCommandsModel : public QAbstractListMode
Q_PROPERTY(QString deviceId READ deviceId WRITE setDeviceId NOTIFY deviceIdChanged)
public:
enum ModelRoles {
KeyRole,
NameRole,
CommandRole,
};
enum ModelRoles { KeyRole, NameRole, CommandRole };
explicit RemoteCommandsModel(QObject *parent = nullptr);
~RemoteCommandsModel() override;

View file

@ -25,13 +25,7 @@ class KDECONNECTINTERFACES_EXPORT RemoteSinksModel : public QAbstractListModel
Q_PROPERTY(QString deviceId READ deviceId WRITE setDeviceId NOTIFY deviceIdChanged)
public:
enum ModelRoles {
NameRole,
DescriptionRole,
MaxVolumeRole,
VolumeRole,
MutedRole,
};
enum ModelRoles { NameRole, DescriptionRole, MaxVolumeRole, VolumeRole, MutedRole };
explicit RemoteSinksModel(QObject *parent = nullptr);
~RemoteSinksModel() override;

View file

@ -12,11 +12,14 @@
#include <KLocalizedString>
#include <KPluginFactory>
#include <KPluginMetaData>
#include <QMessageBox>
#include <QtWidgets/QListView>
#include <kcmutils_version.h>
#include <QQmlContext>
#include <QQuickItem>
#include <QQuickStyle>
#include <qassert.h>
#include "dbushelpers.h"
#include "dbusinterfaces.h"
@ -92,8 +95,68 @@ KdeConnectKcm::KdeConnectKcm(QObject *parent, const KPluginMetaData &md, const Q
}
},
this);
setWhenAvailable(
daemon->linkProviders(),
[this](bool error, const QStringList &linkProviders) {
kcmUi.linkProviders_list->clear();
for (int i = 0; i < linkProviders.size(); ++i) {
const QStringList linkProvider = linkProviders.at(i).split(QStringLiteral("|"));
const QString providerId = linkProvider.at(0);
QString displayName;
if (providerId == QLatin1StringView("BluetoothLinkProvider")) {
displayName = i18nc("@info KDE Connect provider name", "Bluetooth");
} else if (providerId == QLatin1StringView("LoopbackLinkProvider")) {
displayName = i18nc("@info KDE Connect provider name", "Loopback");
} else if (providerId == QLatin1StringView("LanLinkProvider")) {
displayName = i18nc("@info KDE Connect provider name", "WiFi Network");
} else {
Q_ASSERT_X(false, Q_FUNC_INFO, "Unknow provider given");
displayName = i18nc("@info KDE Connect provider name", "Unknown");
}
QString providerStatus = linkProvider.at(1);
QListWidgetItem *linkProviderItem = new QListWidgetItem(displayName, kcmUi.linkProviders_list);
linkProviderItem->setData(Qt::UserRole, providerId);
if (providerStatus.compare(QStringLiteral("enabled")) == 0) {
linkProviderItem->setCheckState(Qt::Checked);
} else {
linkProviderItem->setCheckState(Qt::Unchecked);
}
kcmUi.linkProviders_list->addItem(linkProviderItem);
}
},
this);
connect(daemon, &DaemonDbusInterface::announcedNameChanged, kcmUi.rename_edit, &QLineEdit::setText);
connect(daemon, &DaemonDbusInterface::announcedNameChanged, kcmUi.rename_label, &QLabel::setText);
connect(daemon, &DaemonDbusInterface::linkProvidersChanged, this, [this](const QStringList &providers) {
if (kcmUi.linkProviders_list->count() == 0) {
return; // not yet setup
}
for (auto i = 0, count = kcmUi.linkProviders_list->count(); i < count; i++) {
const auto item = kcmUi.linkProviders_list->item(i);
const auto id = item->data(Qt::UserRole).toString();
bool found = false;
for (const auto &provider : providers) {
if (provider.startsWith(id)) {
const auto status = provider.split(QStringLiteral("|")).at(1);
if (status.compare(QStringLiteral("enabled")) == 0) {
item->setCheckState(Qt::Checked);
} else {
item->setCheckState(Qt::Unchecked);
}
found = true;
break;
}
}
Q_ASSERT_X(found, Q_FUNC_INFO, "A new backend appeared, this should not happen as the list of backends is static");
}
});
setRenameMode(false);
setButtons(KCModule::Help | KCModule::NoAdditionalButton);
@ -109,6 +172,7 @@ KdeConnectKcm::KdeConnectKcm(QObject *parent, const KPluginMetaData &md, const Q
connect(kcmUi.renameDone_button, &QAbstractButton::clicked, this, &KdeConnectKcm::renameDone);
connect(kcmUi.renameShow_button, &QAbstractButton::clicked, this, &KdeConnectKcm::renameShow);
connect(kcmUi.pluginSelector, &KPluginWidget::changed, this, &KdeConnectKcm::pluginsConfigChanged);
connect(kcmUi.backend_apply_button, &QAbstractButton::clicked, this, &KdeConnectKcm::saveBackends);
if (!args.isEmpty() && !args.first().isNull() && args.first().canConvert<QString>()) {
const QString input = args.first().toString();
@ -162,6 +226,19 @@ void KdeConnectKcm::refresh()
daemon->forceOnNetworkChange();
}
void KdeConnectKcm::saveBackends()
{
QStringList disabledLinkProviders;
for (int i = 0; i < kcmUi.linkProviders_list->count(); ++i) {
QListWidgetItem *item = kcmUi.linkProviders_list->item(i);
if (item->checkState() == Qt::Unchecked) {
disabledLinkProviders << item->data(Qt::UserRole).toString();
}
}
daemon->setDisabledLinkProviders(disabledLinkProviders);
}
void KdeConnectKcm::deviceSelected(const QString &deviceId)
{
if (currentDevice) {

View file

@ -36,6 +36,7 @@ private Q_SLOTS:
void sendPing();
void pairingFailed(const QString &error);
void refresh();
void saveBackends();
void renameShow();
void renameDone();
void setRenameMode(bool b);

View file

@ -128,6 +128,30 @@
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Backends:</string>
</property>
</widget>
</item>
<item>
<widget class="QListWidget" name="linkProviders_list">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="backend_apply_button">
<property name="text">
<string>Apply</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>

View file

@ -14,7 +14,6 @@
"Description[fr]": "Configurer la synchronisation des périphériques",
"Description[gl]": "Configurar a sincronización de dispositivos.",
"Description[he]": "הגדרת סנכרון מכשירים",
"Description[hu]": "Eszközszinkronizáció beállítása",
"Description[ia]": "Configura Synchronisation de dispositivo",
"Description[is]": "Grunnstilla samstillingu tækja",
"Description[it]": "Configura la sincronizzazione del dispositivo",
@ -26,8 +25,6 @@
"Description[nn]": "Set opp einingssynkronisering",
"Description[pa]": "ਡਿਵਾਈਸ ਸੈਕਰੋਨਾਈਜ਼ੇਸ਼ਨ ਦੀ ਸੰਰਚਨਾ",
"Description[pl]": "Ustawienia synchronizacji urządzenia",
"Description[pt_BR]": "Configurar sincronização do dispositivo",
"Description[ru]": "Настройка синхронизации устройства",
"Description[sl]": "Konfiguriraj sinhronizacijo naprave",
"Description[sv]": "Anpassa enhetssynkronisering",
"Description[ta]": "சாதன ஒத்திசைவு அமைப்புகள்",
@ -85,7 +82,7 @@
"X-DocPath": "kdeconnect/index.html",
"X-KDE-Keywords": "network,kde connect,connect,phone,sync,mobile,android,ios,send files,share files,transfer files,receive files,devices,device,synchronization,calls,telephone,smartphone,contacts,sms,phone notifications,control volume,system volume,ringtone,play sound,presentation,take picture,take photo,shared clipboard,conectivity monitor,remote input,remote mouse,remote keyboard,mpris,phone integration,commands,lock device,multimedia control,sftp,browse phone,share",
"X-KDE-Keywords[ar]": "هاتف,أندرويد,جهاز,تحكم,وسائط,رن,صوت,متصل,شبكة,جوال,متنقل,اتصل,هاتف ذكي,متراسلون,أخذ صورة,لوحة مفاتيح",
"X-KDE-Keywords[bg]": "мрежа, свързване с kde, свързване, телефон, синхронизиране, мобилен телефон, android, ios, изпращане на файлове, споделяне файлове,прехвърляне на файлове,получаване на файлове,устройства,устройство,синхронизация,повиквания,телефон, смартфон, контакти, sms, телефонни известия, контрол на звука, система сила на звука, мелодия, възпроизвеждане на звук, презентация, правене на снимка, правене на снимка, споделен клипборд, монитор за свързаност, отдалечено въвеждане, отдалечена мишка, отдалечена клавиатура,mpris, телефонна интеграция, команди, заключване на устройство, управление на мултимедия, sftp, разглеждане телефон,споделяне",
"X-KDE-Keywords[bg]": "мрежа, свързване с kde, свързване, телефон, синхронизиране, мобилен телефон, android, ios, изпращане на файлове, споделянефайлове,прехвърляне на файлове,получаване на файлове,устройства,устройство,синхронизация,повиквания,телефон, смартфон, контакти, sms, телефонни известия, контрол на звука, системасила на звука, мелодия, възпроизвеждане на звук, презентация, правене на снимка, правене на снимка, споделеноклипборд, монитор за свързаност, отдалечено въвеждане, отдалечена мишка, отдалечена клавиатура,mpris, телефонна интеграция, команди, заключване на устройство, управление на мултимедия, sftp, разглежданетелефон,споделете",
"X-KDE-Keywords[ca@valencia]": "xarxa,kde connect,connect,telèfon,sincronitzar,mòbil,android,ios,enviar fitxers,compartir fitxers,transferir fitxers,rebre fitxers,dispositius,dispositius,sincronització,tocades,telèfon,telèfon intel·ligent,contactes,sms,notificacions de telèfon,control de volum,volum del sistema,to de tocada,reproducció de so,presentació,prendre imatge,prendre foto,porta-retalls compartit,connectivitat de monitor,entrada remota,ratolí remot,teclat remot,mpris,integració del telèfon,ordres,bloqueig de dispositiu,control multimèdia,sftp,navegar de telèfon,compartir",
"X-KDE-Keywords[ca]": "xarxa,kde connect,connect,telèfon,sincronitzar,mòbil,android,ios,enviar fitxers,compartir fitxers,transferir fitxers,rebre fitxers,dispositius,dispositius,sincronització,trucades,telèfon,telèfon intel·ligent,contactes,sms,notificacions de telèfon,control de volum,volum del sistema,to de trucada,reproducció de so,presentació,prendre imatge,prendre foto,porta-retalls compartit,connectivitat de monitor,entrada remota,ratolí remot,teclat remot,mpris,integració del telèfon,ordres,bloqueig de dispositiu,control multimèdia,sftp,navegar de telèfon,compartir",
"X-KDE-Keywords[cs]": "síť,kde connect,spojit,telefon,synchronizace,mobilita,android,ios,poslat soubory,sdílet soubory,přenos souborů,příjem souborů,zařízení,synchronizace,telefonáty,chytrý telefon,kontakty,sms,oznámení na telefonu,ovládání hlasitosti,hlasitost systému,vyzváněcí melodie,přehrát melodii,prezentace,zachytit obrázek,pořídit fotku,sdílená schránka,monitor připojení,vzdálené ovládání,vzdálená myš,vzdálená klávesnice,mpris,integrace telefonu,příkazy,zamknout zařízení,ovládání multimédií,sftp,prohlížení telefonu,sdílet",
@ -106,7 +103,6 @@
"X-KDE-Keywords[nl]": "netwerk,kde verbinden,telefoon,sync,mobiel,android,ios,bestanden verzenden,bestanden delen,bestanden overdragen,bestanden ontvangen,apparaten,apparaat,synchronisatie,oproepen,telefoon,smartphone,contactpersonen,sms,telefoonmeldingen,volumebesturing,systeemvolume,ringtone,geluid afspelen,presentatie,foto maken,gedeeld klembord,connectiviteitsmonitor,invoer op afstand,muis op afstand,toetsenbord op afstand,mpris,telefoonintegratie,commando's,apparaat vergrendelen,multimediabesturing,sftp,delen",
"X-KDE-Keywords[nn]": "nettverk,kde connect,kopla til,tilkopling,telefon,synkroniser,mobil,android,ios,send filer,overfør filer,ta imot filer,einingar,eining,synkronisering,samtale,samtalar,samtaler,anrop,oppringing,ringje,smarttelefon,kontaktar,adressebok,sms,varslingar,lydstyrke,systemlydstyrke,ringjetone,spel lyd,presentasjon,ta bilete,ta foto,delt utklippstavle,del utklippstavle,sambandsovervaking,tilkoplingsovervaking,fjerntastatur,fjernstyring,fjernmus,mpris,telefonintegrasjon,kommandoar,lås eining,multimediakontroll,sftp,bla gjennom telefon,del,deling",
"X-KDE-Keywords[pl]": "sieć,kde connect,podłącz,telefon,synchronizacja,komórka,android,ios,wyślij pliki,udostępnij pliki,prześlij pliki,pobierz pliki,urządzenia,urządzenie,synchronizacja,rozmowy,telefon,smartfon,kontakty,sms,powiadomienia na telefonie,sterowanie głośnością,głośność systemowa,dzwonek,odtwórz dźwięk,prezentacja,zrób zdjęcie,zrób zdjęcie,współdzielony schowek,monitor łączności,zdalna obsługa,zdalna mysz,zdalna klawiatura,mpris,integracja z telefonem,polecenia,zblokuj urządzenie,sterowani multimediami,sftp,przeglądanie telefonu,udostępnij",
"X-KDE-Keywords[pt_BR]": "rede, kde connect, conectar, telefone, sincronizar, celular, android, ios, enviar arquivos, compartilhar arquivos, transferir arquivos, receber arquivos, dispositivos, dispositivo, sincronização, chamadas, telefone, smartphone, contatos, sms, notificações do telefone, controlar volume, volume do sistema, toque, reproduzir som, apresentação, tirar foto, tirar foto, área de transferência compartilhada, monitor de conectividade, entrada remota, mouse remoto, teclado remoto, mpris, integração do telefone, comandos, bloquear dispositivo, controle multimídia, sftp, navegar no telefone, compartilhar",
"X-KDE-Keywords[ru]": "network,kde connect,connect,phone,sync,mobile,android,ios,send files,share files,transfer files,receive files,devices,device,synchronization,calls,telephone,smartphone,contacts,sms,phone notifications,control volume,system volume,ringtone,play sound,presentation,take picture,take photo,shared clipboard,conectivity monitor,remote input,remote mouse,remote keyboard,mpris,phone integration,commands,lock device,multimedia control,sftp,browse phone,share,подключиться,телефон,синхронизировать,мобильный,андроид,отправить файлы,поделиться файлами,передать файлы,получить файлы,устройства,устройство,синхронизация,звонки,вызовы,смартфон,контакты,смс,уведомления на телефоне,управлять громкостью,системная громкость,рингтон,воспроизвести звук,презентация,сделать снимок,общий буфер обмена,мониторинг подключения,удалённый ввод,удалённая мышь,удалённая клавиатура,интеграция с телефоном,команды,заблокировать устройство,управление мультимедиа,общий доступ,опубликовать",
"X-KDE-Keywords[sl]": "omrežje,kde connect,povezava,telefon,sinhronizacija,mobilnik,android,ios,pošiljanje datotek,souporaba datotek,prenos datotek,prejemanje datotek,naprave,naprava,sinhronizacija,klici,telefon,pametni telefon,stiki,sms,telefonska obvestila,nadzor glasnosti,glasnost sistema,melodija zvonjenja,predvajanje zvoka,predstavitev,slikanje,fotografiranje,skupno odložišče,nadzor povezljivosti, oddaljeni vnos,oddaljena miška,oddaljena tipkovnica,mpris,integracija telefona, ukazi,zaklepanje naprave,večpredstavnostni nadzor,sftp, brskanje po telefonu,skupni disk",
"X-KDE-Keywords[sv]": "nätverk,kde anslut,anslut,telefon,synkronisera,mobil,android,ios,skicka filer,dela filer,överför filer,ta emot filer,apparater,apparat,synkronisering,samtal,telefon,smart telefon,kontakter,sms,telefonunderrättelser,kontrollera volym,systemvolym,rington,spela ljud,presentation,ta bild,ta foto,delat klippbord,anslutningsövervakare,fjärrinmatning,fjärrmus,fjärrtangentbord,mpris,telefonintegrering,kommandon,lås apparat,multimediastyrning,sftp,bläddra på telefon,dela",

View file

@ -62,7 +62,6 @@
"Description[fr]": "Gérer les appareils connectés",
"Description[gl]": "Xestionar os dispositivos conectados.",
"Description[he]": "ניהול התקנים מחוברים",
"Description[hu]": "Csatlakoztatott eszközök kezelése",
"Description[ia]": "Gere dispositivos connectite",
"Description[is]": "Stjórna tengdum tækjum",
"Description[it]": "Gestisci i dispositivi connessi",
@ -74,8 +73,6 @@
"Description[nn]": "Handsam tilkopla einingar",
"Description[pa]": "ਕਨੈਕਟ ਹੋਏ ਡਿਵਾਈਸਾਂ ਦਾ ਇੰਤਜ਼ਾਮ",
"Description[pl]": "Zarządzaj podłączonymi urządzeniami",
"Description[pt_BR]": "Gerenciar dispositivos conectados",
"Description[ru]": "Управление подключёнными устройствами",
"Description[sl]": "Upravljaj povezane naprave",
"Description[sv]": "Hantera anslutna apparater",
"Description[ta]": "இணைந்துள்ள சாதனங்களை நிர்வகிக்க விடும்",

View file

@ -36,10 +36,7 @@ private:
// Keep these values in sync with THRESHOLD* constants in
// kdeconnect-android:BatteryPlugin.java
// see README for their meaning
enum ThresholdBatteryEvent {
ThresholdNone = 0,
ThresholdBatteryLow = 1,
};
enum ThresholdBatteryEvent { ThresholdNone = 0, ThresholdBatteryLow = 1 };
int m_charge = -1;
bool m_isCharging = false;

View file

@ -24,10 +24,7 @@ class ClipboardListener : public QObject
Q_OBJECT
public:
enum ClipboardContentType {
ClipboardContentTypeUnknown = 0,
ClipboardContentTypePassword = 1,
};
enum ClipboardContentType { ClipboardContentTypeUnknown = 0, ClipboardContentTypePassword = 1 };
protected:
ClipboardListener();

View file

@ -15,13 +15,7 @@
#include <X11/keysym.h>
#include <fakekey/fakekey.h>
enum MouseButtons {
LeftMouseButton = 1,
MiddleMouseButton = 2,
RightMouseButton = 3,
MouseWheelUp = 4,
MouseWheelDown = 5,
};
enum MouseButtons { LeftMouseButton = 1, MiddleMouseButton = 2, RightMouseButton = 3, MouseWheelUp = 4, MouseWheelDown = 5 };
// Translation table to keep in sync within all the implementations
int SpecialKeysMap[] = {

View file

@ -1,21 +1,22 @@
# Copyright (C) 2024 This file is copyright:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the kdeconnect-kde package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# SPDX-FileCopyrightText: 2024 Mincho Kondarev <mkondarev@yahoo.de>
msgid ""
msgstr ""
"Project-Id-Version: kdeconnect-kde\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-11-05 12:32+0000\n"
"PO-Revision-Date: 2024-11-09 20:04+0100\n"
"Last-Translator: Mincho Kondarev <mkondarev@yahoo.de>\n"
"PO-Revision-Date: 2022-02-14 13:41+0100\n"
"Last-Translator: mkkDr2010 <mkondarev@yahoo.de>\n"
"Language-Team: Bulgarian <kde-i18n-doc@kde.org>\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 24.08.2\n"
"X-Generator: Poedit 3.0.1\n"
#: sendfileitemaction.cpp:72
#, kde-format
@ -25,4 +26,4 @@ msgstr "Изпращане чрез KDE Connect"
#: sendfileitemaction.cpp:79
#, kde-format
msgid "Send to '%1' via KDE Connect"
msgstr "Изпращане на „%1“ чрез KDE Connect"
msgstr "Изпращане на \"%1\" чрез KDE Connect"

View file

@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: kdeconnect-kde\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-10-12 00:38+0000\n"
"PO-Revision-Date: 2024-11-10 13:05+0100\n"
"PO-Revision-Date: 2024-07-24 12:57+0200\n"
"Last-Translator: Mincho Kondarev <mkondarev@yahoo.de>\n"
"Language-Team: Bulgarian <kde-i18n-doc@kde.org>\n"
"Language: bg\n"
@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 24.11.70\n"
"X-Generator: Lokalize 24.07.70\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@ -100,7 +100,7 @@ msgstr "(C) 2016 Aleix Pol Gonzalez"
#: main.cpp:94
#, kde-format
msgid "Configure..."
msgstr "Настройки..."
msgstr "Настойки..."
#: main.cpp:120
#, kde-format

View file

@ -1,13 +1,13 @@
# Copyright (C) 2024 This file is copyright:
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the kdeconnect-kde package.
#
# SPDX-FileCopyrightText: 2022, 2023, 2024 Mincho Kondarev <mkondarev@yahoo.de>
# Mincho Kondarev <mkondarev@yahoo.de>, 2022, 2023.
msgid ""
msgstr ""
"Project-Id-Version: kdeconnect-kde\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-10-27 00:39+0000\n"
"PO-Revision-Date: 2024-11-09 20:04+0100\n"
"PO-Revision-Date: 2023-08-29 15:01+0200\n"
"Last-Translator: Mincho Kondarev <mkondarev@yahoo.de>\n"
"Language-Team: Bulgarian <kde-i18n-doc@kde.org>\n"
"Language: bg\n"
@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 24.08.2\n"
"X-Generator: Lokalize 23.04.3\n"
#: battery/batteryplugin.cpp:119
#, kde-format
@ -102,7 +102,7 @@ msgstr "Отговор"
#, kde-format
msgctxt "@info:placeholder"
msgid "Reply to %1..."
msgstr "Отговор до „%1“..."
msgstr "Отговор до \"%1\"..."
#: notifications/sendreplydialog.cpp:29
#, kde-format

View file

@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: kdeconnect-kde\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-07-13 00:39+0000\n"
"PO-Revision-Date: 2024-11-09 20:04+0100\n"
"PO-Revision-Date: 2024-07-14 21:46+0200\n"
"Last-Translator: Mincho Kondarev <mkondarev@yahoo.de>\n"
"Language-Team: Bulgarian <kde-i18n-doc@kde.org>\n"
"Language: bg\n"
@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 24.08.2\n"
"X-Generator: Lokalize 24.07.70\n"
#: package/contents/ui/Battery.qml:33
#, kde-format
@ -147,7 +147,7 @@ msgstr "Отказ"
#, kde-format
msgctxt "@info:placeholder"
msgid "Reply to %1…"
msgstr "Отговор до „%1“…"
msgstr "Отговор до \"%1\"…"
#: package/contents/ui/DeviceDelegate.qml:430
#, kde-format

View file

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-10-19 00:39+0000\n"
"PO-Revision-Date: 2024-11-09 16:10+0100\n"
"PO-Revision-Date: 2024-09-14 16:55+0200\n"
"Last-Translator: Adrián Chaves (Gallaecio) <adrian@chaves.io>\n"
"Language-Team: Proxecto Trasno (proxecto@trasno.gal)\n"
"Language: gl\n"
@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 24.08.3\n"
"X-Generator: Lokalize 24.05.2\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@ -108,7 +108,7 @@ msgstr "(estado)"
#: kcm.ui:238
#, kde-format
msgid "KSqueezedTextLabel"
msgstr "KSqueezedTextLabel"
msgstr ""
#. i18n: ectx: property (text), widget (QPushButton, cancel_button)
#: kcm.ui:269
@ -180,22 +180,25 @@ msgstr ""
#: list.qml:52
#, kde-format
msgid "Remembered"
msgstr "Lembrouse"
msgstr ""
#: list.qml:54
#, kde-format
#, fuzzy, kde-format
#| msgid "Available plugins"
msgid "Available"
msgstr "Dispoñíbel"
msgstr "Complementos dispoñíbeis"
#: list.qml:56
#, kde-format
#, fuzzy, kde-format
#| msgid "KDE Connect"
msgid "Connected"
msgstr "Conectouse"
msgstr "KDE Connect"
#: list.qml:61
#, kde-format
#, fuzzy, kde-format
#| msgid "No device selected."
msgid "No devices found"
msgstr "Non se atopou ningún dispositivo."
msgstr "Non se seleccionou ningún dispositivo."
#~ msgid "🔑 abababab"
#~ msgstr "🔑 abababab"

View file

@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-10-19 00:39+0000\n"
"PO-Revision-Date: 2024-11-15 20:13+0100\n"
"PO-Revision-Date: 2024-10-03 21:46+0200\n"
"Last-Translator: Kristof Kiszel <ulysses@fsf.hu>\n"
"Language-Team: Hungarian <kde-l10n-hu@kde.org>\n"
"Language: hu\n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 24.08.3\n"
"X-Generator: Lokalize 24.08.0\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@ -109,7 +109,7 @@ msgstr "(állapot)"
#: kcm.ui:238
#, kde-format
msgid "KSqueezedTextLabel"
msgstr "KSqueezedTextLabel"
msgstr ""
#. i18n: ectx: property (text), widget (QPushButton, cancel_button)
#: kcm.ui:269
@ -180,22 +180,25 @@ msgstr ""
#: list.qml:52
#, kde-format
msgid "Remembered"
msgstr "Megjegyzett"
msgstr ""
#: list.qml:54
#, kde-format
#, fuzzy, kde-format
#| msgid "Available plugins"
msgid "Available"
msgstr "Elérhető"
msgstr "Elérhető bővítmények"
#: list.qml:56
#, kde-format
#, fuzzy, kde-format
#| msgid "KDE Connect"
msgid "Connected"
msgstr "Kapcsolódva"
msgstr "KDE Connect"
#: list.qml:61
#, kde-format
#, fuzzy, kde-format
#| msgid "No device selected."
msgid "No devices found"
msgstr "Nem találhatók eszközök"
msgstr "Nincs kiválasztva eszköz."
#~ msgid "🔑 abababab"
#~ msgstr "🔑 abababab"

View file

@ -4,13 +4,13 @@
#
# André Marcelo Alvarenga <alvarenga@kde.org>, 2020.
# Luiz Fernando Ranghetti <elchevive@opensuse.org>, 2021, 2023.
# SPDX-FileCopyrightText: 2023, 2024 Geraldo Simiao <geraldosimiao@fedoraproject.org>
# Geraldo Simiao <geraldosimiao@fedoraproject.org>, 2023.
msgid ""
msgstr ""
"Project-Id-Version: kdeconnect-kde\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-10-12 00:38+0000\n"
"PO-Revision-Date: 2024-11-25 01:22-0300\n"
"PO-Revision-Date: 2023-08-11 00:52-0300\n"
"Last-Translator: Geraldo Simiao <geraldosimiao@fedoraproject.org>\n"
"Language-Team: Brazilian Portuguese <kde-i18n-pt_BR@kde.org>\n"
"Language: pt_BR\n"
@ -18,17 +18,17 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 24.08.3\n"
"X-Generator: Lokalize 23.04.3\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "André Marcelo Alvarenga, Geraldo Simião"
msgstr "André Marcelo Alvarenga"
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "alvarenga@kde.org, geraldosimiao@fedoraproject.org"
msgstr "alvarenga@kde.org"
#: deviceindicator.cpp:53
#, kde-format
@ -47,9 +47,10 @@ msgid "Ring device"
msgstr "Fazer o dispositivo tocar"
#: deviceindicator.cpp:95
#, kde-format
#, fuzzy, kde-format
#| msgid "Send a file/URL"
msgid "Send files"
msgstr "Enviar arquivos"
msgstr "Enviar um arquivo/URL"
#: deviceindicator.cpp:117
#, kde-format

View file

@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: kdeconnect-kcm\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-10-19 00:39+0000\n"
"PO-Revision-Date: 2024-11-25 01:24-0300\n"
"PO-Revision-Date: 2024-07-19 18:23-0300\n"
"Last-Translator: Geraldo Simiao <geraldosimiao@fedoraproject.org>\n"
"Language-Team: Brazilian Portuguese <kde-i18n-pt_BR@kde.org>\n"
"Language: pt_BR\n"
@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 24.08.3\n"
"X-Generator: Lokalize 24.05.2\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@ -31,9 +31,10 @@ msgid "Your emails"
msgstr "alvarenga@kde.org, geraldosimiao@fedoraproject.org"
#: kcm.cpp:88
#, kde-format
#, fuzzy, kde-format
#| msgid "KDE Connect Settings"
msgid "Error: KDE Connect is not running"
msgstr "Erro: O KDE Connect não está sendo executado"
msgstr "Configurações do KDE Connect"
#: kcm.cpp:204
#, kde-format
@ -110,7 +111,7 @@ msgstr "(Status)"
#: kcm.ui:238
#, kde-format
msgid "KSqueezedTextLabel"
msgstr "KSqueezedTextLabel"
msgstr ""
#. i18n: ectx: property (text), widget (QPushButton, cancel_button)
#: kcm.ui:269
@ -182,22 +183,24 @@ msgstr ""
#: list.qml:52
#, kde-format
msgid "Remembered"
msgstr "Salvo"
msgstr ""
#: list.qml:54
#, kde-format
#, fuzzy, kde-format
#| msgid "Available plugins"
msgid "Available"
msgstr "Disponível"
msgstr "Plugins disponíveis"
#: list.qml:56
#, kde-format
#, fuzzy, kde-format
#| msgid "KDE Connect"
msgid "Connected"
msgstr "Conectado"
msgstr "KDE Connect"
#: list.qml:61
#, kde-format
msgid "No devices found"
msgstr "Nenhum dispositivo encontrado"
msgstr ""
#~ msgid "🔑 abababab"
#~ msgstr "🔑 abababab"

View file

@ -4,13 +4,12 @@
# SPDX-FileCopyrightText: 2020, 2024 Alexander Yavorsky <kekcuha@gmail.com>
# Дронова Юлия <juliette.tux@gmail.com>, 2021.
# Olesya Gerasimenko <translation-team@basealt.ru>, 2023.
# Alexander Yavorsky <kekcuha@gmail.com>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: kdeconnect-kde\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-10-12 00:38+0000\n"
"PO-Revision-Date: 2024-11-17 17:42+0300\n"
"PO-Revision-Date: 2024-01-10 21:59+0300\n"
"Last-Translator: Alexander Yavorsky <kekcuha@gmail.com>\n"
"Language-Team: Russian <kde-russian@lists.kde.ru>\n"
"Language: ru\n"
@ -19,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 21.08.3\n"
"X-Generator: Lokalize 23.08.4\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@ -48,9 +47,10 @@ msgid "Ring device"
msgstr "Позвонить на устройство"
#: deviceindicator.cpp:95
#, kde-format
#, fuzzy, kde-format
#| msgid "Send a file/URL"
msgid "Send files"
msgstr "Передать файлы"
msgstr "Передать файл/URL"
#: deviceindicator.cpp:117
#, kde-format

View file

@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2024-10-19 00:39+0000\n"
"PO-Revision-Date: 2024-11-17 17:44+0300\n"
"PO-Revision-Date: 2024-06-30 17:26+0300\n"
"Last-Translator: Alexander Yavorsky <kekcuha@gmail.com>\n"
"Language-Team: Russian <kde-russian@lists.kde.ru>\n"
"Language: ru\n"
@ -33,9 +33,10 @@ msgstr ""
"zawertun@gmail.com"
#: kcm.cpp:88
#, kde-format
#, fuzzy, kde-format
#| msgid "KDE Connect Settings"
msgid "Error: KDE Connect is not running"
msgstr "Ошибка: приложение KDE Connect не запущено"
msgstr "Настройка KDE Connect"
#: kcm.cpp:204
#, kde-format
@ -113,7 +114,7 @@ msgstr "(состояние)"
#: kcm.ui:238
#, kde-format
msgid "KSqueezedTextLabel"
msgstr "KSqueezedTextLabel"
msgstr ""
#. i18n: ectx: property (text), widget (QPushButton, cancel_button)
#: kcm.ui:269
@ -185,22 +186,25 @@ msgstr ""
#: list.qml:52
#, kde-format
msgid "Remembered"
msgstr "В списке"
msgstr ""
#: list.qml:54
#, kde-format
#, fuzzy, kde-format
#| msgid "Available plugins"
msgid "Available"
msgstr "Доступно"
msgstr "Доступные модули"
#: list.qml:56
#, kde-format
#, fuzzy, kde-format
#| msgid "KDE Connect"
msgid "Connected"
msgstr "Подключено"
msgstr "KDE Connect"
#: list.qml:61
#, kde-format
#, fuzzy, kde-format
#| msgid "No device selected."
msgid "No devices found"
msgstr "Не найдено ни одного устройства"
msgstr "Устройство не выбрано."
#~ msgid "🔑 abababab"
#~ msgstr "🔑 abababab"

View file

@ -80,7 +80,6 @@ GenericName[nl]=Instellingen voor synchronisatie van apparaat
GenericName[nn]=Innstillingar for einingssynkronisering
GenericName[pa]=ਿ ਿ
GenericName[pl]=Ustawienia synchronizacji urządzenia
GenericName[pt_BR]=Configurações da sincronização de dispositivo
GenericName[sl]=Nastavitve sinhronizacijenaprav
GenericName[sv]=Inställning av enhetssynkronisering
GenericName[ta]= ி
@ -115,7 +114,6 @@ Comment[nl]=Synchronisatie van apparaat configureren
Comment[nn]=Set opp einingssynkronisering
Comment[pa]=ਿ
Comment[pl]=Ustawienia synchronizacji urządzenia
Comment[pt_BR]=Configurar sincronização de dispositivo
Comment[sl]=Konfiguriraj sinhronizacijo naprav
Comment[sv]=Anpassa enhetssynkronisering
Comment[ta]= ி ி

View file

@ -73,7 +73,6 @@ GenericName[nl]=Tekstberichten versturen
GenericName[nn]=Tekstmeldingar
GenericName[pa]=
GenericName[pl]=Wiadomości tekstowe
GenericName[pt_BR]=Mensagem de texto
GenericName[sl]=Sporočanje besedil
GenericName[sv]=Textmeddelanden
GenericName[ta]=ி
@ -108,7 +107,6 @@ Comment[nl]=Lees en verzend SMS berichten op verbonden apparaten
Comment[nn]=Les og send tekstmeldingar på tilkopla einingar
Comment[pa]= ਿ SMS ਿ
Comment[pl]=Czytaj i wysyłaj wiadomości SMS na podłączonych urządzeniach
Comment[pt_BR]=Ler e executar comandos nos dispositivos conectados
Comment[sl]=Beri in pošiljaj SMS na povezanih napravah
Comment[sv]=Läs och skicka meddelanden via SMS på anslutna apparater
Comment[ta]= ி ி ி ி