Skip to content

Commit 51cf79e

Browse files
committed
Merge remote-tracking branch 'origin/master'
# Conflicts: # app.webpack.config.js # yarn.lock
2 parents 1567c23 + 206009f commit 51cf79e

File tree

18 files changed

+487
-173
lines changed

18 files changed

+487
-173
lines changed

App_Resources/cardwallet/Android/native-api-usage.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
"java.nio.file:Files",
2121
"java.io:FileOutputStream",
2222
"androidx.core.widget:NestedScrollView",
23+
"android.app:PendingIntent",
24+
"android.service.quicksettings:TileService",
2325
"android.text.format:DateFormat",
2426
"android.graphics:BitmapShader",
2527
"androidx.documentfile.provider:DocumentFile",

App_Resources/cardwallet/Android/src/main/AndroidManifest.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,26 @@
5959
<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
6060
android:resource="@xml/provider_paths" tools:replace="android:resource" />
6161
</provider>
62+
<service
63+
android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
64+
android:enabled="false"
65+
android:exported="false">
66+
<meta-data
67+
android:name="autoStoreLocales"
68+
android:value="true" />
69+
</service>
70+
<service
71+
android:name=".QuickToggleService"
72+
android:label="@string/app_name"
73+
android:icon="@drawable/launcher_icon_monochrome"
74+
android:enabled="false"
75+
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"
76+
android:exported="true">
77+
<intent-filter>
78+
<action android:name="android.service.quicksettings.action.QS_TILE" />
79+
</intent-filter>
80+
</service>
81+
6282
<meta-data android:name="io.sentry.anr.enable" android:value="true" />
6383
<meta-data android:name="io.sentry.breadcrumbs.activity-lifecycle" android:value="false" />
6484
<meta-data android:name="io.sentry.breadcrumbs.app-lifecycle" android:value="false" />

App_Resources/documentscanner/Android/native-api-usage.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
"java.nio.file:Files",
1313
"java.io:FileOutputStream",
1414
"androidx.core.widget:NestedScrollView",
15+
"android.app:PendingIntent",
16+
"android.service.quicksettings:TileService",
1517
"android.text.format:DateFormat",
1618
"android.graphics:BitmapShader",
1719
"androidx.documentfile.provider:DocumentFile",

App_Resources/documentscanner/Android/src/main/AndroidManifest.xml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:tools="http://schemas.android.com/tools" android:installLocation="auto">
4-
<uses-sdk tools:overrideLibrary="androidx.camera.extensions,androidx.camera.video,androidx.camera.lifecycle,androidx.camera.camera2,androidx.camera.core,androidx.camera.view,androidx.camera.featurecombinationquery"/>
4+
<uses-sdk
5+
tools:overrideLibrary="androidx.camera.extensions,androidx.camera.video,androidx.camera.lifecycle,androidx.camera.camera2,androidx.camera.core,androidx.camera.view,androidx.camera.featurecombinationquery" />
56
<supports-screens android:smallScreens="true" android:normalScreens="true"
67
android:largeScreens="true" android:xlargeScreens="true" />
78
<uses-feature
@@ -83,6 +84,17 @@
8384
android:name="autoStoreLocales"
8485
android:value="true" />
8586
</service>
87+
<service
88+
android:name=".QuickToggleService"
89+
android:label="@string/app_name"
90+
android:icon="@drawable/launcher_icon_monochrome"
91+
android:enabled="false"
92+
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"
93+
android:exported="true">
94+
<intent-filter>
95+
<action android:name="android.service.quicksettings.action.QS_TILE" />
96+
</intent-filter>
97+
</service>
8698

8799
<meta-data android:name="io.sentry.anr.enable" android:value="true" />
88100
<meta-data android:name="io.sentry.breadcrumbs.activity-lifecycle" android:value="false" />

app.webpack.config.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ module.exports = (env, params = {}) => {
102102
env.appComponents = env.appComponents || [];
103103
// env.appComponents.push('~/android/cameraactivity');
104104
env.appComponents.push('~/android/activity.android');
105+
env.appComponents.push('~/android/quicktoggle.android');
105106
const config = webpackConfig(env, params);
106107
config.entry.application = '~/android/application.android';
107108
const {
@@ -193,8 +194,8 @@ module.exports = (env, params = {}) => {
193194
}
194195
Object.assign(config.resolve.alias, {
195196
'@shared': resolve(__dirname, 'tools/app'),
196-
'svelte-native': '@nativescript-community/svelte-native',
197-
'kiss-orm': '@akylas/kiss-orm'
197+
'kiss-orm': '@akylas/kiss-orm',
198+
'svelte-native': '@nativescript-community/svelte-native'
198199
});
199200
let appVersion;
200201
let buildNumber;

app/android/quicktoggle.android.ts

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import { ApplicationSettings, Utils } from '@nativescript/core';
2+
import { SDK_VERSION } from '@nativescript/core/utils';
3+
import { SETTINGS_QUICK_TOGGLE_ENABLED } from '~/utils/constants';
4+
5+
export function updateQuickToggle() {
6+
const enabled = ApplicationSettings.getBoolean(SETTINGS_QUICK_TOGGLE_ENABLED, false);
7+
const context = Utils.android.getApplicationContext();
8+
const component = new android.content.ComponentName(context, '__PACKAGE__.QuickToggleService');
9+
DEV_LOG && console.log('updateQuickToggle', component, '__PACKAGE__.QuickToggleService', enabled);
10+
const pm = context.getPackageManager();
11+
12+
if (enabled) {
13+
pm.setComponentEnabledSetting(component, android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED, android.content.pm.PackageManager.DONT_KILL_APP);
14+
15+
// 🔄 Request Android to refresh the tile’s state
16+
android.service.quicksettings.TileService.requestListeningState(context, component);
17+
} else {
18+
pm.setComponentEnabledSetting(component, android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED, android.content.pm.PackageManager.DONT_KILL_APP);
19+
}
20+
}
21+
22+
export function toggleQuickSetting(enable: boolean) {
23+
ApplicationSettings.setBoolean(SETTINGS_QUICK_TOGGLE_ENABLED, enable);
24+
updateQuickToggle();
25+
}
26+
27+
@NativeClass()
28+
@JavaProxy('__PACKAGE__.QuickToggleService')
29+
export class QuickToggleService extends android.service.quicksettings.TileService {
30+
constructor() {
31+
super();
32+
return global.__native(this);
33+
}
34+
35+
onClick(): void {
36+
const context = this.getApplicationContext();
37+
38+
// Get the launch intent for your app
39+
const pm = context.getPackageManager();
40+
const intent = pm.getLaunchIntentForPackage(context.getPackageName());
41+
DEV_LOG && console.log('quicktile onClick', context.getPackageName(), intent);
42+
43+
if (!intent) {
44+
return;
45+
}
46+
// Set flags to bring existing activity to front if running
47+
intent.addFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK | android.content.Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP);
48+
if (SDK_VERSION >= 14) {
49+
this.startActivityAndCollapse(android.app.PendingIntent.getActivity(context, 0, intent, android.app.PendingIntent.FLAG_IMMUTABLE));
50+
} else {
51+
this.startActivityAndCollapse(intent);
52+
}
53+
}
54+
55+
onStartListening(): void {
56+
super.onStartListening();
57+
// Optional: update tile state or icon dynamically
58+
// const tile = this.getQsTile?.();
59+
// if (tile) {
60+
// tile.setLabel('My App');
61+
// tile.updateTile();
62+
// }
63+
}
64+
65+
onStopListening(): void {
66+
super.onStopListening();
67+
}
68+
}

app/components/settings/Settings.svelte

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
SETTINGS_NB_COLUMNS_LANDSCAPE,
6464
SETTINGS_NB_COLUMNS_VIEW,
6565
SETTINGS_NB_COLUMNS_VIEW_LANDSCAPE,
66+
SETTINGS_QUICK_TOGGLE_ENABLED,
6667
SETTINGS_ROOT_DATA_FOLDER,
6768
SETTINGS_START_ON_CAM,
6869
SETTINGS_SYNC_ON_START,
@@ -711,6 +712,19 @@
711712
}
712713
]
713714
: ([] as any)
715+
)
716+
.concat(
717+
__ANDROID__
718+
? [
719+
{
720+
type: 'switch',
721+
id: 'quicktoggle',
722+
title: lc('show_quicksettings_tile'),
723+
description: lc('show_quicktoggle_desc'),
724+
value: ApplicationSettings.getBoolean(SETTINGS_QUICK_TOGGLE_ENABLED, false)
725+
}
726+
]
727+
: ([] as any)
714728
);
715729
default:
716730
break;
@@ -1444,6 +1458,12 @@
14441458
// }
14451459
break;
14461460
1461+
case 'quicktoggle': {
1462+
if (__ANDROID__) {
1463+
(await import('~/android/quicktoggle.android')).toggleQuickSetting(value);
1464+
}
1465+
break;
1466+
}
14471467
default:
14481468
ApplicationSettings.setBoolean(item.key || item.id, value);
14491469
break;

app/i18n/ar.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,8 @@
383383
"share_images": "مشاركة الصور",
384384
"show_fullscreen_images": "ملء الشاشة",
385385
"show_love": "إذا كنت تحب المشروع، يرجى مشاركة بعض الحب أو حتى المساهمة",
386+
"show_quicksettings_tile": "أظهر مربع الإعدادات السريعة",
387+
"show_quicktoggle_desc": "أظهر مربع الإعدادات السريعة لفتح التطبيق",
386388
"sort": {
387389
"ascending": "تصاعدي",
388390
"descending": "تنازلي"

app/i18n/de.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@
176176
"force_white_background_qrcode_desc": "manche QR-Code-Leser können schwarze QR-Codes auf weißem Hintergrund nicht lesen",
177177
"format": "Format",
178178
"french": "Französisch",
179+
"front_cam_mirrored": "gespiegelte Frontkamera",
180+
"front_cam_mirrored_desc": "Spiegelung der Frontkamera-Vorschau",
179181
"full": "Voll",
180182
"general": "Allgemein",
181183
"get_app_source_code": "Den App-Quellcode erhalten",
@@ -246,6 +248,7 @@
246248
"local_folder": "Lokaler Ordner",
247249
"magnifier_sensitivity": "Empfindlichkeit der Lupe",
248250
"magnifier_sensitivity_desc": "Empfindlichkeit des Ziehens der Ecken. 1 heißt so schnell wie dein Finger sich bewegt",
251+
"media_library_permission_needed": "Berechtigung für die Medienbibliothek wird benötigt",
249252
"missing_export_folder": "Fehlender Export-Ordner",
250253
"missing_storage_perm_settings": "zum Exportieren der Einstellungen ist eine Speichererlaubnis erforderlich",
251254
"missing_webdav_password": "Fehlendes WebDAV-Passwort. Beachten Sie, dass das Passwort nicht gespeichert wird und Sie es bei jeder Einstellungsänderung erneut eingeben müssen",
@@ -279,11 +282,14 @@
279282
"no_space_left": "Nicht ausreichender Speicherplatz auf Ihrem Gerät",
280283
"no_text_found_in_page": "Es wurde kein Text in Ihrem Dokument erkannt",
281284
"none": "nichts",
285+
"ocr": "OCR",
282286
"ocr_computing": "Text aufspüren (%1$s%%) …",
283287
"ocr_computing_document": "Erkenne Text in Dokument(en) (%1$s%%)",
288+
"ocr_copy_text": "Erkennen und kopieren",
284289
"ocr_document": "Erkenne Text",
285290
"ocr_enabled": "OCR aktiviert",
286291
"ocr_enabled_desc": "OCR wird bei jeder Dokumentenänderung mit den hier ausgewählten Sprachen ausgelöst",
292+
"ocr_missing_languages": "OCR-Modelle fehlen, du kannst sie in den Einstellungen herunterladen",
287293
"ocr_missing_languages_download": "OCR-Modelle fehlen, sie werden nun heruntergeladen: %1$s",
288294
"ocr_settings": "OCR-Einstellungen",
289295
"off": "Aus",
@@ -317,6 +323,7 @@
317323
"pdf_sync": "Synchronisiere PDF",
318324
"pdf_sync_desc": "Synchronisiere PDFs mit angewandten Einstellungen, Filtern, Transformationen, etc.",
319325
"pdf_sync_settings": "PDF-Synchronisierungseinstellungen",
326+
"permission_denied": "Zugriff verweigert",
320327
"permission_error": "Fehlende Berechtigung",
321328
"pick_color": "Farbe wählen",
322329
"pick_date": "Datum auswählen",
@@ -329,13 +336,15 @@
329336
"preview": "Vorschau",
330337
"preview_resize_threshold": "Grenzbereich der Bildergröße",
331338
"preview_resize_threshold_desc": "Größe, auf welche das Bild angepasst wird, um Dokumente zu erkennen. Ein größerer Wert bedeutet ein besseres Erkennen, aber eine langsamere Verarbeitung.",
339+
"print": "drucken",
332340
"qrcode_found": "Ein QR-Code wurde gefunden und gespeichert!",
333341
"quality": "Qualität",
334342
"reduce_image_size": "Bildergröße verkleinern",
335343
"remote_data_auto_sync": "Automatisch synchronisieren beim Starten der App und bei Dokumentenänderungen",
336344
"remote_folder": "Cloud-Ordner",
337345
"remote_folder_desc": "Cloud-Ordner, mit dem die Daten abgeglichen werden",
338346
"rename": "umbennen",
347+
"reorder_pages": "Seiten neu anordnen",
339348
"reset": "zurücksetzen",
340349
"restart": "Neustarten",
341350
"restart_app": "Die App neu starten",
@@ -367,6 +376,8 @@
367376
"share_images": "Bilder teilen",
368377
"show_fullscreen_images": "Vollbild",
369378
"show_love": "Wenn Ihnen das Projekt gefällt, teilen Sie es bitte mit anderen oder leisten Sie selbst einen Beitrag",
379+
"show_quicksettings_tile": "Kachel „Schnelleinstellungen“ anzeigen",
380+
"show_quicktoggle_desc": "Schnelleinstellungen auf der Kachel anzeigen, um die App zu öffnen",
370381
"sort": {
371382
"ascending": "aufsteigend",
372383
"descending": "absteigend"
@@ -419,6 +430,7 @@
419430
"view_style": "Ansichtsstil",
420431
"webdav_auto_sync": "beim Starten und bei Änderungen von Dokumenten automatisch mit WebDAV synchronisieren",
421432
"webdav_config": "WebDAV-Einstellungen",
433+
"webdav_error": "WebDAV Fehler",
422434
"webdav_server": "WebDAV Server",
423435
"webdav_sync": "WebDAV Dokumenten-Abgleichung",
424436
"webdav_sync_desc": "Aktiviere WebDAV, um Dokumente abzugleichen (Sicherung)",

app/i18n/en.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,8 @@
375375
"share_images": "share images",
376376
"show_fullscreen_images": "fullscreen",
377377
"show_love": "If you like the project please share some love or even contribute",
378+
"show_quicksettings_tile": "show Quick Settings tile",
379+
"show_quicktoggle_desc": "show Quick Settings to tile to open the app",
378380
"sort": {
379381
"ascending": "ascending",
380382
"descending": "descending"
@@ -433,4 +435,4 @@
433435
"whitepaper": "whitepaper",
434436
"whitepaper_desc": "improvement for whitepaper type documents",
435437
"wrong_passcode": "wrong password"
436-
}
438+
}

0 commit comments

Comments
 (0)