android: Convert PlatformGamesFragment to Kotlin

This commit is contained in:
Charles Lombardo 2023-03-11 00:34:45 -05:00 committed by bunnei
parent 67c2e89d2c
commit 0b2350ad5b
2 changed files with 94 additions and 105 deletions

View File

@ -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);
}
}

View File

@ -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<SwipeRefreshLayout>(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"
}
}