diff --git a/src/in/celest/xash3d/FPicker.java b/src/in/celest/xash3d/FPicker.java index 815c66ae..e33d05a7 100644 --- a/src/in/celest/xash3d/FPicker.java +++ b/src/in/celest/xash3d/FPicker.java @@ -5,6 +5,7 @@ import android.app.ListActivity; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; +import android.os.AsyncTask; import android.os.Environment; import android.os.Bundle; import android.os.Build; @@ -12,6 +13,9 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; + import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ImageView; @@ -37,175 +41,223 @@ public class FPicker extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if ( sdk >= 21 ) - super.setTheme( 0x01030224 ); - setContentView(R.layout.activity_fpicker); - String path = Environment.getExternalStorageDirectory().toString(); - currentDir = new File(path); - ((Button)findViewById( R.id.button_fpicker_select )).setOnClickListener(new View.OnClickListener(){ - @Override - public void onClick(View v) { - onFileClick(v); - } - }); - fill(currentDir); + super.onCreate(savedInstanceState); + if ( sdk >= 21 ) + super.setTheme( 0x01030224 ); + + setContentView(R.layout.activity_fpicker); + String path = Environment.getExternalStorageDirectory().toString(); + currentDir = new File(path); + ((Button)findViewById( R.id.button_fpicker_select )).setOnClickListener(new View.OnClickListener() + { + @Override + public void onClick(View v) + { + onFileClick(v); + } + }); + fill(currentDir); } private void fill(File folder) { - File[]dirs = folder.listFiles(); - while( dirs == null ) - { - folder = new File(folder.getParent()); - if( folder == null ) - return; - dirs = folder.listFiles(); - } - this.setTitle("Current Dir: "+folder.getName()); - List dir = new ArrayList(); + new Fill(folder).execute(); + } + + private class Fill extends AsyncTask> + { + File folder; + + public Fill(File f) + { + folder = f; + } + + protected List doInBackground(Void... voids) + { + File[] dirs = folder.listFiles(); + List dir = new ArrayList(); + + while( dirs == null ) + { + folder = new File(folder.getParent()); + if( folder == null ) + return dir; + dirs = folder.listFiles(); + } + - for(File ff: dirs) - { - Date lastModDate = new Date(ff.lastModified()); - DateFormat formater = DateFormat.getDateTimeInstance(); - String date_modify = formater.format(lastModDate); - if(ff.isDirectory()){ - boolean isXashDir=false; - - File[] fbuf = ff.listFiles(); - int buf = 0; - if(fbuf != null&&fbuf.length<20){ - buf = fbuf.length; - for (File valves: fbuf) { - if (valves.isDirectory()) { - if(valves.getName().contains("valve"))isXashDir=true; - } - } + for(File ff: dirs) + { + Date lastModDate = new Date(ff.lastModified()); + DateFormat formater = DateFormat.getDateTimeInstance(); + String date_modify = formater.format(lastModDate); + if(ff.isDirectory()) + { + boolean isXashDir=false; + File[] fbuf = ff.listFiles(); + int buf = 0; + if(fbuf != null&&fbuf.length<20) + { + buf = fbuf.length; + for (File valves: fbuf) + { + if (valves.isDirectory() && valves.getName().contains("valve")) + isXashDir=true; + } + } + + String num_item = String.valueOf(buf); + if(buf == 0) + num_item = "Some items"; + else + num_item +=" items"; + if(isXashDir) + { + dir.add(new Item(ff.getName(), num_item, date_modify, ff.getAbsolutePath(), R.drawable.ic_launcher)); + } + else + { + dir.add(new Item(ff.getName(), num_item, date_modify, ff.getAbsolutePath(), R.drawable.folder)); } - String num_item = String.valueOf(buf); - if(buf == 0) num_item = "Some items"; - else num_item +=" items"; - if(isXashDir){ - dir.add(new Item(ff.getName(),num_item,date_modify,ff.getAbsolutePath(),R.drawable.ic_launcher)); - - }else { - dir.add(new Item(ff.getName(), num_item, date_modify, ff.getAbsolutePath(), R.drawable.folder)); - }} + } } + + Collections.sort(dir); - Collections.sort(dir); - if(folder.getName().length()>1) - dir.add(0,new Item("..","Parent Directory","",folder.getParent(),R.drawable.folder)); - adapter = new FileArrayAdapter(FPicker.this,R.layout.row,dir); - delta = (ListView)findViewById(R.id.FileView); - delta.setAdapter(adapter); - delta.setOnItemClickListener(new AdapterView.OnItemClickListener( ){ - @Override - public void onItemClick(AdapterView parent , View v, int position, long id) { - Item o = adapter.getItem(position); - currentDir = new File(o.getPath()); - fill(currentDir); + if(folder.getName().length() > 1) + dir.add(0, new Item( "..", "Parent Directory", "", folder.getParent(), R.drawable.folder)); + + return dir; + } + + protected void onPostExecute(List dir) + { + setTitle("Current Dir: "+folder.getName()); + + adapter = new FileArrayAdapter(FPicker.this,R.layout.row,dir); + delta = (ListView)findViewById(R.id.FileView); + delta.setAdapter(adapter); + delta.setOnItemClickListener(new AdapterView.OnItemClickListener() + { + @Override + public void onItemClick(AdapterView parent , View v, int position, long id) + { + Item o = adapter.getItem(position); + currentDir = new File(o.getPath()); + fill(currentDir); + } + }); - } - }); + } } - public void onFileClick(View v) - { - Toast.makeText(this, "Chosen path : " + currentDir, Toast.LENGTH_SHORT).show(); - Intent intent = new Intent(); - intent.putExtra("GetPath",currentDir.toString()); - setResult(RESULT_OK, intent); - finish(); - } - - + + public void onFileClick(View v) + { + Toast.makeText(this, "Chosen path : " + currentDir, Toast.LENGTH_SHORT).show(); + Intent intent = new Intent(); + intent.putExtra("GetPath",currentDir.toString()); + setResult(RESULT_OK, intent); + finish(); + } } -class FileArrayAdapter extends ArrayAdapter { - private Context c; - private int id; - private Listitems; +class FileArrayAdapter extends ArrayAdapter +{ + private Context c; + private int id; + private Listitems; - public FileArrayAdapter(Context context, int textViewResourceId, - List objects) { - super(context, textViewResourceId, objects); - c = context; - id = textViewResourceId; - items = objects; - } - public Item getItem(int i) - { - return items.get(i); - } - @Override - public View getView(int position, View convertView, ViewGroup parent) { - View v = convertView; - if (v == null) { - LayoutInflater vi = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - v = vi.inflate(id, null); - } + public FileArrayAdapter(Context context, int textViewResourceId, List objects) + { + super(context, textViewResourceId, objects); + c = context; + id = textViewResourceId; + items = objects; + } + + public Item getItem(int i) + { + return items.get(i); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View v = convertView; + if (v == null) + { + LayoutInflater vi = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + v = vi.inflate(id, null); + } + + final Item finstance = items.get(position); + if (finstance != null) + { + TextView filename = (TextView) v.findViewById(R.id.filename); + TextView fileitems = (TextView) v.findViewById(R.id.fileitems); + TextView filedate = (TextView) v.findViewById(R.id.filedate); + ImageView imageicon = (ImageView) v.findViewById(R.id.fd_Icon1); + Drawable image = c.getResources().getDrawable(finstance.getImage()); + imageicon.setImageDrawable(image); - final Item finstance = items.get(position); - if (finstance != null) { - TextView filename = (TextView) v.findViewById(R.id.filename); - TextView fileitems = (TextView) v.findViewById(R.id.fileitems); - TextView filedate = (TextView) v.findViewById(R.id.filedate); - ImageView imageicon = (ImageView) v.findViewById(R.id.fd_Icon1); - - - Drawable image = c.getResources().getDrawable(finstance.getImage()); - imageicon.setImageDrawable(image); - - if(filename!=null) - filename.setText(finstance.getName()); - if(fileitems!=null) - fileitems.setText(finstance.getData()); - if(filedate!=null) - filedate.setText(finstance.getDate()); - } - return v; - } + if(filename!=null) + filename.setText(finstance.getName()); + if(fileitems!=null) + fileitems.setText(finstance.getData()); + if(filedate!=null) + filedate.setText(finstance.getDate()); + } + return v; + } } + class Item implements Comparable{ - private String name; - private String data; - private String date; - private String path; - private int image; - - public Item(String n,String d, String dt, String p, int img) - { - name = n; - data = d; - date = dt; - path = p; - image = img; - } - public String getName() - { - return name; - } - public String getData() - { - return data; - } - public String getDate() - { - return date; - } - public String getPath() - { - return path; - } - public int getImage() { - return image; - } - public int compareTo(Item o) { - if(this.name != null) - return this.name.toLowerCase().compareTo(o.getName().toLowerCase()); - else - throw new IllegalArgumentException(); + private String name; + private String data; + private String date; + private String path; + private int image; + + public Item(String n,String d, String dt, String p, int img) + { + name = n; + data = d; + date = dt; + path = p; + image = img; + } + + public String getName() + { + return name; + } + + public String getData() + { + return data; } + + public String getDate() + { + return date; + } + + public String getPath() + { + return path; + } + + public int getImage() + { + return image; + } + + public int compareTo(Item o) + { + if(this.name != null) + return this.name.toLowerCase().compareTo(o.getName().toLowerCase()); + else + throw new IllegalArgumentException(); + } }