aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ui (follow)
Commit message (Collapse)AuthorAgeFilesLines
* QrCodeFromFileScanner: more efficiently downscale images and release memoryJason A. Donenfeld2025-05-311-44/+16
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* QrCodeFromFileScanner: catch OOM errorsJason A. Donenfeld2025-05-311-1/+1
| | | | | | | OutOfMemoryError is an Error which is a Throwable, but it isn't an exception. Try to catch it for downscaling by catching all Throwables. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* QuickTileService: wait for tunnels to loadJason A. Donenfeld2025-05-281-0/+4
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* QuickTileService: handle onClick in applicationScopeJason A. Donenfeld2025-05-281-25/+38
| | | | | | This helps with the case where the TunnelManager is still loading. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* TvMainActivity: link to cx file explorerJason A. Donenfeld2025-05-231-1/+4
| | | | | | | | | | | | | | | | | | | Google requires us to link to a specific file manager. We can't just open the app store. They keep rejecting the app otherwise. Annoying. Also, due to Android TV bugs, we also can't link to a prefilled search query of "file manager". Instead we must link to an actual file manager. Unfortunately, none of the open source file manager apps both support the TV interface and can act as a file chooser. So instead we pick what looks like the only decent one that doesn't have any in app purchases. Ugh. I don't like doing this. It's not an endorsement. I don't know much about who makes these. But what choice do we have? So doing this for now. Maybe we'll find some better solution or apply to be a file manager ourselves in the future. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* DonatePreferences: use toUri() extensionJason A. Donenfeld2025-05-211-1/+2
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* MainActivity: don't reuse id names across layoutsJason A. Donenfeld2025-05-192-3/+3
| | | | | | | This causes problems on foldables. Reported-by: Josh Dague <josh3736@gmail.com> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* global: add missing xml copyright and opening tagJason A. Donenfeld2025-05-1960-56/+234
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* global: update copyright noticesJason A. Donenfeld2025-05-1963-63/+63
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* TunnelCreatorActivity: use proper xml for layoutJason A. Donenfeld2025-05-192-15/+17
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* TunnelToggleActivity: suppress errors from prepare() in lockdown modeJason A. Donenfeld2025-05-161-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Exception java.lang.IllegalStateException: Unavailable in lockdown mode at android.os.Parcel.createExceptionOrNull (Parcel.java:3031) at android.os.Parcel.createException (Parcel.java:3007) at android.os.Parcel.readException (Parcel.java:2990) at android.os.Parcel.readException (Parcel.java:2932) at android.net.IVpnManager$Stub$Proxy.prepareVpn (IVpnManager.java:1064) at android.net.VpnService.prepare (VpnService.java:290) at com.wireguard.android.activity.TunnelToggleActivity$onCreate$1.invokeSuspend (TunnelToggleActivity.kt:44) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:8) at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith (DispatchedContinuation.kt:155) at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable (Cancellable.kt:12) at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default (Cancellable.kt:12) at kotlinx.coroutines.CoroutineStart.invoke (CoroutineStart.java:80) at kotlinx.coroutines.AbstractCoroutine.start (AbstractCoroutine.kt:80) at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch (BuildersKt__Builders_common.kt:52) at kotlinx.coroutines.BuildersKt.launch (Builders.kt:52) at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default (BuildersKt__Builders_common.kt:52) at kotlinx.coroutines.BuildersKt.launch$default (Builders.kt:52) at com.wireguard.android.activity.TunnelToggleActivity.onCreate (TunnelToggleActivity.kt:14) at android.app.Activity.performCreate (Activity.java:8591) at android.app.Activity.performCreate (Activity.java:8570) at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1384) at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:4150) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:4325) at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:101) at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2574) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loopOnce (Looper.java:226) at android.os.Looper.loop (Looper.java:313) at android.app.ActivityThread.main (ActivityThread.java:8762) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:604) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1067) Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: set fitsSystemWindows=true for EdgeToEdge on API 35+Jason A. Donenfeld2025-05-164-14/+12
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* TvMainActivity: use OpenDocument instead of GetContentJason A. Donenfeld2025-05-161-3/+3
| | | | | | This should make it possible to open files on Android TV 14. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: sync translationsJason A. Donenfeld2025-05-1523-216/+799
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* LogViewerActivity: cast array to Any type instead of using union inferenceJason A. Donenfeld2025-05-081-1/+1
| | | | | | | | | | Type argument for reified type parameter 'T' was inferred to the intersection of ['Comparable<*>' & 'Serializable']. Reification of an intersection type results in the common supertype being used. This may lead to subtle issues and an explicit type argument is encouraged. This will become an error in a future release. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* SettingsActivity: manually apply insets for api 35Jason A. Donenfeld2025-05-081-0/+24
| | | | | | | | The forced EdgeToEdge changes don't work well with PreferenceFragmentCompat, because it's basically abandoned by androidx, so apply the insets manually ourselves. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* SettingsActivity: remove unused importsJason A. Donenfeld2025-05-081-2/+0
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: use = instead of .setJason A. Donenfeld2025-05-081-1/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: update kotlin to 2.1.20Jason A. Donenfeld2025-05-051-0/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: target API 36Jason A. Donenfeld2025-05-053-5/+5
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: sync with crowdinJason A. Donenfeld2023-10-189-8/+209
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* QuickTileService: require SYSTEM_ALERT_WINDOW to start background activityJason A. Donenfeld2023-10-182-1/+12
| | | | | | | | | Due to buggy changes in Android 14, we now need to bother the user about enabling "draw over other apps" for the quick settings toggle to work when the app isn't already running. Link: https://issuetracker.google.com/issues/305035828 Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: bump many depsJason A. Donenfeld2023-10-131-1/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: only show a snackbar for Android 12 and lowerSlipkHunter2023-09-121-1/+4
| | | | | Signed-off-by: SlipkHunter <abrito025@gmail.com> Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* ui: hide corrupted message if no installerJason A. Donenfeld2023-07-071-6/+8
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: sync with crowdinJason A. Donenfeld2023-07-076-5/+77
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: remove unused elvis operatorsJason A. Donenfeld2023-07-061-2/+2
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: use api 34's startActivityAndCollapseJason A. Donenfeld2023-07-061-1/+7
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: remove unused importJason A. Donenfeld2023-07-051-1/+0
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: bump to api 34Jason A. Donenfeld2023-07-051-2/+2
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* strings: sync with crowdinJason A. Donenfeld2023-05-269-54/+316
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: bump to agp 8.2.0-alpha05Jason A. Donenfeld2023-05-261-12/+0
| | | | | | | I wanted to stay on 8.1 in hopes of landing on a stable channel, but Google won't backport the RB fix, so we have to bump to 8.2 alphas. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: sort extracted locales rather than generated XMLJason A. Donenfeld2023-05-261-7/+5
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: add basic double update guardJason A. Donenfeld2023-05-261-0/+5
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: remove debug keysJason A. Donenfeld2023-05-261-6/+7
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: add missing article to stringJason A. Donenfeld2023-05-141-1/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: sort lines in localeConfigJason A. Donenfeld2023-05-131-0/+12
| | | | | | This works around https://issuetracker.google.com/issues/281825213 Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: use modal corruption alert instead of snackbarJason A. Donenfeld2023-05-112-13/+23
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: use applicationScope helper when possibleJason A. Donenfeld2023-05-111-7/+8
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: cleanup quick tile and modernizeJason A. Donenfeld2023-05-112-44/+44
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* strings: sync with crowdinJason A. Donenfeld2023-05-104-0/+32
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: add shortcut for adding quick settings tileJason A. Donenfeld2023-05-105-1/+81
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: hack around 8.1.0-beta02 api 21 outlining bugJason A. Donenfeld2023-05-101-0/+3
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: generate locales for per-app pickingJason A. Donenfeld2023-05-102-0/+4
| | | | | | | | | | | | | | | | | Enable the per-app locale picking menu by adding the right metadata automatically to the manifest with new AGP automation. This attempts to follow: https://developer.android.com/guide/topics/resources/app-languages#use-localeconfig Using the new AGP feature: https://developer.android.com/studio/preview/features#automatic-per-app-languages It appears to work, and it also should squelch the "W AppCompatDelegate: Checking for metadata for AppLocalesMetadataHolderService : " warnings on old Android that syphyr pointed out. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: bifurcate only parts of release but nag about wrong contextJason A. Donenfeld2023-05-105-7/+65
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: exclude version meta files in release buildJason A. Donenfeld2023-05-101-0/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: use debug key in debug buildsJason A. Donenfeld2023-05-081-6/+8
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: only register contracts in constructorsJason A. Donenfeld2023-05-082-21/+21
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: restore play runtime detectionJason A. Donenfeld2023-05-085-41/+19
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: reformat all codeJason A. Donenfeld2023-05-0545-281/+358
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>