diff --git a/app/src/main/java/com/sduduzog/slimlauncher/adapters/HomeAdapter.kt b/app/src/main/java/com/sduduzog/slimlauncher/adapters/HomeAdapter.kt index 6d763384..880ef6a4 100644 --- a/app/src/main/java/com/sduduzog/slimlauncher/adapters/HomeAdapter.kt +++ b/app/src/main/java/com/sduduzog/slimlauncher/adapters/HomeAdapter.kt @@ -14,7 +14,11 @@ class HomeAdapter(private val listener: OnLaunchAppListener) : RecyclerView.Adapter() { private var apps: List = listOf() + private var gravity: Int = 3 + constructor(listener: OnLaunchAppListener, alignment: Int) : this(listener) { + setAlignment(alignment) + } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.main_fragment_list_item, parent, false) @@ -24,6 +28,7 @@ class HomeAdapter(private val listener: OnLaunchAppListener) override fun onBindViewHolder(holder: ViewHolder, position: Int) { val item = apps.elementAt(position) holder.mLabelView.text = item.appNickname ?: item.appName + holder.mLabelView.gravity = gravity holder.mLabelView.setOnClickListener { listener.onLaunch(item, it) } @@ -36,6 +41,20 @@ class HomeAdapter(private val listener: OnLaunchAppListener) notifyDataSetChanged() } + fun getGravity(): Int = gravity + + fun setGravity(gravity: Int) { + this.gravity = gravity + } + + fun setAlignment(alignment: Int) { + if (alignment == 2) // right + gravity = 5 + else if (alignment == 1) // center + gravity = 1 + else // left + gravity = 3 + } inner class ViewHolder(mView: View) : RecyclerView.ViewHolder(mView) { val mLabelView: TextView = mView.findViewById(R.id.home_fragment_list_item_app_name) diff --git a/app/src/main/java/com/sduduzog/slimlauncher/ui/dialogs/ChooseAlignmentDialog.kt b/app/src/main/java/com/sduduzog/slimlauncher/ui/dialogs/ChooseAlignmentDialog.kt new file mode 100644 index 00000000..81269932 --- /dev/null +++ b/app/src/main/java/com/sduduzog/slimlauncher/ui/dialogs/ChooseAlignmentDialog.kt @@ -0,0 +1,39 @@ +package com.sduduzog.slimlauncher.ui.dialogs + +import android.app.AlertDialog +import android.app.Dialog +import android.content.Context.MODE_PRIVATE +import android.content.SharedPreferences +import android.os.Bundle +import androidx.core.content.edit +import androidx.fragment.app.DialogFragment +import com.sduduzog.slimlauncher.R + +class ChooseAlignmentDialog : DialogFragment() { + + private lateinit var settings: SharedPreferences + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + val builder = AlertDialog.Builder(requireContext()) + settings = requireContext().getSharedPreferences(getString(R.string.prefs_settings), MODE_PRIVATE) + + val active = settings.getInt(getString(R.string.prefs_settings_alignment), 3) + builder.setTitle(R.string.choose_alignment_dialog_title) + builder.setSingleChoiceItems(R.array.alignment_format_array, active) { dialogInterface, i -> + dialogInterface.dismiss() + settings.edit { + putInt(getString(R.string.prefs_settings_alignment), i) + } + + } + return builder.create() + } + + + companion object { + fun getInstance(): ChooseAlignmentDialog{ + return ChooseAlignmentDialog() + } + } +} + diff --git a/app/src/main/java/com/sduduzog/slimlauncher/ui/main/HomeFragment.kt b/app/src/main/java/com/sduduzog/slimlauncher/ui/main/HomeFragment.kt index 52129886..4aa16840 100644 --- a/app/src/main/java/com/sduduzog/slimlauncher/ui/main/HomeFragment.kt +++ b/app/src/main/java/com/sduduzog/slimlauncher/ui/main/HomeFragment.kt @@ -58,8 +58,13 @@ class HomeFragment : BaseFragment(), OnLaunchAppListener { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - val adapter1 = HomeAdapter(this) - val adapter2 = HomeAdapter(this) + val settingsKey = getString(R.string.prefs_settings) + val alignmentKey: String = getString(R.string.prefs_settings_alignment) + val preferences = requireContext().getSharedPreferences(settingsKey, Context.MODE_PRIVATE) + val alignment = preferences.getInt(alignmentKey, 3) + + val adapter1 = HomeAdapter(this, alignment) + val adapter2 = HomeAdapter(this, alignment) home_fragment_list.adapter = adapter1 home_fragment_list_exp.adapter = adapter2 diff --git a/app/src/main/java/com/sduduzog/slimlauncher/ui/options/OptionsFragment.kt b/app/src/main/java/com/sduduzog/slimlauncher/ui/options/OptionsFragment.kt index 1bf70c95..85532f9a 100644 --- a/app/src/main/java/com/sduduzog/slimlauncher/ui/options/OptionsFragment.kt +++ b/app/src/main/java/com/sduduzog/slimlauncher/ui/options/OptionsFragment.kt @@ -15,6 +15,7 @@ import androidx.navigation.Navigation import com.sduduzog.slimlauncher.R import com.sduduzog.slimlauncher.datasource.UnlauncherDataSource import com.sduduzog.slimlauncher.ui.dialogs.ChangeThemeDialog +import com.sduduzog.slimlauncher.ui.dialogs.ChooseAlignmentDialog import com.sduduzog.slimlauncher.ui.dialogs.ChooseTimeFormatDialog import com.sduduzog.slimlauncher.utils.BaseFragment import com.sduduzog.slimlauncher.utils.isActivityDefaultLauncher @@ -52,6 +53,10 @@ class OptionsFragment : BaseFragment() { val chooseTimeFormatDialog = ChooseTimeFormatDialog.getInstance() chooseTimeFormatDialog.showNow(childFragmentManager, "TIME_FORMAT_CHOOSER") } + options_fragment_choose_alignment.setOnClickListener { + val chooseAlignmentDialog = ChooseAlignmentDialog.getInstance() + chooseAlignmentDialog.showNow(childFragmentManager, "ALIGNMENT_CHOOSER") + } options_fragment_toggle_status_bar.setOnClickListener { val settings = requireContext().getSharedPreferences(getString(R.string.prefs_settings), MODE_PRIVATE) val isHidden = settings.getBoolean(getString(R.string.prefs_settings_key_toggle_status_bar), false) diff --git a/app/src/main/res/layout/main_fragment_list_item.xml b/app/src/main/res/layout/main_fragment_list_item.xml index 0ff1030b..2a606b3e 100644 --- a/app/src/main/res/layout/main_fragment_list_item.xml +++ b/app/src/main/res/layout/main_fragment_list_item.xml @@ -1,7 +1,7 @@ + app:layout_constraintTop_toBottomOf="@id/options_fragment_toggle_status_bar" /> + + + app:layout_constraintBottom_toTopOf="@id/options_fragment_customize_app_drawer" + app:layout_constraintStart_toStartOf="@+id/options_fragment_choose_alignment" + app:layout_constraintTop_toBottomOf="@+id/options_fragment_choose_alignment" /> + app:layout_constraintTop_toBottomOf="@+id/options_fragment_customize_quick_buttons" + /> + app:layout_constraintStart_toStartOf="@+id/options_fragment_customize_app_drawer"/> diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 1b3af10a..1fd7d04c 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -21,6 +21,12 @@ Verstecken + + Links + Mitte + Rechts + + Stil auswählen Unlauncher Zeitformat @@ -34,6 +40,7 @@ Apps einstellen Geräteeinstellungen Appsuche + Apps ausrichten Knöpfe einstellen Appschublade Statusleiste umschalten diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ea0ac3d8..27f18ac7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -28,16 +28,24 @@ Hide + + left + center + right + + settings key_theme time_format hide_status_bar + alignment Choose Time Format Options Device Settings Change Theme Choose Time Format Customise Apps + Choose Alignment Customise Quick Buttons Customise Drawer Toggle Status Bar @@ -62,5 +70,6 @@ Hide App Rename App Uninstall + Choose alignment