diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/SettingsWrapperFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/SettingsWrapperFragment.kt deleted file mode 100644 index a087a6224b..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/SettingsWrapperFragment.kt +++ /dev/null @@ -1,52 +0,0 @@ -package org.thoughtcrime.securesms.components.settings.app.wrapped - -import android.os.Bundle -import android.view.View -import androidx.activity.OnBackPressedCallback -import androidx.annotation.StringRes -import androidx.appcompat.widget.Toolbar -import androidx.fragment.app.Fragment -import org.thoughtcrime.securesms.R - -/** - * Wraps a fragment to give it a Settings style toolbar. This class should be used sparingly, and - * is really only here as stop-gap as we migrate more settings screens to the new UI - */ -abstract class SettingsWrapperFragment : Fragment(R.layout.settings_wrapper_fragment) { - - protected lateinit var toolbar: Toolbar - private set - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - toolbar = view.findViewById(R.id.toolbar) - - toolbar.setNavigationOnClickListener { - onBackPressed() - } - - requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, OnBackPressed()) - - childFragmentManager - .beginTransaction() - .replace(R.id.wrapped_fragment, getFragment()) - .commit() - } - - abstract fun getFragment(): Fragment - - fun setTitle(@StringRes titleId: Int) { - toolbar.setTitle(titleId) - } - - private fun onBackPressed() { - if (!childFragmentManager.popBackStackImmediate()) { - requireActivity().onNavigateUp() - } - } - - private inner class OnBackPressed : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - onBackPressed() - } - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/WrappedAdvancedPinPreferenceFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/WrappedAdvancedPinPreferenceFragment.kt deleted file mode 100644 index 4547118207..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/WrappedAdvancedPinPreferenceFragment.kt +++ /dev/null @@ -1,12 +0,0 @@ -package org.thoughtcrime.securesms.components.settings.app.wrapped - -import androidx.fragment.app.Fragment -import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.preferences.AdvancedPinPreferenceFragment - -class WrappedAdvancedPinPreferenceFragment : SettingsWrapperFragment() { - override fun getFragment(): Fragment { - toolbar.setTitle(R.string.preferences__advanced_pin_settings_title) - return AdvancedPinPreferenceFragment() - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/WrappedBackupsPreferenceFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/WrappedBackupsPreferenceFragment.kt deleted file mode 100644 index c8fdd15e35..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/WrappedBackupsPreferenceFragment.kt +++ /dev/null @@ -1,12 +0,0 @@ -package org.thoughtcrime.securesms.components.settings.app.wrapped - -import androidx.fragment.app.Fragment -import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.preferences.BackupsPreferenceFragment - -class WrappedBackupsPreferenceFragment : SettingsWrapperFragment() { - override fun getFragment(): Fragment { - toolbar.setTitle(R.string.BackupsPreferenceFragment__chat_backups) - return BackupsPreferenceFragment() - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/WrappedDeleteAccountFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/WrappedDeleteAccountFragment.kt deleted file mode 100644 index f07b2a22d1..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/WrappedDeleteAccountFragment.kt +++ /dev/null @@ -1,12 +0,0 @@ -package org.thoughtcrime.securesms.components.settings.app.wrapped - -import androidx.fragment.app.Fragment -import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.delete.DeleteAccountFragment - -class WrappedDeleteAccountFragment : SettingsWrapperFragment() { - override fun getFragment(): Fragment { - toolbar.setTitle(R.string.preferences__delete_account) - return DeleteAccountFragment() - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/WrappedEditProxyFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/WrappedEditProxyFragment.kt deleted file mode 100644 index 033189ccff..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/WrappedEditProxyFragment.kt +++ /dev/null @@ -1,12 +0,0 @@ -package org.thoughtcrime.securesms.components.settings.app.wrapped - -import androidx.fragment.app.Fragment -import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.preferences.EditProxyFragment - -class WrappedEditProxyFragment : SettingsWrapperFragment() { - override fun getFragment(): Fragment { - toolbar.setTitle(R.string.preferences_use_proxy) - return EditProxyFragment() - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/WrappedHelpFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/WrappedHelpFragment.kt deleted file mode 100644 index 8fc7d626ef..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/wrapped/WrappedHelpFragment.kt +++ /dev/null @@ -1,16 +0,0 @@ -package org.thoughtcrime.securesms.components.settings.app.wrapped - -import androidx.fragment.app.Fragment -import org.thoughtcrime.securesms.R -import org.thoughtcrime.securesms.help.HelpFragment - -class WrappedHelpFragment : SettingsWrapperFragment() { - override fun getFragment(): Fragment { - toolbar.title = getString(R.string.preferences__help) - - val fragment = HelpFragment() - fragment.arguments = arguments - - return fragment - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/delete/DeleteAccountFragment.java b/app/src/main/java/org/thoughtcrime/securesms/delete/DeleteAccountFragment.java index 49af8570a9..e8c5c9924f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/delete/DeleteAccountFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/delete/DeleteAccountFragment.java @@ -24,8 +24,10 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; +import androidx.navigation.Navigation; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.snackbar.Snackbar; @@ -60,6 +62,7 @@ public class DeleteAccountFragment extends Fragment { public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { Spinner countrySpinner = view.findViewById(R.id.delete_account_fragment_country_spinner); View confirm = view.findViewById(R.id.delete_account_fragment_delete); + Toolbar toolbar = view.findViewById(R.id.toolbar); bullets = view.findViewById(R.id.delete_account_fragment_bullets); countryCode = view.findViewById(R.id.delete_account_fragment_country_code); @@ -76,6 +79,7 @@ public class DeleteAccountFragment extends Fragment { countryCode.getInput().addTextChangedListener(new AfterTextChanged(this::afterCountryCodeChanged)); countryCode.getInput().setImeOptions(EditorInfo.IME_ACTION_NEXT); confirm.setOnClickListener(unused -> viewModel.submit()); + toolbar.setNavigationOnClickListener(v -> Navigation.findNavController(v).popBackStack()); initializeSpinner(countrySpinner); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/help/HelpFragment.java b/app/src/main/java/org/thoughtcrime/securesms/help/HelpFragment.java index 30c0bc413d..a32d2dc30c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/help/HelpFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/help/HelpFragment.java @@ -18,7 +18,9 @@ import androidx.annotation.IdRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StringRes; +import androidx.appcompat.widget.Toolbar; import androidx.lifecycle.ViewModelProvider; +import androidx.navigation.Navigation; import com.annimon.stream.Stream; @@ -61,6 +63,7 @@ public class HelpFragment extends LoggingFragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { initializeViewModels(); + initializeToolbar(view); initializeViews(view); initializeListeners(); initializeObservers(); @@ -138,6 +141,11 @@ public class HelpFragment extends LoggingFragment { }); } + private void initializeToolbar(@NonNull View view) { + Toolbar toolbar = view.findViewById(R.id.toolbar); + toolbar.setNavigationOnClickListener(v -> Navigation.findNavController(v).navigateUp()); + } + private void handleEmojiClicked(@NonNull View clicked) { if (clicked.isSelected()) { clicked.setSelected(false); diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/BackupsPreferenceFragment.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/BackupsPreferenceFragment.java index 07f8ec95d2..2f147d8a3d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/BackupsPreferenceFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/BackupsPreferenceFragment.java @@ -17,8 +17,10 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; +import androidx.appcompat.widget.Toolbar; import androidx.core.text.HtmlCompat; import androidx.fragment.app.Fragment; +import androidx.navigation.Navigation; import com.google.android.material.timepicker.MaterialTimePicker; import com.google.android.material.timepicker.TimeFormat; @@ -74,6 +76,9 @@ public class BackupsPreferenceFragment extends Fragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + Toolbar toolbar = view.findViewById(R.id.toolbar); + toolbar.setNavigationOnClickListener(v -> Navigation.findNavController(v).popBackStack()); + create = view.findViewById(R.id.fragment_backup_create); folder = view.findViewById(R.id.fragment_backup_folder); verify = view.findViewById(R.id.fragment_backup_verify); diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/EditProxyFragment.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/EditProxyFragment.java index 2ba8164c87..2dccb7e197 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/EditProxyFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/EditProxyFragment.java @@ -11,9 +11,11 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.SwitchCompat; +import androidx.appcompat.widget.Toolbar; import androidx.core.app.ShareCompat; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; +import androidx.navigation.Navigation; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -54,6 +56,9 @@ public class EditProxyFragment extends Fragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + Toolbar toolbar = view.findViewById(R.id.toolbar); + toolbar.setNavigationOnClickListener(v -> Navigation.findNavController(v).popBackStack()); + this.proxySwitch = view.findViewById(R.id.edit_proxy_switch); this.proxyTitle = view.findViewById(R.id.edit_proxy_address_title); this.proxyText = view.findViewById(R.id.edit_proxy_host); diff --git a/app/src/main/res/layout/delete_account_fragment.xml b/app/src/main/res/layout/delete_account_fragment.xml index e5f78f2a71..c00f3c316c 100644 --- a/app/src/main/res/layout/delete_account_fragment.xml +++ b/app/src/main/res/layout/delete_account_fragment.xml @@ -11,6 +11,17 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> + + + diff --git a/app/src/main/res/layout/edit_proxy_fragment.xml b/app/src/main/res/layout/edit_proxy_fragment.xml index 06826c4a3d..eb3992beab 100644 --- a/app/src/main/res/layout/edit_proxy_fragment.xml +++ b/app/src/main/res/layout/edit_proxy_fragment.xml @@ -5,8 +5,17 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent" - android:padding="16dp"> + android:layout_height="match_parent"> + + @@ -25,6 +35,7 @@ android:text="@string/preferences_only_use_a_proxy_if" style="@style/Signal.Text.Preview" android:textColor="@color/signal_text_secondary" + android:layout_marginStart="16dp" app:layout_constraintTop_toBottomOf="@id/edit_proxy_switch_title" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/edit_proxy_switch"/> @@ -34,6 +45,7 @@ android:id="@+id/edit_proxy_switch" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginEnd="16dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@id/edit_proxy_switch_title" app:layout_constraintBottom_toBottomOf="@id/edit_proxy_switch_title_description"/> @@ -43,6 +55,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="25dp" + android:layout_marginHorizontal="16dp" style="@style/Signal.Text.Preview" android:fontFamily="sans-serif-medium" android:textColor="@color/signal_accent_primary" @@ -53,8 +66,8 @@ android:id="@+id/edit_proxy_host" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginStart="-2dp" android:hint="@string/preferences_enter_proxy_address" + android:layout_marginHorizontal="16dp" app:layout_constraintTop_toBottomOf="@id/edit_proxy_address_title" tools:hint="https://proxy.parker.org"/> @@ -63,6 +76,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="4dp" + android:layout_marginHorizontal="16dp" style="@style/Signal.Text.Caption" app:layout_constraintTop_toBottomOf="@id/edit_proxy_host" tools:text="@string/preferences_connected_to_proxy"/> @@ -72,6 +86,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="19dp" + android:layout_marginHorizontal="16dp" style="@style/Signal.Text.Body" android:text="@string/preferences_share" app:drawableStartCompat="@drawable/symbol_share_android_24" @@ -90,8 +105,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" - android:layout_marginEnd="16dp" - android:layout_marginBottom="16dp" + android:layout_marginEnd="32dp" + android:layout_marginBottom="32dp" android:textColor="@color/white" android:text="@string/preferences_save" app:cornerRadius="80dp" diff --git a/app/src/main/res/layout/fragment_backups.xml b/app/src/main/res/layout/fragment_backups.xml index d3a076875b..62f2ca53e2 100644 --- a/app/src/main/res/layout/fragment_backups.xml +++ b/app/src/main/res/layout/fragment_backups.xml @@ -11,6 +11,16 @@ android:layout_height="match_parent" android:orientation="vertical"> + + + + + app:layout_constraintTop_toBottomOf="@id/toolbar" /> @@ -387,7 +387,7 @@ @@ -504,7 +504,7 @@ @@ -539,7 +539,7 @@