diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a69d8664..123d675b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -77,7 +77,7 @@ + android:theme="@style/SudThemeGlifV3.Light" /> + android:theme="@style/SudThemeGlifV3.Light"> diff --git a/app/src/main/java/com/stevesoltys/seedvault/restore/RestoreFilesFragment.kt b/app/src/main/java/com/stevesoltys/seedvault/restore/RestoreFilesFragment.kt index 531ce034..28598783 100644 --- a/app/src/main/java/com/stevesoltys/seedvault/restore/RestoreFilesFragment.kt +++ b/app/src/main/java/com/stevesoltys/seedvault/restore/RestoreFilesFragment.kt @@ -1,15 +1,17 @@ package com.stevesoltys.seedvault.restore import android.app.Activity.RESULT_OK +import android.graphics.drawable.Drawable import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.ViewStub import android.widget.Button -import android.widget.TextView import androidx.fragment.app.Fragment +import com.google.android.setupdesign.GlifLayout import com.stevesoltys.seedvault.R +import com.stevesoltys.seedvault.ui.getColorAccent import org.calyxos.backup.storage.api.SnapshotItem import org.calyxos.backup.storage.ui.restore.SnapshotFragment import org.koin.androidx.viewmodel.ext.android.sharedViewModel @@ -26,12 +28,16 @@ internal class RestoreFilesFragment : SnapshotFragment() { val topStub: ViewStub = v.findViewById(R.id.topStub) topStub.layoutResource = R.layout.header_snapshots - topStub.inflate() + val header = topStub.inflate() + val suw_layout: GlifLayout = header.findViewById(R.id.setup_wizard_layout) + val icon: Drawable = suw_layout.getIcon() + icon.setTintList(getColorAccent(requireContext())) + suw_layout.setIcon(icon) val bottomStub: ViewStub = v.findViewById(R.id.bottomStub) bottomStub.layoutResource = R.layout.footer_snapshots val footer = bottomStub.inflate() - val skipView: TextView = footer.findViewById(R.id.skipView) + val skipView: Button = footer.findViewById(R.id.skipView) skipView.setOnClickListener { requireActivity().apply { setResult(RESULT_OK) @@ -54,6 +60,11 @@ internal class RestoreFilesStartedFragment : Fragment() { ): View { val v: View = inflater.inflate(R.layout.fragment_restore_files_started, container, false) + val suw_layout: GlifLayout = v.findViewById(R.id.setup_wizard_layout) + val icon: Drawable = suw_layout.getIcon() + icon.setTintList(getColorAccent(requireContext())) + suw_layout.setIcon(icon) + val button: Button = v.findViewById(R.id.button) button.setOnClickListener { requireActivity().apply { diff --git a/app/src/main/java/com/stevesoltys/seedvault/restore/RestoreProgressFragment.kt b/app/src/main/java/com/stevesoltys/seedvault/restore/RestoreProgressFragment.kt index 5c24f8bb..c26bb7f5 100644 --- a/app/src/main/java/com/stevesoltys/seedvault/restore/RestoreProgressFragment.kt +++ b/app/src/main/java/com/stevesoltys/seedvault/restore/RestoreProgressFragment.kt @@ -1,5 +1,6 @@ package com.stevesoltys.seedvault.restore +import android.graphics.drawable.Drawable import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -15,8 +16,10 @@ import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager.VERTICAL import androidx.recyclerview.widget.RecyclerView +import com.google.android.setupdesign.GlifLayout import com.stevesoltys.seedvault.R import com.stevesoltys.seedvault.ui.AppBackupState.FAILED_NOT_INSTALLED +import com.stevesoltys.seedvault.ui.getColorAccent import org.koin.androidx.viewmodel.ext.android.sharedViewModel class RestoreProgressFragment : Fragment() { @@ -26,8 +29,8 @@ class RestoreProgressFragment : Fragment() { private val layoutManager = LinearLayoutManager(context) private val adapter = RestoreProgressAdapter() + private lateinit var suw_layout: GlifLayout private lateinit var progressBar: ProgressBar - private lateinit var titleView: TextView private lateinit var backupNameView: TextView private lateinit var appList: RecyclerView private lateinit var button: Button @@ -39,17 +42,21 @@ class RestoreProgressFragment : Fragment() { ): View { val v: View = inflater.inflate(R.layout.fragment_restore_progress, container, false) + suw_layout = v.findViewById(R.id.setup_wizard_layout) progressBar = v.findViewById(R.id.progressBar) - titleView = v.findViewById(R.id.titleView) backupNameView = v.findViewById(R.id.backupNameView) appList = v.findViewById(R.id.appList) button = v.findViewById(R.id.button) + val icon: Drawable = suw_layout.getIcon() + icon.setTintList(getColorAccent(requireContext())) + suw_layout.setIcon(icon) + return v } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - titleView.setText(R.string.restore_restoring) + suw_layout.setHeaderText(R.string.restore_restoring) appList.apply { layoutManager = this@RestoreProgressFragment.layoutManager diff --git a/app/src/main/java/com/stevesoltys/seedvault/restore/RestoreSetFragment.kt b/app/src/main/java/com/stevesoltys/seedvault/restore/RestoreSetFragment.kt index 6959565c..06e05dc5 100644 --- a/app/src/main/java/com/stevesoltys/seedvault/restore/RestoreSetFragment.kt +++ b/app/src/main/java/com/stevesoltys/seedvault/restore/RestoreSetFragment.kt @@ -1,5 +1,6 @@ package com.stevesoltys.seedvault.restore +import android.graphics.drawable.Drawable import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -7,21 +8,26 @@ import android.view.View.INVISIBLE import android.view.View.VISIBLE import android.view.ViewGroup import android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON +import android.widget.Button import android.widget.ProgressBar import android.widget.TextView import androidx.fragment.app.Fragment import androidx.recyclerview.widget.RecyclerView +import com.google.android.setupcompat.util.ResultCodes.RESULT_SKIP +import com.google.android.setupdesign.GlifLayout import com.stevesoltys.seedvault.R +import com.stevesoltys.seedvault.ui.getColorAccent import org.koin.androidx.viewmodel.ext.android.sharedViewModel class RestoreSetFragment : Fragment() { private val viewModel: RestoreViewModel by sharedViewModel() + private lateinit var suw_layout: GlifLayout private lateinit var listView: RecyclerView private lateinit var progressBar: ProgressBar private lateinit var errorView: TextView - private lateinit var skipView: TextView + private lateinit var skipView: Button override fun onCreateView( inflater: LayoutInflater, @@ -30,17 +36,27 @@ class RestoreSetFragment : Fragment() { ): View { val v: View = inflater.inflate(R.layout.fragment_restore_set, container, false) + suw_layout = v.findViewById(R.id.setup_wizard_layout) listView = v.findViewById(R.id.listView) progressBar = v.findViewById(R.id.progressBar) errorView = v.findViewById(R.id.errorView) skipView = v.findViewById(R.id.skipView) + val icon: Drawable = suw_layout.getIcon() + icon.setTintList(getColorAccent(requireContext())) + suw_layout.setIcon(icon) + return v } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + skipView.setOnClickListener { + requireActivity().setResult(RESULT_SKIP) + requireActivity().finishAfterTransition() + } + // decryption will fail when the device is locked, so keep the screen on to prevent locking requireActivity().window.addFlags(FLAG_KEEP_SCREEN_ON) diff --git a/app/src/main/java/com/stevesoltys/seedvault/restore/install/InstallProgressFragment.kt b/app/src/main/java/com/stevesoltys/seedvault/restore/install/InstallProgressFragment.kt index 5063385d..4fa88c46 100644 --- a/app/src/main/java/com/stevesoltys/seedvault/restore/install/InstallProgressFragment.kt +++ b/app/src/main/java/com/stevesoltys/seedvault/restore/install/InstallProgressFragment.kt @@ -3,6 +3,7 @@ package com.stevesoltys.seedvault.restore.install import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent +import android.graphics.drawable.Drawable import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -19,8 +20,10 @@ import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager.VERTICAL import androidx.recyclerview.widget.RecyclerView +import com.google.android.setupdesign.GlifLayout import com.stevesoltys.seedvault.R import com.stevesoltys.seedvault.restore.RestoreViewModel +import com.stevesoltys.seedvault.ui.getColorAccent import org.koin.androidx.viewmodel.ext.android.sharedViewModel class InstallProgressFragment : Fragment(), InstallItemListener { @@ -30,8 +33,8 @@ class InstallProgressFragment : Fragment(), InstallItemListener { private val layoutManager = LinearLayoutManager(context) private val adapter = InstallProgressAdapter(this) + private lateinit var suw_layout: GlifLayout private lateinit var progressBar: ProgressBar - private lateinit var titleView: TextView private lateinit var backupNameView: TextView private lateinit var appList: RecyclerView private lateinit var button: Button @@ -43,17 +46,21 @@ class InstallProgressFragment : Fragment(), InstallItemListener { ): View { val v: View = inflater.inflate(R.layout.fragment_restore_progress, container, false) + suw_layout = v.findViewById(R.id.setup_wizard_layout) progressBar = v.findViewById(R.id.progressBar) - titleView = v.findViewById(R.id.titleView) backupNameView = v.findViewById(R.id.backupNameView) appList = v.findViewById(R.id.appList) button = v.findViewById(R.id.button) + val icon: Drawable = suw_layout.getIcon() + icon.setTintList(getColorAccent(requireContext())) + suw_layout.setIcon(icon) + return v } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - titleView.setText(R.string.restore_installing_packages) + suw_layout.setHeaderText(R.string.restore_installing_packages) appList.apply { layoutManager = this@InstallProgressFragment.layoutManager diff --git a/app/src/main/java/com/stevesoltys/seedvault/ui/storage/StorageRootsFragment.kt b/app/src/main/java/com/stevesoltys/seedvault/ui/storage/StorageRootsFragment.kt index 61439e7c..1b5dc295 100644 --- a/app/src/main/java/com/stevesoltys/seedvault/ui/storage/StorageRootsFragment.kt +++ b/app/src/main/java/com/stevesoltys/seedvault/ui/storage/StorageRootsFragment.kt @@ -7,6 +7,7 @@ import android.content.Intent import android.content.Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION import android.content.Intent.FLAG_GRANT_READ_URI_PERMISSION import android.content.Intent.FLAG_GRANT_WRITE_URI_PERMISSION +import android.graphics.drawable.Drawable import android.net.Uri import android.os.Bundle import android.view.LayoutInflater @@ -14,6 +15,7 @@ import android.view.View import android.view.View.INVISIBLE import android.view.View.VISIBLE import android.view.ViewGroup +import android.widget.Button import android.widget.ImageView import android.widget.ProgressBar import android.widget.TextView @@ -21,9 +23,11 @@ import androidx.activity.result.contract.ActivityResultContracts.OpenDocumentTre import androidx.annotation.RequiresPermission import androidx.fragment.app.Fragment import androidx.recyclerview.widget.RecyclerView +import com.google.android.setupdesign.GlifLayout import com.google.android.setupcompat.util.ResultCodes.RESULT_SKIP import com.stevesoltys.seedvault.R import com.stevesoltys.seedvault.ui.INTENT_EXTRA_IS_RESTORE +import com.stevesoltys.seedvault.ui.getColorAccent import org.koin.androidx.viewmodel.ext.android.getSharedViewModel internal class StorageRootsFragment : Fragment(), StorageRootClickedListener { @@ -39,14 +43,14 @@ internal class StorageRootsFragment : Fragment(), StorageRootClickedListener { } } + private lateinit var suw_layout: GlifLayout private lateinit var viewModel: StorageViewModel - private lateinit var titleView: TextView private lateinit var warningIcon: ImageView private lateinit var warningText: TextView private lateinit var divider: View private lateinit var listView: RecyclerView private lateinit var progressBar: ProgressBar - private lateinit var skipView: TextView + private lateinit var skipView: Button private val adapter by lazy { StorageRootAdapter(viewModel.isRestoreOperation, this) } @@ -57,7 +61,7 @@ internal class StorageRootsFragment : Fragment(), StorageRootClickedListener { ): View { val v: View = inflater.inflate(R.layout.fragment_storage_root, container, false) - titleView = v.findViewById(R.id.titleView) + suw_layout = v.findViewById(R.id.setup_wizard_layout) warningIcon = v.findViewById(R.id.warningIcon) warningText = v.findViewById(R.id.warningText) divider = v.findViewById(R.id.divider) @@ -65,6 +69,10 @@ internal class StorageRootsFragment : Fragment(), StorageRootClickedListener { progressBar = v.findViewById(R.id.progressBar) skipView = v.findViewById(R.id.skipView) + val icon: Drawable = suw_layout.getIcon() + icon.setTintList(getColorAccent(requireContext())) + suw_layout.setIcon(icon) + return v } @@ -78,7 +86,7 @@ internal class StorageRootsFragment : Fragment(), StorageRootClickedListener { } if (viewModel.isRestoreOperation) { - titleView.text = getString(R.string.storage_fragment_restore_title) + suw_layout.setHeaderText(R.string.restore_restoring) skipView.visibility = VISIBLE skipView.setOnClickListener { requireActivity().setResult(RESULT_SKIP) diff --git a/app/src/main/res/layout/footer_snapshots.xml b/app/src/main/res/layout/footer_snapshots.xml index d6c75b3b..05a7746e 100644 --- a/app/src/main/res/layout/footer_snapshots.xml +++ b/app/src/main/res/layout/footer_snapshots.xml @@ -2,10 +2,12 @@ + android:layout_height="wrap_content" + style="@style/SudContentFrame"> - - + android:layout_height="match_parent" + android:icon="@drawable/ic_cloud_restore" + app:sucHeaderText="@string/restore_storage_in_progress_title"> - + - + - +