Respect users prefered text editor for shared text
Summary: A user may have Kate installed but another editor set as default for text/plain. Respect that. Also add .txt extension to the temp file name to make mime-type detection easier. BUG: 399174 Test Plan: Set default text editor to Kate -> Text opens in Kate Set default text editor to Atom -> Text opens in Atom Reviewers: #kde_connect, broulik, apol Reviewed By: #kde_connect, broulik, apol Subscribers: kdeconnect Tags: #kde_connect Differential Revision: https://phabricator.kde.org/D15813
This commit is contained in:
parent
e298b73f8e
commit
47749792f3
3 changed files with 10 additions and 3 deletions
|
@ -24,7 +24,7 @@ if (SAILFISHOS)
|
|||
else()
|
||||
set(KF5_MIN_VERSION "5.42.0")
|
||||
set(QT_MIN_VERSION "5.7.0")
|
||||
set(KF5_REQUIRED_COMPONENTS I18n ConfigWidgets DBusAddons IconThemes Notifications KIO KCMUtils)
|
||||
set(KF5_REQUIRED_COMPONENTS I18n ConfigWidgets DBusAddons IconThemes Notifications KIO KCMUtils Service)
|
||||
set(KF5_OPTIONAL_COMPONENTS DocTools)
|
||||
if(UNIX)
|
||||
set(KF5_OPTIONAL_COMPONENTS ${KF5_OPTIONAL_COMPONENTS} PulseAudioQt Runner)
|
||||
|
|
|
@ -10,6 +10,7 @@ target_link_libraries(kdeconnect_share
|
|||
KF5::Notifications
|
||||
KF5::I18n
|
||||
KF5::KIOWidgets
|
||||
KF5::Service
|
||||
)
|
||||
|
||||
#######################################
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#include <KJobTrackerInterface>
|
||||
#include <KPluginFactory>
|
||||
#include <KIO/MkpathJob>
|
||||
#include <KMimeTypeTrader>
|
||||
|
||||
#include "core/filetransferjob.h"
|
||||
|
||||
|
@ -121,14 +122,19 @@ bool SharePlugin::receivePacket(const NetworkPacket& np)
|
|||
}
|
||||
} else if (np.has(QStringLiteral("text"))) {
|
||||
QString text = np.get<QString>(QStringLiteral("text"));
|
||||
if (!QStandardPaths::findExecutable(QStringLiteral("kate")).isEmpty()) {
|
||||
|
||||
KService::Ptr service = KMimeTypeTrader::self()->preferredService(QStringLiteral("text/plain"));
|
||||
const QString defaultApp = service ? service->desktopEntryName() : QString();
|
||||
|
||||
if (defaultApp == QLatin1String("org.kde.kate") || defaultApp == QLatin1String("org.kde.kwrite")) {
|
||||
QProcess* proc = new QProcess();
|
||||
connect(proc, SIGNAL(finished(int)), proc, SLOT(deleteLater()));
|
||||
proc->start(QStringLiteral("kate"), QStringList(QStringLiteral("--stdin")));
|
||||
proc->start(defaultApp.section('.', 2,2), QStringList(QStringLiteral("--stdin")));
|
||||
proc->write(text.toUtf8());
|
||||
proc->closeWriteChannel();
|
||||
} else {
|
||||
QTemporaryFile tmpFile;
|
||||
tmpFile.setFileTemplate(QStringLiteral("kdeconnect-XXXXXX.txt"));
|
||||
tmpFile.setAutoRemove(false);
|
||||
tmpFile.open();
|
||||
tmpFile.write(text.toUtf8());
|
||||
|
|
Loading…
Reference in a new issue