From bd72e13dd42a2ad276e5836570972c601a74e562 Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Tue, 23 Apr 2013 14:21:48 -0500 Subject: [PATCH] Generally make the Android UI better. --- Source/Android/AndroidManifest.xml | 8 +- Source/Android/assets/Dolphin.png | Bin 4789 -> 0 bytes Source/Android/project.properties | 1 + Source/Android/res/layout/folderbrowser.xml | 44 +++++ .../res/layout/folderbrowserfooter.xml | 7 + Source/Android/res/layout/main.xml | 52 +++-- Source/Android/res/layout/sidemenu.xml | 31 +++ .../dolphinemu/DolphinEmulator.java | 16 +- .../dolphinemu/dolphinemu/FolderBrowser.java | 98 ++++++++++ ...ArrayAdapter.java => GameListAdapter.java} | 16 +- .../dolphinemu/dolphinemu/GameListItem.java | 84 ++++++++ .../dolphinemu/dolphinemu/GameListView.java | 181 ++++++++++++++++++ .../dolphinemu/dolphinemu/NativeListView.java | 94 --------- .../src/org/dolphinemu/dolphinemu/Option.java | 38 ---- .../dolphinemu/SideMenuAdapter.java | 49 +++++ .../dolphinemu/dolphinemu/SideMenuItem.java | 30 +++ Source/Core/DolphinWX/Src/MainAndroid.cpp | 115 ++++++++++- 17 files changed, 704 insertions(+), 160 deletions(-) delete mode 100644 Source/Android/assets/Dolphin.png create mode 100644 Source/Android/res/layout/folderbrowser.xml create mode 100644 Source/Android/res/layout/folderbrowserfooter.xml create mode 100644 Source/Android/res/layout/sidemenu.xml create mode 100644 Source/Android/src/org/dolphinemu/dolphinemu/FolderBrowser.java rename Source/Android/src/org/dolphinemu/dolphinemu/{FileArrayAdapter.java => GameListAdapter.java} (71%) create mode 100644 Source/Android/src/org/dolphinemu/dolphinemu/GameListItem.java create mode 100644 Source/Android/src/org/dolphinemu/dolphinemu/GameListView.java delete mode 100644 Source/Android/src/org/dolphinemu/dolphinemu/NativeListView.java delete mode 100644 Source/Android/src/org/dolphinemu/dolphinemu/Option.java create mode 100644 Source/Android/src/org/dolphinemu/dolphinemu/SideMenuAdapter.java create mode 100644 Source/Android/src/org/dolphinemu/dolphinemu/SideMenuItem.java diff --git a/Source/Android/AndroidManifest.xml b/Source/Android/AndroidManifest.xml index 624f7b2df9..82573aa8aa 100644 --- a/Source/Android/AndroidManifest.xml +++ b/Source/Android/AndroidManifest.xml @@ -26,7 +26,13 @@ + + diff --git a/Source/Android/assets/Dolphin.png b/Source/Android/assets/Dolphin.png deleted file mode 100644 index 74d6c888016a4eeb6bf8d354213b4743d16b6f58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4789 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 + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Android/res/layout/folderbrowserfooter.xml b/Source/Android/res/layout/folderbrowserfooter.xml new file mode 100644 index 0000000000..9c0e11d81b --- /dev/null +++ b/Source/Android/res/layout/folderbrowserfooter.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/Source/Android/res/layout/main.xml b/Source/Android/res/layout/main.xml index 6116f6c33d..1b19ad19fe 100644 --- a/Source/Android/res/layout/main.xml +++ b/Source/Android/res/layout/main.xml @@ -1,26 +1,42 @@ - - + - - + + + + + + + + + + + diff --git a/Source/Android/res/layout/sidemenu.xml b/Source/Android/res/layout/sidemenu.xml new file mode 100644 index 0000000000..57ab67e3ca --- /dev/null +++ b/Source/Android/res/layout/sidemenu.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java b/Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java index a989bf68d5..82d186de26 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/DolphinEmulator.java @@ -6,6 +6,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import net.simonvt.menudrawer.MenuDrawer; + import android.app.Activity; import android.content.Intent; import android.os.Bundle; @@ -88,7 +90,8 @@ public class DolphinEmulator extends Activity super.onCreate(savedInstanceState); if (savedInstanceState == null) { - Intent ListIntent = new Intent(this, NativeListView.class); + + Intent ListIntent = new Intent(this, GameListView.class); startActivityForResult(ListIntent, 1); // Make the assets directory @@ -120,13 +123,22 @@ public class DolphinEmulator extends Activity CopyAsset("Dolphin.png", Environment.getExternalStorageDirectory()+File.separator+ "dolphin-emu" + File.separator + "Dolphin.png"); + CopyAsset("Back.png", + Environment.getExternalStorageDirectory()+File.separator+ + "dolphin-emu" + File.separator + "Back.png"); + CopyAsset("Folder.png", + Environment.getExternalStorageDirectory()+File.separator+ + "dolphin-emu" + File.separator + "Folder.png"); + CopyAsset("Background.glsl", + Environment.getExternalStorageDirectory()+File.separator+ + "dolphin-emu" + File.separator + "Background.glsl"); CopyAsset("GCPadNew.ini", Environment.getExternalStorageDirectory()+File.separator+ "dolphin-emu" + File.separator +"Config"+ File.separator +"GCPadNew.ini"); } } } - + @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/FolderBrowser.java b/Source/Android/src/org/dolphinemu/dolphinemu/FolderBrowser.java new file mode 100644 index 0000000000..68203413b7 --- /dev/null +++ b/Source/Android/src/org/dolphinemu/dolphinemu/FolderBrowser.java @@ -0,0 +1,98 @@ +package org.dolphinemu.dolphinemu; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import net.simonvt.menudrawer.MenuDrawer; + +import android.app.Activity; +import android.app.ListActivity; +import android.content.Intent; +import android.os.Bundle; +import android.os.Environment; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemLongClickListener; +import android.widget.BaseAdapter; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; + +public class FolderBrowser extends ListActivity { + private GameListAdapter adapter; + private static File currentDir = null; + private void Fill(File f) + { + File[]dirs = f.listFiles(); + this.setTitle("Current Dir: " + f.getName()); + Listdir = new ArrayList(); + Listfls = new ArrayList(); + + try + { + for(File ff: dirs) + { + if (ff.getName().charAt(0) != '.') + if(ff.isDirectory()) + dir.add(new GameListItem(getApplicationContext(), ff.getName(),"Folder",ff.getAbsolutePath())); + else + if (ff.getName().toLowerCase().contains(".gcm") || + ff.getName().toLowerCase().contains(".iso") || + ff.getName().toLowerCase().contains(".wbfs") || + ff.getName().toLowerCase().contains(".gcz") || + ff.getName().toLowerCase().contains(".dol") || + ff.getName().toLowerCase().contains(".elf")) + fls.add(new GameListItem(getApplicationContext(), ff.getName(),"File Size: "+ff.length(),ff.getAbsolutePath())); + } + } + catch(Exception e) + { + } + + Collections.sort(dir); + Collections.sort(fls); + dir.addAll(fls); + if (!f.getName().equalsIgnoreCase("sdcard")) + dir.add(0, new GameListItem(getApplicationContext(), "..", "Parent Directory", f.getParent())); + + adapter = new GameListAdapter(this,R.layout.folderbrowser,dir); + this.setListAdapter(adapter); + } + + @Override + protected void onListItemClick(ListView l, View v, int position, long id) { + // TODO Auto-generated method stub + super.onListItemClick(l, v, position, id); + GameListItem o = adapter.getItem(position); + if(o.getData().equalsIgnoreCase("folder")||o.getData().equalsIgnoreCase("parent directory")){ + currentDir = new File(o.getPath()); + Fill(currentDir); + } + } + + @Override + public void onCreate(Bundle savedInstanceState) + { + super.onCreate(savedInstanceState); + + if(currentDir == null) + currentDir = new File(Environment.getExternalStorageDirectory().getPath()); + Fill(currentDir); + } + @Override + public void onBackPressed() { + Intent intent = new Intent(); + intent.putExtra("Select", currentDir.getPath()); + setResult(Activity.RESULT_OK, intent); + + this.finish(); + super.onBackPressed(); + } +} diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/FileArrayAdapter.java b/Source/Android/src/org/dolphinemu/dolphinemu/GameListAdapter.java similarity index 71% rename from Source/Android/src/org/dolphinemu/dolphinemu/FileArrayAdapter.java rename to Source/Android/src/org/dolphinemu/dolphinemu/GameListAdapter.java index b49149a36c..f0aa522a1f 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/FileArrayAdapter.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/GameListAdapter.java @@ -7,22 +7,23 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; +import android.widget.ImageView; import android.widget.TextView; -public class FileArrayAdapter extends ArrayAdapter