From 24c6be9d0f8dfddc84898cd02c2b98c34f444712 Mon Sep 17 00:00:00 2001 From: Eder Bastos Date: Sat, 9 May 2015 12:36:17 -0400 Subject: [PATCH] Add File Browser screen to new UI. --- .../Android/app/src/main/AndroidManifest.xml | 8 +- .../activities/AddDirectoryActivity.java | 96 +++++++++++ .../activities/GameGridActivity.java | 116 ++++++++----- .../dolphinemu/adapters/FileAdapter.java | 161 ++++++++++++++++++ .../dolphinemu/adapters/GameAdapter.java | 7 +- .../dolphinemu/model/FileListItem.java | 81 +++++++++ .../viewholders/FileViewHolder.java | 27 +++ .../app/src/main/res/drawable-hdpi/ic_add.png | Bin 0 -> 223 bytes .../src/main/res/drawable-hdpi/ic_folder.png | Bin 0 -> 224 bytes .../main/res/drawable-hdpi/ic_gamecube.png | Bin 0 -> 1519 bytes .../app/src/main/res/drawable-hdpi/ic_wii.png | Bin 0 -> 1031 bytes .../app/src/main/res/drawable-mdpi/ic_add.png | Bin 0 -> 174 bytes .../src/main/res/drawable-mdpi/ic_folder.png | Bin 0 -> 206 bytes .../main/res/drawable-mdpi/ic_gamecube.png | Bin 0 -> 825 bytes .../app/src/main/res/drawable-mdpi/ic_wii.png | Bin 0 -> 608 bytes .../src/main/res/drawable-xhdpi/ic_add.png | Bin 0 -> 198 bytes .../src/main/res/drawable-xhdpi/ic_folder.png | Bin 0 -> 273 bytes .../main/res/drawable-xhdpi/ic_gamecube.png | Bin 0 -> 2379 bytes .../src/main/res/drawable-xhdpi/ic_wii.png | Bin 0 -> 1630 bytes .../src/main/res/drawable-xxhdpi/ic_add.png | Bin 0 -> 222 bytes .../main/res/drawable-xxhdpi/ic_folder.png | Bin 0 -> 342 bytes .../main/res/drawable-xxhdpi/ic_gamecube.png | Bin 0 -> 4246 bytes .../src/main/res/drawable-xxhdpi/ic_wii.png | Bin 0 -> 3145 bytes .../src/main/res/drawable-xxxhdpi/ic_add.png | Bin 0 -> 269 bytes .../main/res/drawable-xxxhdpi/ic_folder.png | Bin 0 -> 504 bytes .../main/res/drawable-xxxhdpi/ic_gamecube.png | Bin 0 -> 5568 bytes .../src/main/res/drawable-xxxhdpi/ic_wii.png | Bin 0 -> 4219 bytes .../src/main/res/drawable/oval_ripple_gc.xml | 2 +- .../main/res/drawable/oval_ripple_grey.xml | 8 + .../src/main/res/drawable/oval_ripple_wii.xml | 2 +- .../res/layout/activity_add_directory.xml | 29 ++++ .../main/res/layout/activity_game_grid.xml | 9 +- .../src/main/res/layout/list_item_file.xml | 30 ++++ .../src/main/res/menu/menu_add_directory.xml | 7 + .../app/src/main/res/menu/menu_game_grid.xml | 7 + .../app/src/main/res/values/colors.xml | 13 +- .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/styles.xml | 28 +-- 38 files changed, 566 insertions(+), 68 deletions(-) create mode 100644 Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/AddDirectoryActivity.java create mode 100644 Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/FileAdapter.java create mode 100644 Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/FileListItem.java create mode 100644 Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/viewholders/FileViewHolder.java create mode 100644 Source/Android/app/src/main/res/drawable-hdpi/ic_add.png create mode 100644 Source/Android/app/src/main/res/drawable-hdpi/ic_folder.png create mode 100644 Source/Android/app/src/main/res/drawable-hdpi/ic_gamecube.png create mode 100644 Source/Android/app/src/main/res/drawable-hdpi/ic_wii.png create mode 100644 Source/Android/app/src/main/res/drawable-mdpi/ic_add.png create mode 100644 Source/Android/app/src/main/res/drawable-mdpi/ic_folder.png create mode 100644 Source/Android/app/src/main/res/drawable-mdpi/ic_gamecube.png create mode 100644 Source/Android/app/src/main/res/drawable-mdpi/ic_wii.png create mode 100644 Source/Android/app/src/main/res/drawable-xhdpi/ic_add.png create mode 100644 Source/Android/app/src/main/res/drawable-xhdpi/ic_folder.png create mode 100644 Source/Android/app/src/main/res/drawable-xhdpi/ic_gamecube.png create mode 100644 Source/Android/app/src/main/res/drawable-xhdpi/ic_wii.png create mode 100644 Source/Android/app/src/main/res/drawable-xxhdpi/ic_add.png create mode 100644 Source/Android/app/src/main/res/drawable-xxhdpi/ic_folder.png create mode 100644 Source/Android/app/src/main/res/drawable-xxhdpi/ic_gamecube.png create mode 100644 Source/Android/app/src/main/res/drawable-xxhdpi/ic_wii.png create mode 100644 Source/Android/app/src/main/res/drawable-xxxhdpi/ic_add.png create mode 100644 Source/Android/app/src/main/res/drawable-xxxhdpi/ic_folder.png create mode 100644 Source/Android/app/src/main/res/drawable-xxxhdpi/ic_gamecube.png create mode 100644 Source/Android/app/src/main/res/drawable-xxxhdpi/ic_wii.png create mode 100644 Source/Android/app/src/main/res/drawable/oval_ripple_grey.xml create mode 100644 Source/Android/app/src/main/res/layout/activity_add_directory.xml create mode 100644 Source/Android/app/src/main/res/layout/list_item_file.xml create mode 100644 Source/Android/app/src/main/res/menu/menu_add_directory.xml create mode 100644 Source/Android/app/src/main/res/menu/menu_game_grid.xml diff --git a/Source/Android/app/src/main/AndroidManifest.xml b/Source/Android/app/src/main/AndroidManifest.xml index 981d4117e9..d10632b868 100644 --- a/Source/Android/app/src/main/AndroidManifest.xml +++ b/Source/Android/app/src/main/AndroidManifest.xml @@ -15,7 +15,7 @@ + android:theme="@style/DolphinGamecube"> @@ -25,6 +25,12 @@ + + + exts = new HashSet(Arrays.asList(".dff", ".dol", ".elf", ".gcm", ".gcz", ".iso", ".wad", ".wbfs")); - for (int a = 0; a < intDirectories; ++a) + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + + String path = prefs.getString(AddDirectoryActivity.KEY_CURRENT_PATH, "/"); + + File currentDir = new File(path); + File[] dirs = currentDir.listFiles(); + try { - String BrowseDir = NativeLibrary.GetConfig("Dolphin.ini", "General", "ISOPath" + a, ""); - Log.v("DolphinEmu", "Directory " + a + ": " + BrowseDir); - - File currentDir = new File(BrowseDir); - File[] dirs = currentDir.listFiles(); - try + for (File entry : dirs) { - for (File entry : dirs) + if (!entry.isHidden() && !entry.isDirectory()) { - if (!entry.isHidden() && !entry.isDirectory()) + String entryName = entry.getName(); + + // Check that the file has an appropriate extension before trying to read out of it. + if (exts.contains(entryName.toLowerCase().substring(entryName.lastIndexOf('.')))) { - String entryName = entry.getName(); - - // Check that the file has an appropriate extension before trying to read out of it. - if (exts.contains(entryName.toLowerCase().substring(entryName.lastIndexOf('.')))) - { - GcGame game = new GcGame(NativeLibrary.GetTitle(entry.getAbsolutePath()), - NativeLibrary.GetDescription(entry.getAbsolutePath()).replace("\n", " "), - // TODO Some games might actually not be from this region, believe it or not. - "United States", - entry.getAbsolutePath(), - NativeLibrary.GetGameId(entry.getAbsolutePath()), - NativeLibrary.GetDate(entry.getAbsolutePath())); - - gameList.add(game); - } + GcGame game = new GcGame(NativeLibrary.GetTitle(entry.getAbsolutePath()), + NativeLibrary.GetDescription(entry.getAbsolutePath()).replace("\n", " "), + // TODO Some games might actually not be from this region, believe it or not. + "United States", + entry.getAbsolutePath(), + NativeLibrary.GetGameId(entry.getAbsolutePath()), + NativeLibrary.GetDate(entry.getAbsolutePath())); + gameList.add(game); } } - } catch (Exception ignored) - { + } + } catch (Exception ignored) + { + } return gameList; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/FileAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/FileAdapter.java new file mode 100644 index 0000000000..7f4acf6abe --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/FileAdapter.java @@ -0,0 +1,161 @@ +package org.dolphinemu.dolphinemu.adapters; + +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import org.dolphinemu.dolphinemu.R; +import org.dolphinemu.dolphinemu.model.FileListItem; +import org.dolphinemu.dolphinemu.viewholders.FileViewHolder; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collections; + +public class FileAdapter extends RecyclerView.Adapter implements View.OnClickListener +{ + private ArrayList mFileList; + + private String mPath; + + private FileClickListener mListener; + + /** + * Initializes the dataset to be displayed, and associates the Adapter with the + * Activity as an event listener. + * + * @param gameList + */ + public FileAdapter(String path, FileClickListener listener) + { + mFileList = generateFileList(new File(path)); + mListener = listener; + } + + /** + * Called by the LayoutManager when it is necessary to create a new view. + * + * @param parent The RecyclerView (I think?) the created view will be thrown into. + * @param viewType Not used here, but useful when more than one type of child will be used in the RecyclerView. + * @return The created ViewHolder with references to all the child view's members. + */ + @Override + public FileViewHolder onCreateViewHolder(ViewGroup parent, int viewType) + { + // Create a new view. + View listItem = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.list_item_file, parent, false); + + listItem.setOnClickListener(this); + + // Use that view to create a ViewHolder. + return new FileViewHolder(listItem); + } + + /** + * Called by the LayoutManager when a new view is not necessary because we can recycle + * an existing one (for example, if a view just scrolled onto the screen from the bottom, we + * can use the view that just scrolled off the top instead of inflating a new one.) + * + * @param holder A ViewHolder representing the view we're recycling. + * @param position The position of the 'new' view in the dataset. + */ + @Override + public void onBindViewHolder(FileViewHolder holder, int position) + { + // Get a reference to the item from the dataset; we'll use this to fill in the view contents. + final FileListItem file = mFileList.get(position); + + // Fill in the view contents. + switch (file.getType()) + { + case FileListItem.TYPE_FOLDER: + holder.imageType.setImageResource(R.drawable.ic_folder); + break; + + case FileListItem.TYPE_GC: + holder.imageType.setImageResource(R.drawable.ic_gamecube); + break; + + case FileListItem.TYPE_WII: + holder.imageType.setImageResource(R.drawable.ic_wii); + break; + + case FileListItem.TYPE_OTHER: + holder.imageType.setImageResource(android.R.color.transparent); + break; + } + + holder.textFileName.setText(file.getFilename()); + holder.itemView.setTag(file.getPath()); + } + + /** + * Called by the LayoutManager to find out how much data we have. + * + * @return Size of the dataset. + */ + @Override + public int getItemCount() + { + return mFileList.size(); + } + + @Override + public void onClick(View view) + { + String path = (String) view.getTag(); + + File clickedFile = new File(path); + + if (clickedFile.isDirectory()) + { + mFileList = generateFileList(clickedFile); + notifyDataSetChanged(); + } else + { + // Pass the activity the path of the parent directory of the clicked file. + mListener.finishSuccessfully(); + } + } + + private ArrayList generateFileList(File directory) + { + File[] children = directory.listFiles(); + ArrayList fileList = new ArrayList(children.length); + + for (File child : children) + { + if (!child.isHidden()) + { + FileListItem item = new FileListItem(child); + fileList.add(item); + } + } + + mPath = directory.getAbsolutePath(); + + Collections.sort(fileList); + return fileList; + } + + public String getPath() + { + return mPath; + } + + public void setPath(String path) + { + mPath = path; + File parentDirectory = new File(path); + + mFileList = generateFileList(parentDirectory); + notifyDataSetChanged(); + } + + public static interface FileClickListener + { + public void finishSuccessfully(); + } +} diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java index d868ed46de..bf7bf435b7 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java @@ -79,7 +79,6 @@ public class GameAdapter extends RecyclerView.Adapter holder.path = game.getPath(); holder.screenshotPath = game.getScreenPath(); holder.game = game; - } /** @@ -112,4 +111,10 @@ public class GameAdapter extends RecyclerView.Adapter } } + + public void setGameList(ArrayList gameList) + { + mGameList = gameList; + notifyDataSetChanged(); + } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/FileListItem.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/FileListItem.java new file mode 100644 index 0000000000..e15516dbaf --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/FileListItem.java @@ -0,0 +1,81 @@ +package org.dolphinemu.dolphinemu.model; + + +import org.dolphinemu.dolphinemu.NativeLibrary; + +import java.io.File; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +public class FileListItem implements Comparable +{ + public static final int TYPE_FOLDER = 0; + public static final int TYPE_GC = 1; + public static final int TYPE_WII = 2; + public static final int TYPE_OTHER = 3; + + private int mType; + private String mFilename; + private String mPath; + + public FileListItem(File file) + { + mPath = file.getAbsolutePath(); + + if (file.isDirectory()) + { + mType = TYPE_FOLDER; + } else + { + String fileExtension = mPath.substring(mPath.lastIndexOf('.')); + + // Extensions to filter by. + Set allowedExtensions = new HashSet(Arrays.asList(".dff", ".dol", ".elf", ".gcm", ".gcz", ".iso", ".wad", ".wbfs")); + + // Check that the file has an appropriate extension before trying to read out of it. + if (allowedExtensions.contains(fileExtension)) + { + mType = NativeLibrary.IsWiiTitle(mPath) ? TYPE_WII : TYPE_GC; + } else + { + mType = TYPE_OTHER; + } + } + + mFilename = file.getName(); + } + + public int getType() + { + return mType; + } + + public String getFilename() + { + return mFilename; + } + + public String getPath() + { + return mPath; + } + + @Override + public int compareTo(FileListItem theOther) + { + if (theOther.getType() == getType()) + { + return getFilename().toLowerCase().compareTo(theOther.getFilename().toLowerCase()); + } else + { + if (getType() > theOther.getType()) + { + return 1; + } else + { + return -1; + } + } + } +} diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/viewholders/FileViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/viewholders/FileViewHolder.java new file mode 100644 index 0000000000..79acc8400b --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/viewholders/FileViewHolder.java @@ -0,0 +1,27 @@ +package org.dolphinemu.dolphinemu.viewholders; + +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import org.dolphinemu.dolphinemu.R; + + +public class FileViewHolder extends RecyclerView.ViewHolder +{ + public View itemView; + + public TextView textFileName; + public ImageView imageType; + + public FileViewHolder(View itemView) + { + super(itemView); + + this.itemView = itemView; + + textFileName = (TextView) itemView.findViewById(R.id.text_file_name); + imageType = (ImageView) itemView.findViewById(R.id.image_type); + } +} diff --git a/Source/Android/app/src/main/res/drawable-hdpi/ic_add.png b/Source/Android/app/src/main/res/drawable-hdpi/ic_add.png new file mode 100644 index 0000000000000000000000000000000000000000..481643ecd5e5c361bdf5440f80b6ead58c015a87 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm^Ug=CK)Uj~LMH3o);76yi2 z3=9knFBlj~4Hy_+B``2p&0t^r@JYd~$;Ero3pU3$>TC;kPE2D9Je$4vWyTeSTM{l?57lp3CVPyHk>Rv& X2;=|5YacT(Ffe$!`njxgN@xNAMifE{ literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable-hdpi/ic_folder.png b/Source/Android/app/src/main/res/drawable-hdpi/ic_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..9f5c756099dd87ae0f911445d16e4d192147d072 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4i*Lm25-&)VFm^Ug=CK)Uj~LMH3o);76yi2 z3=9knFBlj~4Hy_+B``2p&0t^J4mJh`hKCF@W-u_YZu4|;42f{xIwNyUY_dq( z{G}@@=PjRgR3g~d@ca>-KMKocGiz3#H^1L@e&_c))wL%*XBY4L`}TYE>)QKUukpHV@Y3{Vl4cTTWZl6#Ls+n$ z=lczbbInUd=HHgE;IiPnp>@7eeg}VrMkD8@Ck(&*jUEYtZA&@ zSiYSL%9$+<<-0phygFky7OPYHN!|(8_%XSBD zt~_G)X!g45#@Wh`TKyV$e)b)hDXGYK?RviE)6N5zPjWBb#aJNrfz!ZJ>6g%zQwQ$- zye)WA_k0Dzj0r5^m2nw9E`MI0ex-RiHJ9|^^1#8SnJAJ?Tz1!w6d4} zQLVWw;k*2~&D8TY>(2y>yjB&szi@fxI`_1&V{R>FMhZ^c3`_MAwcme8P)@R16V3jl zcbDX1%^CB>FN>7E?)oxs{qmJ=mv@>Ph($;U&fdZpl&aP5#+`)R`#*{zj8!kN!43QzK``Y(%zEE^~e<-A{Mcij|*eTtUdB1vgWrr|?ZV!EAmcV4> zdhLLz^w-n2%L=@vNyq;FVsbx_{Ym4m>0kXtW$$0omSp7pbjc+AcfNh}A9=x5%%7gA zZ(-QvIa^9_`L3N)iaeK+|>NoFLmRPAQo46_G#-*tK zo@wWF+E;Nze!i10yGQ+J^6cG826{VH?(YfkUsASNv3$wSlP489-;~Ski!W=hy6}|K zW5W9s^Nhr;zh>Vv-E<{p&i`w#7c6<-&2jodLsovr-4(yhreE5cBC$47FmZkIkJ^cg zCuUk(c%ObOnArKTJbV7iuu!3UNw>Z%>uWGEovjhwb83rLg4DuyIlRU}W{FnY_x7^A zc)!f+!8_xvV)u(L&3|LJS}BJ8No86>noG>po(ZfW!J7+%7Tvqk{Q9(bb;sYny9wCyrel;mTp*q*?m@2T;&*2kAmf3;Fla6#QlUAfJ#kFB`4 zRdR82V_=~~$&8%2k8eBhYC4@|_tw;MPu|iy;Xt^`d6|XxeWPax3UXV!CWRp?~kxGjOfcb#@5-8qdJMz~JfX=d#Wzp$Pz|49p(@ literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable-hdpi/ic_wii.png b/Source/Android/app/src/main/res/drawable-hdpi/ic_wii.png new file mode 100644 index 0000000000000000000000000000000000000000..ab4d4be283e594d0e1101009be47254b092a2d9f GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4mJh`hKCF@W-u@?pYwEa42f`mJ1ug}++>N? z`AeHJc-IMu_l&ZW{@qBqr+6S?f&2&F z4~!p_3nU8!KX4leR|H+Uwd$7fd3^>m=6S)PXPNn!x3NBBzO3>y^81Qa!i~Ed{x--r zsQ-z-wCmWCRiD}}HyAg@GXL^>pqyY<;P7l8Ym9PcWT-4}48IKfAHJF_hwTi>n@(mW z>{{~MjPVOcfz$>2^V1oERrcOtIUzo4^66aGA9v3l@IR1y;G_eiKjU|=S8G-=H+mkh zJdl6Dh}q~Adt9kjGHS=pS zU)XzEF*+LuQ(~?hr z)+%UT^7Q77o;h-n;tav6XV+@IfBD?~S-|>g-%H}5sn7hF`ubDm##)AiE^gFr_}ge| z_^oHvt&7`P&N0;W>Fc~bc;NQ|+XI&wGX=i2{QVs8?ZpbM@Ml{O+?;s*fc%6lyH@SF zZjqq!A$xi|(+Tz+U2B%Eei8WKn8e?uKaxV9$#Bidmp@{>{aAfIllAcKb zGOP7I6{Sng-sniXvi89HGIpKy$_X|fnpDIaxtAU1vE*LI{q}q=NX@bi3UZkN*Uk$nE9xtw3Vc&qdIN&nRw?#TId=KSk1kk~F- z{`TvnJ2Jc{?pd+TVA#R2FRiY2h%kZb)(eca{nkCMxC-eK`dzn|h mi+NW}l|sr-|H^s(vNqSR5s3*Y|H#0=z~JfX=d#Wzp$PyZuj4xa literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable-mdpi/ic_add.png b/Source/Android/app/src/main/res/drawable-mdpi/ic_add.png new file mode 100644 index 0000000000000000000000000000000000000000..977dd3427ade9fa5002997d3e3df916aa8861983 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#3dtTpz6=aiY77hwEes65 z7#J8DUNA6}8Za=tN?>5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*O)8YMw5RAr_~T|D1P_N{~4w<#4EHvDAi)1LB8zLM|Fe@h{1exE3kGu%up% VF*~$;F#`hwgQu&X%Q~loCIC&3EsFpE literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable-mdpi/ic_folder.png b/Source/Android/app/src/main/res/drawable-mdpi/ic_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..1c5797c9e0fb9a3bf6e051c69ded2c21741b64d6 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4i*Lm2CurW#S9D#3dtTpz6=aiY77hwEes65 z7#J8DUNA6}8Za=tN?>5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*O)8Zk{fVAr_~Tf1G!aN|9J2#q@vwpMD-Gj!cKpzHsgqCAK}k-uusL`~N?F z(yE95SF|ave<&JwDqg|lN3!So8K-L5OT|gTe~DWM4f D(AYkb literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable-mdpi/ic_gamecube.png b/Source/Android/app/src/main/res/drawable-mdpi/ic_gamecube.png new file mode 100644 index 0000000000000000000000000000000000000000..5f972fb80176bec01ee452e10bc456cae9a70635 GIT binary patch literal 825 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuL889ZGaLp;3aUW;7uE?I=_ z!+j(ELV=mZd^;!b%ysJM(ezyQ_>fL{%tC>gN;CDZ?3~zfMt07NC1=8y2#B|Edzzh6 zG@cn}TlIhU{`2MEwnv6n|F6FPb9+5~#RS)G{knl!?~vOL?&8p|&)2**eeIB) zE57Ey%^Tu7Kg+#4yg2mhO()B1oEM^QGpIk(deiEwF7&tOd!cYx_|^B98~(9gh~j3g zeh@XMi$PUtl1cfog#C{c?_9_{{r~ev{)TH&8W!y7W#`(PSH3H~(|hJIlS~V*`_5+{ z4Bo9@Ro?#oGsD`gtA8JztEN}iI{PDs-TS#ueA0?6w@EerX?eZs)wWEA`>ysw zPXD1$O^%TOtTO(g!a*n?uR9Bw)PuqIy{_Wqq`d^Crt2P6sF1JrJ48%6;JT-iE_fpGszTXrwXa^iPd#lFUWr9i}d`>L28`Y*RTuuclplgG{tflS)IVE@Ebm#>7xVe=%XNEJyr?fVU}$-N*^OcTgB9xzoUp0a=lI|ypH`#3 zsk<~~MqrGVEW@HD`ny-BIU3JaFLkpb&bxqoG?a`u}cUHXQ$+6k=MP&NAu+Xcg3>_?N_?{~s6F)4i6fHgV&ZUEomrTrw zDeZ_j+r5K5dzIGRv*A|ttF~_QW#1)N-6xc?LR|UV#3z~=9sLtNzbwlQO*Q}5*E;Wv z?(V$UJIJUtQz@Pmwj`hWx$*q@6MdoXYo;j z))6<)FrJD^d>YT!^DJ)ryzO=FzxQsvx4HKGy!W4Nu9x1uUV7jE%;)Kq$I53VtUCNT zKQL7HNaPRIlj}E6TJ_3D=TN?9pU)qAX6^#Hy5p7=vi~3bQ?U=ZdbWbqIw&;$fmM#* zrbMO;)oqW{bv%od*>5XptH1nC;{NH<4y>srqd!5Cc&owt#`>uV??fzo+gUffAp1dFW z)k5k+bWC&d4w>VH7MUlq)@T=O2^W9-H>_WM(wUH}&NtfT7cl-i^hqT?{HprmO}d`f z!mkSLF)6B1IeBkYRP*w5?H3cw9y`7{C|kk2x^27cjj0t9@{eaHo`0qCKJ04I8yEAV zwx0J^ulmaTdG)#l(OVD3zX{kNwf>>enxnZD4Ehhe_jJDBsC2SCnA5Gm{K49VIjfa%%F}z5M?7GS&5bUt?Y0&$VgpJQ&q={@AYF>4B5xU18fP`+mXl9nNu9)?bU& zBphZJ=+E;tvYzW(U>A4Hw_?lgbf+69ZGS!2kdN literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable-xhdpi/ic_add.png b/Source/Android/app/src/main/res/drawable-xhdpi/ic_add.png new file mode 100644 index 0000000000000000000000000000000000000000..67042105d29bc5676206dbdb1cdc9359e58bd63d GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4i*LmhQHi~JPZsB3dtTpz6=aiY77hwEes65 z7#J8DUNA6}8Za=tN?>5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*J~21_nD%7srr@!*8!`|phHyi)} literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable-xhdpi/ic_folder.png b/Source/Android/app/src/main/res/drawable-xhdpi/ic_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..e5f54cef0100edaa2ca68f6cc8fc60ba2fd19baa GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4i*LmhQHi~JPZsB3dtTpz6=aiY77hwEes65 z7#J8DUNA6}8Za=tN?>5Hn!&&zUNC1@pbY~915=W>y9>kr_Wm>b85kHi3p^r=85p>Q zL70(Y)*J~228K>g7srr@!*8z}@--U>uwJy~{V~H%K&Y`d_gfMdmC^#H2-QXJkYq9o)dZx~sxqn=Wzt#Bjtl?|FJpJP@Cr*KeME3bn Xy~Zo&#pN(CFfe$!`njxgN@xNAb}Luv literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable-xhdpi/ic_gamecube.png b/Source/Android/app/src/main/res/drawable-xhdpi/ic_gamecube.png new file mode 100644 index 0000000000000000000000000000000000000000..5efa0a6ced6a4f896a093aaf760f071a7d13ee79 GIT binary patch literal 2379 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 literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_add.png b/Source/Android/app/src/main/res/drawable-xxhdpi/ic_add.png new file mode 100644 index 0000000000000000000000000000000000000000..72cedcad4f1bcedad5e0b69728dd893c52edf322 GIT binary patch literal 222 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 literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_wii.png b/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_wii.png new file mode 100644 index 0000000000000000000000000000000000000000..97717c2fc8c4e67b18c9c50f780c191dcf19f2a7 GIT binary patch literal 4219 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 - + \ No newline at end of file diff --git a/Source/Android/app/src/main/res/drawable/oval_ripple_grey.xml b/Source/Android/app/src/main/res/drawable/oval_ripple_grey.xml new file mode 100644 index 0000000000..31f064c0ac --- /dev/null +++ b/Source/Android/app/src/main/res/drawable/oval_ripple_grey.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/Source/Android/app/src/main/res/drawable/oval_ripple_wii.xml b/Source/Android/app/src/main/res/drawable/oval_ripple_wii.xml index 35c767805c..644876eda3 100644 --- a/Source/Android/app/src/main/res/drawable/oval_ripple_wii.xml +++ b/Source/Android/app/src/main/res/drawable/oval_ripple_wii.xml @@ -2,7 +2,7 @@ android:color="?android:colorControlHighlight"> - + \ No newline at end of file diff --git a/Source/Android/app/src/main/res/layout/activity_add_directory.xml b/Source/Android/app/src/main/res/layout/activity_add_directory.xml new file mode 100644 index 0000000000..72d66c3950 --- /dev/null +++ b/Source/Android/app/src/main/res/layout/activity_add_directory.xml @@ -0,0 +1,29 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Source/Android/app/src/main/res/layout/activity_game_grid.xml b/Source/Android/app/src/main/res/layout/activity_game_grid.xml index e87f859787..2dc6416a94 100644 --- a/Source/Android/app/src/main/res/layout/activity_game_grid.xml +++ b/Source/Android/app/src/main/res/layout/activity_game_grid.xml @@ -9,9 +9,10 @@ android:id="@+id/toolbar_game_list" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@color/dolphin_wii" + android:background="@color/dolphin_blue" android:minHeight="?android:attr/actionBarSize" - android:theme="@android:style/ThemeOverlay.Material.Dark.ActionBar"/> + android:theme="@android:style/ThemeOverlay.Material.Dark.ActionBar" + android:elevation="6dp"/> + + + + + + + \ No newline at end of file diff --git a/Source/Android/app/src/main/res/menu/menu_add_directory.xml b/Source/Android/app/src/main/res/menu/menu_add_directory.xml new file mode 100644 index 0000000000..c459811868 --- /dev/null +++ b/Source/Android/app/src/main/res/menu/menu_add_directory.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/Source/Android/app/src/main/res/menu/menu_game_grid.xml b/Source/Android/app/src/main/res/menu/menu_game_grid.xml new file mode 100644 index 0000000000..0d689474ad --- /dev/null +++ b/Source/Android/app/src/main/res/menu/menu_game_grid.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/Source/Android/app/src/main/res/values/colors.xml b/Source/Android/app/src/main/res/values/colors.xml index a4174647c7..d7b7847125 100644 --- a/Source/Android/app/src/main/res/values/colors.xml +++ b/Source/Android/app/src/main/res/values/colors.xml @@ -1,10 +1,11 @@ - #2196f3 - #1976d2 - #651fff + #2196f3 + #1976d2 - #673ab7 - #512da8 - #2979ff + #9e9e9e + #2979ff + #651fff + + #bdbdbd \ No newline at end of file diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml index f321d08df2..37ce0b1365 100644 --- a/Source/Android/app/src/main/res/values/strings.xml +++ b/Source/Android/app/src/main/res/values/strings.xml @@ -220,4 +220,7 @@ Disabled Other + + Add Directory to Library + Up one level diff --git a/Source/Android/app/src/main/res/values/styles.xml b/Source/Android/app/src/main/res/values/styles.xml index a0bfbb1865..b185e6cf10 100644 --- a/Source/Android/app/src/main/res/values/styles.xml +++ b/Source/Android/app/src/main/res/values/styles.xml @@ -1,27 +1,27 @@ - + + + - - \ No newline at end of file