mirror of https://codeberg.org/tom79/Fedilab
parent
5ed1fc7a02
commit
9e71d9d3b0
@ -1,208 +0,0 @@
|
||||
package app.fedilab.android.activities;
|
||||
/* Copyright 2022 Thomas Schneider
|
||||
*
|
||||
* This file is a part of Fedilab
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under the terms of the
|
||||
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* Fedilab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
* Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with Fedilab; if not,
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
import static app.fedilab.android.BaseMainActivity.currentAccount;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.os.Bundle;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import app.fedilab.android.R;
|
||||
import app.fedilab.android.databinding.ActivitySettingsBinding;
|
||||
import app.fedilab.android.helper.ThemeHelper;
|
||||
import app.fedilab.android.ui.fragment.settings.FragmentComposeSettings;
|
||||
import app.fedilab.android.ui.fragment.settings.FragmentInterfaceSettings;
|
||||
import app.fedilab.android.ui.fragment.settings.FragmentLanguageSettings;
|
||||
import app.fedilab.android.ui.fragment.settings.FragmentNotificationsSettings;
|
||||
import app.fedilab.android.ui.fragment.settings.FragmentPrivacySettings;
|
||||
import app.fedilab.android.ui.fragment.settings.FragmentThemingSettings;
|
||||
import app.fedilab.android.ui.fragment.settings.FragmentTimelinesSettings;
|
||||
|
||||
|
||||
public class SettingsActivity extends BaseActivity {
|
||||
|
||||
private ActivitySettingsBinding binding;
|
||||
private boolean canGoBack;
|
||||
private Fragment currentFragment;
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
ThemeHelper.applyThemeBar(this);
|
||||
binding = ActivitySettingsBinding.inflate(getLayoutInflater());
|
||||
setContentView(binding.getRoot());
|
||||
|
||||
if (getSupportActionBar() != null) {
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(this, R.color.cyanea_primary)));
|
||||
}
|
||||
canGoBack = false;
|
||||
|
||||
binding.setAccount.setOnClickListener(v -> displaySettings(SettingsEnum.ACCOUNT));
|
||||
binding.setTimelines.setOnClickListener(v -> displaySettings(SettingsEnum.TIMELINES));
|
||||
binding.setNotifications.setOnClickListener(v -> displaySettings(SettingsEnum.NOTIFICATIONS));
|
||||
binding.setInterface.setOnClickListener(v -> displaySettings(SettingsEnum.INTERFACE));
|
||||
binding.setCompose.setOnClickListener(v -> displaySettings(SettingsEnum.COMPOSE));
|
||||
binding.setPrivacy.setOnClickListener(v -> displaySettings(SettingsEnum.PRIVACY));
|
||||
binding.setTheming.setOnClickListener(v -> displaySettings(SettingsEnum.THEMING));
|
||||
binding.setAdministration.setOnClickListener(v -> displaySettings(SettingsEnum.ADMINISTRATION));
|
||||
binding.setLanguage.setOnClickListener(v -> displaySettings(SettingsEnum.LANGUAGE));
|
||||
if (currentAccount.admin) {
|
||||
binding.setAdministration.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
binding.setAdministration.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
public void displaySettings(SettingsEnum settingsEnum) {
|
||||
|
||||
if (settingsEnum == SettingsEnum.ACCOUNT) {
|
||||
Intent intent = new Intent(SettingsActivity.this, EditProfileActivity.class);
|
||||
startActivity(intent);
|
||||
} else {
|
||||
ThemeHelper.slideViewsToLeft(binding.buttonContainer, binding.fragmentContainer, () -> {
|
||||
FragmentManager fragmentManager = getSupportFragmentManager();
|
||||
FragmentTransaction fragmentTransaction =
|
||||
fragmentManager.beginTransaction();
|
||||
String category = "";
|
||||
switch (settingsEnum) {
|
||||
case TIMELINES:
|
||||
FragmentTimelinesSettings fragmentTimelinesSettings = new FragmentTimelinesSettings();
|
||||
fragmentTransaction.replace(R.id.fragment_container, fragmentTimelinesSettings);
|
||||
currentFragment = fragmentTimelinesSettings;
|
||||
category = getString(R.string.settings_category_label_timelines);
|
||||
break;
|
||||
case NOTIFICATIONS:
|
||||
FragmentNotificationsSettings fragmentNotificationsSettings = new FragmentNotificationsSettings();
|
||||
fragmentTransaction.replace(R.id.fragment_container, fragmentNotificationsSettings);
|
||||
currentFragment = fragmentNotificationsSettings;
|
||||
category = getString(R.string.notifications);
|
||||
break;
|
||||
case INTERFACE:
|
||||
FragmentInterfaceSettings fragmentInterfaceSettings = new FragmentInterfaceSettings();
|
||||
fragmentTransaction.replace(R.id.fragment_container, fragmentInterfaceSettings);
|
||||
currentFragment = fragmentInterfaceSettings;
|
||||
category = getString(R.string.settings_category_label_interface);
|
||||
break;
|
||||
case COMPOSE:
|
||||
FragmentComposeSettings fragmentComposeSettings = new FragmentComposeSettings();
|
||||
fragmentTransaction.replace(R.id.fragment_container, fragmentComposeSettings);
|
||||
currentFragment = fragmentComposeSettings;
|
||||
category = getString(R.string.compose);
|
||||
break;
|
||||
case PRIVACY:
|
||||
FragmentPrivacySettings fragmentPrivacySettings = new FragmentPrivacySettings();
|
||||
fragmentTransaction.replace(R.id.fragment_container, fragmentPrivacySettings);
|
||||
currentFragment = fragmentPrivacySettings;
|
||||
category = getString(R.string.action_privacy);
|
||||
break;
|
||||
case THEMING:
|
||||
FragmentThemingSettings fragmentThemingSettings = new FragmentThemingSettings();
|
||||
fragmentTransaction.replace(R.id.fragment_container, fragmentThemingSettings);
|
||||
currentFragment = fragmentThemingSettings;
|
||||
category = getString(R.string.theming);
|
||||
break;
|
||||
case LANGUAGE:
|
||||
FragmentLanguageSettings fragmentLanguageSettings = new FragmentLanguageSettings();
|
||||
fragmentTransaction.replace(R.id.fragment_container, fragmentLanguageSettings);
|
||||
currentFragment = fragmentLanguageSettings;
|
||||
category = getString(R.string.languages);
|
||||
break;
|
||||
|
||||
}
|
||||
String title = String.format(Locale.getDefault(), "%s - %s", getString(R.string.settings), category);
|
||||
setTitle(title);
|
||||
canGoBack = true;
|
||||
fragmentTransaction.commit();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if (canGoBack) {
|
||||
canGoBack = false;
|
||||
ThemeHelper.slideViewsToRight(binding.fragmentContainer, binding.buttonContainer, () -> {
|
||||
if (currentFragment != null) {
|
||||
FragmentManager fragmentManager = getSupportFragmentManager();
|
||||
FragmentTransaction fragmentTransaction =
|
||||
fragmentManager.beginTransaction();
|
||||
fragmentTransaction.remove(currentFragment).commit();
|
||||
}
|
||||
});
|
||||
setTitle(R.string.settings);
|
||||
} else {
|
||||
super.onBackPressed();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
if (item.getItemId() == android.R.id.home) {
|
||||
onBackPressed();
|
||||
return true;
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
|
||||
public enum SettingsEnum {
|
||||
@SerializedName("ACCOUNT")
|
||||
ACCOUNT("ACCOUNT"),
|
||||
@SerializedName("TIMELINES")
|
||||
TIMELINES("TIMELINES"),
|
||||
@SerializedName("NOTIFICATIONS")
|
||||
NOTIFICATIONS("NOTIFICATIONS"),
|
||||
@SerializedName("INTERFACE")
|
||||
INTERFACE("INTERFACE"),
|
||||
@SerializedName("COMPOSE")
|
||||
COMPOSE("COMPOSE"),
|
||||
@SerializedName("PRIVACY")
|
||||
PRIVACY("PRIVACY"),
|
||||
@SerializedName("THEMING")
|
||||
THEMING("THEMING"),
|
||||
@SerializedName("ADMINISTRATION")
|
||||
ADMINISTRATION("ADMINISTRATION"),
|
||||
@SerializedName("LANGUAGE")
|
||||
LANGUAGE("LANGUAGE");
|
||||
|
||||
private final String value;
|
||||
|
||||
SettingsEnum(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
package app.fedilab.android.activities
|
||||
/* Copyright 2022 Thomas Schneider
|
||||
*
|
||||
* This file is a part of Fedilab
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under the terms of the
|
||||
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* Fedilab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
* Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with Fedilab; if not,
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.ui.AppBarConfiguration
|
||||
import androidx.navigation.ui.navigateUp
|
||||
import androidx.navigation.ui.setupActionBarWithNavController
|
||||
import app.fedilab.android.R
|
||||
import app.fedilab.android.databinding.ActivitySettingsBinding
|
||||
import app.fedilab.android.helper.ThemeHelper
|
||||
|
||||
class SettingsActivity : BaseActivity() {
|
||||
private lateinit var binding: ActivitySettingsBinding
|
||||
private lateinit var appBarConfiguration: AppBarConfiguration
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
ThemeHelper.applyThemeBar(this)
|
||||
|
||||
binding = ActivitySettingsBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
val navController = findNavController(R.id.fragment_container)
|
||||
appBarConfiguration = AppBarConfiguration(navController.graph)
|
||||
setupActionBarWithNavController(navController, appBarConfiguration)
|
||||
}
|
||||
|
||||
override fun onSupportNavigateUp(): Boolean {
|
||||
val navController = findNavController(R.id.fragment_container)
|
||||
return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
|
||||
}
|
||||
}
|
@ -0,0 +1,73 @@
|
||||
package app.fedilab.android.ui.fragment.settings
|
||||
/* Copyright 2022 Thomas Schneider
|
||||
*
|
||||
* This file is a part of Fedilab
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under the terms of the
|
||||
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* Fedilab is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
* Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with Fedilab; if not,
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import app.fedilab.android.BaseMainActivity.currentAccount
|
||||
import app.fedilab.android.R
|
||||
|
||||
class FragmentSettingsCategories : PreferenceFragmentCompat() {
|
||||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
setPreferencesFromResource(R.xml.pref_categories, rootKey)
|
||||
|
||||
findPreference<Preference>(getString(R.string.pref_category_key_account))?.setOnPreferenceClickListener {
|
||||
findNavController().navigate(FragmentSettingsCategoriesDirections.categoriesToAccount())
|
||||
false
|
||||
}
|
||||
|
||||
findPreference<Preference>(getString(R.string.pref_category_key_timeline))?.setOnPreferenceClickListener {
|
||||
findNavController().navigate(FragmentSettingsCategoriesDirections.categoriesToTimelines())
|
||||
false
|
||||
}
|
||||
|
||||
findPreference<Preference>(getString(R.string.pref_category_key_notifications))?.setOnPreferenceClickListener {
|
||||
findNavController().navigate(FragmentSettingsCategoriesDirections.categoriesToNotifications())
|
||||
false
|
||||
}
|
||||
|
||||
findPreference<Preference>(getString(R.string.pref_category_key_interface))?.setOnPreferenceClickListener {
|
||||
findNavController().navigate(FragmentSettingsCategoriesDirections.categoriesToInterface())
|
||||
false
|
||||
}
|
||||
|
||||
findPreference<Preference>(getString(R.string.pref_category_key_compose))?.setOnPreferenceClickListener {
|
||||
findNavController().navigate(FragmentSettingsCategoriesDirections.categoriesToCompose())
|
||||
false
|
||||
}
|
||||
|
||||
findPreference<Preference>(getString(R.string.pref_category_key_privacy))?.setOnPreferenceClickListener {
|
||||
findNavController().navigate(FragmentSettingsCategoriesDirections.categoriesToPrivacy())
|
||||
false
|
||||
}
|
||||
|
||||
findPreference<Preference>(getString(R.string.pref_category_key_theming))?.setOnPreferenceClickListener {
|
||||
findNavController().navigate(FragmentSettingsCategoriesDirections.categoriesToTheming())
|
||||
false
|
||||
}
|
||||
|
||||
val adminPreference = findPreference<Preference>(getString(R.string.pref_category_key_administration))
|
||||
adminPreference?.isVisible = currentAccount.admin
|
||||
adminPreference?.setOnPreferenceClickListener { false }
|
||||
|
||||
findPreference<Preference>(getString(R.string.pref_category_key_languages))?.setOnPreferenceClickListener {
|
||||
findNavController().navigate(FragmentSettingsCategoriesDirections.categoriesToLanguage())
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:duration="150"
|
||||
android:interpolator="@android:anim/linear_interpolator">
|
||||
android:duration="?attr/motionDurationLong1">
|
||||
<alpha
|
||||
android:fromAlpha="0.0"
|
||||
android:toAlpha="1.0" />
|
||||
<translate
|
||||
android:fromXDelta="25%"
|
||||
android:fromXDelta="50%"
|
||||
android:toXDelta="0" />
|
||||
</set>
|
||||
|
@ -1,11 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:duration="150"
|
||||
android:interpolator="@android:anim/linear_interpolator">
|
||||
android:duration="?attr/motionDurationLong1">
|
||||
<alpha
|
||||
android:fromAlpha="1.0"
|
||||
android:toAlpha="0.0" />
|
||||
<translate
|
||||
android:fromXDelta="0"
|
||||
android:toXDelta="-25%" />
|
||||
android:toXDelta="-50%" />
|
||||
</set>
|
||||
|
@ -1,11 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:duration="150"
|
||||
android:interpolator="@android:anim/linear_interpolator">
|
||||
android:duration="?attr/motionDurationLong1">
|
||||
<alpha
|
||||
android:fromAlpha="0.0"
|
||||
android:toAlpha="1.0" />
|
||||
<translate
|
||||
android:fromXDelta="-25%"
|
||||
android:fromXDelta="-50%"
|
||||
android:toXDelta="0" />
|
||||
</set>
|
||||
|
@ -1,11 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:duration="150"
|
||||
android:interpolator="@android:anim/linear_interpolator">
|
||||
android:duration="?attr/motionDurationLong1">
|
||||
<alpha
|
||||
android:fromAlpha="1.0"
|
||||
android:toAlpha="0.0" />
|
||||
<translate
|
||||
android:fromXDelta="0"
|
||||
android:toXDelta="25%" />
|
||||
android:toXDelta="50%" />
|
||||
</set>
|
||||
|
@ -1,10 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM18.92,8h-2.95c-0.32,-1.25 -0.78,-2.45 -1.38,-3.56 1.84,0.63 3.37,1.91 4.33,3.56zM12,4.04c0.83,1.2 1.48,2.53 1.91,3.96h-3.82c0.43,-1.43 1.08,-2.76 1.91,-3.96zM4.26,14C4.1,13.36 4,12.69 4,12s0.1,-1.36 0.26,-2h3.38c-0.08,0.66 -0.14,1.32 -0.14,2 0,0.68 0.06,1.34 0.14,2L4.26,14zM5.08,16h2.95c0.32,1.25 0.78,2.45 1.38,3.56 -1.84,-0.63 -3.37,-1.9 -4.33,-3.56zM8.03,8L5.08,8c0.96,-1.66 2.49,-2.93 4.33,-3.56C8.81,5.55 8.35,6.75 8.03,8zM12,19.96c-0.83,-1.2 -1.48,-2.53 -1.91,-3.96h3.82c-0.43,1.43 -1.08,2.76 -1.91,3.96zM14.34,14L9.66,14c-0.09,-0.66 -0.16,-1.32 -0.16,-2 0,-0.68 0.07,-1.35 0.16,-2h4.68c0.09,0.65 0.16,1.32 0.16,2 0,0.68 -0.07,1.34 -0.16,2zM14.59,19.56c0.6,-1.11 1.06,-2.31 1.38,-3.56h2.95c-0.96,1.65 -2.49,2.93 -4.33,3.56zM16.36,14c0.08,-0.66 0.14,-1.32 0.14,-2 0,-0.68 -0.06,-1.34 -0.14,-2h3.38c0.16,0.64 0.26,1.31 0.26,2s-0.1,1.36 -0.26,2h-3.38z" />
|
||||
</vector>
|
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#000"
|
||||
android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM18.92,8h-2.95c-0.32,-1.25 -0.78,-2.45 -1.38,-3.56 1.84,0.63 3.37,1.91 4.33,3.56zM12,4.04c0.83,1.2 1.48,2.53 1.91,3.96h-3.82c0.43,-1.43 1.08,-2.76 1.91,-3.96zM4.26,14C4.1,13.36 4,12.69 4,12s0.1,-1.36 0.26,-2h3.38c-0.08,0.66 -0.14,1.32 -0.14,2s0.06,1.34 0.14,2L4.26,14zM5.08,16h2.95c0.32,1.25 0.78,2.45 1.38,3.56 -1.84,-0.63 -3.37,-1.9 -4.33,-3.56zM8.03,8L5.08,8c0.96,-1.66 2.49,-2.93 4.33,-3.56C8.81,5.55 8.35,6.75 8.03,8zM12,19.96c-0.83,-1.2 -1.48,-2.53 -1.91,-3.96h3.82c-0.43,1.43 -1.08,2.76 -1.91,3.96zM14.34,14L9.66,14c-0.09,-0.66 -0.16,-1.32 -0.16,-2s0.07,-1.35 0.16,-2h4.68c0.09,0.65 0.16,1.32 0.16,2s-0.07,1.34 -0.16,2zM14.59,19.56c0.6,-1.11 1.06,-2.31 1.38,-3.56h2.95c-0.96,1.65 -2.49,2.93 -4.33,3.56zM16.36,14c0.08,-0.66 0.14,-1.32 0.14,-2s-0.06,-1.34 -0.14,-2h3.38c0.16,0.64 0.26,1.31 0.26,2s-0.1,1.36 -0.26,2h-3.38z" />
|
||||
</vector>
|
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#000"
|
||||
android:pathData="M11.3,2.26l-6,2.25C4.52,4.81 4,5.55 4,6.39v4.7c0,4.83 3.13,9.37 7.43,10.75c0.37,0.12 0.77,0.12 1.14,0c4.3,-1.38 7.43,-5.91 7.43,-10.75v-4.7c0,-0.83 -0.52,-1.58 -1.3,-1.87l-6,-2.25C12.25,2.09 11.75,2.09 11.3,2.26z" />
|
||||
</vector>
|
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#000"
|
||||
android:pathData="M2.53,19.65l1.34,0.56v-9.03l-2.43,5.86c-0.41,1.02 0.08,2.19 1.09,2.61zM22.03,15.95L17.07,3.98c-0.31,-0.75 -1.04,-1.21 -1.81,-1.23 -0.26,0 -0.53,0.04 -0.79,0.15L7.1,5.95c-0.75,0.31 -1.21,1.03 -1.23,1.8 -0.01,0.27 0.04,0.54 0.15,0.8l4.96,11.97c0.31,0.76 1.05,1.22 1.83,1.23 0.26,0 0.52,-0.05 0.77,-0.15l7.36,-3.05c1.02,-0.42 1.51,-1.59 1.09,-2.6zM7.88,8.75c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1 1,0.45 1,1 -0.45,1 -1,1zM5.88,19.75c0,1.1 0.9,2 2,2h1.45l-3.45,-8.34v6.34z" />
|
||||
</vector>
|
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#000"
|
||||
android:pathData="M12,3c-4.97,0 -9,4.03 -9,9s4.03,9 9,9c0.83,0 1.5,-0.67 1.5,-1.5 0,-0.39 -0.15,-0.74 -0.39,-1.01 -0.23,-0.26 -0.38,-0.61 -0.38,-0.99 0,-0.83 0.67,-1.5 1.5,-1.5L16,16c2.76,0 5,-2.24 5,-5 0,-4.42 -4.03,-8 -9,-8zM6.5,12c-0.83,0 -1.5,-0.67 -1.5,-1.5S5.67,9 6.5,9 8,9.67 8,10.5 7.33,12 6.5,12zM9.5,8C8.67,8 8,7.33 8,6.5S8.67,5 9.5,5s1.5,0.67 1.5,1.5S10.33,8 9.5,8zM14.5,8c-0.83,0 -1.5,-0.67 -1.5,-1.5S13.67,5 14.5,5s1.5,0.67 1.5,1.5S15.33,8 14.5,8zM17.5,12c-0.83,0 -1.5,-0.67 -1.5,-1.5S16.67,9 17.5,9s1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5z" />
|
||||
</vector>
|
@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#000"
|
||||
android:pathData="M23,8c0,1.1 -0.9,2 -2,2c-0.18,0 -0.35,-0.02 -0.51,-0.07l-3.56,3.55C16.98,13.64 17,13.82 17,14c0,1.1 -0.9,2 -2,2s-2,-0.9 -2,-2c0,-0.18 0.02,-0.36 0.07,-0.52l-2.55,-2.55C10.36,10.98 10.18,11 10,11c-0.18,0 -0.36,-0.02 -0.52,-0.07l-4.55,4.56C4.98,15.65 5,15.82 5,16c0,1.1 -0.9,2 -2,2s-2,-0.9 -2,-2s0.9,-2 2,-2c0.18,0 0.35,0.02 0.51,0.07l4.56,-4.55C8.02,9.36 8,9.18 8,9c0,-1.1 0.9,-2 2,-2s2,0.9 2,2c0,0.18 -0.02,0.36 -0.07,0.52l2.55,2.55C14.64,12.02 14.82,12 15,12c0.18,0 0.36,0.02 0.52,0.07l3.55,-3.56C19.02,8.35 19,8.18 19,8c0,-1.1 0.9,-2 2,-2S23,6.9 23,8zM23,8c0,1.1 -0.9,2 -2,2c-0.18,0 -0.35,-0.02 -0.51,-0.07l-3.56,3.55C16.98,13.64 17,13.82 17,14c0,1.1 -0.9,2 -2,2s-2,-0.9 -2,-2c0,-0.18 0.02,-0.36 0.07,-0.52l-2.55,-2.55C10.36,10.98 10.18,11 10,11c-0.18,0 -0.36,-0.02 -0.52,-0.07l-4.55,4.56C4.98,15.65 5,15.82 5,16c0,1.1 -0.9,2 -2,2s-2,-0.9 -2,-2s0.9,-2 2,-2c0.18,0 0.35,0.02 0.51,0.07l4.56,-4.55C8.02,9.36 8,9.18 8,9c0,-1.1 0.9,-2 2,-2s2,0.9 2,2c0,0.18 -0.02,0.36 -0.07,0.52l2.55,2.55C14.64,12.02 14.82,12 15,12c0.18,0 0.36,0.02 0.52,0.07l3.55,-3.56C19.02,8.35 19,8.18 19,8c0,-1.1 0.9,-2 2,-2S23,6.9 23,8z" />
|
||||
</vector>
|
@ -1,161 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
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:orientation="vertical">
|
||||
tools:context=".activities.SettingsActivity"
|
||||
tools:ignore="FragmentTagUsage">
|
||||
|
||||
<ScrollView
|
||||
android:id="@+id/button_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="24dp">
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/set_account"
|
||||
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingVertical="12dp"
|
||||
android:text="@string/account"
|
||||
android:textAlignment="textStart"
|
||||
android:textColor="@color/cyanea_accent_dark_reference"
|
||||
app:icon="@drawable/ic_baseline_navigate_next_24"
|
||||
app:iconGravity="end"
|
||||
app:iconTint="@color/cyanea_accent_dark_reference"
|
||||
app:strokeColor="@color/cyanea_accent_dark_reference" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/set_timelines"
|
||||
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingVertical="12dp"
|
||||
android:layout_marginTop="24dp"
|
||||
android:text="@string/settings_category_label_timelines"
|
||||
android:textAlignment="textStart"
|
||||
android:textColor="@color/cyanea_accent_dark_reference"
|
||||
app:iconTint="@color/cyanea_accent_dark_reference"
|
||||
app:icon="@drawable/ic_baseline_navigate_next_24"
|
||||
app:iconGravity="end"
|
||||
app:strokeColor="@color/cyanea_accent_dark_reference" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/set_notifications"
|
||||
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:paddingVertical="12dp"
|
||||
android:text="@string/notifications"
|
||||
android:textAlignment="textStart"
|
||||
android:textColor="@color/cyanea_accent_dark_reference"
|
||||
app:iconTint="@color/cyanea_accent_dark_reference"
|
||||
app:icon="@drawable/ic_baseline_navigate_next_24"
|
||||
app:iconGravity="end"
|
||||
app:strokeColor="@color/cyanea_accent_dark_reference" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/set_interface"
|
||||
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:paddingVertical="12dp"
|
||||
android:text="@string/settings_category_label_interface"
|
||||
android:textAlignment="textStart"
|
||||
android:textColor="@color/cyanea_accent_dark_reference"
|
||||
app:iconTint="@color/cyanea_accent_dark_reference"
|
||||
app:icon="@drawable/ic_baseline_navigate_next_24"
|
||||
app:iconGravity="end"
|
||||
app:strokeColor="@color/cyanea_accent_dark_reference" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/set_compose"
|
||||
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:paddingVertical="12dp"
|
||||
android:text="@string/compose"
|
||||
android:textAlignment="textStart"
|
||||
android:textColor="@color/cyanea_accent_dark_reference"
|
||||
app:iconTint="@color/cyanea_accent_dark_reference"
|
||||
app:icon="@drawable/ic_baseline_navigate_next_24"
|
||||
app:iconGravity="end"
|
||||
app:strokeColor="@color/cyanea_accent_dark_reference" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/set_privacy"
|
||||
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:paddingVertical="12dp"
|
||||
android:text="@string/action_privacy"
|
||||
android:textAlignment="textStart"
|
||||
android:textColor="@color/cyanea_accent_dark_reference"
|
||||
app:iconTint="@color/cyanea_accent_dark_reference"
|
||||
app:icon="@drawable/ic_baseline_navigate_next_24"
|
||||
app:iconGravity="end"
|
||||
app:strokeColor="@color/cyanea_accent_dark_reference" />
|
||||
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/set_theming"
|
||||
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:paddingVertical="12dp"
|
||||
android:text="@string/theming"
|
||||
android:textAlignment="textStart"
|
||||
android:textColor="@color/cyanea_accent_dark_reference"
|
||||
app:iconTint="@color/cyanea_accent_dark_reference"
|
||||
app:icon="@drawable/ic_baseline_navigate_next_24"
|
||||
app:iconGravity="end"
|
||||
app:strokeColor="@color/cyanea_accent_dark_reference" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/set_administration"
|
||||
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:paddingVertical="12dp"
|
||||
android:text="@string/administration"
|
||||
android:textAlignment="textStart"
|
||||
android:textColor="@color/cyanea_accent_dark_reference"
|
||||
app:iconTint="@color/cyanea_accent_dark_reference"
|
||||
app:icon="@drawable/ic_baseline_navigate_next_24"
|
||||
app:iconGravity="end"
|
||||
app:strokeColor="@color/cyanea_accent_dark_reference" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/set_language"
|
||||
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:paddingVertical="12dp"
|
||||
android:text="@string/languages"
|
||||
android:textAlignment="textStart"
|
||||
android:textColor="@color/cyanea_accent_dark_reference"
|
||||
app:iconTint="@color/cyanea_accent_dark_reference"
|
||||
app:icon="@drawable/ic_baseline_navigate_next_24"
|
||||
app:iconGravity="end"
|
||||
app:strokeColor="@color/cyanea_accent_dark_reference" />
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
</ScrollView>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
<fragment
|
||||
android:id="@+id/fragment_container"
|
||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="gone" />
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
app:defaultNavHost="true"
|
||||
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
|
||||
app:navGraph="@navigation/nav_graph_settings" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
@ -0,0 +1,116 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/nav_graph_settings"
|
||||
app:startDestination="@id/FragmentSettingsCategories">
|
||||
|
||||
<fragment
|
||||
android:id="@+id/FragmentSettingsCategories"
|
||||
android:name="app.fedilab.android.ui.fragment.settings.FragmentSettingsCategories"
|
||||
android:label="@string/settings">
|
||||
|
||||
<action
|
||||
android:id="@+id/categories_to_account"
|
||||
app:destination="@id/EditProfileActivity"
|
||||
app:enterAnim="@anim/enter"
|
||||
app:exitAnim="@anim/exit"
|
||||
app:popEnterAnim="@anim/pop_enter"
|
||||
app:popExitAnim="@anim/pop_exit" />
|
||||
|
||||
<action
|
||||
android:id="@+id/categories_to_timelines"
|
||||
app:destination="@id/FragmentTimelinesSettings"
|
||||
app:enterAnim="@anim/enter"
|
||||
app:exitAnim="@anim/exit"
|
||||
app:popEnterAnim="@anim/pop_enter"
|
||||
app:popExitAnim="@anim/pop_exit" />
|
||||
|
||||
<action
|
||||
android:id="@+id/categories_to_notifications"
|
||||
app:destination="@id/FragmentNotificationsSettings"
|
||||
app:enterAnim="@anim/enter"
|
||||
app:exitAnim="@anim/exit"
|
||||
app:popEnterAnim="@anim/pop_enter"
|
||||
app:popExitAnim="@anim/pop_exit" />
|
||||
|
||||
<action
|
||||
android:id="@+id/categories_to_interface"
|
||||
app:destination="@id/FragmentInterfaceSettings"
|
||||
app:enterAnim="@anim/enter"
|
||||
app:exitAnim="@anim/exit"
|
||||
app:popEnterAnim="@anim/pop_enter"
|
||||
app:popExitAnim="@anim/pop_exit" />
|
||||
|
||||
<action
|
||||
android:id="@+id/categories_to_compose"
|
||||
app:destination="@id/FragmentComposeSettings"
|
||||
app:enterAnim="@anim/enter"
|
||||
app:exitAnim="@anim/exit"
|
||||
app:popEnterAnim="@anim/pop_enter"
|
||||
app:popExitAnim="@anim/pop_exit" />
|
||||
|
||||
<action
|
||||
android:id="@+id/categories_to_privacy"
|
||||
app:destination="@id/FragmentPrivacySettings"
|
||||
app:enterAnim="@anim/enter"
|
||||
app:exitAnim="@anim/exit"
|
||||
app:popEnterAnim="@anim/pop_enter"
|
||||
app:popExitAnim="@anim/pop_exit" />
|
||||
|
||||
<action
|
||||
android:id="@+id/categories_to_theming"
|
||||
app:destination="@id/FragmentThemingSettings"
|
||||
app:enterAnim="@anim/enter"
|
||||
app:exitAnim="@anim/exit"
|
||||
app:popEnterAnim="@anim/pop_enter"
|
||||
app:popExitAnim="@anim/pop_exit" />
|
||||
|
||||
<action
|
||||
android:id="@+id/categories_to_language"
|
||||
app:destination="@id/FragmentLanguageSettings"
|
||||
app:enterAnim="@anim/enter"
|
||||
app:exitAnim="@anim/exit"
|
||||
app:popEnterAnim="@anim/pop_enter"
|
||||
app:popExitAnim="@anim/pop_exit" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/FragmentTimelinesSettings"
|
||||
android:name="app.fedilab.android.ui.fragment.settings.FragmentTimelinesSettings"
|
||||
android:label="@string/settings_category_label_timelines" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/FragmentNotificationsSettings"
|
||||
android:name="app.fedilab.android.ui.fragment.settings.FragmentNotificationsSettings"
|
||||
android:label="@string/notifications" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/FragmentInterfaceSettings"
|
||||
android:name="app.fedilab.android.ui.fragment.settings.FragmentInterfaceSettings"
|
||||
android:label="@string/settings_category_label_interface" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/FragmentComposeSettings"
|
||||
android:name="app.fedilab.android.ui.fragment.settings.FragmentComposeSettings"
|
||||
android:label="@string/compose" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/FragmentPrivacySettings"
|
||||
android:name="app.fedilab.android.ui.fragment.settings.FragmentPrivacySettings"
|
||||
android:label="@string/action_privacy" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/FragmentThemingSettings"
|
||||
android:name="app.fedilab.android.ui.fragment.settings.FragmentThemingSettings"
|
||||
android:label="@string/theming" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/FragmentLanguageSettings"
|
||||
android:name="app.fedilab.android.ui.fragment.settings.FragmentLanguageSettings"
|
||||
android:label="@string/languages" />
|
||||
|
||||
<activity
|
||||
android:id="@+id/EditProfileActivity"
|
||||
android:name="app.fedilab.android.activities.EditProfileActivity" />
|
||||
|
||||
</navigation>
|
@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.preference.PreferenceScreen 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_height="match_parent">
|
||||
|
||||
<Preference
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:title="@string/account"
|
||||
app:icon="@drawable/ic_baseline_account_circle_24"
|
||||
app:key="@string/pref_category_key_account" />
|
||||
|
||||
<Preference
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:title="@string/settings_category_label_timelines"
|
||||
app:icon="@drawable/ic_timeline"
|
||||
app:key="@string/pref_category_key_timeline" />
|
||||
|
||||
<Preference
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:title="@string/notifications"
|
||||
app:icon="@drawable/ic_baseline_notifications_24"
|
||||
app:key="@string/pref_category_key_notifications" />
|
||||
|
||||
<Preference
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:title="@string/settings_category_label_interface"
|
||||
app:icon="@drawable/ic_style"
|
||||
app:key="@string/pref_category_key_interface" />
|
||||
|
||||
<Preference
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:title="@string/compose"
|
||||
app:icon="@drawable/ic_baseline_edit_24"
|
||||
app:key="@string/pref_category_key_compose" />
|
||||
|
||||
<Preference
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:title="@string/action_privacy"
|
||||
app:icon="@drawable/ic_shield"
|
||||
app:key="@string/pref_category_key_privacy" />
|
||||
|
||||
<Preference
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:title="@string/theming"
|
||||
app:icon="@drawable/ic_theming"
|
||||
app:key="@string/pref_category_key_theming" />
|
||||
|
||||
<Preference
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:title="@string/administration"
|
||||
app:icon="@drawable/ic_admin"
|
||||
app:key="@string/pref_category_key_administration" />
|
||||
|
||||
<Preference
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:title="@string/languages"
|
||||
app:icon="@drawable/ic_language"
|
||||
app:key="@string/pref_category_key_languages" />
|
||||
|
||||
</androidx.preference.PreferenceScreen>
|
Loading…
Reference in new issue