summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorMike Harris <atarimike@gmail.com>2017-09-25 09:32:25 -0700
committerMike Harris <atarimike@gmail.com>2017-09-29 09:38:14 -0700
commitcc77a4963f51ec6054e99473643a79df502801b3 (patch)
treebe36df439ef94fde58edd2d7fd1c67646e74d8e7 /Source/Android/app/src/main/java
parent487591c76040f3599b37b667a7b181318aadda61 (diff)
Convert platform ints to a proper enum Platform.
This is good practice (see Effective Java chapter 6), and adds compile-time checks.
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java3
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/PlatformPagerAdapter.java3
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/Game.java19
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameDatabase.java19
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java12
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java8
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java38
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/Platform.java48
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/PlatformGamesFragment.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/PlatformGamesPresenter.java4
12 files changed, 100 insertions, 72 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
index 74c0eab9cb..56e2226325 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
@@ -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
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java
index cd10e4a4ae..5086e95a2d 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java
@@ -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;
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/PlatformPagerAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/PlatformPagerAdapter.java
index 8972ac95bd..afdf67f34e 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/PlatformPagerAdapter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/PlatformPagerAdapter.java
@@ -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
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/Game.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/Game.java
index 5fd25a2354..c38bcef2e1 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/Game.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/Game.java
@@ -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),
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameDatabase.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameDatabase.java
index 98a751a3ca..2ab05172e2 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameDatabase.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/GameDatabase.java
@@ -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,
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java
index 14e9d1758a..10d76b4e42 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java
@@ -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;
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java
index 24878ab244..de9796243b 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java
@@ -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);
}
}
);
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java
index 5fa0368ee8..fdaef5eefa 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainView.java
@@ -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);
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java
index c579190456..567e2ca492 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java
@@ -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);
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/Platform.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/Platform.java
new file mode 100644
index 0000000000..7db7b61bbc
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/Platform.java
@@ -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;
+ }
+} \ No newline at end of file
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/PlatformGamesFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/PlatformGamesFragment.java
index ec6d55db5f..45bfee591b 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/PlatformGamesFragment.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/PlatformGamesFragment.java
@@ -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
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/PlatformGamesPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/PlatformGamesPresenter.java
index 403ba4ef18..3320943643 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/PlatformGamesPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/platform/PlatformGamesPresenter.java
@@ -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;
}