/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-17 18:43:13 UTC
  • Revision ID: edam@waxworlds.org-20101017184313-y2m6gsdzctjq5wtl
- changed case on charset and encoding warning strings (it looked bad)
- properly handle quoted-printable unencoding (including multi-line values)
- ignore blank lines in vCard
- ignore empty properties in vCard

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;
29
26
import android.content.SharedPreferences;
30
27
import android.os.Bundle;
31
 
import android.view.LayoutInflater;
32
 
import android.view.View;
33
 
import android.widget.Button;
34
 
import android.widget.TextView;
 
28
import android.widget.EditText;
35
29
 
36
30
public class ConfigureVCF extends WizardActivity
37
31
{
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
 
 
55
32
        @Override
56
33
        protected void onCreate( Bundle savedInstanceState )
57
34
        {
59
36
                super.onCreate( savedInstanceState );
60
37
 
61
38
                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 ) );
113
39
        }
114
40
 
115
41
        @Override
118
44
 
119
45
                SharedPreferences.Editor editor = getSharedPreferences().edit();
120
46
 
121
 
                editor.putString( "location", _path );
 
47
                // location
 
48
                EditText location = (EditText)findViewById( R.id.location );
 
49
                editor.putString( "location", location.getText().toString() );
122
50
 
123
51
                editor.commit();
124
52
        }
130
58
                SharedPreferences prefs = getSharedPreferences();
131
59
 
132
60
                // location
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 );
 
61
                EditText location = (EditText)findViewById( R.id.location );
 
62
                location.setText( prefs.getString( "location", "/sdcard/contacts" ) );
204
63
        }
205
64
}