committed by
bunnei
2 changed files with 120 additions and 136 deletions
-
136src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.java
-
120src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt
@ -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 |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue