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!ia0vp^Dj>|k0wldT1B8K;Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZK3>dAqwX{BQ3+vmeOgEbxddW?|m)`b<0N2FLh>sBaz zbNHm-*5u;7=mneO8+En?J13^G1)j}b{4(Q;!Yv7xt%vHjER#LP#>jBmH-z#3;kA!} PRxo(F`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!ia0vp^Dj>|k0wldT1B8K;Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZK3>dAqwX{BQ3+vmeOgEbxddW?E%hg Qfp#!>y85}Sb4q9e0M*b#$N&HU literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable-hdpi/ic_gamecube.png b/Source/Android/app/src/main/res/drawable-hdpi/ic_gamecube.png new file mode 100644 index 0000000000000000000000000000000000000000..d128a17277d5cd25d4028e43a3c41851cb963e3b GIT binary patch literal 1519 zcmV)ikmId|%_Rq*{ z2dp;e$%{GlE$|vJ3wRQE8CVn%9aGs6P$^{vU~^zs;Mk1HD!>voFdi&{P191qy1>#6 zuzvyHWwaj5bk2>4U)nD9A3&uP`QX7j0LK8w0ZkyD^?OD@B2NX3r0LueSTzAQ-}wb_ zf9`)9SP&8Nu7C9dDy4Yy<$-O1lYtYHu+2mN27U$RCO;-b#OrPp0dN-Z2{1V#`V!R2z~1@W5y>sjcmSA?1Xp=pXiP-> z>C5UV(`8=;-T*eugH)DF0Jj6r0`mZGsQ>6i8l$}NW#0CV-2Y8dzeiP8gfQSY3L=skoshWp@_cAJLrTis)(-=*s=RB3qJg>}C6ze4r-=U{z zu1988#zus8G9W?=0HrQrEAQ}NBVszNTLn4cHZ6m{#0^q#M$sYcVeH82)f z7!jMa0a9fuL+^MCxH2NFODf3kRh}F(1@7&(eoPhK06YWilR}!1H%GjskjBu*p&RwfYO$b z651EKz6LbPX(<4~x<}$m;I=g^K;BA)Nb)(r-PvYn6{qA2RjiV}6Zio*EYoWd?zV;v zNTrQW)#(`$_0|NSy9-Fym1pNBPwJ`Z1Zq?OSyUyyhrJ2tAx7`QRE~rfOtV(XEy-^B zjJj)709ChD;x=FcGDX(FH5>KIJ*IFo3JWEZGbEr`q0FPxPGL7 ztV!2Kgi7*e)-8=q|Jfc`JBix{NW$w$7HeDADG{MRdCq0PdBA49rtGWi?gXSdB&LzF zY}nFTkBpYiEQhKHS@Ya)9lR&`W1G7oFfO?y-@H&yq;|6*cci(=$sq~scOJf9c87Y< z!76XiwMimfNF1u-KhIEm(sOl7_C_mVXtHOeUYP) zX*)Pe%i|GYiSc)9pQ%<=65e9k^rnu0G&P$jTa3!IDqtF+?raS+QZ`{ax4n%9=m_9oLd+Pe=#mY6_LR&3xMs=#XgX5V#|d!(}tF zrqL2(G_(Qx>Uj}iA3k6WHcHD2r7b8wHfc>@5?cN#`)27-?xt7XRdc>mt0`+;L;7Pw zrqZ_40$Lg4I$exWa`$ClJv+yzm+Gk*5ukplEgrM$#;DP?8KZ-NQE?b_m~5Tn+dvH| zLd^$DDJn-}w2hF!S0v9Iq2Engm=O^RJ4IqtBGdv*ManBp)v-oH)Hr+kBUSy}e*g-p VEki(6^S9|~eH>_{1^{)39y={@7&RA;4guAMg$E z0q`Sm8E_Hs3osLSQqtP0+B45D05$`jQ&r6a4ga3~*fl0tQz;D1Z12W17 zfqg>nEN>)feO1}?rhh3g5ZEFB)&esm-Q5Jpay<_08)+T}ZVIDj?9}|W3SUXu=(UmU za9~Sc!hm)Ho&kpCz~_OR= zU=SM`V6x8M^*O%$1_ScshW5JvizCOps@f)|n-Z{JW@F3qDsY3O<=NPboE}*h08=H+ ztt#*7=SSvHuX|0>7gc5EP6CdPWSw0(R8^yaD}eohH8J*#s@l=F1kM0{jxQ|j!NB{# zJ;2ieX%O~={qs=v=%^}J=C#1tk=MWJc6MACzd56h4Ra1h zOE_E7C;t|Z^|aPD-*&%Aj^6c;LjWnXWT4FYZ96l z11=o<@$Ve!O`{E{l^Sh^+6=W~pw;`fhyHgA{RM-6tQ1^SckuuK002ovPDHLkV1gsB B<2wKV 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!ia0vp^5+KaM0wlfaz7_*1g=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&_}|`tWO=~G=WkLM z=IP=XVsSe8&v^%_1es$}4u^UcOKr$FAbzMPO=~G=WkM1 z=IP=XVsSe8$9V^-6p1xbO#k=)>F1H+$aDzp3+HZ8V%ziUz5lGX|NrABt$O%>MVsRK uhoXU};uTDOBzvx(ajKTRR7{nTi6QSta;WpwiOoP089ZJ6T-G@yGywq6*glc~ 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 zcmV-91IGM`P)R&orsKjacU++mnIf4l)VYy}%pIKQq|8^O5Eq0C zNjAzMGnrmJdjGq>&v*8>Syy}id*Ah}^{i(-?^hNPt+n;A11`cwxC?Vt_2;bXHS0iY zZ5OP-+1MAk^B(TQqgD0ULOIq6&|2F7C*msXg-s_C{fzf<6INH%@6&+(1<+ax1$*FH zoQeP?8j>`3#$dnVA>7bu%m4H74}jKMC^!dacFu=`sqS^$jm+Z$9E1%=x#sXN?ystM zhwt+Mt+lKB#hoTDeubOy2tMzfb7YB$K%G%_a^urFX0k=j2&?y zzQBX{21`5mv7x8WYfYzcNmb2_J9rGMusimTLhu5%o={O{@oJ}Qb+7b*uB;z$G|mrr zRV^O_{D!YPkGJ+pkLeXoswg1e;w@ZORd2S|b_+c?q0{zhRV|wYh+7Anea4AB; zl0M)RodpZP^Syw>dh&Feh$v$;)f*Eckn}tgePxVf>!?`$kLKuqzh&4o-f8cF| zwj|GS)3e~K)TP+KE$1PysIab$LJ341APv^ zAj_Ce_rd0)J;;N!bi8QK^vjXm@I4ZJ7T4f|s)~}d*5abs+^FdcY&^2`6ql}6Rn^Kd zKsY=O=OM-y!y6)78n|8h>wu->2_^ZWjFqgg`UhUyZxr43^DwVRg@%oE1t}`s#-f`qt^}4xn6&yqLU|7 z6hC?ZuT@p(nHn>HRdk?ib5s<-JeBX{F{-Ng|AO%sup$pAQ0w)@00000NkvXXu0mjf DD}R!v literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable-mdpi/ic_wii.png b/Source/Android/app/src/main/res/drawable-mdpi/ic_wii.png new file mode 100644 index 0000000000000000000000000000000000000000..43718bf98d06789b09bbb3380be1e7a5a192a2c3 GIT binary patch literal 608 zcmV-m0-ybfP)Jof_tFaM>@anktSdwj3)%WiHUvyPHgQsu+i0UysGX)i`~}*Hx5N@Q!Cv+Y}=1>2f?SfHOb#q^*9>vTU>)< zxE#lEIBCdgtSfM|R~O^`R*xr=%v9Aw*oL2Q0sg}BBwtt6C!?}0N!C}@61+5Wd?d-< zs#=4mXDjHCHse9;!5w%5tA@87*p+w~ALE;0&*~)aR@HLsL^s7fN#3if^#k*(uAp1B z!C&l9uo|!7GOWdIcmOZpOT3Biu_DQLQwc_JH{h+IZ0jKW57!Ut-X1o#fDUjM)+G63 zt^^kid#=KdxD>l_7cRuX5q1aJ>*w3!B**7U&^B$sx{2BEq3HqY-fxfZ9D9Eb^<72p zojiky!CH#X#=5&_QIek22Du&Ypr^P)UOGGVb0!!-n{Y3lO)@*3O>jP5#!Yy%yJte! u$=h`5b9jme=KnQ4MS)YVpRQo4MJE854hAQ;j)pw|0000FVdQ&MBb@0Q4<48~^|S 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!ia0vp^1|ZDA0wn)(8}a}tg=CK)Uj~LMH3o);76yi2K%s^g z3=E|}g|8AA7_4S6Fo+k-*%fF5lweBoc6VX;-`;;_Kaj^+;1OBOz`!jG!i)^F=12eq zJ3U<-Ln02py>7_YY#_jT(U$ke3_Ag##%4j5DV)wPl~hFT>300vQMlE=DEan=8>vhz zcepbuH+)zd!);>oGj<)b)w*mdKI;Vst0Cp=^>Hq)$ 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 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhaw6p}rHd>I(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g$s z6b$opaSX}0_x9RGP6h=5W{1uHFWkCy^H1}O)P{mkk7qly8JQr!Ds4T702EwEU(nYs qt)QS_%>n}I(3)EF2VS{N990fib~ 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 literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable-xxhdpi/ic_wii.png b/Source/Android/app/src/main/res/drawable-xxhdpi/ic_wii.png new file mode 100644 index 0000000000000000000000000000000000000000..161241408efd195bdfd00dc446689701f2687f3d GIT binary patch literal 3145 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 literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_add.png b/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_add.png new file mode 100644 index 0000000000000000000000000000000000000000..2bef0595839a40b3d454a20cd48288a45da81a8b GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%xcg6p}rHd>I(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g$s z6m0c$aSW-r_4c+S*8v3{7KiX(|MhS0UcN1%)8co-fdv98hKt|My$4i?1nizhg;mz& z9Opz512aXu~v2$8Rl{>+G`sNq!S{wXM8?M!*oXR_}uy`q%@68CiV Kb6Mw<&;$TV=|M&S literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_folder.png b/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..7a3c198ee44f8987d1f9281980409028f7c1ee15 GIT binary patch literal 504 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%xcg6p}rHd>I(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g&? zz`$7G>EaktaqI0ZL%+ig0<90zRXWx?`U+Y&E(v+4v~DNkK1NZ-8lhP#k61JUF1qYw zn)|kC;i8l4wy;Eh)BANib=FTKyz&;k`dpqx|NrDUzIRU`m(6i+apta)=Ry&Tpr6-ACC0M zmOdM@WS`&p!@5^qnIt(Zwt36t^TU&q!GU8!AS2La1zZ=MKqMvy~54Q8)uW*a2P znrX3pKqmElRNu4kABT@HD_kSizD_4i+W{>$G(9Zr2+6WQ`IzvS<1#c5f( zUsSr+RKBZy`CI#gF?Z`TEBU{wXWXpUhU`2m%v2!E3=b5B5BC}G&s>`5rX^992om*l L^>bP0l+XkKH;}sl literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_gamecube.png b/Source/Android/app/src/main/res/drawable-xxxhdpi/ic_gamecube.png new file mode 100644 index 0000000000000000000000000000000000000000..a24c1f14fb6912ccdbcfe0b87dc69472ac5d7ad8 GIT binary patch literal 5568 zcmV;x6+h~UP)9QnSS%$w95JW&k1wjS{1r^i)Lj%wVBow?2!^`l$Kezzyf@>gDIDi9_iVP~s3<5HW z3g@thCt1&q_he^Q<=R!XySh(j#ER8jyM~qDJm*voz|~rNMpgY}Rk8niRlT~eXU6eA zSyi9v>pNBT1J*Q6?V4|Ky5_@qwnqrKV=T4SAdF{M)lc>Hb5-^HzJ9r?Ue*^J;q|$y z`fOFP|5sIgvoE;ee_7Ks{qT-&<>=2{9S3yabFQDSDggh2s(M9L{ZduEq^e#Ve|vh| z;n%9l^`BMsg}%OARsY@B;U`oodZ5oRbTAu>s9sbz7R_&>hIrAgj@pxp1S}#fL7eRu&REci=vnqRy zcvZ2U=(7J?RmJ*JReh!F1(1Pg0y*EPs{g5~@7_<{a196mzyO+ssQJylelZkp%KD>< zZSe-EULEj{RrRsHKm>pL`ZP@-?Y>-hhJe-@Ky)EypnMi$=0$z|N?16EBg730ioflJ z74+SzVn;b^Ex`p?ODwp-_n{}AxGSXGB?3^KDo;fW@*P0l*_}FhS7|td#Ym zh(IT}05l5|6$GFg5K)+~{u{9b67EDd+$92}c&Pt%UCjJORYCP|0W0nLQ9$o`e|p9G z3~&UZ>EqpMLR?`0wQbx^|}ZhK;0-)fQ|EnqGgBj5jh}--`bCeCtLY&HDHFgeCZJlw5}LB?h(XO>&McBf&w!Y5$pI1o z){+(z+`{>I?~o5MbfDH6Haq}lDQW~fP85rqH*TX7rN|kfl(bT~X=6Bu0Yn1}nXL{G z0f;>!sS*KaHm@+sg%AMxf!+Lq@g+nPq9}uXIC(SI?6sCg5r6{KtjxF#uN%cYC2Wug zLdNU4el%h@Ab=Ro*HZqr*3#tlY&d$CINKaU>g%7nXd(pe*>=a5HWAR%fB*zhqk@Cl z*Wxx%yjIXCl|jX>jN8E8P#FtH3HzL7NclTSWv#V5XU3G^1PuhvsUd(^RF4f2;zA@E z-~$1~n&67B>@`;pApn4KaWgJtJqW;@sRrCc1prBc)oVll?*C7M|T&~}Xg@QFkf3CPq z+V#s!mQ+8K$y$U%Bp%MLg+^5cBJ;KuTIvQ6;G!}Eo$%Sc*3lsZU`23oXo6>~UyB%y z4$oc%o2H}+7Andx04!{f45e$l1`(y>h6usBV#f;NZz#&7%5>1=SO`bagj2}tiY@L{ z5xTq|&z;|oelp<$)#I?SIP)wv6+zu!s;$7@Ap~%fT(7FCU+w#A6=MJxM<(h{KOT^ep34I+EPC$~lQfDrZOJa9%_X_WwP$|DwPE z1gz?WLkM_lKR6Vz^fpC`r6b7GWMS_)9U1IsD1_aJBW7FL(Y#-gVuY0MwJr#xW8))2 zSOCc1NMB(s`3?XOFLEuPmjg2CZzhi4<+~M^d1geViGD;AeeSj{4{SD0Ej4yFS z6{4Og4jKUBw^*D3AOa{ZJ!hRtb~xO;wBOHf^V!+w=m0k~&1=AebMyN|Nf9||3iCZW zr%#`z=^dj8cz6E*^);{>J0>CKAV9;(K|!<3Y=M-l*VK$;$C<*)VIeaSH%nVS19T#n zeXTBN8TCx(h~LsQ1lh9*yCsKPYxoCN-l3?iM*^u@Vn##1dEk5CC?f-iO2yhUr)m0= zQ3U)${{X;C`&@+si|L?Ap|G`~W`LOp$gC5TqxlKPXbu{}fGU^qCCgQ|>Vjs3_Jy3D z&B4wEp4m`=x`qVH6RkDGjp7334)sI5ykAQ!jRGWrVmS*8QmiGX!U1m@MF2{MD`PSu z0?L3rRe&5=7B>FFA$eaqQ^r$}tyC@}H#1i(&;|CgE(iqi{cCkWe5V$XVGQpr&*C8DM=D92l=Zg%8q3}Kw z4hVmfg|l$#h6A>&fYzFILF~VCrn(^Y2)aa0fEx%KSh5Ip&kB4r`QC$)>JSSIsAodt z7%v04`VQoh`P&czU|TLJgB^+jG00m|b|^a*EIpfI5k^L#nmplV0gBF)$YQrH2x`w{ z{V8=p>GUan*v)W3K!%dFm}W{}#FsMXp)Y|yVJHU9S7*SzyzadL3lV^*<9$O2K;v^k z(IP>X4*d3so$YAF)ydU5zIyek^!&39C3sNDTQWs?QjD0RY>^sC`Ovy8A zzRng-2GOFJ3@HGiC|(dX`bJq`0CE&faMxK7kV*D*xXh!nf1s-Vwl8k%N$xmU>^Gwg z{<~GhdPDcHy|Ht}m)3}l*YeC*V`R5jlq=53_i38YBlET5xRK>^Y2j#%E%VzMx;Tjg zwh(~BWGv?Is|u@$og0~D{{}Uo@Ca#G1B$t(*=K~3_l$;!w}76ntE3SRn5ou@VsNM{ zAOaMq4xr^T*%*S-O`~HizkP88q@qJ1yKd_7RlMCTSNs56WW7;J5MjIt#Rf$o_V$D~ z_5eNKlR!Zs>nmU)YvCcowZ5`3M6;4O(prH5zmr6BaRlUz;rMVvCMQsKpC%-0G%(~p zfHkSZo|!e2T2@Ys0{Gbb^|;wT($7m=2R)#@56~eHh+-{#y|-5N{v)8vTmTOBTb=?1 znJDM=3>PPr!TLrr;TmP^9?`TcGcjq7ZZfoh!JwIJu@&EKoQXX-0FgA3z_|(p00<8a zMY%YfP8n3IxtCSbX=zwVw>S4-vj)447(NV?4$v_{vCe#-o-e)#){VXi#G<{AZWyWN zy9xxP8T-bn`u)BDgz+W*t*s8wWq+J9LdGnBFjC%PyOPQliwA{k#tMatxofZtYs|P7 z^53qVQwj{O1_AmIe^^z2&=)e;7!#Cf3lZF6duqD)%VOTO0swCqyFa^P3?uV9h$1ba z?972P4gT4iaB8veRUiOINCc2ycuQ6NQMVR!j?9Ev2B>HP04n6HG0p7NvQ1S^!U(W{ z3dc}q4B%>3@;%n7f(&2B3LDAvZ7Ke%L4Y^&r&aZ~s(O1@$iAKdyAOsn1(#S9g{g|~ zz#{a06XuP(&y3ZF!^TGs8Er+ZVRa#HFoTWTT*3joS_FUuEFuvA#Ty{x{KQIWG%e?!64fG+yEkT4sGJjy` z8?liHQ2Y?nLF}m~jN#~eVA-%TZgXj;?;@dyqmEclEiOgSk^}PQGrR#eun2A7=ov;v zoJi3bvPdV3cnx9;amB9JZQN#WS^OSKf8cb$Aq1oYrEXvc38n_ELWXlPS7Gr0rlS@O zX06qHaDW`M7XcZ(GxWkPQ5~xKeqcmUazMuM0kj@0V#QDa$gunb0B9-cQ6rj`jUmSJ z(~;ZbQD=*5cF|wtC|f`JU-mkfBwk z2t3q{^H3om3wYmGRqwAVb|?{wM==9@CuzYIR?_XE^lX8$goPd7#ELk$O()R=5|-4K z3HwkXAgk&CKFJ@FK*a48Jt$tn7_6*r+k=1%t*13*Sv(>SGgwQC-!O-<)eiMgAs|K5 z-&K_h5nyUCdjdv##8UZNGRaQJ+FB+QyEBUrcXAt+)!OxxK!8Ta zkfsFi)T|oPz=^}GB{&EIs7(b4PiX`=Z6y(aXc$F6T3n=7&F&E}G&ZGgfnPx=!vf)_ z90HL4iXb?^g#I46yk%usc8K?;Idj3(VH!BhzJ3Y4WmN%&Aph_5}XmAj1siq1m&mGBa^EbAcA45UiSDhYKvR$&R3{D!hv)WGr$e zX=3u^lM5EMw>R5GiDEj+Y&rB}YpByG0y4?tkPmj-V@Y9>b1)kRa_$+%)LMgUT_$;! zEm`*s0n~#kNAV)(I-F^mxRHCV7)K9~@i1*Ywb#sm+FB>fC<0R1uFCp7edV)~FmM2X13&3RiDrG5# z6YQSE+JOVix)B4i)6py&d-i|f0TTy;Ncf$#uF(6&0hy1@#s_JhU=X{$kFD_~#)GrMEHERYpBc39e5M#tpiz0;gz3gX6& zcy643JIbCoy}iqDgoB!rOHi_kMRLf_i{|$XJzKSno-t?4o(l54lZ~ z-fa<(`CE&lK!!D-0EY?(<*$zz;d41kKu_73bS7Ssx}j9lgCI?%E%2RQ;yLELZf}px z=EEHLXH_=eo5fp*98Au=V=+%gz*?8&Xo5R)txlr_IEW_ed{(>W7h)j?@*%H9GE{Gx zkk@psZss~1XphZVrzToZvN@6`o6h&7HqR=8h>LSsw8}m@gfF`lbKYmpa>#a3$GreZ zXE4yoo@czd8&#tJkO4>1JAa%{c*@J)_fo#<`#sE6*&qfjO=luiPzUqoateLIAL7wx($E$ri9Meuh4THv8%`!Fp4mm1_?0v-vxRisS<>@Bg0eU%p z4NkK$#7gh%L4yO{HHrYJgv)1n8MiTJ!)}XD4(Qm!s>>V5PId=vcms%|93wvuby^z> z86(27A|u`?gbb^UPT&#u?|f+?DZbN5>c+rPkIOKsBqC zU5smS8wYHR#P{>YvKkr6$7f(Sq@gM6ZO0<)WqyT zLDs6 zrla@1VAGr(ouO>UuX#rF707{`k3Ml@^bj{^YOUq-VbxKa{dHfY&LP+)>_NY4UJ#h`-7(-ARkMGto2D5>B>7s-YK;sK1AMw{r~{a;#|&e z94E(6^1BY)813~p#+>r#V{&b$bp+?l__e)MpYOXh0yYigACDk&;SpkFrJi-;5=`4ZxS5xdZ}o9%qJg^&3!(Ifw(X zWN3KLc}&KD1dDS)LMHn6AV97{@#on58OS|Htf&F_yf#}tdmqlQ2SIyoc+dBwayDd( zj>w6(=m<^29K?YSF`^r?KfvN#5I{&luYC^!Qm>?fb)W~Yr8jP}et5{=Apo8o0r_J& zyn5vU&FLJiJ)n8(+@nePt?wbuq-~FB>+q1Ap2goWC2t*zI!3)0MF2k@NJ!m~q6vjP z5?>lcz_GXup^xPNKf?=HL}!0|;YF438pb;ktP5iIVLt#qpF6fEzBGz}<=A|In{k`v z*nDGC#BeS~{U@2B$5`vo-%pG$jUwP|ahp@_dF!(m7eN~waY}q?v@VG7@LA$E4-*1T zi7$=R1zDNlB$bomHV+K~4mfdp;!At#g2)AHS{@yne+j_u{m%O$f({^HE52k%13v=i z2$PY8XKmOc>w>V~MZnqOHhY0O^1f?Bz*c-Iow%fKJZdM{S{KB32z*7(S>iS$fZhAv zt3tp5&d3J|`Q#*=Bp-7^c*D9Na O0000W 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 px294xAR3!*6+Q2F5e*i`Sv^W3& literal 0 HcmV?d00001 diff --git a/Source/Android/app/src/main/res/drawable/oval_ripple_gc.xml b/Source/Android/app/src/main/res/drawable/oval_ripple_gc.xml index 0477ba84fe..167d3ef13a 100644 --- a/Source/Android/app/src/main/res/drawable/oval_ripple_gc.xml +++ b/Source/Android/app/src/main/res/drawable/oval_ripple_gc.xml @@ -2,7 +2,7 @@ android:color="?android:colorControlHighlight"> - + \ 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