mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-12-28 11:35:48 +01:00
Add theme selector to first screen
This commit is contained in:
parent
20d6c87dd8
commit
79a846a907
@ -16,7 +16,10 @@
|
|||||||
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
||||||
package nodomain.freeyourgadget.gadgetbridge.activities.welcome;
|
package nodomain.freeyourgadget.gadgetbridge.activities.welcome;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@ -24,11 +27,18 @@ import android.view.ViewGroup;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||||
|
|
||||||
|
import com.google.android.material.textfield.MaterialAutoCompleteTextView;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
||||||
|
|
||||||
public class WelcomeFragmentIntro extends Fragment {
|
public class WelcomeFragmentIntro extends Fragment {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(WelcomeFragmentIntro.class);
|
private static final Logger LOG = LoggerFactory.getLogger(WelcomeFragmentIntro.class);
|
||||||
@ -37,6 +47,28 @@ public class WelcomeFragmentIntro extends Fragment {
|
|||||||
@Override
|
@Override
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
super.onCreateView(inflater, container, savedInstanceState);
|
super.onCreateView(inflater, container, savedInstanceState);
|
||||||
return inflater.inflate(R.layout.fragment_welcome_intro, container, false);
|
|
||||||
|
final View view = inflater.inflate(R.layout.fragment_welcome_intro, container, false);
|
||||||
|
final String[] themes = getResources().getStringArray(R.array.pref_theme_values);
|
||||||
|
final Prefs prefs = GBApplication.getPrefs();
|
||||||
|
final String currentTheme = prefs.getString("pref_key_theme", getString(R.string.pref_theme_value_system));
|
||||||
|
final int currentThemeIndex = Arrays.asList(themes).indexOf(currentTheme);
|
||||||
|
|
||||||
|
final MaterialAutoCompleteTextView themeMenu = view.findViewById(R.id.app_theme_dropdown_menu);
|
||||||
|
themeMenu.setSaveEnabled(false); // https://github.com/material-components/material-components-android/issues/1464#issuecomment-1258051448
|
||||||
|
themeMenu.setText(getResources().getStringArray(R.array.pref_theme_options)[currentThemeIndex], false);
|
||||||
|
themeMenu.setOnItemClickListener((adapterView, view1, i, l) -> {
|
||||||
|
final SharedPreferences.Editor editor = prefs.getPreferences().edit();
|
||||||
|
editor.putString("pref_key_theme", themes[i]).apply();
|
||||||
|
final Handler handler = new Handler();
|
||||||
|
handler.postDelayed(() -> {
|
||||||
|
// Delay recreation of the Activity to give the dropdown some time to settle.
|
||||||
|
// If we recreate it immediately, the theme popup will reopen, which is not what the user expects.
|
||||||
|
Intent intent = new Intent();
|
||||||
|
intent.setAction(GBApplication.ACTION_THEME_CHANGE);
|
||||||
|
LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent);
|
||||||
|
}, 500);
|
||||||
|
});
|
||||||
|
return view;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
@ -40,5 +41,21 @@
|
|||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:text="@string/first_start_intro_tag_line" />
|
android:text="@string/first_start_intro_tag_line" />
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
style="@style/Widget.Material3.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
|
||||||
|
android:id="@+id/app_theme_dropdown_input"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="30dp"
|
||||||
|
android:hint="@string/pref_title_theme">
|
||||||
|
|
||||||
|
<AutoCompleteTextView
|
||||||
|
android:id="@+id/app_theme_dropdown_menu"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:inputType="none"
|
||||||
|
app:simpleItems="@array/pref_theme_options" />
|
||||||
|
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
Loading…
Reference in New Issue
Block a user