172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/*
272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2008 Esmertec AG.
372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project *
572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * you may not use this file except in compliance with the License.
772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * You may obtain a copy of the License at
872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project *
972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
1072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project *
1172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
1272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
1372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * See the License for the specific language governing permissions and
1572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * limitations under the License.
1672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */
1772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
1872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpackage com.android.mms.ui;
1972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
2072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.app.Activity;
2172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.content.Intent;
2272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.os.Bundle;
2372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.KeyEvent;
2472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.View;
2572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.View.OnClickListener;
2672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.View.OnKeyListener;
27d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport android.view.Window;
2872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.widget.Button;
2972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.widget.EditText;
3072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.widget.TextView;
31c39597e09610998e858d181e758ff8ae3f945b94Tom Taylorimport android.widget.Toast;
3272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
33ab845dee6565a8dfc384186bc8f2e801a2b087e1Ye Wenimport com.android.mms.LogTag;
3472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport com.android.mms.R;
3572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
3672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/**
3772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * This activity provides the function to edit the duration of given slide.
3872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */
3972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpublic class EditSlideDurationActivity  extends Activity {
4072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public static final String SLIDE_INDEX = "slide_index";
4172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public static final String SLIDE_TOTAL = "slide_total";
4272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public static final String SLIDE_DUR   = "dur";
4372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
4472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private TextView mLabel;
4572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private Button mDone;
4672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private EditText mDur;
4772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
4872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private int mCurSlide;
4972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private int mTotal;
5072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
5172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private Bundle mState;
5272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    //  State.
5372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static String STATE = "state";
54ab845dee6565a8dfc384186bc8f2e801a2b087e1Ye Wen    private final static String TAG = LogTag.TAG;
5572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private static final boolean DEBUG = false;
56150c4179995cc0a75f934ef194372f9295957ca2Joe Onorato    private static final boolean LOCAL_LOGV = false;
5772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
5872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    @Override
5972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    protected void onCreate(Bundle icicle) {
6072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        super.onCreate(icicle);
6172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        requestWindowFeature(Window.FEATURE_NO_TITLE);
6272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        setContentView(R.layout.edit_slide_duration);
6372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
6472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        int dur;
6572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        if (icicle == null) {
6672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            // Get extra from intent.
6772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            Intent intent = getIntent();
6872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            mCurSlide = intent.getIntExtra(SLIDE_INDEX, 1);
6972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            mTotal = intent.getIntExtra(SLIDE_TOTAL, 1);
7072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            dur = intent.getIntExtra(SLIDE_DUR, 8);
7172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        } else {
7272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            mState = icicle.getBundle(STATE);
7372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
7472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            mCurSlide = mState.getInt(SLIDE_INDEX, 1);
7572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            mTotal = mState.getInt(SLIDE_TOTAL, 1);
7672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            dur = mState.getInt(SLIDE_DUR, 8);
7772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
7872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
7972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // Label.
8072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mLabel = (TextView) findViewById(R.id.label);
8172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mLabel.setText(getString(R.string.duration_selector_title) + " " + (mCurSlide + 1) + "/" + mTotal);
8272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
8372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // Input text field.
8472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mDur = (EditText) findViewById(R.id.text);
8572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mDur.setText(String.valueOf(dur));
8672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mDur.setOnKeyListener(mOnKeyListener);
8772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
8872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // Done button.
8972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mDone = (Button) findViewById(R.id.done);
9072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mDone.setOnClickListener(mOnDoneClickListener);
9172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
9272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
9372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    /*
9472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project     * (non-Javadoc)
9572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project     * @see android.app.Activity#onSaveInstanceState(android.os.Bundle)
9672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project     */
9772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    @Override
9872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    protected void onSaveInstanceState(Bundle outState) {
9972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        super.onSaveInstanceState(outState);
10072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
10172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mState = new Bundle();
10272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mState.putInt(SLIDE_INDEX, mCurSlide);
10372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mState.putInt(SLIDE_TOTAL, mTotal);
1047eedb5a0bbf7c83fbf57df7ad1b97ca3ae438017Tom Taylor
1057eedb5a0bbf7c83fbf57df7ad1b97ca3ae438017Tom Taylor        int durValue;
1067eedb5a0bbf7c83fbf57df7ad1b97ca3ae438017Tom Taylor        try {
1077eedb5a0bbf7c83fbf57df7ad1b97ca3ae438017Tom Taylor            durValue = Integer.parseInt(mDur.getText().toString());
1087eedb5a0bbf7c83fbf57df7ad1b97ca3ae438017Tom Taylor        } catch (NumberFormatException e) {
1097eedb5a0bbf7c83fbf57df7ad1b97ca3ae438017Tom Taylor            // On an illegal value, set the duration back to a default value.
1107eedb5a0bbf7c83fbf57df7ad1b97ca3ae438017Tom Taylor            durValue = 5;
1117eedb5a0bbf7c83fbf57df7ad1b97ca3ae438017Tom Taylor        }
1127eedb5a0bbf7c83fbf57df7ad1b97ca3ae438017Tom Taylor        mState.putInt(SLIDE_DUR, durValue);
11372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
11472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        outState.putBundle(STATE, mState);
11572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
11672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
11772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final OnKeyListener mOnKeyListener = new OnKeyListener() {
11872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        public boolean onKey(View v, int keyCode, KeyEvent event) {
11972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            if (event.getAction() != KeyEvent.ACTION_DOWN) {
12072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                return false;
12172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            }
12272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
12372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            switch (keyCode) {
12472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                case KeyEvent.KEYCODE_DPAD_CENTER:
12572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    // Edit complete.
12672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    editDone();
12772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    break;
12872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            }
12972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            return false;
13072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
13172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    };
13272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
13372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final OnClickListener mOnDoneClickListener = new OnClickListener() {
13472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        public void onClick(View v) {
13572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            // Edit complete.
13672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            editDone();
13772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
13872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    };
13972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
14072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    protected void editDone() {
14172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // Set result to parent, and close window.
14272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // Check the duration.
14372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        String dur = mDur.getText().toString();
144c39597e09610998e858d181e758ff8ae3f945b94Tom Taylor        int durValue = 0;
14572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        try {
146c39597e09610998e858d181e758ff8ae3f945b94Tom Taylor            durValue = Integer.valueOf(dur);
14772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        } catch (NumberFormatException e) {
148c39597e09610998e858d181e758ff8ae3f945b94Tom Taylor            notifyUser(R.string.duration_not_a_number);
149c39597e09610998e858d181e758ff8ae3f945b94Tom Taylor            return;
150c39597e09610998e858d181e758ff8ae3f945b94Tom Taylor        }
151c39597e09610998e858d181e758ff8ae3f945b94Tom Taylor        if (durValue <= 0) {
152c39597e09610998e858d181e758ff8ae3f945b94Tom Taylor            notifyUser(R.string.duration_zero);
15372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            return;
15472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
15572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
15672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // Set result.
15772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        setResult(RESULT_OK, new Intent(mDur.getText().toString()));
15872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        finish();
15972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
16072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
161c39597e09610998e858d181e758ff8ae3f945b94Tom Taylor    private void notifyUser(int msgId) {
162c39597e09610998e858d181e758ff8ae3f945b94Tom Taylor        mDur.requestFocus();
163c39597e09610998e858d181e758ff8ae3f945b94Tom Taylor        mDur.selectAll();
164c39597e09610998e858d181e758ff8ae3f945b94Tom Taylor        Toast.makeText(this, msgId, Toast.LENGTH_SHORT).show();
165c39597e09610998e858d181e758ff8ae3f945b94Tom Taylor        return;
16672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
16772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project}
168