mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-25 22:57:22 +00:00
android: Convert SettingsFragment to Kotlin
This commit is contained in:
parent
469f0ec019
commit
1fc66f1b30
2 changed files with 120 additions and 136 deletions
|
@ -1,136 +0,0 @@
|
||||||
package org.yuzu.yuzu_emu.features.settings.ui;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.view.LayoutInflater;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.ViewGroup;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import androidx.fragment.app.Fragment;
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
|
||||||
|
|
||||||
import org.yuzu.yuzu_emu.R;
|
|
||||||
import org.yuzu.yuzu_emu.features.settings.model.Setting;
|
|
||||||
import org.yuzu.yuzu_emu.features.settings.model.Settings;
|
|
||||||
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem;
|
|
||||||
import org.yuzu.yuzu_emu.ui.DividerItemDecoration;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
public final class SettingsFragment extends Fragment implements SettingsFragmentView {
|
|
||||||
private static final String ARGUMENT_MENU_TAG = "menu_tag";
|
|
||||||
private static final String ARGUMENT_GAME_ID = "game_id";
|
|
||||||
|
|
||||||
private SettingsFragmentPresenter mPresenter = new SettingsFragmentPresenter(this);
|
|
||||||
private SettingsActivityView mActivity;
|
|
||||||
|
|
||||||
private SettingsAdapter mAdapter;
|
|
||||||
|
|
||||||
public static Fragment newInstance(String menuTag, String gameId) {
|
|
||||||
SettingsFragment fragment = new SettingsFragment();
|
|
||||||
|
|
||||||
Bundle arguments = new Bundle();
|
|
||||||
arguments.putString(ARGUMENT_MENU_TAG, menuTag);
|
|
||||||
arguments.putString(ARGUMENT_GAME_ID, gameId);
|
|
||||||
|
|
||||||
fragment.setArguments(arguments);
|
|
||||||
return fragment;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onAttach(@NonNull Context context) {
|
|
||||||
super.onAttach(context);
|
|
||||||
|
|
||||||
mActivity = (SettingsActivityView) context;
|
|
||||||
mPresenter.onAttach();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
|
|
||||||
setRetainInstance(true);
|
|
||||||
String menuTag = getArguments().getString(ARGUMENT_MENU_TAG);
|
|
||||||
String gameId = getArguments().getString(ARGUMENT_GAME_ID);
|
|
||||||
|
|
||||||
mAdapter = new SettingsAdapter(this, getActivity());
|
|
||||||
|
|
||||||
mPresenter.onCreate(menuTag, gameId);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
|
||||||
return inflater.inflate(R.layout.fragment_settings, container, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
|
||||||
LinearLayoutManager manager = new LinearLayoutManager(getActivity());
|
|
||||||
|
|
||||||
RecyclerView recyclerView = view.findViewById(R.id.list_settings);
|
|
||||||
|
|
||||||
recyclerView.setAdapter(mAdapter);
|
|
||||||
recyclerView.setLayoutManager(manager);
|
|
||||||
recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), null));
|
|
||||||
|
|
||||||
SettingsActivityView activity = (SettingsActivityView) getActivity();
|
|
||||||
|
|
||||||
mPresenter.onViewCreated(activity.getSettings());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDetach() {
|
|
||||||
super.onDetach();
|
|
||||||
mActivity = null;
|
|
||||||
|
|
||||||
if (mAdapter != null) {
|
|
||||||
mAdapter.closeDialog();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSettingsFileLoaded(Settings settings) {
|
|
||||||
mPresenter.setSettings(settings);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void passSettingsToActivity(Settings settings) {
|
|
||||||
if (mActivity != null) {
|
|
||||||
mActivity.setSettings(settings);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void showSettingsList(ArrayList<SettingsItem> settingsList) {
|
|
||||||
mAdapter.setSettings(settingsList);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadDefaultSettings() {
|
|
||||||
mPresenter.loadDefaultSettings();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadSubMenu(String menuKey) {
|
|
||||||
mActivity.showSettingsFragment(menuKey, true, getArguments().getString(ARGUMENT_GAME_ID));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void showToastMessage(String message, boolean is_long) {
|
|
||||||
mActivity.showToastMessage(message, is_long);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void putSetting(Setting setting) {
|
|
||||||
mPresenter.putSetting(setting);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSettingChanged() {
|
|
||||||
mActivity.onSettingChanged();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,120 @@
|
||||||
|
package org.yuzu.yuzu_emu.features.settings.ui
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.fragment.app.FragmentActivity
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import com.google.android.material.divider.MaterialDividerItemDecoration
|
||||||
|
import org.yuzu.yuzu_emu.R
|
||||||
|
import org.yuzu.yuzu_emu.features.settings.model.Setting
|
||||||
|
import org.yuzu.yuzu_emu.features.settings.model.Settings
|
||||||
|
import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
|
||||||
|
|
||||||
|
class SettingsFragment : Fragment(), SettingsFragmentView {
|
||||||
|
override lateinit var fragmentActivity: FragmentActivity
|
||||||
|
|
||||||
|
private val presenter = SettingsFragmentPresenter(this)
|
||||||
|
private var activityView: SettingsActivityView? = null
|
||||||
|
private var adapter: SettingsAdapter? = null
|
||||||
|
|
||||||
|
override fun onAttach(context: Context) {
|
||||||
|
super.onAttach(context)
|
||||||
|
activityView = context as SettingsActivityView
|
||||||
|
fragmentActivity = requireActivity()
|
||||||
|
presenter.onAttach()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
val menuTag = requireArguments().getString(ARGUMENT_MENU_TAG)
|
||||||
|
val gameId = requireArguments().getString(ARGUMENT_GAME_ID)
|
||||||
|
adapter = SettingsAdapter(this, requireActivity())
|
||||||
|
presenter.onCreate(menuTag!!, gameId!!)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreateView(
|
||||||
|
inflater: LayoutInflater,
|
||||||
|
container: ViewGroup?,
|
||||||
|
savedInstanceState: Bundle?
|
||||||
|
): View? {
|
||||||
|
return inflater.inflate(R.layout.fragment_settings, container, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
val manager = LinearLayoutManager(activity)
|
||||||
|
val recyclerView = view.findViewById<RecyclerView>(R.id.list_settings)
|
||||||
|
recyclerView.adapter = adapter
|
||||||
|
recyclerView.layoutManager = manager
|
||||||
|
val dividerDecoration = MaterialDividerItemDecoration(requireContext(), LinearLayoutManager.VERTICAL)
|
||||||
|
dividerDecoration.isLastItemDecorated = false
|
||||||
|
recyclerView.addItemDecoration(dividerDecoration)
|
||||||
|
val activity = activity as SettingsActivityView?
|
||||||
|
presenter.onViewCreated(activity!!.settings)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDetach() {
|
||||||
|
super.onDetach()
|
||||||
|
activityView = null
|
||||||
|
if (adapter != null) {
|
||||||
|
adapter!!.closeDialog()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSettingsFileLoaded(settings: Settings?) {
|
||||||
|
presenter.setSettings(settings)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun passSettingsToActivity(settings: Settings) {
|
||||||
|
if (activityView != null) {
|
||||||
|
activityView!!.settings = settings
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun showSettingsList(settingsList: ArrayList<SettingsItem>) {
|
||||||
|
adapter!!.setSettings(settingsList)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun loadDefaultSettings() {
|
||||||
|
presenter.loadDefaultSettings()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun loadSubMenu(menuKey: String) {
|
||||||
|
activityView!!.showSettingsFragment(
|
||||||
|
menuKey,
|
||||||
|
true,
|
||||||
|
requireArguments().getString(ARGUMENT_GAME_ID)!!
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun showToastMessage(message: String?, is_long: Boolean) {
|
||||||
|
activityView!!.showToastMessage(message!!, is_long)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun putSetting(setting: Setting) {
|
||||||
|
presenter.putSetting(setting)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSettingChanged() {
|
||||||
|
activityView!!.onSettingChanged()
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val ARGUMENT_MENU_TAG = "menu_tag"
|
||||||
|
private const val ARGUMENT_GAME_ID = "game_id"
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun newInstance(menuTag: String?, gameId: String?): Fragment {
|
||||||
|
val fragment = SettingsFragment()
|
||||||
|
val arguments = Bundle()
|
||||||
|
arguments.putString(ARGUMENT_MENU_TAG, menuTag)
|
||||||
|
arguments.putString(ARGUMENT_GAME_ID, gameId)
|
||||||
|
fragment.arguments = arguments
|
||||||
|
return fragment
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue