/
kateappadaptor.cpp
133 lines (109 loc) · 3.43 KB
/
kateappadaptor.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/* This file is part of the KDE project
SPDX-FileCopyrightText: 2001 Christoph Cullmann <cullmann@kde.org>
SPDX-License-Identifier: LGPL-2.0-only
*/
#include "kateappadaptor.h"
#include "kateapp.h"
#include "katedocmanager.h"
#include "katemainwindow.h"
#include "katesessionmanager.h"
#include "katedebug.h"
#include <KStartupInfo>
#include <KWindowSystem>
#include <QApplication>
/**
* add the adapter to the global application instance to have
* it auto-register with KDBusService, see bug 410742
*/
KateAppAdaptor::KateAppAdaptor(KateApp *app)
: QDBusAbstractAdaptor(qApp)
, m_app(app)
{
}
void KateAppAdaptor::activate(const QString &token)
{
KateMainWindow *win = m_app->activeKateMainWindow();
if (!win) {
return;
}
// like QtSingleApplication
win->setWindowState(win->windowState() & ~Qt::WindowMinimized);
win->raise();
win->activateWindow();
// try to raise window, see bug 407288
win->setAttribute(Qt::WA_NativeWindow, true);
KStartupInfo::setNewStartupId(win->windowHandle(), KStartupInfo::startupId());
KWindowSystem::setCurrentXdgActivationToken(token);
KWindowSystem::activateWindow(win->effectiveWinId());
}
bool KateAppAdaptor::openUrl(const QString &url, const QString &encoding)
{
return m_app->openDocUrl(QUrl(url), encoding, false);
}
bool KateAppAdaptor::openUrl(const QString &url, const QString &encoding, bool isTempFile)
{
qCDebug(LOG_KATE) << "openURL";
return m_app->openDocUrl(QUrl(url), encoding, isTempFile);
}
bool KateAppAdaptor::isOnActivity(const QString &activity)
{
return m_app->isOnActivity(activity);
}
//-----------
QString KateAppAdaptor::tokenOpenUrl(const QString &url, const QString &encoding)
{
KTextEditor::Document *doc = m_app->openDocUrl(QUrl(url), encoding, false);
if (!doc) {
return QStringLiteral("ERROR");
}
return QStringLiteral("%1").arg(reinterpret_cast<qptrdiff>(doc));
}
QString KateAppAdaptor::tokenOpenUrl(const QString &url, const QString &encoding, bool isTempFile)
{
qCDebug(LOG_KATE) << "openURL";
KTextEditor::Document *doc = m_app->openDocUrl(QUrl(url), encoding, isTempFile);
if (!doc) {
return QStringLiteral("ERROR");
}
return QStringLiteral("%1").arg(reinterpret_cast<qptrdiff>(doc));
}
QString KateAppAdaptor::tokenOpenUrlAt(const QString &url, int line, int column, const QString &encoding, bool isTempFile)
{
qCDebug(LOG_KATE) << "openURLAt";
KTextEditor::Document *doc = m_app->openDocUrl(QUrl(url), encoding, isTempFile);
if (!doc) {
return QStringLiteral("ERROR");
}
m_app->setCursor(line, column);
return QStringLiteral("%1").arg(reinterpret_cast<qptrdiff>(doc));
}
//--------
bool KateAppAdaptor::setCursor(int line, int column)
{
return m_app->setCursor(line, column);
}
bool KateAppAdaptor::openInput(const QString &text, const QString &encoding)
{
return m_app->openInput(text, encoding);
}
bool KateAppAdaptor::activateSession(const QString &session)
{
return m_app->sessionManager()->activateSession(session);
}
int KateAppAdaptor::desktopNumber()
{
KWindowInfo appInfo(m_app->activeKateMainWindow()->winId(), NET::WMDesktop);
return appInfo.desktop();
}
QString KateAppAdaptor::activeSession()
{
return m_app->sessionManager()->activeSession()->name();
}
void KateAppAdaptor::emitExiting()
{
Q_EMIT exiting();
}
void KateAppAdaptor::emitDocumentClosed(const QString &token)
{
documentClosed(token);
}