/android/import-contacts

To get this branch, use:
bzr branch http://bzr.ed.am/android/import-contacts

« back to all changes in this revision

Viewing changes to src/org/waxworlds/edam/importcontacts/ConfigureVCF.java

  • Committer: edam
  • Date: 2010-10-28 15:49:21 UTC
  • Revision ID: edam@waxworlds.org-20101028154921-98svlxlpno3cpzb8
- added file chooser
- changed file/dir entry box for a button that opens the file chooser
- added dialog to ask if you want to select a dir to scan or a file
- fixed bug where you could abort as dialog opened and the dialog wasn't cancelled
- fixed crash where you could abort as the merge prompt opened and it would try to use the just-destroyed importer
- fixed bug where closing the application at the end would show "aborted!" erroniously

Show diffs side-by-side

added added

removed removed

23
23
 
24
24
package org.waxworlds.edam.importcontacts;
25
25
 
 
26
import android.app.AlertDialog;
 
27
import android.app.Dialog;
 
28
import android.content.DialogInterface;
26
29
import android.content.SharedPreferences;
27
30
import android.os.Bundle;
28
 
import android.widget.EditText;
 
31
import android.view.LayoutInflater;
 
32
import android.view.View;
 
33
import android.widget.Button;
 
34
import android.widget.TextView;
29
35
 
30
36
public class ConfigureVCF extends WizardActivity
31
37
{
 
38
        public final static int DIALOG_FILEORDIR = 1;
 
39
        public final static int DIALOG_FILECHOOSER = 2;
 
40
 
 
41
        private FileChooser _file_chooser = null;
 
42
 
 
43
        // the save path
 
44
        private String _path;
 
45
 
 
46
        // was the dialog closed normally?
 
47
        private boolean _ok = false;
 
48
 
 
49
        // for the fileordir dialog, was file selected?
 
50
        boolean _ok_file;
 
51
 
 
52
        // reference to the dialog
 
53
        Dialog _dialog;
 
54
 
32
55
        @Override
33
56
        protected void onCreate( Bundle savedInstanceState )
34
57
        {
36
59
                super.onCreate( savedInstanceState );
37
60
 
38
61
                setNextActivity( Merge.class );
 
62
 
 
63
                // create file chooser
 
64
                _file_chooser = new FileChooser();
 
65
                String[] extensions = { "vcf" };
 
66
                _file_chooser.setExtensions( extensions );
 
67
                _file_chooser.setDismissListener(
 
68
                        new DialogInterface.OnDismissListener() {
 
69
                                public void onDismiss( DialogInterface dialog )
 
70
                                {
 
71
                                        if( _file_chooser.getOk() ) {
 
72
                                                _path = _file_chooser.getPath();
 
73
                                                updatePathButton();
 
74
                                        }
 
75
                                }
 
76
                        } );
 
77
                _file_chooser.setPathPrefix( "/sdcard" );
 
78
 
 
79
                // set up browser button
 
80
                Button button = (Button)findViewById( R.id.path );
 
81
                button.setOnClickListener( new View.OnClickListener() {
 
82
                        public void onClick( View view ) {
 
83
                                onBrowse();
 
84
                        }
 
85
                } );
 
86
        }
 
87
 
 
88
        private void onBrowse()
 
89
        {
 
90
                showDialog( DIALOG_FILEORDIR );
 
91
        }
 
92
 
 
93
        private void showBrowseDialog()
 
94
        {
 
95
                // set a path for this incantation
 
96
                _file_chooser.setMode(
 
97
                        _ok_file? FileChooser.MODE_FILE : FileChooser.MODE_DIR );
 
98
                _file_chooser.setPath( _path );
 
99
 
 
100
                // show dialog
 
101
                showDialog( DIALOG_FILECHOOSER );
 
102
        }
 
103
 
 
104
        protected void updatePathButton()
 
105
        {
 
106
                Button path_button = (Button)findViewById( R.id.path );
 
107
                path_button.setText(
 
108
                        _file_chooser.prettyPrint( "/sdcard" + _path, true ) );
 
109
 
 
110
                TextView location_text = (TextView)findViewById( R.id.location );
 
111
                location_text.setText( getString( _path.endsWith( "/" )?
 
112
                        R.string.vcf_location_dir : R.string.vcf_location_file ) );
39
113
        }
40
114
 
41
115
        @Override
44
118
 
45
119
                SharedPreferences.Editor editor = getSharedPreferences().edit();
46
120
 
47
 
                // location
48
 
                EditText location = (EditText)findViewById( R.id.location );
49
 
                editor.putString( "location", location.getText().toString() );
 
121
                editor.putString( "location", _path );
50
122
 
51
123
                editor.commit();
52
124
        }
58
130
                SharedPreferences prefs = getSharedPreferences();
59
131
 
60
132
                // location
61
 
                EditText location = (EditText)findViewById( R.id.location );
62
 
                location.setText( prefs.getString( "location", "/sdcard/contacts" ) );
 
133
                _path = prefs.getString( "location", "/" );
 
134
                updatePathButton();
 
135
        }
 
136
 
 
137
        @Override
 
138
        protected Dialog onCreateDialog( int id )
 
139
        {
 
140
                Dialog ret = null;
 
141
 
 
142
                switch( id )
 
143
                {
 
144
                case DIALOG_FILEORDIR:
 
145
                        // custom layout in an AlertDialog
 
146
                        LayoutInflater factory = LayoutInflater.from( this );
 
147
                        final View dialogView = factory.inflate(
 
148
                                R.layout.fileordir, null );
 
149
 
 
150
                        // wire up buttons
 
151
                        ( (Button)dialogView.findViewById(  R.id.file ) )
 
152
                                .setOnClickListener( new View.OnClickListener() {
 
153
                                        public void onClick( View view ) {
 
154
                                                _ok = true;
 
155
                                                _ok_file = true;
 
156
                                                _dialog.dismiss();
 
157
                                        }
 
158
                                } );
 
159
                        ( (Button)dialogView.findViewById(  R.id.dir ) )
 
160
                        .setOnClickListener( new View.OnClickListener() {
 
161
                                public void onClick( View view ) {
 
162
                                        _ok = true;
 
163
                                        _ok_file = false;
 
164
                                        _dialog.dismiss();
 
165
                                }
 
166
                        } );
 
167
 
 
168
                        _dialog = ret = new AlertDialog.Builder( this )
 
169
                                .setTitle( "Do you want to?" )
 
170
                                .setView( dialogView )
 
171
                                .create();
 
172
                        ret.setOnDismissListener(
 
173
                                new DialogInterface.OnDismissListener() {
 
174
                                        public void onDismiss( DialogInterface dialog )
 
175
                                        {
 
176
                                                if( _ok ) showBrowseDialog();
 
177
                                        }
 
178
                                } );
 
179
                        break;
 
180
 
 
181
                case DIALOG_FILECHOOSER:
 
182
                        ret = _file_chooser.onCreateDialog( this );
 
183
                        break;
 
184
                }
 
185
 
 
186
                return ret;
 
187
        }
 
188
 
 
189
        @Override
 
190
        protected void onPrepareDialog( int id, Dialog dialog )
 
191
        {
 
192
                switch( id )
 
193
                {
 
194
                case DIALOG_FILEORDIR:
 
195
                        _ok = false;
 
196
                        break;
 
197
 
 
198
                case DIALOG_FILECHOOSER:
 
199
                        _file_chooser.onPrepareDialog( this, dialog );
 
200
                        break;
 
201
                }
 
202
 
 
203
                super.onPrepareDialog( id, dialog );
63
204
        }
64
205
}