Fix of copying to clipboard

This commit is contained in:
Dmitriy Karpushin 2023-03-17 16:53:02 +03:00
parent 8d45af2034
commit c0bb06bf49
6 changed files with 37 additions and 1 deletions

View file

@ -5,6 +5,8 @@
package org.amnezia.vpn.qt;
import android.Manifest
import android.content.ClipData
import android.content.ClipboardManager
import android.content.ComponentName
import android.content.ContentResolver
import android.content.Context
@ -63,6 +65,10 @@ class VPNActivity : org.qtproject.qt.android.bindings.QtActivity() {
@JvmStatic fun saveFileAs(fileContent: String, suggestedName: String) {
VPNActivity.getInstance().saveFile(fileContent, suggestedName)
}
@JvmStatic fun putTextToClipboard(text: String) {
VPNActivity.getInstance().putToClipboard(text)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
@ -370,4 +376,15 @@ class VPNActivity : org.qtproject.qt.android.bindings.QtActivity() {
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)
}
}
}
}

View file

@ -15,6 +15,7 @@
#include "private/qandroidextras_p.h"
#include "ui/pages_logic/StartPageLogic.h"
#include "androidvpnactivity.h"
#include "androidutils.h"
namespace {
@ -267,6 +268,11 @@ void AndroidController::startQrReaderActivity()
AndroidVPNActivity::instance()->startQrCodeReader();
}
void AndroidController::copyTextToClipboard(QString text)
{
AndroidVPNActivity::instance()->copyTextToClipboard(text);
}
void AndroidController::scheduleStatusCheckSlot()
{
QTimer::singleShot(1000, [this]() {

View file

@ -11,7 +11,6 @@
#include "ui/pages_logic/StartPageLogic.h"
#include "protocols/vpnprotocol.h"
#include "androidvpnactivity.h"
using namespace amnezia;
@ -44,6 +43,7 @@ public:
void setVpnConfig(const QJsonObject &newVpnConfig);
void startQrReaderActivity();
void copyTextToClipboard(QString text);
signals:
void connectionStateChanged(VpnProtocol::VpnConnectionState state);

View file

@ -65,6 +65,14 @@ void AndroidVPNActivity::saveFileAs(QString fileContent, QString suggestedFilena
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
AndroidVPNActivity* AndroidVPNActivity::instance() {
if (s_instance == nullptr) {

View file

@ -76,6 +76,7 @@ public:
static void connectService();
static void startQrCodeReader();
static void saveFileAs(QString fileContent, QString suggestedFilename);
static void copyTextToClipboard(QString text);
signals:
void serviceConnected();

View file

@ -474,7 +474,11 @@ void UiLogic::saveBinaryFile(const QString &desc, QString ext, const QString &da
void UiLogic::copyToClipboard(const QString &text)
{
#ifdef Q_OS_ANDROID
AndroidController::instance()->copyTextToClipboard(text);
#elif
qApp->clipboard()->setText(text);
#endif
}
void UiLogic::shareTempFile(const QString &suggestedName, QString ext, const QString& data) {