/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/importcontacts/ImportContacts.java

  • Committer: edam
  • Date: 2010-07-04 14:44:48 UTC
  • Revision ID: edam@waxworlds.org-20100704144448-1m30v811opup20fs
- got rid of the pretend ImportContacts activity alltogether (and made the Intro activity the startup one)
- massively simplified the WizzardActivity class so it works propperly
- moved all code to org.waxworlds.edam
- added an "aborted" message when the importion is aborted
- simplified the 3 actions the worker thread can take when stopping (only 2 were actualy used) to "aborted" or "alldone"
- changed intro message to match website
- bugfix: don't blow up when the My Contacts group is missing

Show diffs side-by-side

added added

removed removed

1
 
/*
2
 
 * ImportContacts.java
3
 
 *
4
 
 * Copyright (C) 2009 Tim Marston <edam@waxworlds.org>
5
 
 *
6
 
 * This file is part of the Import Contacts program (hereafter referred
7
 
 * to as "this program"). For more information, see
8
 
 * http://www.waxworlds.org/edam/software/android/import-contacts
9
 
 *
10
 
 * This program is free software: you can redistribute it and/or modify
11
 
 * it under the terms of the GNU General Public License as published by
12
 
 * the Free Software Foundation, either version 3 of the License, or
13
 
 * (at your option) any later version.
14
 
 *
15
 
 * This program is distributed in the hope that it will be useful,
16
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 
 * GNU General Public License for more details.
19
 
 *
20
 
 * You should have received a copy of the GNU General Public License
21
 
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
22
 
 */
23
 
 
24
 
package org.waxworlds.importcontacts;
25
 
 
26
 
import java.util.Stack;
27
 
 
28
 
import android.app.Activity;
29
 
import android.content.Intent;
30
 
import android.os.Bundle;
31
 
 
32
 
public class ImportContacts extends Activity
33
 
{
34
 
        public static final int STATE_NONE = 0;
35
 
        public static final int STATE_INTRO = 1;
36
 
        public static final int STATE_CONFIGURE_VCF = 3;
37
 
        public static final int STATE_MERGE = 4;
38
 
        public static final int STATE_DOIT = 5;
39
 
 
40
 
        private Stack< Integer > _stateStack;
41
 
 
42
 
        /** Called when the activity is first created. */
43
 
        @Override
44
 
        public void onCreate( Bundle savedInstanceState )
45
 
        {
46
 
                super.onCreate(savedInstanceState);
47
 
 
48
 
                _stateStack = new Stack< Integer >();
49
 
 
50
 
                if( savedInstanceState == null )
51
 
                {
52
 
                        startState( STATE_INTRO );
53
 
                }
54
 
                else
55
 
                {
56
 
                        int[] stack = savedInstanceState.getIntArray( "_stateStack" );
57
 
                        for( int n = 0; n < stack.length; n++ )
58
 
                                _stateStack.push( stack[ n ] );
59
 
                        int lastState = _stateStack.pop();
60
 
                        startState( lastState );
61
 
                }
62
 
        }
63
 
 
64
 
        @Override
65
 
        protected void onSaveInstanceState(Bundle outState) {
66
 
                super.onSaveInstanceState(outState);
67
 
                int[] stack = new int[ _stateStack.size() ];
68
 
                for( int n = 0; n < _stateStack.size(); n++ )
69
 
                        stack[ n ] = _stateStack.elementAt( n );
70
 
                outState.putIntArray( "_stateStack", stack );
71
 
        }
72
 
 
73
 
        @Override
74
 
        protected void onActivityResult(int requestCode, int resultCode, Intent data)
75
 
        {
76
 
                super.onActivityResult(requestCode, resultCode, data);
77
 
 
78
 
                // quit?
79
 
                if( resultCode == RESULT_CANCELED ) {
80
 
                        finish();
81
 
                }
82
 
                else {
83
 
                        int newState = STATE_NONE;
84
 
                        if( data != null ) {
85
 
                                Bundle extras = data.getExtras();
86
 
                                if( extras != null ) {
87
 
                                        Integer tmp = extras.getInt( "nextstate" );
88
 
                                        if( tmp != null ) {
89
 
                                                newState = tmp.intValue();
90
 
                                        }
91
 
                                }
92
 
                        }
93
 
                        startState( newState );
94
 
 
95
 
                }
96
 
        }
97
 
 
98
 
        private void startState( int newState )
99
 
        {
100
 
                if( newState == STATE_NONE )
101
 
                {
102
 
                        // we're going back, so pop top state off stack
103
 
                        _stateStack.pop();
104
 
                        newState = ( (Integer)_stateStack.peek() ).intValue();
105
 
                }
106
 
                else
107
 
                {
108
 
                        // push new state on state
109
 
                        _stateStack.push( new Integer( newState ) );
110
 
                }
111
 
 
112
 
                // figure out the class
113
 
                Class cls = null;
114
 
                switch( newState ) {
115
 
                case STATE_INTRO: cls = Intro.class; break;
116
 
                case STATE_CONFIGURE_VCF: cls = ConfigureVCF.class; break;
117
 
                case STATE_MERGE: cls = Merge.class; break;
118
 
                case STATE_DOIT: cls = Doit.class; break;
119
 
                }
120
 
 
121
 
                // start activity
122
 
                Intent i = new Intent( this, cls );
123
 
                if( _stateStack.size() > 1 ) i.putExtra( "backstate", true );
124
 
                startActivityForResult( i, 0 );
125
 
        }
126
 
}