Merge branch 'master' into wii-network

This commit is contained in:
Matthew Parlane
2013-08-24 23:56:31 +12:00
70 changed files with 1109 additions and 815 deletions

View 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>

View File

@ -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>

View File

@ -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>

View File

@ -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

View File

@ -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);

View File

@ -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);

View File

@ -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

View File

@ -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;
}

View File

@ -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)

View File

@ -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.

View File

@ -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);
}

View File

@ -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);
}
}
}

View File

@ -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)