Changeset a8bb2bb in dispositivos_moviles for TibisayMovil/src


Ignore:
Timestamp:
Aug 15, 2013, 5:33:02 PM (11 years ago)
Author:
Jose Ruiz <joseruiz@…>
Branches:
master
Children:
5147e01
Parents:
37467be
Message:

Añadiendo funcionalidad de firma manuscrita en archivo pdf

Location:
TibisayMovil/src/ve/gob/cenditel/tibisaymovil
Files:
3 added
3 edited

Legend:

Unmodified
Added
Removed
  • TibisayMovil/src/ve/gob/cenditel/tibisaymovil/FileToSignHandwrittenSignatureActivity.java

    r37467be ra8bb2bb  
    66import java.util.Collections;
    77import java.util.Date;
    8 import java.util.List;
    98import ve.gob.cenditel.tibisaymovil.R;
    109import android.app.Activity;
     10import android.app.AlertDialog;
     11import android.content.DialogInterface;
     12import android.content.Intent;
    1113import android.graphics.drawable.Drawable;
     14import android.net.Uri;
    1215import android.os.Bundle;
    1316import android.util.Log;
     
    1720import android.view.View.OnClickListener;
    1821import android.view.Window;
     22import android.webkit.MimeTypeMap;
    1923import android.widget.AdapterView;
     24import android.widget.ArrayAdapter;
    2025import android.widget.BaseAdapter;
    21 import android.widget.CheckBox;
    2226import android.widget.ImageView;
    2327import android.widget.LinearLayout;
    2428import android.widget.ListView;
     29import android.widget.RadioButton;
    2530import android.widget.TextView;
     31import android.widget.AdapterView.OnItemClickListener;
    2632import android.widget.Toast;
    27 import android.widget.AdapterView.OnItemClickListener;
    2833
    2934public class FileToSignHandwrittenSignatureActivity extends Activity implements OnItemClickListener, OnClickListener {
    3035
    3136        private File cwd;
    32     private List<File> selected;
     37    private File selected;
    3338    private FileBrowserView viewHolder;
    3439    private FileListAdapter listAdapter;
     40    private String filterMImeType = "application/pdf";
    3541
    3642        @Override
     
    4450
    4551        if (savedInstanceState != null) {
    46             this.selected = TypeUtils.convertToFileList(savedInstanceState.getStringArrayList("selected"));
    47 
    48             if (this.selected.size() > 0) {
     52                if(savedInstanceState.getString("selected") != null)
     53                        this.selected = new File(savedInstanceState.getString("selected"));
     54
     55            if (this.selected != null) {
    4956               
    5057                FileToSignHandwrittenSignatureActivity.this.updateButton
     
    5259
    5360            }
    54 
     61           
    5562            this.cwd = new File(savedInstanceState.getString("cwd"));
    56             this.viewHolder.fileList.setAdapter(this.listAdapter = new FileListAdapter(this.cwd.getAbsolutePath()));
     63            this.viewHolder.fileList.setAdapter(this.listAdapter = new FileListAdapter(this.cwd.getAbsolutePath(), filterMImeType));
    5764           
    5865        } else {
    59             this.selected = new ArrayList<File>();
     66            this.selected = null;
    6067            this.viewHolder.fileList.setAdapter(this.listAdapter = new FileListAdapter());
    6168        }
     
    6370       
    6471        boolean enabled = false;
    65         if (!this.selected.isEmpty())
     72        if (this.selected != null)
    6673                enabled = this.viewHolder.accept.isEnabled();
    6774       
     
    8693
    8794        private FileListAdapter() {
    88             this("/");
     95            this("/",filterMImeType);
    8996        }
    9097
    9198        private FileListAdapter(String location) {
     99            this(location, "");
     100        }
     101       
     102        private FileListAdapter(String location, String filterMimeType) {
    92103               
    93104            directories = new ArrayList<File>();
     
    104115            //Obtiene el directorio padre del objeto file cwd
    105116            File parent = FileToSignHandwrittenSignatureActivity.this.cwd.getParentFile();
    106             //Si tiene un padre, lo agrega en la posición cero de la lista de directorios
     117            //Si tiene un padre, lo agrega en la posición cero de la lista de directorios 
     118           
    107119            if (parent != null) {
    108120                directories.add(0, parent);
     
    113125            if (ls != null) {
    114126                for (File f : ls) { //recorre todos los archivos contenidos en el directorio
     127                       
    115128                    if (FsUtils.isHiddenOrNotReadable(f)) { // Si son ocultos no hace nada
    116129                        continue;
     
    122135                    } else // De lo contrario lo agrega a la lista de archivos
    123136                        {
    124                         files.add(f);
     137                        //Valida tipo de archivo a mostrar
     138                        Uri selectedUri = Uri.fromFile(f);
     139                        String fileExtension = MimeTypeMap.getFileExtensionFromUrl(selectedUri.toString());
     140                        String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension);
     141                         
     142//                        Toast.makeText(FileToSignHandwrittenSignatureActivity.this,
     143//                          "FileExtension: " + fileExtension + "\n" +
     144//                          "MimeType: " + mimeType,
     145//                          Toast.LENGTH_LONG).show();
     146                       
     147                        //Filtra por mimeType
     148                        if(filterMimeType.isEmpty() || filterMimeType == mimeType)
     149                            files.add(f);
     150                               
    125151                    }
    126152                }
     
    173199            if (convertView == null) {
    174200                LayoutInflater inflater = LayoutInflater.from(FileToSignHandwrittenSignatureActivity.this);
    175                 convertView = inflater.inflate(R.layout.file_browser_item, parent, false);
     201                convertView = inflater.inflate(R.layout.file_to_sign_handwritten_signature_item, parent, false);
    176202            }
    177203           
     
    184210                File file = getItem(position);
    185211               
    186                 //CheckBox
    187             CheckBox check = (CheckBox) convertView.findViewById(R.id.file_checkbox);
    188             check.setFocusable(false);
    189            
    190             // Se asignan los iconos según el tipo de archivo y se oculta el checkbox en los directorios
     212                //RadioButton
     213            RadioButton radio = (RadioButton) convertView.findViewById(R.id.file_radio);
     214            radio.setFocusable(false);
     215           
     216            // Se asignan los iconos según el tipo de archivo y se oculta el radio en los directorios
    191217            if (file.isDirectory()) {
    192218                image.setImageResource(R.drawable.ic_carpeta);
    193                 check.setVisibility(View.INVISIBLE);
    194                 check.setChecked(false);
     219                radio.setVisibility(View.INVISIBLE);
     220                radio.setChecked(false);
    195221            } else {
    196222                image.setImageResource(R.drawable.ic_archivo);
    197                 check.setVisibility(View.VISIBLE);
    198                 if (!FileToSignHandwrittenSignatureActivity.this.selected.contains(file)){
    199                         check.setChecked(false);
     223                radio.setVisibility(View.VISIBLE);
     224               
     225                if (FileToSignHandwrittenSignatureActivity.this.selected == null ||
     226                        FileToSignHandwrittenSignatureActivity.this.selected.hashCode() != file.hashCode()){
     227                                radio.setChecked(false);
    200228                } else{
    201                         check.setChecked(true);
    202                 }
    203          
     229                        radio.setChecked(true);
     230                }         
    204231            }
    205232
     
    233260            //Si es un directorio el seleccionado se hace un llamado del fileBrowser del directorio
    234261            if (item.isDirectory()) {
    235                 parent.setAdapter(FileToSignHandwrittenSignatureActivity.this.listAdapter = new FileListAdapter(item.getAbsolutePath()));
     262                parent.setAdapter(FileToSignHandwrittenSignatureActivity.this.listAdapter = new FileListAdapter(item.getAbsolutePath(), filterMImeType));
    236263            } else { // Si es un archivo
    237264               
    238                         //Se agrega el archivo a la lista de seleccionados si no se encuentra en la misma
    239                 if (!FileToSignHandwrittenSignatureActivity.this.selected.contains(item)){
    240                         FileToSignHandwrittenSignatureActivity.this.selected.add(item);
     265                        //Se agrega el archivo a la lista de seleccionados si no se encuentra en la misma               
     266                if (FileToSignHandwrittenSignatureActivity.this.selected == null ||
     267                        FileToSignHandwrittenSignatureActivity.this.selected.hashCode() != item.hashCode()){
     268                       
     269                        FileToSignHandwrittenSignatureActivity.this.selected = item;
    241270                       
    242271                        FileToSignHandwrittenSignatureActivity.this.updateButton(FileToSignHandwrittenSignatureActivity.this.viewHolder.accept,true);           
    243                        
    244                 }else{ // De lo contrario se elimina de la lista de seleccionados
     272                                               
     273                }
     274                else{ // De lo contrario se elimina de la lista de seleccionados
    245275                       
    246                         FileToSignHandwrittenSignatureActivity.this.selected.remove(item);
    247                        
    248                        
    249                         if (FileToSignHandwrittenSignatureActivity.this.selected.isEmpty()){                           
    250                                 FileToSignHandwrittenSignatureActivity.this.updateButton(FileToSignHandwrittenSignatureActivity.this.viewHolder.accept,false);                         
    251                         }else {
    252                                 FileToSignHandwrittenSignatureActivity.this.updateButton(FileToSignHandwrittenSignatureActivity.this.viewHolder.accept,true);
    253                         }
    254                        
     276                        FileToSignHandwrittenSignatureActivity.this.selected = null;                           
     277                        FileToSignHandwrittenSignatureActivity.this.updateButton(FileToSignHandwrittenSignatureActivity.this.viewHolder.accept,false);
     278                                       
    255279                }
    256280                notifyDataSetChanged();
     
    259283    }   
    260284
     285
     286   
     287   
     288    @Override
     289    protected void onSaveInstanceState(Bundle outState) {
     290        super.onSaveInstanceState(outState);
     291
     292        outState.putParcelable("intent", this.getIntent());
     293        outState.putString("cwd", this.cwd.getAbsolutePath());
     294        if(this.selected != null)
     295                outState.putString("selected", this.selected.getAbsolutePath());
     296       
     297        }
    261298   
    262299    private void updateButton(View v, boolean bool) {
     
    351388        case R.id.button_clear_zone:
    352389               
    353                 this.selected.clear();
     390                this.selected = null;
    354391                this.listAdapter.notifyDataSetChanged();
    355392
     
    357394            this.updateButton(this.viewHolder.accept, false);
    358395                break;         
    359                
     396       
     397
     398       
     399            case R.id.button_accept_zone:
     400               
     401                        //Crear dialogo de opciones para firmar
     402                        final AlertDialog image_dialog = selectImageOptionsDialog();
     403                        image_dialog.show();
     404           
     405                break;         
     406       
    360407        }
    361408    }
     409   
     410       
     411        //Crea dialogo de opciones para seleccion de imagen de firma
     412        public AlertDialog selectImageOptionsDialog() {
     413                final String[] option = new String[] {getString(R.string.firmar_man_capt_img), getString(R.string.firmar_man_exist_img), getString(R.string.firmar_man_prefer_img) };
     414                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
     415                        android.R.layout.select_dialog_item, option);
     416                AlertDialog.Builder builder = new AlertDialog.Builder(this);
     417               
     418                builder.setTitle(getString(R.string.seleccione_opcion_firmar_man_img));
     419                builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
     420               
     421                  public void onClick(DialogInterface dialog, int which) {
     422                         
     423                          switch (which) {
     424                        case 0: // Capturar imágen
     425                                Intent intent = new Intent(FileToSignHandwrittenSignatureActivity.this, CaptureImgHandwrittenSignatureActivity.class);
     426                    intent.putExtra("FILE_TO_SIGN", FileToSignHandwrittenSignatureActivity.this.selected.getAbsolutePath());
     427                    Log.i("DEBUG",  FileToSignHandwrittenSignatureActivity.this.selected.getAbsolutePath());
     428                    startActivity(intent);
     429                               
     430                                break;
     431                        case 1: // Buscar en archivos
     432                               
     433                                break;
     434                        case 2: // Usar predeterminada
     435                               
     436                                break;
     437
     438                        default:
     439                                break;
     440                        }
     441                  }
     442                 
     443                });     
     444               
     445                return builder.create();
     446        }
    362447
    363448}
  • TibisayMovil/src/ve/gob/cenditel/tibisaymovil/FunctionListAdapter.java

    r37467be ra8bb2bb  
    22
    33
     4import android.annotation.SuppressLint;
    45import android.content.Context;
    56import android.view.LayoutInflater;
  • TibisayMovil/src/ve/gob/cenditel/tibisaymovil/TibisayMovilActivity.java

    r37467be ra8bb2bb  
    11package ve.gob.cenditel.tibisaymovil;
    22
     3import ve.gob.cenditel.tibisaymovil.R.color;
    34import android.os.Build;
    45import android.os.Bundle;
     
    134135       
    135136        private void fileToSignHandwrittenSignature(){
    136                 Log.i("DEBUG", "antes de declarar intent");
    137137                Intent intent = new Intent(this, FileToSignHandwrittenSignatureActivity.class);
    138                 Log.i("DEBUG", "despues de declarar intent");
    139138                startActivity(intent);
    140                 Log.i("DEBUG", "despues de llamar intent");
    141139        }
    142140       
Note: See TracChangeset for help on using the changeset viewer.