mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-15 22:54:00 +00:00
android: Convert PlatformGamesFragment to Kotlin
This commit is contained in:
parent
67c2e89d2c
commit
0b2350ad5b
2 changed files with 94 additions and 105 deletions
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue