mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-22 22:00:39 -06:00
Merge branch 'master' into wii-network
This commit is contained in:
7
Source/Android/res/menu/gamelist_menu.xml
Normal file
7
Source/Android/res/menu/gamelist_menu.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||
<item
|
||||
android:id="@+id/clearGameList"
|
||||
android:title="@string/clear_game_list"
|
||||
android:showAsAction="ifRoom|withText" />
|
||||
</menu>
|
@ -17,9 +17,10 @@
|
||||
<string name="parent_directory">親ディレクトリ</string>
|
||||
<string name="folder">フォルダ</string>
|
||||
<string name="file_size">ファイルサイズ: </string>
|
||||
<string name="cant_use_compressed_filetypes">圧縮ファイル形式はサポートされていません</string>
|
||||
|
||||
<!-- Game List Activity -->
|
||||
<string name="clear_game_list">クリア</string>
|
||||
<string name="clear_game_list_confirm">ゲームリストからすべての項目を削除しますか?</string>
|
||||
<string name="game_list">ゲームリスト</string>
|
||||
<string name="browse_folder">フォルダの参照</string>
|
||||
<string name="settings">設定</string>
|
||||
@ -61,7 +62,7 @@
|
||||
<string name="cpu_settings">CPU設定</string>
|
||||
<string name="emu_core_to_use">使用するエミュレーションコア</string>
|
||||
<string name="dual_core">デュアルコア</string>
|
||||
<string name="on_off">有効/無効</string>
|
||||
<string name="dual_core_descrip">処理のための2つのCPUコアを使用して。速度が向上します。</string>
|
||||
<string name="video_settings">ビデオ設定</string>
|
||||
<string name="software_renderer">Software Renderer</string>
|
||||
<string name="opengl_es3">OpenGL ES 3</string>
|
||||
|
@ -17,9 +17,10 @@
|
||||
<string name="parent_directory">Parent Directory</string>
|
||||
<string name="folder">Folder</string>
|
||||
<string name="file_size">File Size: </string>
|
||||
<string name="cant_use_compressed_filetypes">Can not use compressed file types</string>
|
||||
|
||||
<!-- Game List Activity -->
|
||||
<string name="clear_game_list">Clear game list</string>
|
||||
<string name="clear_game_list_confirm">Do you want to clear the game list?</string>
|
||||
<string name="game_list">Game List</string>
|
||||
<string name="browse_folder">Browse Folder</string>
|
||||
<string name="settings">Settings</string>
|
||||
@ -58,11 +59,11 @@
|
||||
<string name="jitil_recompiler">JITIL Recompiler</string>
|
||||
<string name="jit_arm_recompiler">JIT ARM Recompiler</string>
|
||||
<string name="cpu_core">CPU Core</string>
|
||||
<string name="cpu_settings">CPU Settings</string>
|
||||
<string name="cpu_settings">CPU</string>
|
||||
<string name="emu_core_to_use">Emulation core to use</string>
|
||||
<string name="dual_core">Dual Core</string>
|
||||
<string name="on_off">On/Off</string>
|
||||
<string name="video_settings">Video Settings</string>
|
||||
<string name="dual_core_descrip">Split workload to two CPU cores instead of one. Increases speed.</string>
|
||||
<string name="video_settings">Video</string>
|
||||
<string name="software_renderer">Software Renderer</string>
|
||||
<string name="opengl_es3">OpenGL ES 3</string>
|
||||
<string name="video_backend">Video Backend</string>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<!-- CPU Settings -->
|
||||
<CheckBoxPreference
|
||||
android:key="dualCorePref"
|
||||
android:summary="@string/on_off"
|
||||
android:summary="@string/dual_core_descrip"
|
||||
android:title="@string/dual_core" />
|
||||
|
||||
<ListPreference
|
||||
|
@ -36,8 +36,8 @@ public final class AboutFragment extends Fragment
|
||||
String no = getString(R.string.no);
|
||||
|
||||
List<FolderBrowserItem> Input = new ArrayList<FolderBrowserItem>();
|
||||
Input.add(new FolderBrowserItem(getString(R.string.build_revision), NativeLibrary.GetVersionString(), "", true));
|
||||
Input.add(new FolderBrowserItem(getString(R.string.supports_gles3), VideoSettingsFragment.SupportsGLES3() ? yes : no, "", true));
|
||||
Input.add(new FolderBrowserItem(getString(R.string.build_revision), NativeLibrary.GetVersionString(), ""));
|
||||
Input.add(new FolderBrowserItem(getString(R.string.supports_gles3), VideoSettingsFragment.SupportsGLES3() ? yes : no, ""));
|
||||
|
||||
adapter = new FolderBrowserAdapter(m_activity, R.layout.about_layout, Input);
|
||||
mMainList.setAdapter(adapter);
|
||||
|
@ -128,6 +128,8 @@ public final class DolphinEmulator<MainActivity> extends Activity
|
||||
CopyAsset("setting-usa.txt", WiiDir + File.separator + "setting-usa.txt");
|
||||
}
|
||||
|
||||
// Load the configuration keys set in the Dolphin ini and gfx ini files
|
||||
// into the application's shared preferences.
|
||||
UserPreferences.LoadDolphinConfigToPrefs(this);
|
||||
}
|
||||
}
|
||||
@ -148,7 +150,6 @@ public final class DolphinEmulator<MainActivity> extends Activity
|
||||
String FileName = data.getStringExtra("Select");
|
||||
GLview = new NativeGLSurfaceView(this);
|
||||
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||
String backend = NativeLibrary.GetConfig("Dolphin.ini", "Core", "GFXBackend", "Software Renderer");
|
||||
NativeLibrary.SetDimensions((int)screenWidth, (int)screenHeight);
|
||||
NativeLibrary.SetFilename(FileName);
|
||||
setContentView(GLview);
|
||||
|
@ -18,17 +18,83 @@ public final class NativeLibrary
|
||||
public static native void onTouchEvent(int Action, float X, float Y);
|
||||
public static native void onGamePadEvent(String Device, int Button, int Action);
|
||||
public static native void onGamePadMoveEvent(String Device, int Axis, float Value);
|
||||
public static native String GetConfig(String configFile, String Key, String Value, String Default);
|
||||
public static native void SetConfig(String configFile, String Key, String Value, String Default);
|
||||
|
||||
/**
|
||||
* Gets a value from a key in the given ini-based config file.
|
||||
*
|
||||
* @param configFile The ini-based config file to get the value from.
|
||||
* @param Section The section key that the actual key is in.
|
||||
* @param Key The key to get the value from.
|
||||
* @param Default The value to return in the event the given key doesn't exist.
|
||||
*
|
||||
* @return the value stored at the key, or a default value if it doesn't exist.
|
||||
*/
|
||||
public static native String GetConfig(String configFile, String Section, String Key, String Default);
|
||||
|
||||
/**
|
||||
* Sets a value to a key in the given ini config file.
|
||||
*
|
||||
* @param configFile The ini-based config file to add the value to.
|
||||
* @param Section The section key for the ini key
|
||||
* @param Key The actual ini key to set.
|
||||
* @param Value The string to set the ini key to.
|
||||
*/
|
||||
public static native void SetConfig(String configFile, String Section, String Key, String Value);
|
||||
|
||||
/**
|
||||
* Sets the filename to be run during emulation.
|
||||
*
|
||||
* @param filename The filename to be run during emulation.
|
||||
*/
|
||||
public static native void SetFilename(String filename);
|
||||
|
||||
/**
|
||||
* Sets the dimensions of the rendering window.
|
||||
*
|
||||
* @param width The new width of the rendering window (in pixels).
|
||||
* @param height The new height of the rendering window (in pixels).
|
||||
*/
|
||||
public static native void SetDimensions(int width, int height);
|
||||
|
||||
/**
|
||||
* Gets the embedded banner within the given ISO/ROM.
|
||||
*
|
||||
* @param filename the file path to the ISO/ROM.
|
||||
*
|
||||
* @return an integer array containing the color data for the banner.
|
||||
*/
|
||||
public static native int[] GetBanner(String filename);
|
||||
|
||||
/**
|
||||
* Gets the embedded title of the given ISO/ROM.
|
||||
*
|
||||
* @param filename The file path to the ISO/ROM.
|
||||
*
|
||||
* @return the embedded title of the ISO/ROM.
|
||||
*/
|
||||
public static native String GetTitle(String filename);
|
||||
|
||||
/**
|
||||
* Gets the Dolphin version string.
|
||||
*
|
||||
* @return the Dolphin version string.
|
||||
*/
|
||||
public static native String GetVersionString();
|
||||
|
||||
/**
|
||||
* Begins emulation.
|
||||
*
|
||||
* @param surf The surface to render to.
|
||||
*/
|
||||
public static native void Run(Surface surf);
|
||||
|
||||
/** Unpauses emulation from a paused state. */
|
||||
public static native void UnPauseEmulation();
|
||||
|
||||
/** Pauses emulation. */
|
||||
public static native void PauseEmulation();
|
||||
|
||||
/** Stops emulation. */
|
||||
public static native void StopEmulation();
|
||||
|
||||
static
|
||||
|
@ -10,7 +10,6 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ListView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
@ -50,7 +49,6 @@ public final class FolderBrowser extends Fragment
|
||||
|
||||
// Supported extensions to filter by
|
||||
Set<String> validExts = new HashSet<String>(Arrays.asList(".gcm", ".iso", ".wbfs", ".gcz", ".dol", ".elf", ".dff"));
|
||||
Set<String> invalidExts = new HashSet<String>(Arrays.asList(".zip", ".rar", ".7z"));
|
||||
|
||||
// Search for any directories or files within the current dir.
|
||||
for(File entry : dirs)
|
||||
@ -65,17 +63,13 @@ public final class FolderBrowser extends Fragment
|
||||
{
|
||||
if(entry.isDirectory())
|
||||
{
|
||||
dir.add(new FolderBrowserItem(entryName, entry.getAbsolutePath(), true));
|
||||
dir.add(new FolderBrowserItem(entryName, entry.getAbsolutePath()));
|
||||
}
|
||||
else if (entry.isFile() && hasExtension)
|
||||
{
|
||||
if (validExts.contains(entryName.toLowerCase().substring(entryName.lastIndexOf('.'))))
|
||||
{
|
||||
fls.add(new FolderBrowserItem(entryName, getString(R.string.file_size)+entry.length(), entry.getAbsolutePath(), true));
|
||||
}
|
||||
else if (invalidExts.contains(entryName.toLowerCase().substring(entryName.lastIndexOf('.'))))
|
||||
{
|
||||
fls.add(new FolderBrowserItem(entryName, getString(R.string.file_size)+entry.length(), entry.getAbsolutePath(), false));
|
||||
fls.add(new FolderBrowserItem(entryName, getString(R.string.file_size)+entry.length(), entry.getAbsolutePath()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -92,7 +86,7 @@ public final class FolderBrowser extends Fragment
|
||||
|
||||
// Check for a parent directory to the one we're currently in.
|
||||
if (!currDir.getPath().equalsIgnoreCase("/"))
|
||||
dir.add(0, new FolderBrowserItem("..", getString(R.string.parent_directory), currDir.getParent(), true));
|
||||
dir.add(0, new FolderBrowserItem("..", getString(R.string.parent_directory), currDir.getParent()));
|
||||
|
||||
adapter = new FolderBrowserAdapter(m_activity, R.layout.folderbrowser, dir);
|
||||
mDrawerList = (ListView) rootView.findViewById(R.id.gamelist);
|
||||
@ -124,10 +118,7 @@ public final class FolderBrowser extends Fragment
|
||||
}
|
||||
else
|
||||
{
|
||||
if (item.isValid())
|
||||
FolderSelected();
|
||||
else
|
||||
Toast.makeText(m_activity, getString(R.string.cant_use_compressed_filetypes), Toast.LENGTH_LONG).show();
|
||||
FolderSelected();
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -137,17 +128,8 @@ public final class FolderBrowser extends Fragment
|
||||
{
|
||||
super.onAttach(activity);
|
||||
|
||||
// This makes sure that the container activity has implemented
|
||||
// the callback interface. If not, it throws an exception
|
||||
try
|
||||
{
|
||||
m_activity = activity;
|
||||
}
|
||||
catch (ClassCastException e)
|
||||
{
|
||||
throw new ClassCastException(activity.toString()
|
||||
+ " must implement OnGameListZeroListener");
|
||||
}
|
||||
// Cache the activity instance.
|
||||
m_activity = activity;
|
||||
}
|
||||
|
||||
|
||||
|
@ -58,11 +58,6 @@ public final class FolderBrowserAdapter extends ArrayAdapter<FolderBrowserItem>
|
||||
if(mainText != null)
|
||||
{
|
||||
mainText.setText(item.getName());
|
||||
|
||||
if (!item.isValid())
|
||||
{
|
||||
mainText.setTextColor(0xFFFF0000);
|
||||
}
|
||||
}
|
||||
|
||||
if(subtitleText != null)
|
||||
|
@ -10,7 +10,6 @@ public final class FolderBrowserItem implements Comparable<FolderBrowserItem>
|
||||
private final String name;
|
||||
private final String subtitle;
|
||||
private final String path;
|
||||
private final boolean isValid;
|
||||
private final File underlyingFile;
|
||||
|
||||
/**
|
||||
@ -19,14 +18,12 @@ public final class FolderBrowserItem implements Comparable<FolderBrowserItem>
|
||||
* @param name The name of the file/folder represented by this item.
|
||||
* @param subtitle The subtitle of this FolderBrowserItem to display.
|
||||
* @param path The path of the file/folder represented by this item.
|
||||
* @param isValid Whether or not this item represents a file type that can be handled.
|
||||
*/
|
||||
public FolderBrowserItem(String name, String subtitle, String path, boolean isValid)
|
||||
public FolderBrowserItem(String name, String subtitle, String path)
|
||||
{
|
||||
this.name = name;
|
||||
this.subtitle = subtitle;
|
||||
this.path = path;
|
||||
this.isValid = isValid;
|
||||
this.underlyingFile = new File(path);
|
||||
}
|
||||
|
||||
@ -35,14 +32,12 @@ public final class FolderBrowserItem implements Comparable<FolderBrowserItem>
|
||||
*
|
||||
* @param name The name of the file/folder represented by this item.
|
||||
* @param path The path of the file/folder represented by this item.
|
||||
* @param isValid Whether or not this item represents a file type that can be handled.
|
||||
*/
|
||||
public FolderBrowserItem(String name, String path, boolean isValid)
|
||||
public FolderBrowserItem(String name, String path)
|
||||
{
|
||||
this.name = name;
|
||||
this.subtitle = "";
|
||||
this.path = path;
|
||||
this.isValid = isValid;
|
||||
this.underlyingFile = new File(path);
|
||||
}
|
||||
|
||||
@ -76,20 +71,6 @@ public final class FolderBrowserItem implements Comparable<FolderBrowserItem>
|
||||
return path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets whether or not the file represented
|
||||
* by this FolderBrowserItem is supported
|
||||
* and can be handled correctly.
|
||||
*
|
||||
* @return whether or not the file represented
|
||||
* by this FolderBrowserItem is supported
|
||||
* and can be handled correctly.
|
||||
*/
|
||||
public boolean isValid()
|
||||
{
|
||||
return isValid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the {@link File} representation of the underlying file/folder
|
||||
* represented by this FolderBrowserItem.
|
||||
|
@ -7,8 +7,10 @@
|
||||
package org.dolphinemu.dolphinemu.gamelist;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Fragment;
|
||||
import android.app.FragmentManager;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
@ -16,6 +18,7 @@ import android.support.v4.app.ActionBarDrawerToggle;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.view.*;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -248,6 +251,20 @@ public final class GameListActivity extends Activity
|
||||
{
|
||||
return super.onPrepareOptionsMenu(menu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu)
|
||||
{
|
||||
// Only show this in the game list.
|
||||
if (this.mCurFragmentNum == 0)
|
||||
{
|
||||
MenuInflater inflater = getMenuInflater();
|
||||
inflater.inflate(R.menu.gamelist_menu, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item)
|
||||
@ -259,6 +276,38 @@ public final class GameListActivity extends Activity
|
||||
return true;
|
||||
}
|
||||
|
||||
// If clear game list is pressed.
|
||||
if (item.getItemId() == R.id.clearGameList)
|
||||
{
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle(R.string.clear_game_list);
|
||||
builder.setMessage(getString(R.string.clear_game_list_confirm));
|
||||
builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener(){
|
||||
public void onClick(DialogInterface dialog, int which)
|
||||
{
|
||||
String directories = NativeLibrary.GetConfig("Dolphin.ini", "General", "GCMPathes", "0");
|
||||
int intDirs = Integer.parseInt(directories);
|
||||
|
||||
for (int i = 0; i < intDirs; i++)
|
||||
{
|
||||
NativeLibrary.SetConfig("Dolphin.ini", "General", "GCMPath" + i, "");
|
||||
}
|
||||
|
||||
ArrayAdapter<GameListItem> adapter = ((GameListFragment)GameListActivity.this.mCurFragment).getAdapter();
|
||||
adapter.clear();
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which)
|
||||
{
|
||||
// Do nothing. This just make "No" appear.
|
||||
}
|
||||
});
|
||||
|
||||
builder.show();
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
|
@ -51,6 +51,16 @@ public final class GameListFragment extends Fragment
|
||||
*/
|
||||
void onZeroFiles();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the adapter for this fragment.
|
||||
*
|
||||
* @return the adapter for this fragment.
|
||||
*/
|
||||
public GameListAdapter getAdapter()
|
||||
{
|
||||
return mGameAdapter;
|
||||
}
|
||||
|
||||
private void Fill()
|
||||
{
|
||||
@ -77,7 +87,7 @@ public final class GameListFragment extends Fragment
|
||||
if (!entry.isDirectory())
|
||||
{
|
||||
if (exts.contains(entryName.toLowerCase().substring(entryName.lastIndexOf('.'))))
|
||||
fls.add(new GameListItem(mMe.getApplicationContext(), entryName, getString(R.string.file_size)+entry.length(),entry.getAbsolutePath(), true));
|
||||
fls.add(new GameListItem(mMe.getApplicationContext(), entryName, getString(R.string.file_size)+entry.length(),entry.getAbsolutePath()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -95,11 +105,12 @@ public final class GameListFragment extends Fragment
|
||||
// so there should be no worries about accidentally removing a valid game.
|
||||
for (int i = 0; i < fls.size(); i++)
|
||||
{
|
||||
int indexNext = i+1;
|
||||
|
||||
if (indexNext < fls.size() && fls.get(indexNext).getPath().contains(fls.get(i).getPath()))
|
||||
for (int j = i+1; j < fls.size(); j++)
|
||||
{
|
||||
fls.remove(indexNext);
|
||||
if (fls.get(j).getPath().equals(fls.get(i).getPath()))
|
||||
{
|
||||
fls.remove(j);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,6 @@ public final class GameListItem implements Comparable<GameListItem>
|
||||
private String name;
|
||||
private final String data;
|
||||
private final String path;
|
||||
private final boolean isValid;
|
||||
private Bitmap image;
|
||||
|
||||
/**
|
||||
@ -37,12 +36,11 @@ public final class GameListItem implements Comparable<GameListItem>
|
||||
* @param path The file path for the game represented by this GameListItem.
|
||||
* @param isValid Whether or not the emulator can handle this file.
|
||||
*/
|
||||
public GameListItem(Context ctx, String name, String data, String path, boolean isValid)
|
||||
public GameListItem(Context ctx, String name, String data, String path)
|
||||
{
|
||||
this.name = name;
|
||||
this.data = data;
|
||||
this.path = path;
|
||||
this.isValid = isValid;
|
||||
|
||||
File file = new File(path);
|
||||
if (!file.isDirectory() && !path.equals(""))
|
||||
@ -115,16 +113,6 @@ public final class GameListItem implements Comparable<GameListItem>
|
||||
return image;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets whether or not the emulator can handle this GameListItem.
|
||||
*
|
||||
* @return true, if this GameListItem can be handled by the emulator; false, otherwise.
|
||||
*/
|
||||
public boolean isValid()
|
||||
{
|
||||
return isValid;
|
||||
}
|
||||
|
||||
public int compareTo(GameListItem o)
|
||||
{
|
||||
if (this.name != null)
|
||||
|
Reference in New Issue
Block a user