/android/export-contacts

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

« back to all changes in this revision

Viewing changes to src/am/ed/exportcontacts/Exporter.java

  • Committer: edam
  • Date: 2012-04-24 11:29:44 UTC
  • Revision ID: tim@ed.am-20120424112944-6fic236bul6r9cqi
changed all the URLs to ed.am, including copyrights, package names and project
site

Show diffs side-by-side

added added

removed removed

1
1
/*
2
2
 * Exporter.java
3
3
 *
4
 
 * Copyright (C) 2011 to 2013 Tim Marston <tim@ed.am>
 
4
 * Copyright (C) 2011 Tim Marston <tim@ed.am>
5
5
 *
6
6
 * This file is part of the Export Contacts program (hereafter referred
7
 
 * to as "this program").  For more information, see
 
7
 * to as "this program"). For more information, see
8
8
 * http://ed.am/dev/android/export-contacts
9
9
 *
10
10
 * This program is free software: you can redistribute it and/or modify
50
50
         */
51
51
        public class ContactData
52
52
        {
53
 
                public final static int TYPE_HOME = 0;
54
 
                public final static int TYPE_WORK = 1;
55
 
                public final static int TYPE_MOBILE = 2;        // only used with phones
56
 
                public final static int TYPE_FAX_HOME = 3;      // only used with phones
57
 
                public final static int TYPE_FAX_WORK = 4;      // only used with phones
58
 
                public final static int TYPE_PAGER = 5;         // only used with phones
59
 
 
60
53
                class OrganisationDetail
61
54
                {
62
55
                        protected String _org;
150
143
                protected ArrayList< NumberDetail > _numbers = null;
151
144
                protected ArrayList< EmailDetail > _emails = null;
152
145
                protected ArrayList< AddressDetail > _addresses = null;
153
 
                protected ArrayList< String > _notes = null;
154
 
                protected String _birthday = null;
155
146
 
156
147
                public void setName( String name )
157
148
                {
215
206
                        return _addresses;
216
207
                }
217
208
 
218
 
                public void addNote( String note )
219
 
                {
220
 
                        if( _notes == null )
221
 
                                _notes = new ArrayList< String >();
222
 
                        _notes.add( note );
223
 
                }
224
 
 
225
 
                public ArrayList< String > getNotes()
226
 
                {
227
 
                        return _notes;
228
 
                }
229
 
 
230
 
                public void setBirthday( String birthday )
231
 
                {
232
 
                        _birthday = birthday;
233
 
                }
234
 
 
235
 
                public String getBirthday()
236
 
                {
237
 
                        return _birthday;
238
 
                }
239
 
 
240
209
                public String getPrimaryIdentifier()
241
210
                {
242
211
                        if( _name != null )
296
265
        protected void exportContacts() throws AbortExportException
297
266
        {
298
267
                // set up a contact reader
299
 
                Backend backend = null;
300
 
                if( Integer.parseInt( android.os.Build.VERSION.SDK ) >= 5 )
301
 
                        backend = new ContactsContractBackend( _doit, this );
302
 
                else
303
 
                        backend = new ContactsBackend( _doit, this );
304
 
 
305
 
                // check we have contacts
306
 
                int num_contacts = backend.getNumContacts();
 
268
                ContactAccessor contact_reader =
 
269
                        new ContactsContactAccessor( _doit, this );
 
270
                int num_contacts = contact_reader.getNumContacts();
307
271
                if( num_contacts == 0 )
308
272
                        showError( R.string.error_nothingtodo );
309
273
 
319
283
                while( true ) {
320
284
                        checkAbort();
321
285
                        ContactData contact = new ContactData();
322
 
                        if( !backend.getNextContact( contact ) )
 
286
                        if( !contact_reader.getNextContact( contact ) )
323
287
                                break;
324
288
 
325
289
                        // export this one
382
346
                finish( ACTION_ABORT );
383
347
        }
384
348
 
385
 
        protected void showContinueOrAbort( int res ) throws AbortExportException
386
 
        {
387
 
                showContinueOrAbort( _doit.getText( res ).toString() );
388
 
        }
389
 
 
390
 
        synchronized protected void showContinueOrAbort( String message )
 
349
        protected void showFatalError( int res ) throws AbortExportException
 
350
        {
 
351
                showFatalError( _doit.getText( res ).toString() );
 
352
        }
 
353
 
 
354
        synchronized protected void showFatalError( String message )
 
355
                        throws AbortExportException
 
356
        {
 
357
                checkAbort();
 
358
                _doit._handler.sendMessage( Message.obtain(
 
359
                        _doit._handler, Doit.MESSAGE_ERROR, message ) );
 
360
                try {
 
361
                        wait();
 
362
                }
 
363
                catch( InterruptedException e ) { }
 
364
 
 
365
                // no need to check if an abortion happened during the wait, we are
 
366
                // about to finish anyway!
 
367
                finish( ACTION_ABORT );
 
368
        }
 
369
 
 
370
        protected boolean showContinue( int res ) throws AbortExportException
 
371
        {
 
372
                return showContinue( _doit.getText( res ).toString() );
 
373
        }
 
374
 
 
375
        synchronized protected boolean showContinue( String message )
391
376
                        throws AbortExportException
392
377
        {
393
378
                checkAbort();
398
383
                }
399
384
                catch( InterruptedException e ) { }
400
385
 
401
 
                // if we're aborting, there's no need to check if an abortion happened
402
 
                // during the wait
403
 
                if( _response == RESPONSE_NEGATIVE )
404
 
                        finish( ACTION_ABORT );
405
 
                else
406
 
                        checkAbort();
 
386
                // check if an abortion happened during the wait
 
387
                checkAbort();
 
388
 
 
389
                return _response == RESPONSE_POSITIVE;
407
390
        }
408
391
 
409
392
        protected void setProgressMessage( int res ) throws AbortExportException
419
402
                checkAbort();
420
403
                _doit._handler.sendMessage( Message.obtain(
421
404
                        _doit._handler, Doit.MESSAGE_SETMAXPROGRESS,
422
 
                        Integer.valueOf( max_progress ) ) );
 
405
                        new Integer( max_progress ) ) );
423
406
        }
424
407
 
425
408
        protected void setTmpProgress( int tmp_progress )
428
411
                checkAbort();
429
412
                _doit._handler.sendMessage( Message.obtain(
430
413
                        _doit._handler, Doit.MESSAGE_SETTMPPROGRESS,
431
 
                        Integer.valueOf( tmp_progress ) ) );
 
414
                        new Integer( tmp_progress ) ) );
432
415
        }
433
416
 
434
417
        protected void setProgress( int progress ) throws AbortExportException
436
419
                checkAbort();
437
420
                _doit._handler.sendMessage( Message.obtain(
438
421
                        _doit._handler, Doit.MESSAGE_SETPROGRESS,
439
 
                        Integer.valueOf( progress ) ) );
 
422
                        new Integer( progress ) ) );
440
423
        }
441
424
 
442
425
        protected void finish( int action ) throws AbortExportException