mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-26 20:55:10 +00:00
Route system camera quick restore qr scan into Signal camera.
This commit is contained in:
committed by
jeffrey-signal
parent
8783d69406
commit
87e56bf4bf
@@ -636,6 +636,13 @@
|
||||
<data android:scheme="sgnl" />
|
||||
<data android:host="signal.link" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:scheme="sgnl" />
|
||||
<data android:host="rereg" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity android:name=".conversation.v2.ConversationActivity"
|
||||
|
||||
@@ -934,6 +934,7 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
|
||||
handleSignalMeIntent(intent)
|
||||
handleCallLinkInIntent(intent)
|
||||
handleDonateReturnIntent(intent)
|
||||
handleQuickRestoreIntent(intent)
|
||||
}
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
@@ -990,6 +991,14 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleQuickRestoreIntent(intent: Intent) {
|
||||
intent.data?.let { data ->
|
||||
CommunicationActions.handlePotentialQuickRestoreUrl(this, data.toString()) {
|
||||
onCameraClick(MainNavigationListLocation.CHATS, isForQuickRestore = true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateNotificationProfileStatus(notificationProfiles: List<NotificationProfile>) {
|
||||
val activeProfile = NotificationProfiles.getActiveProfile(notificationProfiles)
|
||||
if (activeProfile != null) {
|
||||
@@ -1028,6 +1037,39 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
|
||||
}
|
||||
}
|
||||
|
||||
private fun onCameraClick(destination: MainNavigationListLocation, isForQuickRestore: Boolean) {
|
||||
val onGranted = {
|
||||
val intent = if (isForQuickRestore) {
|
||||
MediaSelectionActivity.cameraForQuickRestore(context = this@MainActivity)
|
||||
} else {
|
||||
MediaSelectionActivity.camera(
|
||||
context = this@MainActivity,
|
||||
isStory = destination == MainNavigationListLocation.STORIES
|
||||
)
|
||||
}
|
||||
startActivity(intent)
|
||||
}
|
||||
|
||||
if (CameraXUtil.isSupported()) {
|
||||
onGranted()
|
||||
} else {
|
||||
Permissions.with(this@MainActivity)
|
||||
.request(Manifest.permission.CAMERA)
|
||||
.ifNecessary()
|
||||
.withRationaleDialog(getString(R.string.CameraXFragment_allow_access_camera), getString(R.string.CameraXFragment_to_capture_photos_and_video_allow_camera), R.drawable.symbol_camera_24)
|
||||
.withPermanentDenialDialog(
|
||||
getString(R.string.CameraXFragment_signal_needs_camera_access_capture_photos),
|
||||
null,
|
||||
R.string.CameraXFragment_allow_access_camera,
|
||||
R.string.CameraXFragment_to_capture_photos_videos,
|
||||
supportFragmentManager
|
||||
)
|
||||
.onAllGranted(onGranted)
|
||||
.onAnyDenied { Toast.makeText(this@MainActivity, R.string.CameraXFragment_signal_needs_camera_access_capture_photos, Toast.LENGTH_LONG).show() }
|
||||
.execute()
|
||||
}
|
||||
}
|
||||
|
||||
inner class ToolbarCallback : MainToolbarCallback {
|
||||
|
||||
override fun onNewGroupClick() {
|
||||
@@ -1125,33 +1167,7 @@ class MainActivity : PassphraseRequiredActivity(), VoiceNoteMediaControllerOwner
|
||||
}
|
||||
|
||||
override fun onCameraClick(destination: MainNavigationListLocation) {
|
||||
val onGranted = {
|
||||
startActivity(
|
||||
MediaSelectionActivity.camera(
|
||||
context = this@MainActivity,
|
||||
isStory = destination == MainNavigationListLocation.STORIES
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
if (CameraXUtil.isSupported()) {
|
||||
onGranted()
|
||||
} else {
|
||||
Permissions.with(this@MainActivity)
|
||||
.request(Manifest.permission.CAMERA)
|
||||
.ifNecessary()
|
||||
.withRationaleDialog(getString(R.string.CameraXFragment_allow_access_camera), getString(R.string.CameraXFragment_to_capture_photos_and_video_allow_camera), R.drawable.symbol_camera_24)
|
||||
.withPermanentDenialDialog(
|
||||
getString(R.string.CameraXFragment_signal_needs_camera_access_capture_photos),
|
||||
null,
|
||||
R.string.CameraXFragment_allow_access_camera,
|
||||
R.string.CameraXFragment_to_capture_photos_videos,
|
||||
supportFragmentManager
|
||||
)
|
||||
.onAllGranted(onGranted)
|
||||
.onAnyDenied { Toast.makeText(this@MainActivity, R.string.CameraXFragment_signal_needs_camera_access_capture_photos, Toast.LENGTH_LONG).show() }
|
||||
.execute()
|
||||
}
|
||||
onCameraClick(destination, false)
|
||||
}
|
||||
|
||||
override fun onMegaphoneVisible(megaphone: Megaphone) {
|
||||
|
||||
@@ -183,6 +183,10 @@ class MediaSelectionActivity :
|
||||
.subscribe(this::handleError)
|
||||
|
||||
onBackPressedDispatcher.addCallback(OnBackPressed())
|
||||
|
||||
if (savedInstanceState == null && intent.getBooleanExtra(IS_FOR_QUICK_RESTORE, false)) {
|
||||
QuickRestoreInfoDialog.show(supportFragmentManager)
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleError(error: MediaValidator.FilterError) {
|
||||
@@ -385,6 +389,7 @@ class MediaSelectionActivity :
|
||||
private const val IS_STORY = "is_story"
|
||||
private const val AS_TEXT_STORY = "as_text_story"
|
||||
private const val IS_ADD_TO_GROUP_STORY_FLOW = "is_add_to_group_story_flow"
|
||||
private const val IS_FOR_QUICK_RESTORE = "is_for_quick_restore"
|
||||
|
||||
@JvmStatic
|
||||
fun camera(context: Context): Intent {
|
||||
@@ -400,6 +405,14 @@ class MediaSelectionActivity :
|
||||
)
|
||||
}
|
||||
|
||||
fun cameraForQuickRestore(context: Context): Intent {
|
||||
return buildIntent(
|
||||
context = context,
|
||||
startAction = R.id.action_directly_to_mediaCaptureFragment,
|
||||
isForQuickRestore = true
|
||||
)
|
||||
}
|
||||
|
||||
fun addToGroupStory(
|
||||
context: Context,
|
||||
recipientId: RecipientId
|
||||
@@ -508,7 +521,8 @@ class MediaSelectionActivity :
|
||||
isReply: Boolean = false,
|
||||
isStory: Boolean = false,
|
||||
asTextStory: Boolean = false,
|
||||
isAddToGroupStoryFlow: Boolean = false
|
||||
isAddToGroupStoryFlow: Boolean = false,
|
||||
isForQuickRestore: Boolean = false
|
||||
): Intent {
|
||||
return Intent(context, MediaSelectionActivity::class.java).apply {
|
||||
putExtra(START_ACTION, startAction)
|
||||
@@ -520,6 +534,7 @@ class MediaSelectionActivity :
|
||||
putExtra(IS_STORY, isStory)
|
||||
putExtra(AS_TEXT_STORY, asTextStory)
|
||||
putExtra(IS_ADD_TO_GROUP_STORY_FLOW, isAddToGroupStoryFlow)
|
||||
putExtra(IS_FOR_QUICK_RESTORE, isForQuickRestore)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
package org.thoughtcrime.securesms.mediasend.v2
|
||||
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.defaultMinSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.res.vectorResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import org.signal.core.ui.compose.BottomSheets
|
||||
import org.signal.core.ui.compose.Buttons
|
||||
import org.signal.core.ui.compose.DayNightPreviews
|
||||
import org.signal.core.ui.compose.Previews
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.compose.ComposeBottomSheetDialogFragment
|
||||
import org.thoughtcrime.securesms.util.BottomSheetUtil
|
||||
|
||||
/**
|
||||
* Bottom sheet dialog displayed when users scan a quick restore with the system camera and then
|
||||
* follow the prompt into the Signal camera to scan the qr code a second time from within Signal.
|
||||
*/
|
||||
class QuickRestoreInfoDialog : ComposeBottomSheetDialogFragment() {
|
||||
|
||||
companion object {
|
||||
fun show(fragmentManager: FragmentManager) {
|
||||
QuickRestoreInfoDialog().show(fragmentManager, BottomSheetUtil.STANDARD_BOTTOM_SHEET_FRAGMENT_TAG)
|
||||
}
|
||||
}
|
||||
|
||||
override val peekHeightPercentage: Float = 1f
|
||||
|
||||
@Composable
|
||||
override fun SheetContent() {
|
||||
InfoSheet(this::dismissAllowingStateLoss)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun InfoSheet(onClick: () -> Unit) {
|
||||
return Column(
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(16.dp)
|
||||
) {
|
||||
BottomSheets.Handle()
|
||||
|
||||
Image(
|
||||
imageVector = ImageVector.vectorResource(R.drawable.quick_restore),
|
||||
contentDescription = null,
|
||||
modifier = Modifier.padding(top = 14.dp, bottom = 24.dp)
|
||||
)
|
||||
Text(
|
||||
text = stringResource(R.string.QuickRestoreInfoDialog__scan_qr_code),
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
modifier = Modifier.padding(bottom = 8.dp)
|
||||
)
|
||||
Text(
|
||||
text = stringResource(R.string.QuickRestoreInfoDialog__use_this_device_to_scan_qr_code),
|
||||
style = MaterialTheme.typography.bodyMedium,
|
||||
textAlign = TextAlign.Center,
|
||||
modifier = Modifier.padding(bottom = 28.dp)
|
||||
)
|
||||
Buttons.LargeTonal(
|
||||
onClick = onClick,
|
||||
modifier = Modifier.defaultMinSize(minWidth = 220.dp)
|
||||
) {
|
||||
Text(stringResource(id = R.string.QuickRestoreInfoDialog__okay))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DayNightPreviews
|
||||
@Composable
|
||||
fun InfoSheetPreview() {
|
||||
Previews.BottomSheetPreview {
|
||||
InfoSheet(onClick = {})
|
||||
}
|
||||
}
|
||||
@@ -54,6 +54,7 @@ import org.thoughtcrime.securesms.util.views.SimpleProgressDialog;
|
||||
import org.whispersystems.signalservice.api.push.UsernameLinkComponents;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@@ -343,6 +344,26 @@ public class CommunicationActions {
|
||||
startVideoCall(new ActivityCallContext(activity), linkParseResult.getRootKey(), linkParseResult.getEpoch(), onUserAlreadyInAnotherCall);
|
||||
}
|
||||
|
||||
/**
|
||||
* If the url is a quick restore link it will handle it.
|
||||
* Otherwise returns false, indicating it was not a quick restore link.
|
||||
*/
|
||||
public static boolean handlePotentialQuickRestoreUrl(@NonNull FragmentActivity activity, @NonNull String potentialQuickRestoreUrl, @NonNull Runnable onContinue) {
|
||||
URI uri = URI.create(potentialQuickRestoreUrl);
|
||||
|
||||
if ("sgnl".equalsIgnoreCase(uri.getScheme()) && "rereg".equalsIgnoreCase(uri.getHost())) {
|
||||
new MaterialAlertDialogBuilder(activity)
|
||||
.setTitle(R.string.CommunicationActions__transfer_dialog_title)
|
||||
.setMessage(R.string.CommunicationActions__transfer_dialog_message)
|
||||
.setPositiveButton(R.string.DeviceProvisioningActivity_continue, (d, w) -> onContinue.run())
|
||||
.setNegativeButton(R.string.CommunicationActions__dont_transfer, null)
|
||||
.show();
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempts to start a video call for the given call link via root key. This will insert a call link into
|
||||
* the user's database if one does not already exist.
|
||||
|
||||
115
app/src/main/res/drawable-night/quick_restore.xml
Normal file
115
app/src/main/res/drawable-night/quick_restore.xml
Normal file
@@ -0,0 +1,115 @@
|
||||
<!--
|
||||
~ Copyright 2025 Signal Messenger, LLC
|
||||
~ SPDX-License-Identifier: AGPL-3.0-only
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="192dp"
|
||||
android:height="192dp"
|
||||
android:viewportWidth="192"
|
||||
android:viewportHeight="192">
|
||||
<path
|
||||
android:pathData="M74.75,87C74.75,86.31 75.31,85.75 76,85.75H77.67C78.36,85.75 78.92,86.31 78.92,87V88.67C78.92,89.36 78.36,89.92 77.67,89.92H76C75.31,89.92 74.75,89.36 74.75,88.67V87Z"
|
||||
android:fillColor="#3B45FD"/>
|
||||
<path
|
||||
android:pathData="M74.53,80.13H79.14C79.79,80.13 80.37,80.12 80.84,80.16C81.35,80.21 81.87,80.3 82.38,80.56C83.13,80.94 83.73,81.54 84.11,82.29C84.37,82.79 84.46,83.32 84.5,83.82C84.54,84.3 84.54,84.88 84.54,85.53V90.14C84.54,90.79 84.54,91.37 84.5,91.84C84.46,92.35 84.37,92.87 84.11,93.38C83.73,94.13 83.13,94.73 82.38,95.11C81.87,95.37 81.35,95.46 80.84,95.5C80.37,95.54 79.79,95.54 79.14,95.54H74.53C73.88,95.54 73.3,95.54 72.82,95.5C72.32,95.46 71.79,95.37 71.29,95.11C70.54,94.73 69.94,94.13 69.56,93.38C69.3,92.87 69.21,92.35 69.16,91.84C69.12,91.37 69.13,90.79 69.13,90.14V85.53C69.13,84.88 69.12,84.3 69.16,83.82C69.21,83.32 69.3,82.79 69.56,82.29C69.94,81.54 70.54,80.94 71.29,80.56C71.79,80.3 72.32,80.21 72.82,80.16C73.3,80.12 73.88,80.13 74.53,80.13ZM73.06,83.07C72.73,83.1 72.64,83.14 72.61,83.16C72.41,83.26 72.26,83.41 72.16,83.61C72.14,83.64 72.1,83.73 72.07,84.06C72.04,84.4 72.04,84.86 72.04,85.58V90.08C72.04,90.81 72.04,91.26 72.07,91.61C72.1,91.93 72.14,92.03 72.16,92.06C72.26,92.25 72.41,92.41 72.61,92.51C72.64,92.53 72.73,92.57 73.06,92.6C73.4,92.62 73.86,92.63 74.58,92.63H79.08C79.81,92.63 80.26,92.62 80.61,92.6C80.93,92.57 81.03,92.53 81.06,92.51C81.25,92.41 81.41,92.25 81.51,92.06C81.53,92.03 81.57,91.93 81.6,91.61C81.62,91.26 81.63,90.81 81.63,90.08V85.58C81.63,84.86 81.62,84.4 81.6,84.06C81.57,83.73 81.53,83.64 81.51,83.61C81.41,83.41 81.25,83.26 81.06,83.16C81.03,83.14 80.93,83.1 80.61,83.07C80.26,83.04 79.81,83.04 79.08,83.04H74.58C73.86,83.04 73.4,83.04 73.06,83.07Z"
|
||||
android:fillColor="#3B45FD"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M76,104.08C75.31,104.08 74.75,104.64 74.75,105.33V107C74.75,107.69 75.31,108.25 76,108.25H77.67C78.36,108.25 78.92,107.69 78.92,107V105.33C78.92,104.64 78.36,104.08 77.67,104.08H76Z"
|
||||
android:fillColor="#3B45FD"/>
|
||||
<path
|
||||
android:pathData="M74.53,98.46H79.14C79.79,98.46 80.37,98.46 80.84,98.5C81.35,98.54 81.87,98.63 82.38,98.89C83.13,99.27 83.73,99.87 84.11,100.62C84.37,101.13 84.46,101.65 84.5,102.16C84.54,102.63 84.54,103.21 84.54,103.86V108.47C84.54,109.13 84.54,109.7 84.5,110.18C84.46,110.68 84.37,111.21 84.11,111.71C83.73,112.46 83.13,113.06 82.38,113.44C81.87,113.7 81.35,113.79 80.84,113.84C80.37,113.88 79.79,113.88 79.14,113.88H74.53C73.88,113.88 73.3,113.88 72.82,113.84C72.32,113.79 71.79,113.7 71.29,113.44C70.54,113.06 69.94,112.46 69.56,111.71C69.3,111.21 69.21,110.68 69.16,110.18C69.12,109.7 69.13,109.13 69.13,108.47V103.86C69.13,103.21 69.12,102.63 69.16,102.16C69.21,101.65 69.3,101.13 69.56,100.62C69.94,99.87 70.54,99.27 71.29,98.89C71.79,98.63 72.32,98.54 72.82,98.5C73.3,98.46 73.88,98.46 74.53,98.46ZM73.06,101.4C72.73,101.43 72.64,101.47 72.61,101.49C72.41,101.59 72.26,101.75 72.16,101.94C72.14,101.97 72.1,102.07 72.07,102.39C72.04,102.74 72.04,103.19 72.04,103.92V108.42C72.04,109.14 72.04,109.6 72.07,109.94C72.1,110.27 72.14,110.36 72.16,110.39C72.26,110.59 72.41,110.75 72.61,110.85C72.64,110.86 72.73,110.9 73.06,110.93C73.4,110.96 73.86,110.96 74.58,110.96H79.08C79.81,110.96 80.26,110.96 80.61,110.93C80.93,110.9 81.03,110.86 81.06,110.85C81.25,110.75 81.41,110.59 81.51,110.39C81.53,110.36 81.57,110.27 81.6,109.94C81.62,109.6 81.63,109.14 81.63,108.42V103.92C81.63,103.19 81.62,102.74 81.6,102.39C81.57,102.07 81.53,101.97 81.51,101.94C81.41,101.75 81.25,101.59 81.06,101.49C81.03,101.47 80.93,101.43 80.61,101.4C80.26,101.38 79.81,101.38 79.08,101.38H74.58C73.86,101.38 73.4,101.38 73.06,101.4Z"
|
||||
android:fillColor="#3B45FD"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M94.33,85.75C93.64,85.75 93.08,86.31 93.08,87V88.67C93.08,89.36 93.64,89.92 94.33,89.92H96C96.69,89.92 97.25,89.36 97.25,88.67V87C97.25,86.31 96.69,85.75 96,85.75H94.33Z"
|
||||
android:fillColor="#3B45FD"/>
|
||||
<path
|
||||
android:pathData="M92.86,80.13C92.21,80.13 91.63,80.12 91.16,80.16C90.65,80.21 90.13,80.3 89.62,80.56C88.87,80.94 88.27,81.54 87.89,82.29C87.63,82.79 87.54,83.32 87.5,83.82C87.46,84.3 87.46,84.88 87.46,85.53V90.14C87.46,90.79 87.46,91.37 87.5,91.84C87.54,92.35 87.63,92.87 87.89,93.38C88.27,94.13 88.87,94.73 89.62,95.11C90.13,95.37 90.65,95.46 91.16,95.5C91.63,95.54 92.21,95.54 92.86,95.54H97.47C98.12,95.54 98.7,95.54 99.18,95.5C99.68,95.46 100.21,95.37 100.71,95.11C101.46,94.73 102.06,94.13 102.44,93.38C102.7,92.87 102.79,92.35 102.84,91.84C102.88,91.37 102.88,90.79 102.88,90.14V85.53C102.88,84.88 102.88,84.3 102.84,83.82C102.79,83.32 102.7,82.79 102.44,82.29C102.06,81.54 101.46,80.94 100.71,80.56C100.21,80.3 99.68,80.21 99.18,80.16C98.7,80.12 98.12,80.13 97.47,80.13H92.86ZM90.94,83.16C90.97,83.14 91.07,83.1 91.39,83.07C91.74,83.04 92.19,83.04 92.92,83.04H97.42C98.14,83.04 98.6,83.04 98.94,83.07C99.27,83.1 99.36,83.14 99.39,83.16C99.59,83.26 99.74,83.41 99.84,83.61C99.86,83.64 99.9,83.73 99.93,84.06C99.96,84.4 99.96,84.86 99.96,85.58V90.08C99.96,90.81 99.96,91.26 99.93,91.61C99.9,91.93 99.86,92.03 99.84,92.06C99.74,92.25 99.59,92.41 99.39,92.51C99.36,92.53 99.27,92.57 98.94,92.6C98.6,92.62 98.14,92.63 97.42,92.63H92.92C92.19,92.63 91.74,92.62 91.39,92.6C91.07,92.57 90.97,92.53 90.94,92.51C90.75,92.41 90.59,92.25 90.49,92.06C90.47,92.03 90.43,91.93 90.4,91.61C90.38,91.26 90.38,90.81 90.38,90.08V85.58C90.38,84.86 90.38,84.4 90.4,84.06C90.43,83.73 90.47,83.64 90.49,83.61C90.59,83.41 90.75,83.26 90.94,83.16Z"
|
||||
android:fillColor="#3B45FD"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M89.75,99.5C89.06,99.5 88.5,100.06 88.5,100.75V102.42C88.5,103.11 89.06,103.67 89.75,103.67H91.42C92.11,103.67 92.67,103.11 92.67,102.42V100.75C92.67,100.06 92.11,99.5 91.42,99.5H89.75Z"
|
||||
android:fillColor="#3B45FD"/>
|
||||
<path
|
||||
android:pathData="M93.08,105.33C93.08,104.64 93.64,104.08 94.33,104.08H96C96.69,104.08 97.25,104.64 97.25,105.33V107C97.25,107.69 96.69,108.25 96,108.25H94.33C93.64,108.25 93.08,107.69 93.08,107V105.33Z"
|
||||
android:fillColor="#3B45FD"/>
|
||||
<path
|
||||
android:pathData="M97.67,109.92C97.67,109.23 98.23,108.67 98.92,108.67H100.58C101.27,108.67 101.83,109.23 101.83,109.92V111.58C101.83,112.27 101.27,112.83 100.58,112.83H98.92C98.23,112.83 97.67,112.27 97.67,111.58V109.92Z"
|
||||
android:fillColor="#3B45FD"/>
|
||||
<path
|
||||
android:pathData="M98.92,99.5C98.23,99.5 97.67,100.06 97.67,100.75V102.42C97.67,103.11 98.23,103.67 98.92,103.67H100.58C101.27,103.67 101.83,103.11 101.83,102.42V100.75C101.83,100.06 101.27,99.5 100.58,99.5H98.92Z"
|
||||
android:fillColor="#3B45FD"/>
|
||||
<path
|
||||
android:pathData="M88.5,109.92C88.5,109.23 89.06,108.67 89.75,108.67H91.42C92.11,108.67 92.67,109.23 92.67,109.92V111.58C92.67,112.27 92.11,112.83 91.42,112.83H89.75C89.06,112.83 88.5,112.27 88.5,111.58V109.92Z"
|
||||
android:fillColor="#3B45FD"/>
|
||||
<path
|
||||
android:pathData="M71,22L121,22A12,12 0,0 1,133 34L133,158A12,12 0,0 1,121 170L71,170A12,12 0,0 1,59 158L59,34A12,12 0,0 1,71 22z"
|
||||
android:fillColor="#E3E8FE"/>
|
||||
<path
|
||||
android:pathData="M71,22L121,22A12,12 0,0 1,133 34L133,158A12,12 0,0 1,121 170L71,170A12,12 0,0 1,59 158L59,34A12,12 0,0 1,71 22z"
|
||||
android:strokeWidth="3"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#3B45FD"/>
|
||||
<path
|
||||
android:pathData="M82,69H72C69.79,69 68,70.79 68,73V82"
|
||||
android:strokeWidth="3"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#3B45FD"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M110,69H120C122.21,69 124,70.79 124,73V82"
|
||||
android:strokeWidth="3"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#3B45FD"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M82,125H72C69.79,125 68,123.21 68,121V112"
|
||||
android:strokeWidth="3"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#3B45FD"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M110,125H120C122.21,125 124,123.21 124,121V112"
|
||||
android:strokeWidth="3"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#3B45FD"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M83.06,85.5C83.06,84.71 83.71,84.06 84.5,84.06H86.42C87.21,84.06 87.85,84.71 87.85,85.5V87.42C87.85,88.21 87.21,88.85 86.42,88.85H84.5C83.71,88.85 83.06,88.21 83.06,87.42V85.5Z"
|
||||
android:fillColor="#3B45FD"/>
|
||||
<path
|
||||
android:pathData="M82.81,77.59H88.11C88.86,77.59 89.52,77.59 90.07,77.64C90.65,77.69 91.25,77.79 91.84,78.09C92.69,78.53 93.39,79.22 93.83,80.08C94.12,80.66 94.23,81.26 94.28,81.85C94.32,82.39 94.32,83.06 94.32,83.81V89.11C94.32,89.86 94.32,90.52 94.28,91.07C94.23,91.65 94.12,92.25 93.83,92.84C93.39,93.69 92.69,94.39 91.84,94.83C91.25,95.12 90.65,95.23 90.07,95.28C89.52,95.32 88.86,95.32 88.11,95.32H82.81C82.06,95.32 81.39,95.32 80.85,95.28C80.26,95.23 79.66,95.12 79.08,94.83C78.22,94.39 77.53,93.69 77.09,92.84C76.79,92.25 76.69,91.65 76.64,91.07C76.59,90.52 76.59,89.86 76.59,89.11V83.81C76.59,83.06 76.59,82.39 76.64,81.85C76.69,81.26 76.79,80.66 77.09,80.08C77.53,79.22 78.22,78.53 79.08,78.09C79.66,77.79 80.26,77.69 80.85,77.64C81.39,77.59 82.06,77.59 82.81,77.59ZM81.12,80.98C80.74,81.01 80.63,81.06 80.6,81.08C80.38,81.19 80.19,81.38 80.08,81.6C80.06,81.63 80.01,81.74 79.98,82.12C79.95,82.51 79.95,83.04 79.95,83.87V89.05C79.95,89.88 79.95,90.4 79.98,90.8C80.01,91.17 80.06,91.28 80.08,91.31C80.19,91.54 80.38,91.72 80.6,91.84C80.63,91.85 80.74,91.9 81.12,91.94C81.51,91.97 82.04,91.97 82.87,91.97H88.05C88.88,91.97 89.4,91.97 89.8,91.94C90.17,91.9 90.28,91.85 90.31,91.84C90.54,91.72 90.72,91.54 90.84,91.31C90.85,91.28 90.9,91.17 90.94,90.8C90.97,90.4 90.97,89.88 90.97,89.05V83.87C90.97,83.04 90.97,82.51 90.94,82.12C90.9,81.74 90.85,81.63 90.84,81.6C90.72,81.38 90.54,81.19 90.31,81.08C90.28,81.06 90.17,81.01 89.8,80.98C89.4,80.95 88.88,80.95 88.05,80.95H82.87C82.04,80.95 81.51,80.95 81.12,80.98Z"
|
||||
android:fillColor="#3B45FD"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M84.5,105.15C83.71,105.15 83.06,105.79 83.06,106.58V108.5C83.06,109.29 83.71,109.94 84.5,109.94H86.42C87.21,109.94 87.85,109.29 87.85,108.5V106.58C87.85,105.79 87.21,105.15 86.42,105.15H84.5Z"
|
||||
android:fillColor="#3B45FD"/>
|
||||
<path
|
||||
android:pathData="M82.81,98.68H88.11C88.86,98.68 89.52,98.68 90.07,98.72C90.65,98.77 91.25,98.88 91.84,99.17C92.69,99.61 93.39,100.31 93.83,101.16C94.12,101.75 94.23,102.35 94.28,102.93C94.32,103.48 94.32,104.14 94.32,104.89V110.19C94.32,110.94 94.32,111.61 94.28,112.15C94.23,112.74 94.12,113.34 93.83,113.92C93.39,114.78 92.69,115.47 91.84,115.91C91.25,116.21 90.65,116.31 90.07,116.36C89.52,116.41 88.86,116.41 88.11,116.41H82.81C82.06,116.41 81.39,116.41 80.85,116.36C80.26,116.31 79.66,116.21 79.08,115.91C78.22,115.47 77.53,114.78 77.09,113.92C76.79,113.34 76.69,112.74 76.64,112.15C76.59,111.61 76.59,110.94 76.59,110.19V104.89C76.59,104.14 76.59,103.48 76.64,102.93C76.69,102.35 76.79,101.75 77.09,101.16C77.53,100.31 78.22,99.61 79.08,99.17C79.66,98.88 80.26,98.77 80.85,98.72C81.39,98.68 82.06,98.68 82.81,98.68ZM81.12,102.07C80.74,102.1 80.63,102.15 80.6,102.16C80.38,102.28 80.19,102.46 80.08,102.68C80.06,102.72 80.01,102.83 79.98,103.2C79.95,103.6 79.95,104.12 79.95,104.95V110.13C79.95,110.96 79.95,111.49 79.98,111.88C80.01,112.26 80.06,112.37 80.08,112.4C80.19,112.62 80.38,112.81 80.6,112.92C80.63,112.94 80.74,112.99 81.12,113.02C81.51,113.05 82.04,113.05 82.87,113.05H88.05C88.88,113.05 89.4,113.05 89.8,113.02C90.17,112.99 90.28,112.94 90.31,112.92C90.54,112.81 90.72,112.62 90.84,112.4C90.85,112.37 90.9,112.26 90.94,111.88C90.97,111.49 90.97,110.96 90.97,110.13V104.95C90.97,104.12 90.97,103.6 90.94,103.2C90.9,102.83 90.85,102.72 90.84,102.68C90.72,102.46 90.54,102.28 90.31,102.16C90.28,102.15 90.17,102.1 89.8,102.07C89.4,102.03 88.88,102.03 88.05,102.03H82.87C82.04,102.03 81.51,102.03 81.12,102.07Z"
|
||||
android:fillColor="#3B45FD"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M105.58,84.06C104.79,84.06 104.15,84.71 104.15,85.5V87.42C104.15,88.21 104.79,88.85 105.58,88.85H107.5C108.29,88.85 108.94,88.21 108.94,87.42V85.5C108.94,84.71 108.29,84.06 107.5,84.06H105.58Z"
|
||||
android:fillColor="#3B45FD"/>
|
||||
<path
|
||||
android:pathData="M103.89,77.59C103.14,77.59 102.48,77.59 101.93,77.64C101.35,77.69 100.75,77.79 100.16,78.09C99.31,78.53 98.61,79.22 98.17,80.08C97.88,80.66 97.77,81.26 97.72,81.85C97.68,82.39 97.68,83.06 97.68,83.81V89.11C97.68,89.86 97.68,90.52 97.72,91.07C97.77,91.65 97.88,92.25 98.17,92.84C98.61,93.69 99.31,94.39 100.16,94.83C100.75,95.12 101.35,95.23 101.93,95.28C102.48,95.32 103.14,95.32 103.89,95.32H109.19C109.94,95.32 110.61,95.32 111.15,95.28C111.74,95.23 112.34,95.12 112.92,94.83C113.78,94.39 114.47,93.69 114.91,92.84C115.21,92.25 115.31,91.65 115.36,91.07C115.41,90.52 115.41,89.86 115.41,89.11V83.81C115.41,83.06 115.41,82.39 115.36,81.85C115.31,81.26 115.21,80.66 114.91,80.08C114.47,79.22 113.78,78.53 112.92,78.09C112.34,77.79 111.74,77.69 111.15,77.64C110.61,77.59 109.94,77.59 109.19,77.59H103.89ZM101.68,81.08C101.72,81.06 101.83,81.01 102.2,80.98C102.6,80.95 103.12,80.95 103.95,80.95H109.13C109.96,80.95 110.49,80.95 110.88,80.98C111.26,81.01 111.37,81.06 111.4,81.08C111.62,81.19 111.81,81.38 111.92,81.6C111.94,81.63 111.99,81.74 112.02,82.12C112.05,82.51 112.05,83.04 112.05,83.87V89.05C112.05,89.88 112.05,90.4 112.02,90.8C111.99,91.17 111.94,91.28 111.92,91.31C111.81,91.54 111.62,91.72 111.4,91.84C111.37,91.85 111.26,91.9 110.88,91.94C110.49,91.97 109.96,91.97 109.13,91.97H103.95C103.12,91.97 102.6,91.97 102.2,91.94C101.83,91.9 101.72,91.85 101.68,91.84C101.46,91.72 101.28,91.54 101.16,91.31C101.15,91.28 101.1,91.17 101.07,90.8C101.03,90.4 101.03,89.88 101.03,89.05V83.87C101.03,83.04 101.03,82.51 101.07,82.12C101.1,81.74 101.15,81.63 101.16,81.6C101.28,81.38 101.46,81.19 101.68,81.08Z"
|
||||
android:fillColor="#3B45FD"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M100.31,99.88C99.52,99.88 98.88,100.52 98.88,101.31V103.23C98.88,104.02 99.52,104.67 100.31,104.67H102.23C103.02,104.67 103.67,104.02 103.67,103.23V101.31C103.67,100.52 103.02,99.88 102.23,99.88H100.31Z"
|
||||
android:fillColor="#3B45FD"/>
|
||||
<path
|
||||
android:pathData="M104.15,106.58C104.15,105.79 104.79,105.15 105.58,105.15H107.5C108.29,105.15 108.94,105.79 108.94,106.58V108.5C108.94,109.29 108.29,109.94 107.5,109.94H105.58C104.79,109.94 104.15,109.29 104.15,108.5V106.58Z"
|
||||
android:fillColor="#3B45FD"/>
|
||||
<path
|
||||
android:pathData="M109.42,111.85C109.42,111.06 110.06,110.42 110.85,110.42H112.77C113.57,110.42 114.21,111.06 114.21,111.85V113.77C114.21,114.57 113.57,115.21 112.77,115.21H110.85C110.06,115.21 109.42,114.57 109.42,113.77V111.85Z"
|
||||
android:fillColor="#3B45FD"/>
|
||||
<path
|
||||
android:pathData="M110.85,99.88C110.06,99.88 109.42,100.52 109.42,101.31V103.23C109.42,104.02 110.06,104.67 110.85,104.67H112.77C113.57,104.67 114.21,104.02 114.21,103.23V101.31C114.21,100.52 113.57,99.88 112.77,99.88H110.85Z"
|
||||
android:fillColor="#3B45FD"/>
|
||||
<path
|
||||
android:pathData="M98.88,111.85C98.88,111.06 99.52,110.42 100.31,110.42H102.23C103.02,110.42 103.67,111.06 103.67,111.85V113.77C103.67,114.57 103.02,115.21 102.23,115.21H100.31C99.52,115.21 98.88,114.57 98.88,113.77V111.85Z"
|
||||
android:fillColor="#3B45FD"/>
|
||||
</vector>
|
||||
115
app/src/main/res/drawable/quick_restore.xml
Normal file
115
app/src/main/res/drawable/quick_restore.xml
Normal file
@@ -0,0 +1,115 @@
|
||||
<!--
|
||||
~ Copyright 2025 Signal Messenger, LLC
|
||||
~ SPDX-License-Identifier: AGPL-3.0-only
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="192dp"
|
||||
android:height="192dp"
|
||||
android:viewportWidth="192"
|
||||
android:viewportHeight="192">
|
||||
<path
|
||||
android:pathData="M78.75,87C78.75,86.31 79.31,85.75 80,85.75H81.67C82.36,85.75 82.92,86.31 82.92,87V88.67C82.92,89.36 82.36,89.92 81.67,89.92H80C79.31,89.92 78.75,89.36 78.75,88.67V87Z"
|
||||
android:fillColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M78.53,80.13H83.14C83.79,80.13 84.37,80.12 84.84,80.16C85.35,80.21 85.87,80.3 86.38,80.56C87.13,80.94 87.73,81.54 88.11,82.29C88.37,82.79 88.46,83.32 88.5,83.82C88.54,84.3 88.54,84.88 88.54,85.53V90.14C88.54,90.79 88.54,91.37 88.5,91.84C88.46,92.35 88.37,92.87 88.11,93.38C87.73,94.13 87.13,94.73 86.38,95.11C85.87,95.37 85.35,95.46 84.84,95.5C84.37,95.54 83.79,95.54 83.14,95.54H78.53C77.88,95.54 77.3,95.54 76.82,95.5C76.32,95.46 75.79,95.37 75.29,95.11C74.54,94.73 73.94,94.13 73.56,93.38C73.3,92.87 73.21,92.35 73.16,91.84C73.12,91.37 73.13,90.79 73.13,90.14V85.53C73.13,84.88 73.12,84.3 73.16,83.82C73.21,83.32 73.3,82.79 73.56,82.29C73.94,81.54 74.54,80.94 75.29,80.56C75.79,80.3 76.32,80.21 76.82,80.16C77.3,80.12 77.88,80.13 78.53,80.13ZM77.06,83.07C76.73,83.1 76.64,83.14 76.61,83.16C76.41,83.26 76.26,83.41 76.16,83.61C76.14,83.64 76.1,83.73 76.07,84.06C76.04,84.4 76.04,84.86 76.04,85.58V90.08C76.04,90.81 76.04,91.26 76.07,91.61C76.1,91.93 76.14,92.03 76.16,92.06C76.26,92.25 76.41,92.41 76.61,92.51C76.64,92.53 76.73,92.57 77.06,92.6C77.4,92.62 77.86,92.63 78.58,92.63H83.08C83.81,92.63 84.26,92.62 84.61,92.6C84.93,92.57 85.03,92.53 85.06,92.51C85.25,92.41 85.41,92.25 85.51,92.06C85.53,92.03 85.57,91.93 85.6,91.61C85.62,91.26 85.63,90.81 85.63,90.08V85.58C85.63,84.86 85.62,84.4 85.6,84.06C85.57,83.73 85.53,83.64 85.51,83.61C85.41,83.41 85.25,83.26 85.06,83.16C85.03,83.14 84.93,83.1 84.61,83.07C84.26,83.04 83.81,83.04 83.08,83.04H78.58C77.86,83.04 77.4,83.04 77.06,83.07Z"
|
||||
android:fillColor="#020BAC"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M80,104.08C79.31,104.08 78.75,104.64 78.75,105.33V107C78.75,107.69 79.31,108.25 80,108.25H81.67C82.36,108.25 82.92,107.69 82.92,107V105.33C82.92,104.64 82.36,104.08 81.67,104.08H80Z"
|
||||
android:fillColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M78.53,98.46H83.14C83.79,98.46 84.37,98.46 84.84,98.5C85.35,98.54 85.87,98.63 86.38,98.89C87.13,99.27 87.73,99.87 88.11,100.62C88.37,101.13 88.46,101.65 88.5,102.16C88.54,102.63 88.54,103.21 88.54,103.86V108.47C88.54,109.13 88.54,109.7 88.5,110.18C88.46,110.68 88.37,111.21 88.11,111.71C87.73,112.46 87.13,113.06 86.38,113.44C85.87,113.7 85.35,113.79 84.84,113.84C84.37,113.88 83.79,113.88 83.14,113.88H78.53C77.88,113.88 77.3,113.88 76.82,113.84C76.32,113.79 75.79,113.7 75.29,113.44C74.54,113.06 73.94,112.46 73.56,111.71C73.3,111.21 73.21,110.68 73.16,110.18C73.12,109.7 73.13,109.13 73.13,108.47V103.86C73.13,103.21 73.12,102.63 73.16,102.16C73.21,101.65 73.3,101.13 73.56,100.62C73.94,99.87 74.54,99.27 75.29,98.89C75.79,98.63 76.32,98.54 76.82,98.5C77.3,98.46 77.88,98.46 78.53,98.46ZM77.06,101.4C76.73,101.43 76.64,101.47 76.61,101.49C76.41,101.59 76.26,101.75 76.16,101.94C76.14,101.97 76.1,102.07 76.07,102.39C76.04,102.74 76.04,103.19 76.04,103.92V108.42C76.04,109.14 76.04,109.6 76.07,109.94C76.1,110.27 76.14,110.36 76.16,110.39C76.26,110.59 76.41,110.75 76.61,110.85C76.64,110.86 76.73,110.9 77.06,110.93C77.4,110.96 77.86,110.96 78.58,110.96H83.08C83.81,110.96 84.26,110.96 84.61,110.93C84.93,110.9 85.03,110.86 85.06,110.85C85.25,110.75 85.41,110.59 85.51,110.39C85.53,110.36 85.57,110.27 85.6,109.94C85.62,109.6 85.63,109.14 85.63,108.42V103.92C85.63,103.19 85.62,102.74 85.6,102.39C85.57,102.07 85.53,101.97 85.51,101.94C85.41,101.75 85.25,101.59 85.06,101.49C85.03,101.47 84.93,101.43 84.61,101.4C84.26,101.38 83.81,101.38 83.08,101.38H78.58C77.86,101.38 77.4,101.38 77.06,101.4Z"
|
||||
android:fillColor="#020BAC"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M98.33,85.75C97.64,85.75 97.08,86.31 97.08,87V88.67C97.08,89.36 97.64,89.92 98.33,89.92H100C100.69,89.92 101.25,89.36 101.25,88.67V87C101.25,86.31 100.69,85.75 100,85.75H98.33Z"
|
||||
android:fillColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M96.86,80.13C96.21,80.13 95.63,80.12 95.16,80.16C94.65,80.21 94.13,80.3 93.62,80.56C92.87,80.94 92.27,81.54 91.89,82.29C91.63,82.79 91.54,83.32 91.5,83.82C91.46,84.3 91.46,84.88 91.46,85.53V90.14C91.46,90.79 91.46,91.37 91.5,91.84C91.54,92.35 91.63,92.87 91.89,93.38C92.27,94.13 92.87,94.73 93.62,95.11C94.13,95.37 94.65,95.46 95.16,95.5C95.63,95.54 96.21,95.54 96.86,95.54H101.47C102.13,95.54 102.7,95.54 103.18,95.5C103.68,95.46 104.21,95.37 104.71,95.11C105.46,94.73 106.06,94.13 106.44,93.38C106.7,92.87 106.79,92.35 106.84,91.84C106.88,91.37 106.88,90.79 106.88,90.14V85.53C106.88,84.88 106.88,84.3 106.84,83.82C106.79,83.32 106.7,82.79 106.44,82.29C106.06,81.54 105.46,80.94 104.71,80.56C104.21,80.3 103.68,80.21 103.18,80.16C102.7,80.12 102.13,80.13 101.47,80.13H96.86ZM94.94,83.16C94.97,83.14 95.07,83.1 95.39,83.07C95.74,83.04 96.19,83.04 96.92,83.04H101.42C102.14,83.04 102.6,83.04 102.94,83.07C103.27,83.1 103.36,83.14 103.39,83.16C103.59,83.26 103.75,83.41 103.85,83.61C103.86,83.64 103.9,83.73 103.93,84.06C103.96,84.4 103.96,84.86 103.96,85.58V90.08C103.96,90.81 103.96,91.26 103.93,91.61C103.9,91.93 103.86,92.03 103.85,92.06C103.75,92.25 103.59,92.41 103.39,92.51C103.36,92.53 103.27,92.57 102.94,92.6C102.6,92.62 102.14,92.63 101.42,92.63H96.92C96.19,92.63 95.74,92.62 95.39,92.6C95.07,92.57 94.97,92.53 94.94,92.51C94.75,92.41 94.59,92.25 94.49,92.06C94.47,92.03 94.43,91.93 94.4,91.61C94.38,91.26 94.38,90.81 94.38,90.08V85.58C94.38,84.86 94.38,84.4 94.4,84.06C94.43,83.73 94.47,83.64 94.49,83.61C94.59,83.41 94.75,83.26 94.94,83.16Z"
|
||||
android:fillColor="#020BAC"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M93.75,99.5C93.06,99.5 92.5,100.06 92.5,100.75V102.42C92.5,103.11 93.06,103.67 93.75,103.67H95.42C96.11,103.67 96.67,103.11 96.67,102.42V100.75C96.67,100.06 96.11,99.5 95.42,99.5H93.75Z"
|
||||
android:fillColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M97.08,105.33C97.08,104.64 97.64,104.08 98.33,104.08H100C100.69,104.08 101.25,104.64 101.25,105.33V107C101.25,107.69 100.69,108.25 100,108.25H98.33C97.64,108.25 97.08,107.69 97.08,107V105.33Z"
|
||||
android:fillColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M101.67,109.92C101.67,109.23 102.23,108.67 102.92,108.67H104.58C105.27,108.67 105.83,109.23 105.83,109.92V111.58C105.83,112.27 105.27,112.83 104.58,112.83H102.92C102.23,112.83 101.67,112.27 101.67,111.58V109.92Z"
|
||||
android:fillColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M102.92,99.5C102.23,99.5 101.67,100.06 101.67,100.75V102.42C101.67,103.11 102.23,103.67 102.92,103.67H104.58C105.27,103.67 105.83,103.11 105.83,102.42V100.75C105.83,100.06 105.27,99.5 104.58,99.5H102.92Z"
|
||||
android:fillColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M92.5,109.92C92.5,109.23 93.06,108.67 93.75,108.67H95.42C96.11,108.67 96.67,109.23 96.67,109.92V111.58C96.67,112.27 96.11,112.83 95.42,112.83H93.75C93.06,112.83 92.5,112.27 92.5,111.58V109.92Z"
|
||||
android:fillColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M68,22L124,22A12,12 0,0 1,136 34L136,158A12,12 0,0 1,124 170L68,170A12,12 0,0 1,56 158L56,34A12,12 0,0 1,68 22z"
|
||||
android:fillColor="#E3E8FE"/>
|
||||
<path
|
||||
android:pathData="M68,22L124,22A12,12 0,0 1,136 34L136,158A12,12 0,0 1,124 170L68,170A12,12 0,0 1,56 158L56,34A12,12 0,0 1,68 22z"
|
||||
android:strokeWidth="3"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M82.5,85C82.5,84.17 83.17,83.5 84,83.5H86C86.83,83.5 87.5,84.17 87.5,85V87C87.5,87.83 86.83,88.5 86,88.5H84C83.17,88.5 82.5,87.83 82.5,87V85Z"
|
||||
android:fillColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M82.23,76.75H87.77C88.55,76.75 89.24,76.75 89.81,76.8C90.42,76.85 91.05,76.96 91.66,77.27C92.55,77.72 93.28,78.45 93.73,79.34C94.04,79.95 94.15,80.58 94.2,81.19C94.25,81.76 94.25,82.45 94.25,83.23V88.77C94.25,89.55 94.25,90.24 94.2,90.81C94.15,91.42 94.04,92.05 93.73,92.66C93.28,93.55 92.55,94.28 91.66,94.73C91.05,95.04 90.42,95.15 89.81,95.2C89.24,95.25 88.55,95.25 87.77,95.25H82.23C81.45,95.25 80.76,95.25 80.19,95.2C79.58,95.15 78.95,95.04 78.34,94.73C77.45,94.28 76.72,93.55 76.27,92.66C75.96,92.05 75.85,91.42 75.8,90.81C75.75,90.24 75.75,89.55 75.75,88.77V83.23C75.75,82.45 75.75,81.76 75.8,81.19C75.85,80.58 75.96,79.95 76.27,79.34C76.72,78.45 77.45,77.72 78.34,77.27C78.95,76.96 79.58,76.85 80.19,76.8C80.76,76.75 81.45,76.75 82.23,76.75ZM80.47,80.29C80.08,80.32 79.97,80.37 79.93,80.39C79.7,80.51 79.51,80.7 79.39,80.93C79.37,80.97 79.32,81.08 79.29,81.47C79.25,81.88 79.25,82.43 79.25,83.3V88.7C79.25,89.57 79.25,90.12 79.29,90.53C79.32,90.92 79.37,91.03 79.39,91.07C79.51,91.3 79.7,91.49 79.93,91.61C79.97,91.63 80.08,91.68 80.47,91.71C80.88,91.75 81.43,91.75 82.3,91.75H87.7C88.57,91.75 89.12,91.75 89.53,91.71C89.92,91.68 90.03,91.63 90.07,91.61C90.3,91.49 90.49,91.3 90.61,91.07C90.63,91.03 90.68,90.92 90.71,90.53C90.75,90.12 90.75,89.57 90.75,88.7V83.3C90.75,82.43 90.75,81.88 90.71,81.47C90.68,81.08 90.63,80.97 90.61,80.93C90.49,80.7 90.3,80.51 90.07,80.39C90.03,80.37 89.92,80.32 89.53,80.29C89.12,80.25 88.57,80.25 87.7,80.25H82.3C81.43,80.25 80.88,80.25 80.47,80.29Z"
|
||||
android:fillColor="#020BAC"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M84,105.5C83.17,105.5 82.5,106.17 82.5,107V109C82.5,109.83 83.17,110.5 84,110.5H86C86.83,110.5 87.5,109.83 87.5,109V107C87.5,106.17 86.83,105.5 86,105.5H84Z"
|
||||
android:fillColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M82.23,98.75H87.77C88.55,98.75 89.24,98.75 89.81,98.8C90.42,98.85 91.05,98.96 91.66,99.27C92.55,99.72 93.28,100.45 93.73,101.34C94.04,101.95 94.15,102.58 94.2,103.19C94.25,103.76 94.25,104.45 94.25,105.24V110.76C94.25,111.55 94.25,112.24 94.2,112.81C94.15,113.42 94.04,114.05 93.73,114.66C93.28,115.55 92.55,116.28 91.66,116.73C91.05,117.04 90.42,117.15 89.81,117.2C89.24,117.25 88.55,117.25 87.77,117.25H82.23C81.45,117.25 80.76,117.25 80.19,117.2C79.58,117.15 78.95,117.04 78.34,116.73C77.45,116.28 76.72,115.55 76.27,114.66C75.96,114.05 75.85,113.42 75.8,112.81C75.75,112.24 75.75,111.55 75.75,110.76V105.24C75.75,104.45 75.75,103.76 75.8,103.19C75.85,102.58 75.96,101.95 76.27,101.34C76.72,100.45 77.45,99.72 78.34,99.27C78.95,98.96 79.58,98.85 80.19,98.8C80.76,98.75 81.45,98.75 82.23,98.75ZM80.47,102.29C80.08,102.32 79.97,102.37 79.93,102.39C79.7,102.51 79.51,102.7 79.39,102.93C79.37,102.97 79.32,103.08 79.29,103.47C79.25,103.89 79.25,104.43 79.25,105.3V110.7C79.25,111.57 79.25,112.11 79.29,112.53C79.32,112.92 79.37,113.03 79.39,113.07C79.51,113.3 79.7,113.49 79.93,113.61C79.97,113.63 80.08,113.68 80.47,113.71C80.88,113.75 81.43,113.75 82.3,113.75H87.7C88.57,113.75 89.12,113.75 89.53,113.71C89.92,113.68 90.03,113.63 90.07,113.61C90.3,113.49 90.49,113.3 90.61,113.07C90.63,113.03 90.68,112.92 90.71,112.53C90.75,112.11 90.75,111.57 90.75,110.7V105.3C90.75,104.43 90.75,103.89 90.71,103.47C90.68,103.08 90.63,102.97 90.61,102.93C90.49,102.7 90.3,102.51 90.07,102.39C90.03,102.37 89.92,102.32 89.53,102.29C89.12,102.25 88.57,102.25 87.7,102.25H82.3C81.43,102.25 80.88,102.25 80.47,102.29Z"
|
||||
android:fillColor="#020BAC"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M106,83.5C105.17,83.5 104.5,84.17 104.5,85V87C104.5,87.83 105.17,88.5 106,88.5H108C108.83,88.5 109.5,87.83 109.5,87V85C109.5,84.17 108.83,83.5 108,83.5H106Z"
|
||||
android:fillColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M104.24,76.75C103.45,76.75 102.76,76.75 102.19,76.8C101.58,76.85 100.95,76.96 100.34,77.27C99.45,77.72 98.72,78.45 98.27,79.34C97.96,79.95 97.85,80.58 97.8,81.19C97.75,81.76 97.75,82.45 97.75,83.23V88.77C97.75,89.55 97.75,90.24 97.8,90.81C97.85,91.42 97.96,92.05 98.27,92.66C98.72,93.55 99.45,94.28 100.34,94.73C100.95,95.04 101.58,95.15 102.19,95.2C102.76,95.25 103.45,95.25 104.24,95.25H109.76C110.55,95.25 111.24,95.25 111.81,95.2C112.42,95.15 113.05,95.04 113.66,94.73C114.55,94.28 115.28,93.55 115.73,92.66C116.04,92.05 116.15,91.42 116.2,90.81C116.25,90.24 116.25,89.55 116.25,88.77V83.23C116.25,82.45 116.25,81.76 116.2,81.19C116.15,80.58 116.04,79.95 115.73,79.34C115.28,78.45 114.55,77.72 113.66,77.27C113.05,76.96 112.42,76.85 111.81,76.8C111.24,76.75 110.55,76.75 109.76,76.75H104.24ZM101.93,80.39C101.97,80.37 102.08,80.32 102.47,80.29C102.89,80.25 103.43,80.25 104.3,80.25H109.7C110.57,80.25 111.11,80.25 111.53,80.29C111.92,80.32 112.03,80.37 112.07,80.39C112.3,80.51 112.49,80.7 112.61,80.93C112.63,80.97 112.68,81.08 112.71,81.47C112.75,81.88 112.75,82.43 112.75,83.3V88.7C112.75,89.57 112.75,90.12 112.71,90.53C112.68,90.92 112.63,91.03 112.61,91.07C112.49,91.3 112.3,91.49 112.07,91.61C112.03,91.63 111.92,91.68 111.53,91.71C111.11,91.75 110.57,91.75 109.7,91.75H104.3C103.43,91.75 102.89,91.75 102.47,91.71C102.08,91.68 101.97,91.63 101.93,91.61C101.7,91.49 101.51,91.3 101.39,91.07C101.37,91.03 101.32,90.92 101.29,90.53C101.25,90.12 101.25,89.57 101.25,88.7V83.3C101.25,82.43 101.25,81.88 101.29,81.47C101.32,81.08 101.37,80.97 101.39,80.93C101.51,80.7 101.7,80.51 101.93,80.39Z"
|
||||
android:fillColor="#020BAC"
|
||||
android:fillType="evenOdd"/>
|
||||
<path
|
||||
android:pathData="M100.5,100C99.67,100 99,100.67 99,101.5V103.5C99,104.33 99.67,105 100.5,105H102.5C103.33,105 104,104.33 104,103.5V101.5C104,100.67 103.33,100 102.5,100H100.5Z"
|
||||
android:fillColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M104.5,107C104.5,106.17 105.17,105.5 106,105.5H108C108.83,105.5 109.5,106.17 109.5,107V109C109.5,109.83 108.83,110.5 108,110.5H106C105.17,110.5 104.5,109.83 104.5,109V107Z"
|
||||
android:fillColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M110,112.5C110,111.67 110.67,111 111.5,111H113.5C114.33,111 115,111.67 115,112.5V114.5C115,115.33 114.33,116 113.5,116H111.5C110.67,116 110,115.33 110,114.5V112.5Z"
|
||||
android:fillColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M111.5,100C110.67,100 110,100.67 110,101.5V103.5C110,104.33 110.67,105 111.5,105H113.5C114.33,105 115,104.33 115,103.5V101.5C115,100.67 114.33,100 113.5,100H111.5Z"
|
||||
android:fillColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M99,112.5C99,111.67 99.67,111 100.5,111H102.5C103.33,111 104,111.67 104,112.5V114.5C104,115.33 103.33,116 102.5,116H100.5C99.67,116 99,115.33 99,114.5V112.5Z"
|
||||
android:fillColor="#020BAC"/>
|
||||
<path
|
||||
android:pathData="M80,67H70C67.79,67 66,68.79 66,71V80"
|
||||
android:strokeWidth="3"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#020BAC"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M112,67H122C124.21,67 126,68.79 126,71V80"
|
||||
android:strokeWidth="3"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#020BAC"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M80,127H70C67.79,127 66,125.21 66,123V114"
|
||||
android:strokeWidth="3"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#020BAC"
|
||||
android:strokeLineCap="round"/>
|
||||
<path
|
||||
android:pathData="M112,127H122C124.21,127 126,125.21 126,123V114"
|
||||
android:strokeWidth="3"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#020BAC"
|
||||
android:strokeLineCap="round"/>
|
||||
</vector>
|
||||
@@ -367,6 +367,11 @@
|
||||
<string name="CommunicationActions_this_is_not_a_valid_call_link">This is not a valid call link. Make sure the entire link is intact and correct before attempting to join.</string>
|
||||
<!-- Displayed in a snackbar when the user is already in a call -->
|
||||
<string name="CommunicationActions__you_are_already_in_a_call">You are already in a call</string>
|
||||
<!-- Title on dialog when quick restore qr code is scanned in system camera -->
|
||||
<string name="CommunicationActions__transfer_dialog_title">Transfer account to new device?</string>
|
||||
<!-- Message on dialog when quick restore qr code is scanned in system camera -->
|
||||
<string name="CommunicationActions__transfer_dialog_message">To transfer this account to a new device, tap \"Continue\" and scan the QR code again with the Signal camera. Make sure you only scan QR codes that come directly from Signal.</string>
|
||||
<string name="CommunicationActions__dont_transfer">Don\'t transfer</string>
|
||||
|
||||
<!-- ConfirmIdentityDialog -->
|
||||
|
||||
@@ -8924,6 +8929,13 @@
|
||||
<!-- Snackbar text to add a question before creating a poll -->
|
||||
<string name="CreatePollFragment__add_question">Add a question</string>
|
||||
|
||||
<!-- Bottom sheet title telling users to scan a qr code -->
|
||||
<string name="QuickRestoreInfoDialog__scan_qr_code">Scan QR code</string>
|
||||
<!-- Bottom sheet description telling users how to scan a qr code -->
|
||||
<string name="QuickRestoreInfoDialog__use_this_device_to_scan_qr_code">Use this device to scan the QR code on the device you want to transfer to</string>
|
||||
<!-- Confirmation button to dismiss bottom sheet dialog -->
|
||||
<string name="QuickRestoreInfoDialog__okay">Okay</string>
|
||||
|
||||
<!-- CallQualityIssue -->
|
||||
<!-- Label for general audio issue category -->
|
||||
<string name="CallQualityIssue__audio_issue">Audio issue</string>
|
||||
|
||||
Reference in New Issue
Block a user