mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-06-22 02:01:08 +07:00
fixed icon & fix send link app
This commit is contained in:
@@ -355,17 +355,53 @@ void AmneziaApplication::deliverVpnDeepLink(const QString &payload)
|
|||||||
m_coreController->openVpnKeyImportPreview(trimmed);
|
m_coreController->openVpnKeyImportPreview(trimmed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS) && !defined(MACOS_NE)
|
||||||
|
namespace {
|
||||||
|
bool forwardVpnPayloadToPrimaryInstance(const QString &payload)
|
||||||
|
{
|
||||||
|
if (payload.trimmed().isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
QLocalSocket socket;
|
||||||
|
socket.connectToServer(QStringLiteral("AmneziaVPNInstance"));
|
||||||
|
if (!socket.waitForConnected(800)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const QByteArray msg = QByteArrayLiteral("VPN\n") + payload.toUtf8() + '\n';
|
||||||
|
socket.write(msg);
|
||||||
|
socket.waitForBytesWritten(3000);
|
||||||
|
socket.flush();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} // namespace
|
||||||
|
#endif
|
||||||
|
|
||||||
bool AmneziaApplication::event(QEvent *event)
|
bool AmneziaApplication::event(QEvent *event)
|
||||||
{
|
{
|
||||||
|
#if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS)
|
||||||
if (event->type() == QEvent::FileOpen) {
|
if (event->type() == QEvent::FileOpen) {
|
||||||
auto *foe = static_cast<QFileOpenEvent *>(event);
|
auto *foe = static_cast<QFileOpenEvent *>(event);
|
||||||
const QUrl url = foe->url();
|
const QUrl url = foe->url();
|
||||||
if (url.scheme().compare(QLatin1String("vpn"), Qt::CaseInsensitive) == 0) {
|
if (url.scheme().compare(QLatin1String("vpn"), Qt::CaseInsensitive) == 0) {
|
||||||
const QString payload = url.toString(QUrl::PrettyDecoded);
|
const QString payload = url.toString(QUrl::PrettyDecoded);
|
||||||
|
#if !defined(MACOS_NE)
|
||||||
|
// Secondary instance: main() exits before init(), so m_coreController is null; browsers often
|
||||||
|
// pass the URL only via QFileOpenEvent (not argv). Forward to the running primary process.
|
||||||
|
if (!m_coreController) {
|
||||||
|
if (forwardVpnPayloadToPrimaryInstance(payload)) {
|
||||||
|
qInfo().noquote() << "Forwarded vpn deep link to primary instance, bytes:" << payload.size();
|
||||||
|
QTimer::singleShot(0, qApp, &QCoreApplication::quit);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
qWarning() << "vpn FileOpen: no CoreController and could not reach primary instance (socket)";
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
QTimer::singleShot(0, this, [this, payload]() { deliverVpnDeepLink(payload); });
|
QTimer::singleShot(0, this, [this, payload]() { deliverVpnDeepLink(payload); });
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
return AMNEZIA_BASE_CLASS::event(event);
|
return AMNEZIA_BASE_CLASS::event(event);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ set_target_properties(${PROJECT} PROPERTIES
|
|||||||
MACOSX_BUNDLE_GUI_IDENTIFIER "${BUILD_OSX_APP_IDENTIFIER}"
|
MACOSX_BUNDLE_GUI_IDENTIFIER "${BUILD_OSX_APP_IDENTIFIER}"
|
||||||
MACOSX_BUNDLE_BUNDLE_NAME "AmneziaVPN"
|
MACOSX_BUNDLE_BUNDLE_NAME "AmneziaVPN"
|
||||||
MACOSX_BUNDLE_COPYRIGHT ""
|
MACOSX_BUNDLE_COPYRIGHT ""
|
||||||
|
MACOSX_BUNDLE_ICON_FILE "app.icns"
|
||||||
MACOSX_BUNDLE_SHORT_VERSION_STRING "${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH}"
|
MACOSX_BUNDLE_SHORT_VERSION_STRING "${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH}"
|
||||||
MACOSX_BUNDLE_BUNDLE_VERSION "${CMAKE_PROJECT_VERSION_TWEAK}"
|
MACOSX_BUNDLE_BUNDLE_VERSION "${CMAKE_PROJECT_VERSION_TWEAK}"
|
||||||
)
|
)
|
||||||
@@ -39,7 +40,6 @@ set(SOURCES ${SOURCES}
|
|||||||
|
|
||||||
|
|
||||||
set(ICON_FILE ${CMAKE_CURRENT_SOURCE_DIR}/images/app.icns)
|
set(ICON_FILE ${CMAKE_CURRENT_SOURCE_DIR}/images/app.icns)
|
||||||
set(MACOSX_BUNDLE_ICON_FILE app.icns)
|
|
||||||
set_source_files_properties(${ICON_FILE} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
set_source_files_properties(${ICON_FILE} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
|
||||||
set(SOURCES ${SOURCES} ${ICON_FILE})
|
set(SOURCES ${SOURCES} ${ICON_FILE})
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
<string>${QT_INTERNAL_DOLLAR_VAR}{PRODUCT_NAME}</string>
|
<string>${QT_INTERNAL_DOLLAR_VAR}{PRODUCT_NAME}</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
|
<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
@@ -50,7 +52,7 @@
|
|||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
<key>CFBundleURLName</key>
|
<key>CFBundleURLName</key>
|
||||||
<string>org.amnezia.AmneziaVPN.vpn-deeplink</string>
|
<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}.vpn-deeplink</string>
|
||||||
<key>CFBundleURLSchemes</key>
|
<key>CFBundleURLSchemes</key>
|
||||||
<array>
|
<array>
|
||||||
<string>vpn</string>
|
<string>vpn</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user