Convert platform ints to a proper enum Platform.
This is good practice (see Effective Java chapter 6), and adds compile-time checks.
This commit is contained in:
parent
487591c760
commit
cc77a4963f
|
@ -41,6 +41,7 @@ import org.dolphinemu.dolphinemu.fragments.LoadStateFragment;
|
|||
import org.dolphinemu.dolphinemu.fragments.MenuFragment;
|
||||
import org.dolphinemu.dolphinemu.fragments.SaveStateFragment;
|
||||
import org.dolphinemu.dolphinemu.ui.main.MainPresenter;
|
||||
import org.dolphinemu.dolphinemu.ui.platform.Platform;
|
||||
import org.dolphinemu.dolphinemu.utils.Animations;
|
||||
import org.dolphinemu.dolphinemu.utils.Java_GCAdapter;
|
||||
import org.dolphinemu.dolphinemu.utils.Java_WiimoteAdapter;
|
||||
|
@ -298,7 +299,7 @@ public final class EmulationActivity extends AppCompatActivity
|
|||
|
||||
mPreferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
|
||||
mIsGameCubeGame = (NativeLibrary.GetPlatform(path) == 0);
|
||||
mIsGameCubeGame = Platform.fromNativeInt(NativeLibrary.GetPlatform(path)) == Platform.GAMECUBE;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -63,13 +63,13 @@ public final class GameRowPresenter extends Presenter
|
|||
int backgroundId;
|
||||
switch (game.getPlatform())
|
||||
{
|
||||
case Game.PLATFORM_GC:
|
||||
case GAMECUBE:
|
||||
backgroundId = R.drawable.tv_card_background_gamecube;
|
||||
break;
|
||||
case Game.PLATFORM_WII:
|
||||
case WII:
|
||||
backgroundId = R.drawable.tv_card_background_wii;
|
||||
break;
|
||||
case Game.PLATFORM_WII_WARE:
|
||||
case WIIWARE:
|
||||
default: // This shouldn't happen, but set the default to WiiWare colors.
|
||||
backgroundId = R.drawable.tv_card_background_wiiware;
|
||||
break;
|
||||
|
|
|
@ -10,6 +10,7 @@ import android.text.SpannableString;
|
|||
import android.text.style.ImageSpan;
|
||||
|
||||
import org.dolphinemu.dolphinemu.R;
|
||||
import org.dolphinemu.dolphinemu.ui.platform.Platform;
|
||||
import org.dolphinemu.dolphinemu.ui.platform.PlatformGamesFragment;
|
||||
|
||||
public class PlatformPagerAdapter extends FragmentPagerAdapter
|
||||
|
@ -32,7 +33,7 @@ public class PlatformPagerAdapter extends FragmentPagerAdapter
|
|||
@Override
|
||||
public Fragment getItem(int position)
|
||||
{
|
||||
return PlatformGamesFragment.newInstance(position);
|
||||
return PlatformGamesFragment.newInstance(Platform.fromPosition(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -4,13 +4,10 @@ import android.content.ContentValues;
|
|||
import android.database.Cursor;
|
||||
import android.os.Environment;
|
||||
|
||||
import org.dolphinemu.dolphinemu.ui.platform.Platform;
|
||||
|
||||
public final class Game
|
||||
{
|
||||
public static final int PLATFORM_GC = 0;
|
||||
public static final int PLATFORM_WII = 1;
|
||||
public static final int PLATFORM_WII_WARE = 2;
|
||||
public static final int PLATFORM_ALL = 3;
|
||||
|
||||
// Copied from IVolume::ECountry. Update these if that is ever modified.
|
||||
public static final int COUNTRY_EUROPE = 0;
|
||||
public static final int COUNTRY_JAPAN = 1;
|
||||
|
@ -36,10 +33,10 @@ public final class Game
|
|||
private String mScreenshotPath;
|
||||
private String mCompany;
|
||||
|
||||
private int mPlatform;
|
||||
private Platform mPlatform;
|
||||
private int mCountry;
|
||||
|
||||
public Game(int platform, String title, String description, int country, String path, String gameId, String company, String screenshotPath)
|
||||
public Game(Platform platform, String title, String description, int country, String path, String gameId, String company, String screenshotPath)
|
||||
{
|
||||
mPlatform = platform;
|
||||
mTitle = title;
|
||||
|
@ -51,7 +48,7 @@ public final class Game
|
|||
mScreenshotPath = screenshotPath;
|
||||
}
|
||||
|
||||
public int getPlatform()
|
||||
public Platform getPlatform()
|
||||
{
|
||||
return mPlatform;
|
||||
}
|
||||
|
@ -91,13 +88,13 @@ public final class Game
|
|||
return mScreenshotPath;
|
||||
}
|
||||
|
||||
public static ContentValues asContentValues(int platform, String title, String description, int country, String path, String gameId, String company)
|
||||
public static ContentValues asContentValues(Platform platform, String title, String description, int country, String path, String gameId, String company)
|
||||
{
|
||||
ContentValues values = new ContentValues();
|
||||
|
||||
String screenPath = PATH_SCREENSHOT_FOLDER + gameId + "/" + gameId + "-1.png";
|
||||
|
||||
values.put(GameDatabase.KEY_GAME_PLATFORM, platform);
|
||||
values.put(GameDatabase.KEY_GAME_PLATFORM, platform.toInt());
|
||||
values.put(GameDatabase.KEY_GAME_TITLE, title);
|
||||
values.put(GameDatabase.KEY_GAME_DESCRIPTION, description);
|
||||
values.put(GameDatabase.KEY_GAME_COUNTRY, company);
|
||||
|
@ -111,7 +108,7 @@ public final class Game
|
|||
|
||||
public static Game fromCursor(Cursor cursor)
|
||||
{
|
||||
return new Game(cursor.getInt(GameDatabase.GAME_COLUMN_PLATFORM),
|
||||
return new Game(Platform.fromInt(cursor.getInt(GameDatabase.GAME_COLUMN_PLATFORM)),
|
||||
cursor.getString(GameDatabase.GAME_COLUMN_TITLE),
|
||||
cursor.getString(GameDatabase.GAME_COLUMN_DESCRIPTION),
|
||||
cursor.getInt(GameDatabase.GAME_COLUMN_COUNTRY),
|
||||
|
|
|
@ -7,6 +7,7 @@ import android.database.sqlite.SQLiteDatabase;
|
|||
import android.database.sqlite.SQLiteOpenHelper;
|
||||
|
||||
import org.dolphinemu.dolphinemu.NativeLibrary;
|
||||
import org.dolphinemu.dolphinemu.ui.platform.Platform;
|
||||
import org.dolphinemu.dolphinemu.utils.Log;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -200,12 +201,7 @@ public final class GameDatabase extends SQLiteOpenHelper
|
|||
gameId = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.lastIndexOf("."));
|
||||
}
|
||||
|
||||
// If the game's platform field is empty, file under Wiiware. // TODO Something less dum
|
||||
int platform = NativeLibrary.GetPlatform(filePath);
|
||||
if (platform == -1)
|
||||
{
|
||||
platform = Game.PLATFORM_WII_WARE;
|
||||
}
|
||||
Platform platform = Platform.fromNativeInt(NativeLibrary.GetPlatform(filePath));
|
||||
|
||||
ContentValues game = Game.asContentValues(platform,
|
||||
name,
|
||||
|
@ -257,7 +253,7 @@ public final class GameDatabase extends SQLiteOpenHelper
|
|||
database.close();
|
||||
}
|
||||
|
||||
public Observable<Cursor> getGamesForPlatform(final int platform)
|
||||
public Observable<Cursor> getGamesForPlatform(final Platform platform)
|
||||
{
|
||||
return Observable.create(new Observable.OnSubscribe<Cursor>()
|
||||
{
|
||||
|
@ -266,18 +262,17 @@ public final class GameDatabase extends SQLiteOpenHelper
|
|||
{
|
||||
Log.info("[GameDatabase] Reading games list...");
|
||||
|
||||
|
||||
// Only add a WHERE clause if we have a specific platform
|
||||
String whereClause = null;
|
||||
String[] whereArgs = null;
|
||||
|
||||
// If -1 passed in, return all games. Else, return games for one platform only.
|
||||
if (platform >= 0)
|
||||
if (platform != Platform.ALL)
|
||||
{
|
||||
whereClause = KEY_GAME_PLATFORM + " = ?";
|
||||
whereArgs = new String[]{Integer.toString(platform)};
|
||||
whereArgs = new String[]{Integer.toString(platform.toInt())};
|
||||
}
|
||||
|
||||
SQLiteDatabase database = getReadableDatabase();
|
||||
|
||||
Cursor resultCursor = database.query(
|
||||
TABLE_NAME_GAMES,
|
||||
null,
|
||||
|
|
|
@ -20,6 +20,7 @@ import org.dolphinemu.dolphinemu.R;
|
|||
import org.dolphinemu.dolphinemu.activities.AddDirectoryActivity;
|
||||
import org.dolphinemu.dolphinemu.adapters.PlatformPagerAdapter;
|
||||
import org.dolphinemu.dolphinemu.model.GameProvider;
|
||||
import org.dolphinemu.dolphinemu.ui.platform.Platform;
|
||||
import org.dolphinemu.dolphinemu.ui.platform.PlatformGamesView;
|
||||
import org.dolphinemu.dolphinemu.ui.settings.SettingsActivity;
|
||||
import org.dolphinemu.dolphinemu.utils.PermissionsHandler;
|
||||
|
@ -114,7 +115,8 @@ public final class MainActivity extends AppCompatActivity implements MainView
|
|||
public void refreshFragmentScreenshot(int fragmentPosition)
|
||||
{
|
||||
// Invalidate Picasso image so that the new screenshot is animated in.
|
||||
PlatformGamesView fragment = getPlatformGamesView(mViewPager.getCurrentItem());
|
||||
Platform platform = Platform.fromPosition(mViewPager.getCurrentItem());
|
||||
PlatformGamesView fragment = getPlatformGamesView(platform);
|
||||
|
||||
if (fragment != null)
|
||||
{
|
||||
|
@ -135,7 +137,7 @@ public final class MainActivity extends AppCompatActivity implements MainView
|
|||
}
|
||||
|
||||
@Override
|
||||
public void showGames(int platformIndex, Cursor games)
|
||||
public void showGames(Platform platform, Cursor games)
|
||||
{
|
||||
// no-op. Handled by PlatformGamesFragment.
|
||||
}
|
||||
|
@ -189,7 +191,9 @@ public final class MainActivity extends AppCompatActivity implements MainView
|
|||
|
||||
private void refreshFragment()
|
||||
{
|
||||
PlatformGamesView fragment = getPlatformGamesView(mViewPager.getCurrentItem());
|
||||
|
||||
Platform platform = Platform.fromPosition(mViewPager.getCurrentItem());
|
||||
PlatformGamesView fragment = getPlatformGamesView(platform);
|
||||
if (fragment != null)
|
||||
{
|
||||
fragment.refresh();
|
||||
|
@ -197,7 +201,7 @@ public final class MainActivity extends AppCompatActivity implements MainView
|
|||
}
|
||||
|
||||
@Nullable
|
||||
private PlatformGamesView getPlatformGamesView(int platform)
|
||||
private PlatformGamesView getPlatformGamesView(Platform platform)
|
||||
{
|
||||
String fragmentTag = "android:switcher:" + mViewPager.getId() + ":" + platform;
|
||||
|
||||
|
|
|
@ -2,10 +2,12 @@ package org.dolphinemu.dolphinemu.ui.main;
|
|||
|
||||
|
||||
import android.database.Cursor;
|
||||
|
||||
import org.dolphinemu.dolphinemu.BuildConfig;
|
||||
import org.dolphinemu.dolphinemu.DolphinApplication;
|
||||
import org.dolphinemu.dolphinemu.R;
|
||||
import org.dolphinemu.dolphinemu.model.GameDatabase;
|
||||
import org.dolphinemu.dolphinemu.ui.platform.Platform;
|
||||
import org.dolphinemu.dolphinemu.utils.SettingsFile;
|
||||
|
||||
import rx.android.schedulers.AndroidSchedulers;
|
||||
|
@ -87,11 +89,11 @@ public final class MainPresenter
|
|||
}
|
||||
}
|
||||
|
||||
public void loadGames(final int platformIndex)
|
||||
public void loadGames(final Platform platform)
|
||||
{
|
||||
GameDatabase databaseHelper = DolphinApplication.databaseHelper;
|
||||
|
||||
databaseHelper.getGamesForPlatform(platformIndex)
|
||||
databaseHelper.getGamesForPlatform(platform)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new Action1<Cursor>()
|
||||
|
@ -99,7 +101,7 @@ public final class MainPresenter
|
|||
@Override
|
||||
public void call(Cursor games)
|
||||
{
|
||||
mView.showGames(platformIndex, games);
|
||||
mView.showGames(platform, games);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
|
|
@ -2,6 +2,8 @@ package org.dolphinemu.dolphinemu.ui.main;
|
|||
|
||||
import android.database.Cursor;
|
||||
|
||||
import org.dolphinemu.dolphinemu.ui.platform.Platform;
|
||||
|
||||
/**
|
||||
* Abstraction for the screen that shows on application launch.
|
||||
* Implementations will differ primarily to target touch-screen
|
||||
|
@ -39,8 +41,8 @@ public interface MainView
|
|||
* To be called when an asynchronous database read completes. Passes the
|
||||
* result, in this case a {@link Cursor} to the view.
|
||||
*
|
||||
* @param platformIndex Which platform contains these games.
|
||||
* @param platform Which platform to show games for.
|
||||
* @param games A Cursor containing the games read from the database.
|
||||
*/
|
||||
void showGames(int platformIndex, Cursor games);
|
||||
void showGames(Platform platform, Cursor games);
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ import org.dolphinemu.dolphinemu.adapters.GameRowPresenter;
|
|||
import org.dolphinemu.dolphinemu.adapters.SettingsRowPresenter;
|
||||
import org.dolphinemu.dolphinemu.model.Game;
|
||||
import org.dolphinemu.dolphinemu.model.TvSettingsItem;
|
||||
import org.dolphinemu.dolphinemu.ui.platform.Platform;
|
||||
import org.dolphinemu.dolphinemu.ui.settings.SettingsActivity;
|
||||
import org.dolphinemu.dolphinemu.utils.PermissionsHandler;
|
||||
import org.dolphinemu.dolphinemu.utils.StartupHandler;
|
||||
|
@ -130,9 +131,9 @@ public final class TvMainActivity extends Activity implements MainView
|
|||
}
|
||||
|
||||
@Override
|
||||
public void showGames(int platformIndex, Cursor games)
|
||||
public void showGames(Platform platform, Cursor games)
|
||||
{
|
||||
ListRow row = buildGamesRow(platformIndex, games);
|
||||
ListRow row = buildGamesRow(platform, games);
|
||||
|
||||
// Add row to the adapter only if it is not empty.
|
||||
if (row != null)
|
||||
|
@ -187,13 +188,12 @@ public final class TvMainActivity extends Activity implements MainView
|
|||
}
|
||||
|
||||
private void loadGames() {
|
||||
// For each platform
|
||||
for (int platformIndex = 0; platformIndex <= Game.PLATFORM_ALL; ++platformIndex) {
|
||||
mPresenter.loadGames(platformIndex);
|
||||
for (Platform platform : Platform.values()) {
|
||||
mPresenter.loadGames(platform);
|
||||
}
|
||||
}
|
||||
|
||||
private ListRow buildGamesRow(int platform, Cursor games)
|
||||
private ListRow buildGamesRow(Platform platform, Cursor games)
|
||||
{
|
||||
// Create an adapter for this row.
|
||||
CursorObjectAdapter row = new CursorObjectAdapter(new GameRowPresenter());
|
||||
|
@ -220,32 +220,10 @@ public final class TvMainActivity extends Activity implements MainView
|
|||
}
|
||||
});
|
||||
|
||||
String headerName;
|
||||
switch (platform)
|
||||
{
|
||||
case Game.PLATFORM_GC:
|
||||
headerName = "GameCube Games";
|
||||
break;
|
||||
|
||||
case Game.PLATFORM_WII:
|
||||
headerName = "Wii Games";
|
||||
break;
|
||||
|
||||
case Game.PLATFORM_WII_WARE:
|
||||
headerName = "WiiWare";
|
||||
break;
|
||||
|
||||
case Game.PLATFORM_ALL:
|
||||
headerName = "All Games";
|
||||
break;
|
||||
|
||||
default:
|
||||
headerName = "Error";
|
||||
break;
|
||||
}
|
||||
String headerName = platform.getHeaderName();
|
||||
|
||||
// Create a header for this row.
|
||||
HeaderItem header = new HeaderItem(platform, headerName);
|
||||
HeaderItem header = new HeaderItem(platform.toInt(), platform.getHeaderName());
|
||||
|
||||
// Create the row, passing it the filled adapter and the header, and give it to the master adapter.
|
||||
return new ListRow(header, row);
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
package org.dolphinemu.dolphinemu.ui.platform;
|
||||
|
||||
/** Enum to represent platform (eg GameCube, Wii). */
|
||||
public enum Platform
|
||||
{
|
||||
GAMECUBE(0, "GameCube Games"),
|
||||
WII(1, "Wii Games"),
|
||||
WIIWARE(2, "WiiWare Games"),
|
||||
ALL(3, "All Games");
|
||||
|
||||
private final int value;
|
||||
private final String headerName;
|
||||
|
||||
Platform(int value, String headerName)
|
||||
{
|
||||
this.value = value;
|
||||
this.headerName = headerName;
|
||||
}
|
||||
|
||||
public static Platform fromInt(int i)
|
||||
{
|
||||
return values()[i];
|
||||
}
|
||||
|
||||
public static Platform fromNativeInt(int i)
|
||||
{
|
||||
// If the game's platform field is empty, file under Wiiware. // TODO Something less dum
|
||||
if (i == -1) {
|
||||
return Platform.WIIWARE;
|
||||
}
|
||||
return values()[i];
|
||||
}
|
||||
|
||||
public static Platform fromPosition(int position)
|
||||
{
|
||||
return values()[position];
|
||||
}
|
||||
|
||||
public int toInt()
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
public String getHeaderName()
|
||||
{
|
||||
return headerName;
|
||||
}
|
||||
}
|
|
@ -22,12 +22,12 @@ public final class PlatformGamesFragment extends Fragment implements PlatformGam
|
|||
private GameAdapter mAdapter;
|
||||
private RecyclerView mRecyclerView;
|
||||
|
||||
public static PlatformGamesFragment newInstance(int platform)
|
||||
public static PlatformGamesFragment newInstance(Platform platform)
|
||||
{
|
||||
PlatformGamesFragment fragment = new PlatformGamesFragment();
|
||||
|
||||
Bundle args = new Bundle();
|
||||
args.putInt(ARG_PLATFORM, platform);
|
||||
args.putSerializable(ARG_PLATFORM, platform);
|
||||
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
|
@ -38,7 +38,7 @@ public final class PlatformGamesFragment extends Fragment implements PlatformGam
|
|||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
mPresenter.onCreate(getArguments().getInt(ARG_PLATFORM));
|
||||
mPresenter.onCreate((Platform) getArguments().getSerializable(ARG_PLATFORM));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
|
|
@ -15,14 +15,14 @@ public final class PlatformGamesPresenter
|
|||
{
|
||||
private final PlatformGamesView mView;
|
||||
|
||||
private int mPlatform;
|
||||
private Platform mPlatform;
|
||||
|
||||
public PlatformGamesPresenter(PlatformGamesView view)
|
||||
{
|
||||
mView = view;
|
||||
}
|
||||
|
||||
public void onCreate(int platform)
|
||||
public void onCreate(Platform platform)
|
||||
{
|
||||
mPlatform = platform;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue