4
* Copyright (C) 2009 Tim Marston <edam@waxworlds.org>
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
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.
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.
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/>.
24
package org.waxworlds.importcontacts;
26
import java.util.Stack;
28
import android.app.Activity;
29
import android.content.Intent;
30
import android.os.Bundle;
32
public class ImportContacts extends Activity
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;
40
private Stack< Integer > _stateStack;
42
/** Called when the activity is first created. */
44
public void onCreate( Bundle savedInstanceState )
46
super.onCreate(savedInstanceState);
48
_stateStack = new Stack< Integer >();
50
if( savedInstanceState == null )
52
startState( STATE_INTRO );
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 );
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 );
74
protected void onActivityResult(int requestCode, int resultCode, Intent data)
76
super.onActivityResult(requestCode, resultCode, data);
79
if( resultCode == RESULT_CANCELED ) {
83
int newState = STATE_NONE;
85
Bundle extras = data.getExtras();
86
if( extras != null ) {
87
Integer tmp = extras.getInt( "nextstate" );
89
newState = tmp.intValue();
93
startState( newState );
98
private void startState( int newState )
100
if( newState == STATE_NONE )
102
// we're going back, so pop top state off stack
104
newState = ( (Integer)_stateStack.peek() ).intValue();
108
// push new state on state
109
_stateStack.push( new Integer( newState ) );
112
// figure out the class
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;
122
Intent i = new Intent( this, cls );
123
if( _stateStack.size() > 1 ) i.putExtra( "backstate", true );
124
startActivityForResult( i, 0 );