/* This file is part of ZamiaDroid. * * ZamiaDroid is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * ZamiaDroid is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ZamiaDroid. If not, see <http://www.gnu.org/licenses/>. */ package uni.projecte.Activities.Thesaurus; import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.List; import uni.projecte.R; import uni.projecte.R.id; import uni.projecte.R.layout; import uni.projecte.R.string; import uni.projecte.controler.PreferencesControler; import uni.projecte.controler.ThesaurusControler; import uni.projecte.dataTypes.Utilities; import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast; public class ThesaurusImport extends Activity { private PreferencesControler pC; private List<String> elementsBVegana = null; private List<String> elementsPlain = null; private ListView fileList; private ListView plainList; private String url; private long thId; private ProgressDialog pd; private String thName; private String fileNameComp; public static final int DIALOG_DOWNLOAD_PROGRESS = 0; @Override public void onCreate(Bundle state) { super.onCreate(state); Utilities.setLocale(this); setContentView(R.layout.thesaurus_import_local); pC=new PreferencesControler(this); fileList = (ListView)findViewById(R.id.thList); plainList=(ListView)findViewById(R.id.thListPlain); if(isSdPresent()){ fillXMLFileList(new File(Environment.getExternalStorageDirectory()+"/"+pC.getDefaultPath()+"/Thesaurus/").listFiles(new XMLFilter()),fileList); fillFileList(new File(Environment.getExternalStorageDirectory()+"/"+pC.getDefaultPath()+"/Thesaurus/").listFiles(new EXCLUDE_XMLFilter()),plainList); } else { Toast.makeText(getBaseContext(), R.string.noSdAlert, Toast.LENGTH_SHORT).show(); } fileList.setOnItemClickListener(theListListener); plainList.setOnItemClickListener(plainListListener); } @Override protected void onStop(){ super.onStop(); // Save user preferences. We need an Editor object to // make changes. All objects are from android.context.Context } @Override protected void onRestart(){ super.onRestart(); reloadThList(); } private void reloadThList(){ if(isSdPresent()){ fillXMLFileList(new File(Environment.getExternalStorageDirectory()+"/"+pC.getDefaultPath()+"/Thesaurus/").listFiles(new XMLFilter()),fileList); fillFileList(new File(Environment.getExternalStorageDirectory()+"/"+pC.getDefaultPath()+"/Thesaurus/").listFiles(new EXCLUDE_XMLFilter()),plainList); } else { Toast.makeText(getBaseContext(), R.string.noSdAlert, Toast.LENGTH_SHORT).show(); } } public static boolean isSdPresent() { return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); } private void fillXMLFileList(File[] listFiles, ListView lv) { elementsBVegana = new ArrayList<String>(); // elements.add(getString(R.string.root)); for( File archivo: listFiles) elementsBVegana.add(archivo.getName()); ArrayAdapter<String> listaArchivos= new ArrayAdapter<String>(this, R.layout.row, elementsBVegana); lv.setAdapter(listaArchivos); } private void fillFileList(File[] listFiles, ListView lv) { elementsPlain = new ArrayList<String>(); // elements.add(getString(R.string.root)); for( File archivo: listFiles) elementsPlain.add(archivo.getName()); ArrayAdapter<String> listaArchivos= new ArrayAdapter<String>(this, R.layout.row, elementsPlain); lv.setAdapter(listaArchivos); } class XMLFilter implements FilenameFilter { public boolean accept(File dir, String name) { return (name.endsWith(".xml")); } } class EXCLUDE_XMLFilter implements FilenameFilter { public boolean accept(File dir, String name) { return !(name.endsWith(".xml")); } } public OnItemClickListener plainListListener = new OnItemClickListener() { public void onItemClick(android.widget.AdapterView<?> parent, View v, int position, long id) { int IDFilaSeleccionada = position; File archivo = new File(Environment.getExternalStorageDirectory()+"/"+pC.getDefaultPath()+"/Thesaurus/"+elementsPlain.get(IDFilaSeleccionada)); if (archivo.isDirectory()){ fillFileList(archivo.listFiles(new XMLFilter()),fileList); } else{ url= archivo.getAbsolutePath(); String fileName=archivo.getName(); fileName=fileName.substring(0, fileName.lastIndexOf('.')); Intent intent = new Intent(getBaseContext(), ThesaurusPlainImport.class); Bundle b = new Bundle(); b.putString("filePath", url); intent.putExtras(b); b = new Bundle(); b.putString("fileName", fileName); intent.putExtras(b); startActivityForResult(intent,1); } } }; public OnItemClickListener theListListener = new OnItemClickListener() { public void onItemClick(android.widget.AdapterView<?> parent, View v, int position, long id) { int IDFilaSeleccionada = position; File archivo = new File(Environment.getExternalStorageDirectory()+"/"+pC.getDefaultPath()+"/Thesaurus/"+elementsBVegana.get(IDFilaSeleccionada)); if (archivo.isDirectory()){ fillFileList(archivo.listFiles(new XMLFilter()),fileList); } else{ url= archivo.getAbsolutePath(); fileNameComp=archivo.getName(); String name=fileNameComp.replace(".xml", ""); createThDialog(name,""); } } }; private void createThDialog(String fileName,final String filumLetter) { final Dialog dialog; //Context mContext = getApplicationContext(); dialog = new Dialog(this); dialog.setContentView(R.layout.thesaurus_creation_dialog); dialog.setTitle(R.string.thName); Button createProject = (Button)dialog.findViewById(R.id.bCreateTh); EditText name=(EditText)dialog.findViewById(R.id.etNameItem); name.setText(fileName); createProject.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v) { EditText et=(EditText)dialog.findViewById(R.id.etNameItem); thName=et.getText().toString(); ThesaurusControler thCntr= new ThesaurusControler(v.getContext()); thId=thCntr.createThesaurus(thName,"",filumLetter,fileNameComp,"localBvegana"); if(thId>0){ importTh(); dialog.dismiss(); } else{ String sameTh=getBaseContext().getString(R.string.sameThName); Toast.makeText(getBaseContext(), sameTh+" "+thName, Toast.LENGTH_LONG).show(); } } }); dialog.show(); } private void importTh() { pd = ProgressDialog.show(this, getString(R.string.thLoading), getString(R.string.thLoadingTxt), true,false); Thread thread = new Thread(){ @Override public void run() { importThThread(); } }; thread.start(); } private void importThThread(){ ThesaurusControler thCntr= new ThesaurusControler(this); thName=thName.replace(".", "_"); boolean error=thCntr.addThItems(thId,thName, url); if(!error) handler.sendEmptyMessage(0); else handler.sendEmptyMessage(1); } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { pd.dismiss(); if (msg.what==0){ Intent intent = new Intent(); Bundle b = new Bundle(); b.putString("thName", thName); intent.putExtras(b); setResult(1, intent); } else{ Toast.makeText(getBaseContext(), "Wrong File", Toast.LENGTH_LONG).show(); } finish(); } }; @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { if(intent!=null){ switch(requestCode) { case 0 : break; case 1 : if(resultCode==1){ setResult(1, intent); finish(); } default: } } super.onActivityResult(requestCode, resultCode, intent); } }