diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4f49128f..cdbe1b74 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -30,10 +30,10 @@
android:launchMode="singleTask">
+
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/fastaccess/data/dao/model/Setting.java b/app/src/main/java/com/fastaccess/data/dao/model/Setting.java
new file mode 100644
index 00000000..9f88062a
--- /dev/null
+++ b/app/src/main/java/com/fastaccess/data/dao/model/Setting.java
@@ -0,0 +1,36 @@
+package com.fastaccess.data.dao.model;
+
+import android.graphics.drawable.Drawable;
+
+/**
+ * Created by JediB on 5/12/2017.
+ */
+
+public class Setting {
+
+ private int image;
+ private String title;
+ private String summary;
+
+ public static Setting newInstance(int icon, String title, String summary) {
+ Setting setting = new Setting();
+ setting.image = icon;
+ setting.title = title;
+ setting.summary = summary;
+
+ return setting;
+ }
+
+ public int getImage(){
+ return image;
+ }
+
+ public String getTitle(){
+ return title;
+ }
+
+ public String getSummary(){
+ return summary;
+ }
+
+}
diff --git a/app/src/main/java/com/fastaccess/ui/adapter/SettingsAdapter.java b/app/src/main/java/com/fastaccess/ui/adapter/SettingsAdapter.java
new file mode 100644
index 00000000..82d63fc9
--- /dev/null
+++ b/app/src/main/java/com/fastaccess/ui/adapter/SettingsAdapter.java
@@ -0,0 +1,65 @@
+package com.fastaccess.ui.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.fastaccess.R;
+import com.fastaccess.data.dao.model.Setting;
+import com.fastaccess.helper.ActivityHelper;
+
+/**
+ * Created by JediB on 5/12/2017.
+ */
+
+public class SettingsAdapter extends BaseAdapter {
+
+ private Setting[] settings;
+ private Context context;
+
+ public SettingsAdapter(Context context, Setting[] settings) {
+ this.context = context;
+ this.settings = settings;
+ }
+
+ @Override
+ public int getCount() {
+
+ return settings.length;
+ }
+
+ @Override
+ public Setting getItem(int position) {
+ return settings[position];
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ LayoutInflater inflater = ActivityHelper.getActivity(context).getLayoutInflater();
+ View row;
+ row = inflater.inflate(R.layout.icon_row_item, parent, false);
+ TextView title;
+ TextView summary;
+ ImageView image;
+ image = (ImageView) row.findViewById(R.id.iconItemImage);
+ summary = (TextView) row.findViewById(R.id.iconItemSummary);
+ title = (TextView) row.findViewById(R.id.iconItemTitle);
+ title.setText(settings[position].getTitle());
+ summary.setText(settings[position].getSummary());
+ image.setImageResource(settings[position].getImage());
+
+ if(summary.getText().toString().length()<=0)
+ summary.setVisibility(View.GONE);
+
+ return row;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/fastaccess/ui/base/BaseActivity.java b/app/src/main/java/com/fastaccess/ui/base/BaseActivity.java
index c959a379..9c109bdb 100644
--- a/app/src/main/java/com/fastaccess/ui/base/BaseActivity.java
+++ b/app/src/main/java/com/fastaccess/ui/base/BaseActivity.java
@@ -44,6 +44,7 @@ import com.fastaccess.ui.modules.main.orgs.OrgListDialogFragment;
import com.fastaccess.ui.modules.notification.NotificationActivity;
import com.fastaccess.ui.modules.pinned.PinnedReposActivity;
import com.fastaccess.ui.modules.repos.RepoPagerActivity;
+import com.fastaccess.ui.modules.settings.SettingsActivity;
import com.fastaccess.ui.modules.settings.SettingsBottomSheetDialog;
import com.fastaccess.ui.modules.user.UserPagerActivity;
import com.fastaccess.ui.widgets.AvatarLayout;
@@ -72,6 +73,8 @@ public abstract class BaseActivity {
+ Intent intent = new Intent(this, SettingsCategoryActivity.class);
+ intent.putExtra("settings", position);
+ intent.putExtra("title", settings[position].getTitle());
+
+ switch (position) {
+ case 1:
+ startActivityForResult(intent, THEME_CHANGE);
+ break;
+ case 4:
+ showLanguageList();
+ break;
+ default:
+ startActivity(intent);
+ break;
+ }
+ });
+ }
+
+ private void showLanguageList(){
+ final String language = PrefHelper.getString("app_language");
+
+ String names[] = getResources().getStringArray(R.array.languages_array);
+ String values[] = getResources().getStringArray(R.array.languages_array_values);
+
+ int selected = Arrays.asList(values).indexOf(PrefHelper.getString("app_language"));
+
+ AlertDialog.Builder alertDialog = new AlertDialog.Builder(SettingsActivity.this);
+ LayoutInflater inflater = getLayoutInflater();
+ View convertView = inflater.inflate(R.layout.dialog_picker, null);
+ alertDialog.setView(convertView);
+ alertDialog.setTitle("List");
+ RadioGroup radioGroup = (RadioGroup) convertView.findViewById(R.id.picker);
+ radioGroup.setPadding((int) getResources().getDimension(R.dimen.spacing_xs_large), (int) getResources().getDimension(R.dimen.spacing_xs_large),
+ (int) getResources().getDimension(R.dimen.spacing_xs_large), (int) getResources().getDimension(R.dimen.spacing_xs_large));
+ for(int i = 0; i < names.length; i++)
+ {
+ RadioButton radioButtonView = new RadioButton(this);
+ radioButtonView.setText(names[i]);
+ radioButtonView.setId(i);
+ radioButtonView.setGravity(Gravity.CENTER_VERTICAL);
+ radioButtonView.setPadding((int) getResources().getDimension(R.dimen.spacing_xs_large), (int) getResources().getDimension(R.dimen.spacing_xs_large),
+ (int) getResources().getDimension(R.dimen.spacing_xs_large), (int) getResources().getDimension(R.dimen.spacing_xs_large));
+ radioGroup.addView(radioButtonView);
+ if(i==selected)
+ radioGroup.check(i);
+ }
+
+ radioGroup.setOnCheckedChangeListener((group, checkedId) -> {
+ int index = radioGroup.indexOfChild(radioGroup.findViewById(radioGroup.getCheckedRadioButtonId()));
+
+ PrefHelper.set("app_language", values[index]);
+ if(language!=values[index])
+ setResult(RESULT_OK);
+ });
+
+ alertDialog.setView(convertView);
+ alertDialog.show();
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if(requestCode==THEME_CHANGE)
+ setResult(resultCode);
+ }
+
+ @NonNull
+ @Override
+ public TiPresenter providePresenter() {
+ return new SettingsPresenter();
+ }
+}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsFragment.java b/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsFragment.java
index 66991c08..cac34070 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsFragment.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsFragment.java
@@ -1,5 +1,6 @@
package com.fastaccess.ui.modules.settings;
+import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
@@ -79,35 +80,30 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer
PrefGetter.notificationDurationMillis(getActivity().getApplicationContext(), (String) newValue), true);
return true;
} else if (preference.getKey().equalsIgnoreCase("recylerViewAnimation")) {
- restartActivity();
+ getActivity().setResult(Activity.RESULT_OK);
return true;
} else if (preference.getKey().equalsIgnoreCase("rect_avatar")) {
- restartActivity();
+ getActivity().setResult(Activity.RESULT_OK);
return true;
} else if (preference.getKey().equalsIgnoreCase("appTheme")) {
if(newValue.toString().equalsIgnoreCase(appTheme))
return true;
Toasty.warning(getContext(), getString(R.string.change_theme_warning), Toast.LENGTH_LONG).show();
- restartActivity();
+ getActivity().setResult(Activity.RESULT_OK);
return true;
} else if (preference.getKey().equalsIgnoreCase("appColor")) {
if(newValue.toString().equalsIgnoreCase(appColor))
return true;
Toasty.warning(getContext(), getString(R.string.change_theme_warning), Toast.LENGTH_LONG).show();
- restartActivity();
+ getActivity().setResult(Activity.RESULT_OK);
return true;
} else if (preference.getKey().equalsIgnoreCase("app_language")) {
if(newValue.toString().equalsIgnoreCase(app_lauguage))
return true;
- restartActivity();
+ getActivity().setResult(Activity.RESULT_OK);
return true;
}
return false;
}
- private void restartActivity() {
- if (callback != null) {
- callback.onThemeChanged();
- }
- }
}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsMvp.java b/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsMvp.java
new file mode 100644
index 00000000..13d026d2
--- /dev/null
+++ b/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsMvp.java
@@ -0,0 +1,13 @@
+package com.fastaccess.ui.modules.settings;
+
+import com.fastaccess.ui.base.mvp.BaseMvp;
+
+/**
+ * Created by JediB on 5/12/2017.
+ */
+
+public interface SettingsMvp {
+ interface Presenter extends BaseMvp.FAPresenter {
+
+ }
+}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsPresenter.java
new file mode 100644
index 00000000..ebff46f4
--- /dev/null
+++ b/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsPresenter.java
@@ -0,0 +1,27 @@
+package com.fastaccess.ui.modules.settings;
+
+import android.support.annotation.NonNull;
+import android.support.v4.view.ViewPager;
+import android.widget.AutoCompleteTextView;
+
+import com.annimon.stream.Stream;
+import com.fastaccess.R;
+import com.fastaccess.data.dao.model.SearchHistory;
+import com.fastaccess.helper.AppHelper;
+import com.fastaccess.helper.InputHelper;
+import com.fastaccess.ui.base.mvp.presenter.BasePresenter;
+import com.fastaccess.ui.modules.search.SearchMvp;
+import com.fastaccess.ui.modules.search.code.SearchCodeFragment;
+import com.fastaccess.ui.modules.search.issues.SearchIssuesFragment;
+import com.fastaccess.ui.modules.search.repos.SearchReposFragment;
+import com.fastaccess.ui.modules.search.users.SearchUsersFragment;
+
+import java.util.ArrayList;
+
+/**
+ * Created by JediB on 5/12/2017.
+ */
+
+class SettingsPresenter extends BasePresenter implements SettingsMvp.Presenter {
+
+}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/settings/category/SettingsCategoryActivity.java b/app/src/main/java/com/fastaccess/ui/modules/settings/category/SettingsCategoryActivity.java
new file mode 100644
index 00000000..281993c4
--- /dev/null
+++ b/app/src/main/java/com/fastaccess/ui/modules/settings/category/SettingsCategoryActivity.java
@@ -0,0 +1,55 @@
+package com.fastaccess.ui.modules.settings.category;
+
+import android.support.annotation.NonNull;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+
+import com.fastaccess.R;
+import com.fastaccess.ui.base.BaseActivity;
+import com.fastaccess.ui.modules.settings.SettingsFragment;
+
+import net.grandcentrix.thirtyinch.TiPresenter;
+
+public class SettingsCategoryActivity extends BaseActivity {
+
+ @Override
+ protected int layout() {
+ return R.layout.activity_settings_category;
+ }
+
+ @Override
+ protected boolean isTransparent() {
+ return false;
+ }
+
+ @Override
+ protected boolean canBack() {
+ return true;
+ }
+
+ @Override
+ protected boolean isSecured() {
+ return false;
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setResult(RESULT_CANCELED);
+
+ setTitle(getIntent().getStringExtra("title"));
+
+ SettingsCategoryFragment settingsCategoryFragment = new SettingsCategoryFragment();
+
+ getSupportFragmentManager()
+ .beginTransaction()
+ .replace(R.id.settingsContainer, settingsCategoryFragment)
+ .commit();
+ }
+
+ @NonNull
+ @Override
+ public TiPresenter providePresenter() {
+ return new SettingsCategoryPresenter();
+ }
+}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/settings/category/SettingsCategoryFragment.java b/app/src/main/java/com/fastaccess/ui/modules/settings/category/SettingsCategoryFragment.java
new file mode 100644
index 00000000..53673551
--- /dev/null
+++ b/app/src/main/java/com/fastaccess/ui/modules/settings/category/SettingsCategoryFragment.java
@@ -0,0 +1,136 @@
+package com.fastaccess.ui.modules.settings.category;
+
+import android.content.Context;
+import android.content.Intent;
+import android.preference.PreferenceActivity;
+import android.support.annotation.NonNull;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceFragmentCompat;
+import android.widget.FrameLayout;
+import android.widget.Toast;
+
+import com.fastaccess.BuildConfig;
+import com.fastaccess.R;
+import com.fastaccess.helper.ActivityHelper;
+import com.fastaccess.helper.PrefGetter;
+import com.fastaccess.helper.PrefHelper;
+import com.fastaccess.provider.tasks.notification.NotificationSchedulerJobTask;
+import com.fastaccess.ui.base.BaseActivity;
+import com.fastaccess.ui.base.mvp.BaseMvp;
+import com.fastaccess.ui.modules.changelog.ChangelogBottomSheetDialog;
+import com.fastaccess.ui.widgets.SpannableBuilder;
+
+import net.grandcentrix.thirtyinch.TiPresenter;
+
+import butterknife.BindView;
+import es.dmoral.toasty.Toasty;
+
+public class SettingsCategoryFragment extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener {
+
+ @BindView(R.id.settingsContainer)
+ FrameLayout settingsContainer;
+
+ private BaseMvp.FAView callback;
+ private String appTheme;
+ private String appColor;
+ private String app_lauguage;
+
+ @Override
+ public void onAttach(Context context) {
+ super.onAttach(context);
+ this.callback = (BaseMvp.FAView) context;
+
+ appTheme = PrefHelper.getString("appTheme");
+ appColor = PrefHelper.getString("appColor");
+ app_lauguage = PrefHelper.getString("app_language");
+ }
+
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ int settings = getActivity().getIntent().getExtras().getInt("settings", 0);
+
+ switch (settings){
+ case 0:
+ addPreferencesFromResource(R.xml.notification_settings);
+ findPreference("notificationTime").setOnPreferenceChangeListener(this);
+ break;
+ case 1:
+ addPreferencesFromResource(R.xml.behaviour_settings);
+ break;
+ case 2:
+ addPreferencesFromResource(R.xml.customization_settings);
+ if (BuildConfig.FDROID) {
+ findPreference("enable_ads").setVisible(false);
+ }
+ findPreference("recylerViewAnimation").setOnPreferenceChangeListener(this);
+ findPreference("rect_avatar").setOnPreferenceChangeListener(this);
+ findPreference("appTheme").setOnPreferenceChangeListener(this);
+ findPreference("appColor").setOnPreferenceChangeListener(this);
+ break;
+ case 3:
+ addPreferencesFromResource(R.xml.about_settings);
+ findPreference("showChangelog").setOnPreferenceClickListener(preference -> {
+ new ChangelogBottomSheetDialog().show(getChildFragmentManager(), "ChangelogBottomSheetDialog");
+ return true;
+ });
+ findPreference("joinSlack").setOnPreferenceClickListener(preference -> {
+ ActivityHelper.startCustomTab(getActivity(), "http://rebrand.ly/fasthub");
+ return true;
+ });
+ findPreference("currentVersion").setSummary(SpannableBuilder.builder()
+ .append(getString(R.string.current_version))
+ .append("(")
+ .bold(BuildConfig.VERSION_NAME)
+ .append(")"));
+ break;
+ default:
+ addPreferencesFromResource(R.xml.fasthub_settings);
+ break;
+ }
+ }
+
+ @Override public boolean onPreferenceChange(Preference preference, Object newValue) {
+ if (preference.getKey().equalsIgnoreCase("notificationTime")) {
+ NotificationSchedulerJobTask.scheduleJob(getActivity().getApplicationContext(),
+ PrefGetter.notificationDurationMillis(getActivity().getApplicationContext(), (String) newValue), true);
+ return true;
+ } else if (preference.getKey().equalsIgnoreCase("recylerViewAnimation")) {
+ callback.onThemeChanged();
+ return true;
+ } else if (preference.getKey().equalsIgnoreCase("rect_avatar")) {
+ callback.onThemeChanged();
+ return true;
+ } else if (preference.getKey().equalsIgnoreCase("appTheme")) {
+ if(newValue.toString().equalsIgnoreCase(appTheme))
+ return true;
+ Toasty.warning(getContext(), getString(R.string.change_theme_warning), Toast.LENGTH_LONG).show();
+ callback.onThemeChanged();
+ return true;
+ } else if (preference.getKey().equalsIgnoreCase("appColor")) {
+ if(newValue.toString().equalsIgnoreCase(appColor))
+ return true;
+ Toasty.warning(getContext(), getString(R.string.change_theme_warning), Toast.LENGTH_LONG).show();
+ callback.onThemeChanged();
+ return true;
+ } else if (preference.getKey().equalsIgnoreCase("app_language")) {
+ if(newValue.toString().equalsIgnoreCase(app_lauguage))
+ return true;
+ callback.onThemeChanged();
+ return true;
+ }
+ return false;
+ }
+
+
+ /*
+
+
+
+ findPreference("app_language").setOnPreferenceChangeListener(this);
+
+
+
+ */
+}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/settings/category/SettingsCategoryMvp.java b/app/src/main/java/com/fastaccess/ui/modules/settings/category/SettingsCategoryMvp.java
new file mode 100644
index 00000000..8fe940f8
--- /dev/null
+++ b/app/src/main/java/com/fastaccess/ui/modules/settings/category/SettingsCategoryMvp.java
@@ -0,0 +1,18 @@
+package com.fastaccess.ui.modules.settings.category;
+
+import com.fastaccess.ui.base.mvp.BaseMvp;
+
+/**
+ * Created by JediB on 5/12/2017.
+ */
+
+public interface SettingsCategoryMvp {
+ interface View extends BaseMvp.FAView {
+ @Override
+ void onThemeChanged();
+ }
+
+ interface Presenter extends BaseMvp.FAPresenter {
+
+ }
+}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/settings/category/SettingsCategoryPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/settings/category/SettingsCategoryPresenter.java
new file mode 100644
index 00000000..acc251ca
--- /dev/null
+++ b/app/src/main/java/com/fastaccess/ui/modules/settings/category/SettingsCategoryPresenter.java
@@ -0,0 +1,10 @@
+package com.fastaccess.ui.modules.settings.category;
+
+import com.fastaccess.ui.base.mvp.presenter.BasePresenter;
+
+/**
+ * Created by JediB on 5/12/2017.
+ */
+
+class SettingsCategoryPresenter extends BasePresenter implements SettingsCategoryMvp.Presenter{
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_blank.xml b/app/src/main/res/drawable/ic_blank.xml
new file mode 100644
index 00000000..01862fa9
--- /dev/null
+++ b/app/src/main/res/drawable/ic_blank.xml
@@ -0,0 +1,7 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_brush.xml b/app/src/main/res/drawable/ic_brush.xml
new file mode 100644
index 00000000..d22a86bb
--- /dev/null
+++ b/app/src/main/res/drawable/ic_brush.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_check.xml b/app/src/main/res/drawable/ic_check.xml
new file mode 100644
index 00000000..b5ee0517
--- /dev/null
+++ b/app/src/main/res/drawable/ic_check.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_color_lens.xml b/app/src/main/res/drawable/ic_color_lens.xml
new file mode 100644
index 00000000..aa09a6ca
--- /dev/null
+++ b/app/src/main/res/drawable/ic_color_lens.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_crop_square.xml b/app/src/main/res/drawable/ic_crop_square.xml
new file mode 100644
index 00000000..17b0e931
--- /dev/null
+++ b/app/src/main/res/drawable/ic_crop_square.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_info.xml b/app/src/main/res/drawable/ic_info.xml
new file mode 100644
index 00000000..c525aa4b
--- /dev/null
+++ b/app/src/main/res/drawable/ic_info.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_slack.xml b/app/src/main/res/drawable/ic_slack.xml
new file mode 100644
index 00000000..634fc004
--- /dev/null
+++ b/app/src/main/res/drawable/ic_slack.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_support.xml b/app/src/main/res/drawable/ic_support.xml
new file mode 100644
index 00000000..140a22a0
--- /dev/null
+++ b/app/src/main/res/drawable/ic_support.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_track_changes.xml b/app/src/main/res/drawable/ic_track_changes.xml
new file mode 100644
index 00000000..1de0abf4
--- /dev/null
+++ b/app/src/main/res/drawable/ic_track_changes.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_update.xml b/app/src/main/res/drawable/ic_update.xml
new file mode 100644
index 00000000..b37eda0f
--- /dev/null
+++ b/app/src/main/res/drawable/ic_update.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_wrap_text.xml b/app/src/main/res/drawable/ic_wrap_text.xml
new file mode 100644
index 00000000..0225aeb9
--- /dev/null
+++ b/app/src/main/res/drawable/ic_wrap_text.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
new file mode 100644
index 00000000..c31f1e66
--- /dev/null
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_settings_category.xml b/app/src/main/res/layout/activity_settings_category.xml
new file mode 100644
index 00000000..8da74ff5
--- /dev/null
+++ b/app/src/main/res/layout/activity_settings_category.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_picker.xml b/app/src/main/res/layout/dialog_picker.xml
new file mode 100644
index 00000000..d5e44c25
--- /dev/null
+++ b/app/src/main/res/layout/dialog_picker.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/icon_row_item.xml b/app/src/main/res/layout/icon_row_item.xml
new file mode 100644
index 00000000..1be4f419
--- /dev/null
+++ b/app/src/main/res/layout/icon_row_item.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 98827330..61a10a55 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -319,6 +319,7 @@
Unterstützen mit 10$
Unterstützen mit 20$
App Sprache
+ Sprache
Spracheinstellung
Wähle deine bevorzugte Sprache
Deabbonieren
diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml
index 48103737..3fc9893a 100644
--- a/app/src/main/res/values-in/strings.xml
+++ b/app/src/main/res/values-in/strings.xml
@@ -329,6 +329,7 @@
Dukung dengan $10.00
Dukung dengan $20.00
Bahasa Aplikasi
+ Bahasa
Pilih Bahasa
Pilih bahasa pilihan Anda
Berhenti berlangganan
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index e1569be7..6fe52a65 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -325,6 +325,7 @@
Supporta con $10.00
Supporta con $20.00
Lingua app
+ Lingua
Scegli la lingua
Scegli la tua lingua preferita
Disiscriviti
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index d46865c2..88844f4f 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -339,6 +339,7 @@
Пожертвовать $10.00
Пожертвовать $20.00
Язык приложения
+ Язык
Выберите язык
Выберите нужный язык
\ No newline at end of file
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 7bf2c293..d6c2e188 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -316,6 +316,7 @@
Seç
Resim Seç
Uygulama Dili
+ Uygulama Dili
Dil seçiniz
Tercih ettiğiniz dili seçin
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 17947169..22bd23c6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -238,6 +238,7 @@
Notification sync interval
Every
Behavior
+ Customization
Enable list animations
List animation
Disable dialog preventing accidental app closure
@@ -400,6 +401,7 @@
Support with $10.00
Support with $20.00
App Language
+ Language
Choose Language
Choose your preferred language
Unsubscribe
diff --git a/app/src/main/res/xml/about_settings.xml b/app/src/main/res/xml/about_settings.xml
new file mode 100644
index 00000000..ffd0ff88
--- /dev/null
+++ b/app/src/main/res/xml/about_settings.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/behaviour_settings.xml b/app/src/main/res/xml/behaviour_settings.xml
new file mode 100644
index 00000000..3e1658b4
--- /dev/null
+++ b/app/src/main/res/xml/behaviour_settings.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/customization_settings.xml b/app/src/main/res/xml/customization_settings.xml
new file mode 100644
index 00000000..68b5a7a8
--- /dev/null
+++ b/app/src/main/res/xml/customization_settings.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/fasthub_settings.xml b/app/src/main/res/xml/fasthub_settings.xml
index 520e73c2..f88d3b88 100644
--- a/app/src/main/res/xml/fasthub_settings.xml
+++ b/app/src/main/res/xml/fasthub_settings.xml
@@ -11,18 +11,21 @@
android:entries="@array/notification_duration"
android:entryValues="@array/notification_duration"
android:key="notificationTime"
+ android:icon="@drawable/ic_time"
android:summary="@string/background_job_summary"
android:title="@string/background_job_title"/>
@@ -41,6 +44,7 @@
android:entries="@array/theme_modes"
android:entryValues="@array/theme_modes"
android:key="appTheme"
+ android:icon="@drawable/ic_brush"
android:summary="@string/theme_summary"
android:title="@string/theme_title"/>
@@ -50,6 +54,7 @@
android:entries="@array/theme_colors"
android:entryValues="@array/theme_colors"
android:key="appColor"
+ android:icon="@drawable/ic_blank"
android:summary="@string/theme_color_summary"
android:title="@string/theme_color_title"/>
diff --git a/app/src/main/res/xml/language_settings.xml b/app/src/main/res/xml/language_settings.xml
new file mode 100644
index 00000000..37567c90
--- /dev/null
+++ b/app/src/main/res/xml/language_settings.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/notification_settings.xml b/app/src/main/res/xml/notification_settings.xml
new file mode 100644
index 00000000..22b7355e
--- /dev/null
+++ b/app/src/main/res/xml/notification_settings.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file