mirror of
https://github.com/KDE/krfb
synced 2026-07-01 15:51:18 -07:00
Compare commits
13 Commits
work/nodes
...
release/22
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa2d8275c7 | ||
|
|
fd23dabec7 | ||
|
|
ca9ae9937b | ||
|
|
4f64899557 | ||
|
|
0e8fc32ff8 | ||
|
|
4b1e20fbd3 | ||
|
|
de4dcbbcc6 | ||
|
|
ba0edf0b6f | ||
|
|
7f26fdecab | ||
|
|
aa73ae5dc2 | ||
|
|
eab4bda53b | ||
|
|
9d9cfd2ce0 | ||
|
|
06e6cba751 |
@@ -2,13 +2,13 @@ cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
# KDE Application Version, managed by release script
|
||||
set (RELEASE_SERVICE_VERSION_MAJOR "22")
|
||||
set (RELEASE_SERVICE_VERSION_MINOR "11")
|
||||
set (RELEASE_SERVICE_VERSION_MICRO "70")
|
||||
set (RELEASE_SERVICE_VERSION_MINOR "08")
|
||||
set (RELEASE_SERVICE_VERSION_MICRO "3")
|
||||
set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
|
||||
|
||||
project(krfb VERSION ${RELEASE_SERVICE_VERSION})
|
||||
|
||||
set(QT_MIN_VERSION 5.15.2)
|
||||
set(QT_MIN_VERSION 5.15.0)
|
||||
set(KF5_MIN_VERSION 5.91.0)
|
||||
|
||||
find_package(ECM ${KF5_MIN_VERSION} NO_MODULE REQUIRED)
|
||||
@@ -21,7 +21,6 @@ include(ECMInstallIcons)
|
||||
include(ECMAddAppIcon)
|
||||
include(ECMSetupVersion)
|
||||
include(ECMQtDeclareLoggingCategory)
|
||||
include(ECMDeprecationSettings)
|
||||
include(FeatureSummary)
|
||||
include(CheckIncludeFile)
|
||||
|
||||
@@ -61,11 +60,22 @@ if(WIN32)
|
||||
set(CMAKE_REQUIRED_INCLUDES ${KDEWIN32_INCLUDES})
|
||||
endif(WIN32)
|
||||
|
||||
ecm_set_disabled_deprecation_versions(
|
||||
QT 5.15.2
|
||||
KF 5.91
|
||||
add_definitions(
|
||||
-DQT_DEPRECATED_WARNINGS
|
||||
-DQT_USE_QSTRINGBUILDER
|
||||
-DQT_NO_CAST_TO_ASCII
|
||||
-DQT_NO_CAST_FROM_ASCII
|
||||
-DQT_NO_CAST_FROM_BYTEARRAY
|
||||
-DQT_STRICT_ITERATORS
|
||||
-DQT_NO_URL_CAST_FROM_STRING
|
||||
-DQT_NO_SIGNALS_SLOTS_KEYWORDS
|
||||
-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT
|
||||
)
|
||||
|
||||
add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050f02)
|
||||
add_definitions(-DKF_DISABLE_DEPRECATED_BEFORE_AND_AT=0x055A00)
|
||||
|
||||
|
||||
include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} )
|
||||
|
||||
find_package(LibVNCServer REQUIRED)
|
||||
|
||||
@@ -961,8 +961,8 @@ PWFrameBuffer::Private::~Private()
|
||||
}
|
||||
}
|
||||
|
||||
PWFrameBuffer::PWFrameBuffer(QObject *parent)
|
||||
: FrameBuffer (parent),
|
||||
PWFrameBuffer::PWFrameBuffer(WId winid, QObject *parent)
|
||||
: FrameBuffer (winid, parent),
|
||||
d(new Private(this))
|
||||
{
|
||||
fb = nullptr;
|
||||
|
||||
@@ -30,7 +30,7 @@ public:
|
||||
};
|
||||
using Streams = QList<Stream>;
|
||||
|
||||
PWFrameBuffer(QObject *parent = nullptr);
|
||||
PWFrameBuffer(WId winid, QObject *parent = nullptr);
|
||||
virtual ~PWFrameBuffer() override;
|
||||
|
||||
void initDBus();
|
||||
|
||||
@@ -30,9 +30,11 @@ PWFrameBufferPlugin::PWFrameBufferPlugin(QObject *parent, const QVariantList &ar
|
||||
}
|
||||
|
||||
|
||||
FrameBuffer *PWFrameBufferPlugin::frameBuffer(const QVariantMap &args)
|
||||
FrameBuffer *PWFrameBufferPlugin::frameBuffer(WId id, const QVariantMap &args)
|
||||
{
|
||||
auto pwfb = new PWFrameBuffer;
|
||||
//NOTE WId is irrelevant in Wayland
|
||||
|
||||
auto pwfb = new PWFrameBuffer(id);
|
||||
if (args.contains(QLatin1String("name"))) {
|
||||
pwfb->startVirtualMonitor(args[QStringLiteral("name")].toString(), args[QStringLiteral("resolution")].toSize(), args[QStringLiteral("scale")].toDouble());
|
||||
} else {
|
||||
|
||||
@@ -34,7 +34,7 @@ class PWFrameBufferPlugin: public FrameBufferPlugin
|
||||
public:
|
||||
PWFrameBufferPlugin(QObject *parent, const QVariantList &args);
|
||||
|
||||
FrameBuffer *frameBuffer(const QVariantMap &args) override;
|
||||
FrameBuffer *frameBuffer(WId id, const QVariantMap &args) override;
|
||||
|
||||
private:
|
||||
Q_DISABLE_COPY(PWFrameBufferPlugin)
|
||||
|
||||
@@ -24,7 +24,6 @@ target_link_libraries (krfb_framebuffer_qt
|
||||
Qt5::Core
|
||||
Qt5::Gui
|
||||
KF5::CoreAddons
|
||||
Qt::GuiPrivate
|
||||
krfbprivate
|
||||
)
|
||||
|
||||
|
||||
@@ -13,20 +13,17 @@
|
||||
#include <QRegion>
|
||||
#include <QPixmap>
|
||||
#include <QBitmap>
|
||||
#include <QApplication>
|
||||
#include <QGuiApplication>
|
||||
#include <QScreen>
|
||||
#include <qpa/qplatformnativeinterface.h>
|
||||
|
||||
|
||||
const int UPDATE_TIME = 500;
|
||||
|
||||
QtFrameBuffer::QtFrameBuffer(QObject *parent)
|
||||
: FrameBuffer(parent)
|
||||
QtFrameBuffer::QtFrameBuffer(WId id, QObject *parent)
|
||||
: FrameBuffer(id, parent)
|
||||
{
|
||||
QScreen *screen = QGuiApplication::primaryScreen();
|
||||
QPlatformNativeInterface* native = qApp->platformNativeInterface();
|
||||
|
||||
if (screen) {
|
||||
win = reinterpret_cast<WId>(native->nativeResourceForScreen(QByteArrayLiteral("rootwindow"), screen));
|
||||
primaryScreen = screen;
|
||||
fbImage = screen->grabWindow(win).toImage();
|
||||
fb = new char[fbImage.sizeInBytes()];
|
||||
|
||||
@@ -22,7 +22,7 @@ class QtFrameBuffer : public FrameBuffer
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit QtFrameBuffer(QObject *parent = nullptr);
|
||||
explicit QtFrameBuffer(WId id, QObject *parent = nullptr);
|
||||
|
||||
~QtFrameBuffer() override;
|
||||
|
||||
@@ -38,7 +38,6 @@ public Q_SLOTS:
|
||||
void updateFrameBuffer();
|
||||
|
||||
private:
|
||||
WId win;
|
||||
QImage fbImage;
|
||||
QTimer *t;
|
||||
QScreen *primaryScreen;
|
||||
|
||||
@@ -31,10 +31,10 @@ QtFrameBufferPlugin::QtFrameBufferPlugin(QObject *parent, const QVariantList &ar
|
||||
{
|
||||
}
|
||||
|
||||
FrameBuffer *QtFrameBufferPlugin::frameBuffer(const QVariantMap &args)
|
||||
FrameBuffer *QtFrameBufferPlugin::frameBuffer(WId id, const QVariantMap &args)
|
||||
{
|
||||
Q_UNUSED(args);
|
||||
return new QtFrameBuffer;
|
||||
return new QtFrameBuffer(id);
|
||||
}
|
||||
|
||||
#include "qtframebufferplugin.moc"
|
||||
|
||||
@@ -34,7 +34,7 @@ class QtFrameBufferPlugin : public FrameBufferPlugin
|
||||
public:
|
||||
QtFrameBufferPlugin(QObject *parent, const QVariantList &args);
|
||||
|
||||
FrameBuffer *frameBuffer(const QVariantMap &args) override;
|
||||
FrameBuffer *frameBuffer(WId id, const QVariantMap &args) override;
|
||||
|
||||
private:
|
||||
Q_DISABLE_COPY(QtFrameBufferPlugin)
|
||||
|
||||
@@ -20,7 +20,6 @@ add_library(krfb_framebuffer_xcb MODULE ${krfb_framebuffer_xcb_SRCS})
|
||||
target_link_libraries (krfb_framebuffer_xcb
|
||||
Qt5::Core
|
||||
Qt5::Gui
|
||||
Qt::GuiPrivate
|
||||
XCB::XCB
|
||||
XCB::RENDER
|
||||
XCB::SHAPE
|
||||
|
||||
@@ -19,11 +19,10 @@
|
||||
#include <sys/shm.h>
|
||||
|
||||
#include <QX11Info>
|
||||
#include <QApplication>
|
||||
#include <QCoreApplication>
|
||||
#include <QGuiApplication>
|
||||
#include <QScreen>
|
||||
#include <QAbstractNativeEventFilter>
|
||||
#include <qpa/qplatformnativeinterface.h>
|
||||
|
||||
|
||||
class KrfbXCBEventFilter: public QAbstractNativeEventFilter
|
||||
@@ -131,7 +130,6 @@ public:
|
||||
bool running;
|
||||
|
||||
QRect area; // capture area, primary monitor coordinates
|
||||
WId win;
|
||||
};
|
||||
|
||||
|
||||
@@ -146,8 +144,8 @@ static xcb_screen_t *get_xcb_screen(xcb_connection_t *conn, int screen_num) {
|
||||
|
||||
|
||||
|
||||
XCBFrameBuffer::XCBFrameBuffer(QObject *parent):
|
||||
FrameBuffer(parent), d(new XCBFrameBuffer::P)
|
||||
XCBFrameBuffer::XCBFrameBuffer(WId winid, QObject *parent):
|
||||
FrameBuffer(winid, parent), d(new XCBFrameBuffer::P)
|
||||
{
|
||||
d->running = false;
|
||||
d->damage = XCB_NONE;
|
||||
@@ -164,8 +162,6 @@ XCBFrameBuffer::XCBFrameBuffer(QObject *parent):
|
||||
|
||||
QScreen *primaryScreen = QGuiApplication::primaryScreen();
|
||||
if (primaryScreen) {
|
||||
QPlatformNativeInterface* native = qApp->platformNativeInterface();
|
||||
d->win = reinterpret_cast<WId>(native->nativeResourceForScreen(QByteArrayLiteral("rootwindow"), primaryScreen));
|
||||
qreal scaleFactor = primaryScreen->devicePixelRatio();
|
||||
d->area = { primaryScreen->geometry().topLeft() * scaleFactor,
|
||||
primaryScreen->geometry().bottomRight() * scaleFactor };
|
||||
@@ -181,7 +177,7 @@ XCBFrameBuffer::XCBFrameBuffer(QObject *parent):
|
||||
}
|
||||
|
||||
d->framebufferImage = xcb_image_get(QX11Info::connection(),
|
||||
d->win,
|
||||
this->win,
|
||||
d->area.left(),
|
||||
d->area.top(),
|
||||
d->area.width(),
|
||||
@@ -250,7 +246,7 @@ XCBFrameBuffer::XCBFrameBuffer(QObject *parent):
|
||||
// will return 1 on success (yes!)
|
||||
int shmget_res = xcb_image_shm_get(
|
||||
QX11Info::connection(),
|
||||
d->win,
|
||||
this->win,
|
||||
d->updateTile,
|
||||
d->shminfo,
|
||||
d->area.left(), // x
|
||||
@@ -558,7 +554,7 @@ QList<QRect> XCBFrameBuffer::modifiedTiles() {
|
||||
// translate whe coordinates
|
||||
xcb_shm_get_image_cookie_t sgi_cookie = xcb_shm_get_image(
|
||||
QX11Info::connection(),
|
||||
d->win,
|
||||
this->win,
|
||||
d->area.left() + r.left(),
|
||||
d->area.top() + r.top(),
|
||||
r.width(),
|
||||
@@ -613,7 +609,7 @@ QList<QRect> XCBFrameBuffer::modifiedTiles() {
|
||||
// need function that copies pixels from one image to another
|
||||
xcb_image_t *damagedImage = xcb_image_get(
|
||||
QX11Info::connection(),
|
||||
d->win,
|
||||
this->win,
|
||||
r.left(),
|
||||
r.top(),
|
||||
r.width(),
|
||||
@@ -653,7 +649,7 @@ void XCBFrameBuffer::startMonitor() {
|
||||
|
||||
d->running = true;
|
||||
d->damage = xcb_generate_id(QX11Info::connection());
|
||||
xcb_damage_create(QX11Info::connection(), d->damage, d->win,
|
||||
xcb_damage_create(QX11Info::connection(), d->damage, this->win,
|
||||
XCB_DAMAGE_REPORT_LEVEL_RAW_RECTANGLES);
|
||||
|
||||
// (currently) we do not call xcb_damage_subtract() EVER, because
|
||||
|
||||
@@ -22,7 +22,7 @@ class XCBFrameBuffer: public FrameBuffer
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit XCBFrameBuffer(QObject *parent = nullptr);
|
||||
explicit XCBFrameBuffer(WId winid, QObject *parent = nullptr);
|
||||
~XCBFrameBuffer() override;
|
||||
|
||||
public:
|
||||
|
||||
@@ -29,10 +29,10 @@ XCBFrameBufferPlugin::XCBFrameBufferPlugin(QObject *parent, const QVariantList &
|
||||
{
|
||||
}
|
||||
|
||||
FrameBuffer *XCBFrameBufferPlugin::frameBuffer(const QVariantMap &args)
|
||||
FrameBuffer *XCBFrameBufferPlugin::frameBuffer(WId id, const QVariantMap &args)
|
||||
{
|
||||
Q_UNUSED(args);
|
||||
return new XCBFrameBuffer;
|
||||
return new XCBFrameBuffer(id);
|
||||
}
|
||||
|
||||
#include "xcb_framebufferplugin.moc"
|
||||
|
||||
@@ -34,7 +34,7 @@ class XCBFrameBufferPlugin: public FrameBufferPlugin
|
||||
public:
|
||||
XCBFrameBufferPlugin(QObject *parent, const QVariantList &args);
|
||||
|
||||
FrameBuffer *frameBuffer(const QVariantMap &args) override;
|
||||
FrameBuffer *frameBuffer(WId id, const QVariantMap &args) override;
|
||||
|
||||
private:
|
||||
Q_DISABLE_COPY(XCBFrameBufferPlugin)
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
#include <QCursor>
|
||||
|
||||
|
||||
FrameBuffer::FrameBuffer(QObject *parent)
|
||||
: QObject(parent)
|
||||
FrameBuffer::FrameBuffer(WId id, QObject *parent)
|
||||
: QObject(parent), win(id)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ class KRFBPRIVATE_EXPORT FrameBuffer : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit FrameBuffer(QObject *parent = nullptr);
|
||||
explicit FrameBuffer(WId id, QObject *parent = nullptr);
|
||||
|
||||
~FrameBuffer() override;
|
||||
|
||||
@@ -52,6 +52,7 @@ Q_SIGNALS:
|
||||
void frameBufferChanged();
|
||||
|
||||
protected:
|
||||
WId win;
|
||||
char *fb = nullptr;
|
||||
QList<QRect> tiles;
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ QSharedPointer<FrameBuffer> FrameBufferManager::frameBuffer(WId id, const QVaria
|
||||
if (it.key() == KrfbConfig::preferredFrameBufferPlugin()) {
|
||||
qCDebug(KRFB) << "Using FrameBuffer:" << KrfbConfig::preferredFrameBufferPlugin();
|
||||
|
||||
QSharedPointer<FrameBuffer> frameBuffer(it.value()->frameBuffer(args));
|
||||
QSharedPointer<FrameBuffer> frameBuffer(it.value()->frameBuffer(id, args));
|
||||
if (frameBuffer) {
|
||||
m_frameBuffers.insert(id, frameBuffer.toWeakRef());
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ public:
|
||||
explicit FrameBufferPlugin(QObject *parent, const QVariantList &args);
|
||||
~FrameBufferPlugin() override;
|
||||
|
||||
virtual FrameBuffer *frameBuffer(const QVariantMap &args) = 0;
|
||||
virtual FrameBuffer *frameBuffer(WId id, const QVariantMap &args) = 0;
|
||||
};
|
||||
|
||||
#endif // Header guard
|
||||
|
||||
@@ -33,6 +33,7 @@ Comment[id]=Desktop Sharing
|
||||
Comment[is]=Skjáborðamiðlun
|
||||
Comment[it]=Condivisione del desktop
|
||||
Comment[ja]=デスクトップ共有
|
||||
Comment[ka]=სამუშაო მაგიდის გაზიარება
|
||||
Comment[kk]=Үстелді ортақтастыру
|
||||
Comment[km]=ការចែករំលែកផ្ទែតុ
|
||||
Comment[ko]=데스크톱 공유
|
||||
@@ -101,6 +102,7 @@ Name[id]=Pengguna Menyetujui Koneksi
|
||||
Name[is]=Notandi samþykkir tengingar
|
||||
Name[it]=L'utente accetta la connessione
|
||||
Name[ja]=ユーザが接続を許可
|
||||
Name[ka]=მომხმარებელი დაეთანხმა მიერთებას
|
||||
Name[kk]=Пайдаланушы қосылымды қабылдайды
|
||||
Name[km]=អ្នកប្រើទទួលយកការតភ្ជាប់
|
||||
Name[ko]=사용자가 연결을 수락함
|
||||
@@ -165,6 +167,7 @@ Comment[id]=Pengguna menyetujui koneksi
|
||||
Comment[is]=Notandi samþykkir tengingu
|
||||
Comment[it]=L'utente accetta la connessione
|
||||
Comment[ja]=ユーザが接続を許可
|
||||
Comment[ka]=მომხმარებელი დაეთანხმა მიერთებას
|
||||
Comment[kk]=Пайдаланушы қосылымды қабылдайды
|
||||
Comment[km]=អ្នកប្រើទទួលយកការតភ្ជាប់
|
||||
Comment[ko]=사용자가 연결을 수락함
|
||||
@@ -234,6 +237,7 @@ Name[id]=Pengguna Menampik Koneksi
|
||||
Name[is]=Notandi hafnar tengingum
|
||||
Name[it]=L'utente rifiuta la connessione
|
||||
Name[ja]=ユーザが接続を拒否
|
||||
Name[ka]=მომხმარებელმა უარყო მიერთებას
|
||||
Name[kk]=Пайдаланушы қосылымдан бас тартады
|
||||
Name[km]=អ្នកប្រើបដិសេធការតភ្ជាប់
|
||||
Name[ko]=사용자가 연결을 거부함
|
||||
@@ -298,6 +302,7 @@ Comment[id]=Pengguna menampik koneksi
|
||||
Comment[is]=Notandi hafnar tengingu
|
||||
Comment[it]=L'utente rifiuta la connessione
|
||||
Comment[ja]=ユーザが接続を拒否
|
||||
Comment[ka]=მომხმარებელმა უარყო მიერთებას
|
||||
Comment[kk]=Пайдаланушы қосылымды қабылдамайды
|
||||
Comment[km]=អ្នកប្រើបដិសេធការតភ្ជាប់
|
||||
Comment[ko]=사용자가 연결을 거부함
|
||||
@@ -367,6 +372,7 @@ Name[id]=Koneksi Ditutup
|
||||
Name[is]=Tengingu lokað
|
||||
Name[it]=Connessione chiusa
|
||||
Name[ja]=接続切断
|
||||
Name[ka]=კავშირი დაიხურა
|
||||
Name[kk]=Қосылымдан жабылды
|
||||
Name[km]=បានបិទការតភ្ជាប់
|
||||
Name[ko]=연결이 닫힘
|
||||
@@ -434,6 +440,7 @@ Comment[id]=Koneksi ditutup
|
||||
Comment[is]=Tengingu lokað
|
||||
Comment[it]=Connessione chiusa
|
||||
Comment[ja]=接続が閉じられました
|
||||
Comment[ka]=კავშირი დახურულია
|
||||
Comment[kk]=Қосылым жабылды
|
||||
Comment[km]=បានបិទការតភ្ជាប់
|
||||
Comment[ko]=연결이 닫힘
|
||||
@@ -506,6 +513,7 @@ Name[id]=Sandi Tidak Absah
|
||||
Name[is]=Ógilt lykilorð
|
||||
Name[it]=Password non valida
|
||||
Name[ja]=無効なパスワード
|
||||
Name[ka]=არასწორი პაროლი
|
||||
Name[kk]=Жарамсыз паролі
|
||||
Name[km]=ពាក្យសម្ងាត់មិនត្រឹមត្រូវ
|
||||
Name[ko]=잘못된 암호
|
||||
@@ -573,6 +581,7 @@ Comment[id]=Sandi tidak absah
|
||||
Comment[is]=Lykilorð ógilt
|
||||
Comment[it]=Password non valida
|
||||
Comment[ja]=無効なパスワード
|
||||
Comment[ka]=არასწორი პაროლი
|
||||
Comment[kk]=Паролі дұрыс емес
|
||||
Comment[km]=ពាក្យសម្ងាត់មិនត្រឹមត្រូវ
|
||||
Comment[ko]=잘못된 암호
|
||||
@@ -648,6 +657,7 @@ Name[id]=Undangan Sandi Tidak Absah
|
||||
Name[is]=Ógild lykilorðsboð
|
||||
Name[it]=Password di invito non valida
|
||||
Name[ja]=招待に対する無効なパスワード
|
||||
Name[ka]=არასწორი პაროლის მოსაწვევები
|
||||
Name[kk]=Жарамсыз паролімен шақыру
|
||||
Name[km]=ការអញ្ជើញពាក្យសម្ងាត់មិនត្រឹមត្រូវ
|
||||
Name[ko]=잘못된 암호 초대장
|
||||
@@ -1041,6 +1051,7 @@ Name[id]=Terlalu Banyak Koneksi
|
||||
Name[is]=Of margar tengingar
|
||||
Name[it]=Troppe connessioni
|
||||
Name[ja]=多すぎる接続
|
||||
Name[ka]=მეტისმეტად ბევრი მიერთება
|
||||
Name[kk]=Тым көп қосылым
|
||||
Name[km]=ការតភ្ជាប់ច្រើនពេក
|
||||
Name[ko]=너무 많은 연결
|
||||
@@ -1105,6 +1116,7 @@ Comment[id]=Sibuk, koneksi ditampik
|
||||
Comment[is]=Uptekinn, tengingu hafnað
|
||||
Comment[it]=Occupato, connessione rifiutata
|
||||
Comment[ja]=ビジーです、接続を拒否しました
|
||||
Comment[ka]=დაკავებულია, დაკავშირება უარყოფილია
|
||||
Comment[kk]=Бос емес, қосылым болмады
|
||||
Comment[km]=រវល់ បដិសេធការតភ្ជាប់
|
||||
Comment[ko]=바쁨, 연결 거부됨
|
||||
@@ -1175,6 +1187,7 @@ Name[id]=Koneksi Tak Terduga
|
||||
Name[is]=Óvænt Tenging
|
||||
Name[it]=Connessione inattesa
|
||||
Name[ja]=予期しない接続
|
||||
Name[ka]=მოულოდნელი შეერთება
|
||||
Name[kk]=Күтпеген қосылым
|
||||
Name[km]=ការតភ្ជាប់ដែលមិនបានរំពឹងទុក
|
||||
Name[ko]=예상하지 않은 연결
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
#include <QSet>
|
||||
#include <QNetworkInterface>
|
||||
#include <QHostInfo>
|
||||
#include <QMessageBox>
|
||||
|
||||
|
||||
class TCP: public QWidget, public Ui::TCP
|
||||
{
|
||||
@@ -219,16 +219,16 @@ void MainWindow::passwordChanged(const QString& password)
|
||||
|
||||
void MainWindow::aboutConnectionAddress()
|
||||
{
|
||||
QMessageBox::about(this,
|
||||
i18n("KDE Desktop Sharing"),
|
||||
i18n("This field contains the address of your computer and the port number, separated by a colon.\n\nThe address is just a hint - you can use any address that can reach your computer.\n\nDesktop Sharing tries to guess your address from your network configuration, but does not always succeed in doing so.\n\nIf your computer is behind a firewall it may have a different address or be unreachable for other computers."));
|
||||
KMessageBox::about(this,
|
||||
i18n("This field contains the address of your computer and the port number, separated by a colon.\n\nThe address is just a hint - you can use any address that can reach your computer.\n\nDesktop Sharing tries to guess your address from your network configuration, but does not always succeed in doing so.\n\nIf your computer is behind a firewall it may have a different address or be unreachable for other computers."),
|
||||
i18n("KDE Desktop Sharing"));
|
||||
}
|
||||
|
||||
void MainWindow::aboutUnattendedMode()
|
||||
{
|
||||
QMessageBox::about(this,
|
||||
i18n("KDE Desktop Sharing"),
|
||||
i18n("Any remote user with normal desktop sharing password will have to be authenticated.\n\nIf unattended access is on, and the remote user provides unattended mode password, desktop sharing access will be granted without explicit confirmation."));
|
||||
KMessageBox::about(this,
|
||||
i18n("Any remote user with normal desktop sharing password will have to be authenticated.\n\nIf unattended access is on, and the remote user provides unattended mode password, desktop sharing access will be granted without explicit confirmation."),
|
||||
i18n("KDE Desktop Sharing"));
|
||||
}
|
||||
|
||||
void MainWindow::showConfiguration()
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
<name xml:lang="ia">Krfb</name>
|
||||
<name xml:lang="id">Krfb</name>
|
||||
<name xml:lang="it">Krfb</name>
|
||||
<name xml:lang="ka">Krfb</name>
|
||||
<name xml:lang="ko">Krfb</name>
|
||||
<name xml:lang="nl">Krfb</name>
|
||||
<name xml:lang="nn">Krfb</name>
|
||||
@@ -56,6 +57,7 @@
|
||||
<summary xml:lang="ia">Compartir tu scriptorio a un altere computator via VNC</summary>
|
||||
<summary xml:lang="id">Bagikan desktopmu ke komputer lainnya via VNC</summary>
|
||||
<summary xml:lang="it">Condividi il desktop con un altro computer tramite VNC</summary>
|
||||
<summary xml:lang="ka">სამუშაო მაგიდის გაზიარება Krfb-სთან ერთად VNC-სთან ერთად</summary>
|
||||
<summary xml:lang="ko">내 데스크톱을 VNC로 다른 컴퓨터와 공유</summary>
|
||||
<summary xml:lang="nl">Uw bureaublad delen naar een andere computer via VNC</summary>
|
||||
<summary xml:lang="nn">Del skrivebordet med ei anna maskin via VNC</summary>
|
||||
@@ -132,6 +134,7 @@
|
||||
<caption xml:lang="ia">Compartir scriptorio con Krfb</caption>
|
||||
<caption xml:lang="id">Berbagi desktop dengan Krfb</caption>
|
||||
<caption xml:lang="it">Condivisone del desktop con Krfb</caption>
|
||||
<caption xml:lang="ka">სამუშაო მაგიდის გაზიარება Krfb-სთან ერთად</caption>
|
||||
<caption xml:lang="ko">Krfb로 데스크톱 공유</caption>
|
||||
<caption xml:lang="nl">Bureaublad delen met Krfb</caption>
|
||||
<caption xml:lang="nn">Skrivebordsdeling med Krfb</caption>
|
||||
@@ -156,9 +159,9 @@
|
||||
</provides>
|
||||
<project_group>KDE</project_group>
|
||||
<releases>
|
||||
<release version="22.04.3" date="2022-07-07"/>
|
||||
<release version="22.04.2" date="2022-06-09"/>
|
||||
<release version="22.04.1" date="2022-05-12"/>
|
||||
<release version="22.04.0" date="2022-04-21"/>
|
||||
<release version="22.08.3" date="2022-11-03"/>
|
||||
<release version="22.08.2" date="2022-10-13"/>
|
||||
<release version="22.08.1" date="2022-09-08"/>
|
||||
<release version="22.08.0" date="2022-08-18"/>
|
||||
</releases>
|
||||
</component>
|
||||
|
||||
@@ -37,6 +37,7 @@ Name[id]=Krfb
|
||||
Name[is]=Krfb
|
||||
Name[it]=Krfb
|
||||
Name[ja]=Krfb
|
||||
Name[ka]=Krfb
|
||||
Name[kk]=Krfb
|
||||
Name[km]=Krfb
|
||||
Name[ko]=Krfb
|
||||
@@ -89,6 +90,7 @@ GenericName[fi]=Työpöydän jakaminen (VNC)
|
||||
GenericName[fr]=Partage de bureaux (VNC)
|
||||
GenericName[ia]=Compartir de scriptorio (VNC)
|
||||
GenericName[it]=Condivisione del desktop (VNC)
|
||||
GenericName[ka]=სამუშაო მაგიდის გაზიარება(VNC).
|
||||
GenericName[ko]=데스크톱 공유(VNC)
|
||||
GenericName[nl]=Bureaublad delen (VNC)
|
||||
GenericName[nn]=Skrivebordsdeling (VNC)
|
||||
@@ -137,6 +139,7 @@ Comment[id]=Desktop Sharing
|
||||
Comment[is]=Skjáborðamiðlun
|
||||
Comment[it]=Condivisione del desktop
|
||||
Comment[ja]=デスクトップ共有
|
||||
Comment[ka]=სამუშაო მაგიდის გაზიარება
|
||||
Comment[kk]=Үстелді ортақтастыру
|
||||
Comment[km]=ការចែករំលែកផ្ទែតុ
|
||||
Comment[ko]=데스크톱 공유
|
||||
|
||||
@@ -11,10 +11,12 @@ Name[cs]=Virtuální monitor KRFB
|
||||
Name[el]=Εικονική οθόνη του KRFB
|
||||
Name[en_GB]=KRFBs Virtual Monitor
|
||||
Name[es]=Monitor virtual de KRFB
|
||||
Name[eu]=KRFBren alegiazko monitorea
|
||||
Name[fi]=KRFB:n virtuaalinäyttö
|
||||
Name[fr]=Moniteur virtuel « Krfb »
|
||||
Name[ia]=Virtual Monitor de KRFB
|
||||
Name[it]=Monitor virtuale di KRFB
|
||||
Name[ka]=KRFB-ის ვირტუალური ეკრანი
|
||||
Name[ko]=KRFBs 가상 모니터
|
||||
Name[nl]=Virtuele monitor van KRFB
|
||||
Name[pl]=Monitor wirtualny KRFB
|
||||
@@ -36,10 +38,12 @@ Comment[cs]=Vzdálený virtuální monitor
|
||||
Comment[el]=Απομακρυσμένη εικονική οθόνη
|
||||
Comment[en_GB]=Remote Virtual Monitor
|
||||
Comment[es]=Monitor virtual remoto
|
||||
Comment[eu]=Urruneko alegiazko monitorea
|
||||
Comment[fi]=Virtuaalinen etänäyttö
|
||||
Comment[fr]=Moniteur virtuel distant
|
||||
Comment[ia]=Monitor Virtual Remote
|
||||
Comment[it]=Monitor virtuale remoto
|
||||
Comment[ka]=დაშორებული ვირტუალური ეკრანი
|
||||
Comment[ko]=원격 가상 모니터
|
||||
Comment[nl]=Virtual Monitor op afstand
|
||||
Comment[pl]=Zdalny monitor wirtualny
|
||||
|
||||
Reference in New Issue
Block a user