[Android] Folder Browser a fragment as well. Removes the menu item for selected path, because it was just a confusing mechanic anyway. People just tap on the ISO in the browser anyway.
This commit is contained in:
parent
aa1fc077b4
commit
bd6218685f
|
@ -1,32 +1,30 @@
|
||||||
package org.dolphinemu.dolphinemu;
|
package org.dolphinemu.dolphinemu;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.ListActivity;
|
import android.app.Fragment;
|
||||||
import android.content.Intent;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.view.Menu;
|
import android.view.LayoutInflater;
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.AdapterView;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class FolderBrowser extends ListActivity {
|
public class FolderBrowser extends Fragment {
|
||||||
|
private Activity m_activity;
|
||||||
private FolderBrowserAdapter adapter;
|
private FolderBrowserAdapter adapter;
|
||||||
|
private ListView mDrawerList;
|
||||||
|
private View rootView;
|
||||||
private static File currentDir = null;
|
private static File currentDir = null;
|
||||||
|
|
||||||
// Populates the FolderView with the given currDir's contents.
|
// Populates the FolderView with the given currDir's contents.
|
||||||
private void Fill(File currDir)
|
private void Fill(File currDir)
|
||||||
{
|
{
|
||||||
this.setTitle("Current Dir: " + currDir.getName());
|
m_activity.setTitle("Current Dir: " + currDir.getName());
|
||||||
File[] dirs = currDir.listFiles();
|
File[] dirs = currDir.listFiles();
|
||||||
List<GameListItem>dir = new ArrayList<GameListItem>();
|
List<GameListItem>dir = new ArrayList<GameListItem>();
|
||||||
List<GameListItem>fls = new ArrayList<GameListItem>();
|
List<GameListItem>fls = new ArrayList<GameListItem>();
|
||||||
|
@ -46,17 +44,17 @@ public class FolderBrowser extends ListActivity {
|
||||||
{
|
{
|
||||||
if(entry.isDirectory())
|
if(entry.isDirectory())
|
||||||
{
|
{
|
||||||
dir.add(new GameListItem(getApplicationContext(), entryName,"Folder",entry.getAbsolutePath(), true));
|
dir.add(new GameListItem(m_activity, entryName,"Folder",entry.getAbsolutePath(), true));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (validExts.contains(entryName.toLowerCase().substring(entryName.lastIndexOf('.'))))
|
if (validExts.contains(entryName.toLowerCase().substring(entryName.lastIndexOf('.'))))
|
||||||
{
|
{
|
||||||
fls.add(new GameListItem(getApplicationContext(), entryName,"File Size: "+entry.length(),entry.getAbsolutePath(), true));
|
fls.add(new GameListItem(m_activity, entryName,"File Size: "+entry.length(),entry.getAbsolutePath(), true));
|
||||||
}
|
}
|
||||||
else if (archiveExts.contains(entryName.toLowerCase().substring(entryName.lastIndexOf('.'))))
|
else if (archiveExts.contains(entryName.toLowerCase().substring(entryName.lastIndexOf('.'))))
|
||||||
{
|
{
|
||||||
fls.add(new GameListItem(getApplicationContext(), entryName,"File Size: "+entry.length(),entry.getAbsolutePath(), false));
|
fls.add(new GameListItem(m_activity, entryName,"File Size: "+entry.length(),entry.getAbsolutePath(), false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -72,52 +70,65 @@ public class FolderBrowser extends ListActivity {
|
||||||
|
|
||||||
// Check for a parent directory to the one we're currently in.
|
// Check for a parent directory to the one we're currently in.
|
||||||
if (!currDir.getPath().equalsIgnoreCase("/"))
|
if (!currDir.getPath().equalsIgnoreCase("/"))
|
||||||
dir.add(0, new GameListItem(getApplicationContext(), "..", "Parent Directory", currDir.getParent(), true));
|
dir.add(0, new GameListItem(m_activity, "..", "Parent Directory", currDir.getParent(), true));
|
||||||
|
|
||||||
adapter = new FolderBrowserAdapter(this,R.layout.folderbrowser,dir);
|
adapter = new FolderBrowserAdapter(m_activity, R.layout.folderbrowser, dir);
|
||||||
this.setListAdapter(adapter);
|
mDrawerList = (ListView) rootView.findViewById(R.id.gamelist);
|
||||||
|
mDrawerList.setAdapter(adapter);
|
||||||
|
mDrawerList.setOnItemClickListener(mMenuItemClickListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onListItemClick(ListView l, View v, int position, long id) {
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
super.onListItemClick(l, v, position, id);
|
Bundle savedInstanceState)
|
||||||
GameListItem o = adapter.getItem(position);
|
|
||||||
if(o.getData().equalsIgnoreCase("folder") || o.getData().equalsIgnoreCase("parent directory")){
|
|
||||||
currentDir = new File(o.getPath());
|
|
||||||
Fill(currentDir);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if (o.isValid())
|
|
||||||
FolderSelected();
|
|
||||||
else
|
|
||||||
Toast.makeText(this, "Can not use compressed file types.", Toast.LENGTH_LONG).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCreate(Bundle savedInstanceState)
|
|
||||||
{
|
{
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
|
|
||||||
if(currentDir == null)
|
if(currentDir == null)
|
||||||
currentDir = new File(Environment.getExternalStorageDirectory().getPath());
|
currentDir = new File(Environment.getExternalStorageDirectory().getPath());
|
||||||
|
|
||||||
|
rootView = inflater.inflate(R.layout.gamelist_listview, container, false);
|
||||||
|
|
||||||
Fill(currentDir);
|
Fill(currentDir);
|
||||||
|
return mDrawerList;
|
||||||
|
}
|
||||||
|
|
||||||
|
private AdapterView.OnItemClickListener mMenuItemClickListener = new AdapterView.OnItemClickListener()
|
||||||
|
{
|
||||||
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
|
||||||
|
{
|
||||||
|
GameListItem o = adapter.getItem(position);
|
||||||
|
if(o.getData().equalsIgnoreCase("folder") || o.getData().equalsIgnoreCase("parent directory"))
|
||||||
|
{
|
||||||
|
currentDir = new File(o.getPath());
|
||||||
|
Fill(currentDir);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (o.isValid())
|
||||||
|
FolderSelected();
|
||||||
|
else
|
||||||
|
Toast.makeText(m_activity, "Can not use compressed file types.", Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAttach(Activity activity) {
|
||||||
|
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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@Override
|
|
||||||
public boolean onCreateOptionsMenu(Menu menu)
|
|
||||||
{
|
|
||||||
menu.add("Add current folder");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
|
||||||
FolderSelected();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
private void FolderSelected()
|
private void FolderSelected()
|
||||||
{
|
{
|
||||||
Intent intent = new Intent();
|
String Directories = NativeLibrary.GetConfig("Dolphin.ini", "General", "GCMPathes", "0");
|
||||||
intent.putExtra("Select", currentDir.getPath());
|
int intDirectories = Integer.parseInt(Directories);
|
||||||
setResult(Activity.RESULT_OK, intent);
|
Directories = Integer.toString(intDirectories + 1);
|
||||||
this.finish();
|
NativeLibrary.SetConfig("Dolphin.ini", "General", "GCMPathes", Directories);
|
||||||
|
NativeLibrary.SetConfig("Dolphin.ini", "General", "GCMPath" + Integer.toString(intDirectories), currentDir.getPath());
|
||||||
|
|
||||||
|
((GameListActivity)m_activity).SwitchPage(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ package org.dolphinemu.dolphinemu;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.Fragment;
|
import android.app.Fragment;
|
||||||
import android.app.FragmentManager;
|
import android.app.FragmentManager;
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
@ -95,12 +94,16 @@ public class GameListActivity extends Activity
|
||||||
FragmentManager fragmentManager = getFragmentManager();
|
FragmentManager fragmentManager = getFragmentManager();
|
||||||
fragmentManager.beginTransaction().replace(R.id.content_frame, mCurFragment).commit();
|
fragmentManager.beginTransaction().replace(R.id.content_frame, mCurFragment).commit();
|
||||||
}
|
}
|
||||||
private void SwitchPage(int toPage)
|
public void SwitchPage(int toPage)
|
||||||
{
|
{
|
||||||
if (mCurFragmentNum == toPage)
|
if (mCurFragmentNum == toPage)
|
||||||
return;
|
return;
|
||||||
switch (mCurFragmentNum)
|
switch (mCurFragmentNum)
|
||||||
{
|
{
|
||||||
|
// Folder browser
|
||||||
|
case 1:
|
||||||
|
recreateFragment();
|
||||||
|
break;
|
||||||
// Settings
|
// Settings
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
|
@ -160,7 +163,6 @@ public class GameListActivity extends Activity
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0: // Game List
|
case 0: // Game List
|
||||||
case 1: // Folder browser
|
|
||||||
case 4: // About
|
case 4: // About
|
||||||
/* Do Nothing */
|
/* Do Nothing */
|
||||||
break;
|
break;
|
||||||
|
@ -176,10 +178,14 @@ public class GameListActivity extends Activity
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
|
{
|
||||||
Toast.makeText(mMe, "Loading up the browser", Toast.LENGTH_SHORT).show();
|
Toast.makeText(mMe, "Loading up the browser", Toast.LENGTH_SHORT).show();
|
||||||
Intent ListIntent = new Intent(mMe, FolderBrowser.class);
|
mCurFragmentNum = 1;
|
||||||
startActivityForResult(ListIntent, 1);
|
mCurFragment = new FolderBrowser();
|
||||||
break;
|
FragmentManager fragmentManager = getFragmentManager();
|
||||||
|
fragmentManager.beginTransaction().replace(R.id.content_frame, mCurFragment).commit();
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
Toast.makeText(mMe, "Loading up settings", Toast.LENGTH_SHORT).show();
|
Toast.makeText(mMe, "Loading up settings", Toast.LENGTH_SHORT).show();
|
||||||
|
@ -220,30 +226,6 @@ public class GameListActivity extends Activity
|
||||||
SwitchPage(o.getID());
|
SwitchPage(o.getID());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@Override
|
|
||||||
public void onActivityResult(int requestCode, int resultCode, Intent data)
|
|
||||||
{
|
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
|
||||||
|
|
||||||
switch (requestCode)
|
|
||||||
{
|
|
||||||
// Browse
|
|
||||||
case 1:
|
|
||||||
if (resultCode == Activity.RESULT_OK)
|
|
||||||
{
|
|
||||||
String FileName = data.getStringExtra("Select");
|
|
||||||
Toast.makeText(this, "Folder Selected: " + FileName, Toast.LENGTH_SHORT).show();
|
|
||||||
String Directories = NativeLibrary.GetConfig("Dolphin.ini", "General", "GCMPathes", "0");
|
|
||||||
int intDirectories = Integer.parseInt(Directories);
|
|
||||||
Directories = Integer.toString(intDirectories + 1);
|
|
||||||
NativeLibrary.SetConfig("Dolphin.ini", "General", "GCMPathes", Directories);
|
|
||||||
NativeLibrary.SetConfig("Dolphin.ini", "General", "GCMPath" + Integer.toString(intDirectories), FileName);
|
|
||||||
|
|
||||||
recreateFragment();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* When using the ActionBarDrawerToggle, you must call it during
|
* When using the ActionBarDrawerToggle, you must call it during
|
||||||
* onPostCreate() and onConfigurationChanged()...
|
* onPostCreate() and onConfigurationChanged()...
|
||||||
|
|
Loading…
Reference in New Issue