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