From 0b2350ad5b4980e77ce82a902175e4d686abbae3 Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Sat, 11 Mar 2023 00:34:45 -0500 Subject: [PATCH] android: Convert PlatformGamesFragment to Kotlin --- .../ui/platform/PlatformGamesFragment.java | 105 ------------------ .../ui/platform/PlatformGamesFragment.kt | 94 ++++++++++++++++ 2 files changed, 94 insertions(+), 105 deletions(-) delete mode 100644 src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesFragment.java create mode 100644 src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesFragment.kt diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesFragment.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesFragment.java deleted file mode 100644 index 2d74f43ca..000000000 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesFragment.java +++ /dev/null @@ -1,105 +0,0 @@ -package org.yuzu.yuzu_emu.ui.platform; - -import android.database.Cursor; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewTreeObserver; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; - -import org.yuzu.yuzu_emu.NativeLibrary; -import org.yuzu.yuzu_emu.YuzuApplication; -import org.yuzu.yuzu_emu.R; -import org.yuzu.yuzu_emu.adapters.GameAdapter; -import org.yuzu.yuzu_emu.model.GameDatabase; - -public final class PlatformGamesFragment extends Fragment implements PlatformGamesView { - private PlatformGamesPresenter mPresenter = new PlatformGamesPresenter(this); - - private GameAdapter mAdapter; - private RecyclerView mRecyclerView; - private TextView mTextView; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_grid, container, false); - - findViews(rootView); - - mPresenter.onCreateView(); - - return rootView; - } - - @Override - public void onViewCreated(View view, Bundle savedInstanceState) { - mAdapter = new GameAdapter(); - - // Organize our grid layout based on the current view. - if (isAdded()) { - view.getViewTreeObserver() - .addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { - @Override - public void onGlobalLayout() { - if (view.getMeasuredWidth() == 0) { - return; - } - - int columns = view.getMeasuredWidth() / - requireContext().getResources().getDimensionPixelSize(R.dimen.card_width); - if (columns == 0) { - columns = 1; - } - view.getViewTreeObserver().removeOnGlobalLayoutListener(this); - GridLayoutManager layoutManager = new GridLayoutManager(getActivity(), columns); - mRecyclerView.setLayoutManager(layoutManager); - mRecyclerView.setAdapter(mAdapter); - } - }); - } - - // Add swipe down to refresh gesture - final SwipeRefreshLayout pullToRefresh = view.findViewById(R.id.swipe_refresh); - pullToRefresh.setOnRefreshListener(() -> { - refresh(); - pullToRefresh.setRefreshing(false); - }); - } - - @Override - public void refresh() { - GameDatabase databaseHelper = YuzuApplication.databaseHelper; - databaseHelper.scanLibrary(databaseHelper.getWritableDatabase()); - mPresenter.refresh(); - updateTextView(); - } - - @Override - public void showGames(Cursor games) { - if (mAdapter != null) { - mAdapter.swapCursor(games); - } - updateTextView(); - } - - private void updateTextView() { - mTextView.setVisibility(mAdapter.getItemCount() == 0 ? View.VISIBLE : View.GONE); - } - - private void findViews(View root) { - mRecyclerView = root.findViewById(R.id.grid_games); - mTextView = root.findViewById(R.id.gamelist_empty_text); - } -} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesFragment.kt new file mode 100644 index 000000000..9ceea8b3f --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesFragment.kt @@ -0,0 +1,94 @@ +package org.yuzu.yuzu_emu.ui.platform + +import android.database.Cursor +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.view.ViewTreeObserver.OnGlobalLayoutListener +import android.widget.TextView +import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.YuzuApplication +import org.yuzu.yuzu_emu.adapters.GameAdapter + +class PlatformGamesFragment : Fragment(), PlatformGamesView { + private val presenter = PlatformGamesPresenter(this) + private var adapter: GameAdapter? = null + private lateinit var recyclerView: RecyclerView + private lateinit var textView: TextView + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val rootView = inflater.inflate(R.layout.fragment_grid, container, false) + findViews(rootView) + presenter.onCreateView() + return rootView + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + adapter = GameAdapter() + + // Organize our grid layout based on the current view. + if (isAdded) { + view.viewTreeObserver + .addOnGlobalLayoutListener(object : OnGlobalLayoutListener { + override fun onGlobalLayout() { + if (view.measuredWidth == 0) { + return + } + var columns = view.measuredWidth / + requireContext().resources.getDimensionPixelSize(R.dimen.card_width) + if (columns == 0) { + columns = 1 + } + view.viewTreeObserver.removeOnGlobalLayoutListener(this) + val layoutManager = GridLayoutManager(activity, columns) + recyclerView.layoutManager = layoutManager + recyclerView.adapter = adapter + } + }) + } + + // Add swipe down to refresh gesture + val pullToRefresh = view.findViewById(R.id.swipe_refresh) + pullToRefresh.setOnRefreshListener { + refresh() + pullToRefresh.isRefreshing = false + } + } + + override fun refresh() { + val databaseHelper = YuzuApplication.databaseHelper + databaseHelper!!.scanLibrary(databaseHelper.writableDatabase) + presenter.refresh() + updateTextView() + } + + override fun showGames(games: Cursor) { + if (adapter != null) { + adapter!!.swapCursor(games) + } + updateTextView() + } + + private fun updateTextView() { + textView.visibility = + if (adapter!!.itemCount == 0) View.VISIBLE else View.GONE + } + + private fun findViews(root: View) { + recyclerView = root.findViewById(R.id.grid_games) + textView = root.findViewById(R.id.gamelist_empty_text) + } + + companion object { + const val TAG = "PlatformGamesFragment" + } +}