Fix of copying to clipboard
This commit is contained in:
parent
8d45af2034
commit
c0bb06bf49
6 changed files with 37 additions and 1 deletions
|
@ -5,6 +5,8 @@
|
||||||
package org.amnezia.vpn.qt;
|
package org.amnezia.vpn.qt;
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
|
import android.content.ClipData
|
||||||
|
import android.content.ClipboardManager
|
||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
import android.content.ContentResolver
|
import android.content.ContentResolver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
@ -63,6 +65,10 @@ class VPNActivity : org.qtproject.qt.android.bindings.QtActivity() {
|
||||||
@JvmStatic fun saveFileAs(fileContent: String, suggestedName: String) {
|
@JvmStatic fun saveFileAs(fileContent: String, suggestedName: String) {
|
||||||
VPNActivity.getInstance().saveFile(fileContent, suggestedName)
|
VPNActivity.getInstance().saveFile(fileContent, suggestedName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JvmStatic fun putTextToClipboard(text: String) {
|
||||||
|
VPNActivity.getInstance().putToClipboard(text)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
@ -370,4 +376,15 @@ class VPNActivity : org.qtproject.qt.android.bindings.QtActivity() {
|
||||||
|
|
||||||
tmpFileContentToSave = ""
|
tmpFileContentToSave = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun putToClipboard(text: String) {
|
||||||
|
this.runOnUiThread {
|
||||||
|
val clipboard = applicationContext.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager?
|
||||||
|
|
||||||
|
if (clipboard != null) {
|
||||||
|
val clip: ClipData = ClipData.newPlainText("", text)
|
||||||
|
clipboard.setPrimaryClip(clip)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include "private/qandroidextras_p.h"
|
#include "private/qandroidextras_p.h"
|
||||||
#include "ui/pages_logic/StartPageLogic.h"
|
#include "ui/pages_logic/StartPageLogic.h"
|
||||||
|
|
||||||
|
#include "androidvpnactivity.h"
|
||||||
#include "androidutils.h"
|
#include "androidutils.h"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
@ -267,6 +268,11 @@ void AndroidController::startQrReaderActivity()
|
||||||
AndroidVPNActivity::instance()->startQrCodeReader();
|
AndroidVPNActivity::instance()->startQrCodeReader();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AndroidController::copyTextToClipboard(QString text)
|
||||||
|
{
|
||||||
|
AndroidVPNActivity::instance()->copyTextToClipboard(text);
|
||||||
|
}
|
||||||
|
|
||||||
void AndroidController::scheduleStatusCheckSlot()
|
void AndroidController::scheduleStatusCheckSlot()
|
||||||
{
|
{
|
||||||
QTimer::singleShot(1000, [this]() {
|
QTimer::singleShot(1000, [this]() {
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
#include "ui/pages_logic/StartPageLogic.h"
|
#include "ui/pages_logic/StartPageLogic.h"
|
||||||
|
|
||||||
#include "protocols/vpnprotocol.h"
|
#include "protocols/vpnprotocol.h"
|
||||||
#include "androidvpnactivity.h"
|
|
||||||
|
|
||||||
using namespace amnezia;
|
using namespace amnezia;
|
||||||
|
|
||||||
|
@ -44,6 +43,7 @@ public:
|
||||||
void setVpnConfig(const QJsonObject &newVpnConfig);
|
void setVpnConfig(const QJsonObject &newVpnConfig);
|
||||||
|
|
||||||
void startQrReaderActivity();
|
void startQrReaderActivity();
|
||||||
|
void copyTextToClipboard(QString text);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void connectionStateChanged(VpnProtocol::VpnConnectionState state);
|
void connectionStateChanged(VpnProtocol::VpnConnectionState state);
|
||||||
|
|
|
@ -65,6 +65,14 @@ void AndroidVPNActivity::saveFileAs(QString fileContent, QString suggestedFilena
|
||||||
QJniObject::fromString(suggestedFilename).object<jstring>());
|
QJniObject::fromString(suggestedFilename).object<jstring>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AndroidVPNActivity::copyTextToClipboard(QString text)
|
||||||
|
{
|
||||||
|
QJniObject::callStaticMethod<void>(
|
||||||
|
CLASSNAME,
|
||||||
|
"putTextToClipboard", "(Ljava/lang/String;)V",
|
||||||
|
QJniObject::fromString(text).object<jstring>());
|
||||||
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
AndroidVPNActivity* AndroidVPNActivity::instance() {
|
AndroidVPNActivity* AndroidVPNActivity::instance() {
|
||||||
if (s_instance == nullptr) {
|
if (s_instance == nullptr) {
|
||||||
|
|
|
@ -76,6 +76,7 @@ public:
|
||||||
static void connectService();
|
static void connectService();
|
||||||
static void startQrCodeReader();
|
static void startQrCodeReader();
|
||||||
static void saveFileAs(QString fileContent, QString suggestedFilename);
|
static void saveFileAs(QString fileContent, QString suggestedFilename);
|
||||||
|
static void copyTextToClipboard(QString text);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void serviceConnected();
|
void serviceConnected();
|
||||||
|
|
|
@ -474,7 +474,11 @@ void UiLogic::saveBinaryFile(const QString &desc, QString ext, const QString &da
|
||||||
|
|
||||||
void UiLogic::copyToClipboard(const QString &text)
|
void UiLogic::copyToClipboard(const QString &text)
|
||||||
{
|
{
|
||||||
|
#ifdef Q_OS_ANDROID
|
||||||
|
AndroidController::instance()->copyTextToClipboard(text);
|
||||||
|
#elif
|
||||||
qApp->clipboard()->setText(text);
|
qApp->clipboard()->setText(text);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void UiLogic::shareTempFile(const QString &suggestedName, QString ext, const QString& data) {
|
void UiLogic::shareTempFile(const QString &suggestedName, QString ext, const QString& data) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue