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.app.AlertDialog;
2272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.content.ContentUris;
2372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.content.Context;
2472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.content.DialogInterface;
2572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.content.Intent;
2672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.content.res.Resources;
2772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.media.RingtoneManager;
2872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.net.Uri;
2972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.os.Bundle;
3072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.os.Handler;
3172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.provider.Settings;
32d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport android.text.InputFilter;
33d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport android.text.InputFilter.LengthFilter;
3472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.text.TextUtils;
3572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.util.Log;
3672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.Menu;
3772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.MenuItem;
3872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.SubMenu;
3972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.View;
4072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.View.OnClickListener;
4172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.widget.Button;
42d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport android.widget.EditText;
4372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.widget.ImageButton;
4472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.widget.Toast;
45d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chen
46d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.ExceedMessageSizeException;
47ab845dee6565a8dfc384186bc8f2e801a2b087e1Ye Wenimport com.android.mms.LogTag;
48d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.MmsApp;
49d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.MmsConfig;
50d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.R;
51d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.ResolutionException;
52d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.TempFileProvider;
53d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.UnsupportContentTypeException;
54d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.model.IModelChangedObserver;
55d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.model.LayoutModel;
56d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.model.Model;
57d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.model.SlideModel;
58d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.model.SlideshowModel;
59d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.ui.BasicSlideEditorView.OnTextChangedListener;
60d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.ui.MessageUtils.ResizeImageResultCallback;
61d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.google.android.mms.ContentType;
62d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.google.android.mms.MmsException;
63d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.google.android.mms.pdu.PduBody;
64d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.google.android.mms.pdu.PduPart;
65d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.google.android.mms.pdu.PduPersister;
6672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
6772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/**
6872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * This activity allows user to edit the contents of a slide.
6972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */
7072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpublic class SlideEditorActivity extends Activity {
71ab845dee6565a8dfc384186bc8f2e801a2b087e1Ye Wen    private static final String TAG = LogTag.TAG;
7272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private static final boolean DEBUG = false;
73150c4179995cc0a75f934ef194372f9295957ca2Joe Onorato    private static final boolean LOCAL_LOGV = false;
7472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
7572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    // Key for extra data.
7672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public static final String SLIDE_INDEX = "slide_index";
7772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
7872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    // Menu ids.
7972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int MENU_REMOVE_TEXT       = 0;
8072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int MENU_ADD_PICTURE       = 1;
8172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int MENU_TAKE_PICTURE      = 2;
8272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int MENU_DEL_PICTURE       = 3;
8372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int MENU_ADD_AUDIO         = 4;
8472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int MENU_DEL_AUDIO         = 5;
8572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int MENU_ADD_VIDEO         = 6;
8672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int MENU_ADD_SLIDE         = 7;
8772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int MENU_DEL_VIDEO         = 8;
8872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int MENU_LAYOUT            = 9;
8972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int MENU_DURATION          = 10;
9072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int MENU_PREVIEW_SLIDESHOW = 11;
9172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int MENU_RECORD_SOUND      = 12;
9272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int MENU_SUB_AUDIO         = 13;
93867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor    private final static int MENU_TAKE_VIDEO        = 14;
9472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
9572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    // Request code.
9672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int REQUEST_CODE_EDIT_TEXT          = 0;
9772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int REQUEST_CODE_CHANGE_PICTURE     = 1;
9872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int REQUEST_CODE_TAKE_PICTURE       = 2;
9972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int REQUEST_CODE_CHANGE_MUSIC       = 3;
10072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int REQUEST_CODE_RECORD_SOUND       = 4;
10172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int REQUEST_CODE_CHANGE_VIDEO       = 5;
10272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int REQUEST_CODE_CHANGE_DURATION    = 6;
103867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor    private final static int REQUEST_CODE_TAKE_VIDEO         = 7;
10472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
10572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    // number of items in the duration selector dialog that directly map from
10672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    // item index to duration in seconds (duration = index + 1)
10772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static int NUM_DIRECT_DURATIONS = 10;
10872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
10972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private ImageButton mNextSlide;
11072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private ImageButton mPreSlide;
11172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private Button mPreview;
11272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private Button mReplaceImage;
11372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private Button mRemoveSlide;
1145751c241c4a9cb19668788e2ae83ca6e8287375cSoojung Shin    private EditText mTextEditor;
11572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private Button mDone;
11672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private BasicSlideEditorView mSlideView;
11772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
11872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private SlideshowModel mSlideshowModel;
11972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private SlideshowEditor mSlideshowEditor;
12072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private SlideshowPresenter mPresenter;
12172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private boolean mDirty;
12272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
12372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private int mPosition;
12472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private Uri mUri;
12572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
12672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final static String MESSAGE_URI = "message_uri";
127661957caeb3110ae3328a995edd467ceedc07a36Tom Taylor    private AsyncDialog mAsyncDialog;   // Used for background tasks.
12872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
12972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    @Override
13072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    protected void onCreate(Bundle savedInstanceState) {
13172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        super.onCreate(savedInstanceState);
13272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        setContentView(R.layout.edit_slide_activity);
13372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
13472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mSlideView = (BasicSlideEditorView) findViewById(R.id.slide_editor_view);
13572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mSlideView.setOnTextChangedListener(mOnTextChangedListener);
13672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
13772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mPreSlide = (ImageButton) findViewById(R.id.pre_slide_button);
13872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mPreSlide.setOnClickListener(mOnNavigateBackward);
13972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
14072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mNextSlide = (ImageButton) findViewById(R.id.next_slide_button);
14172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mNextSlide.setOnClickListener(mOnNavigateForward);
14272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
14372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mPreview = (Button) findViewById(R.id.preview_button);
14472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mPreview.setOnClickListener(mOnPreview);
14572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
14672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mReplaceImage = (Button) findViewById(R.id.replace_image_button);
14772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mReplaceImage.setOnClickListener(mOnReplaceImage);
14872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
14972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mRemoveSlide = (Button) findViewById(R.id.remove_slide_button);
15072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mRemoveSlide.setOnClickListener(mOnRemoveSlide);
15172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
1525751c241c4a9cb19668788e2ae83ca6e8287375cSoojung Shin        mTextEditor = (EditText) findViewById(R.id.text_message);
1535751c241c4a9cb19668788e2ae83ca6e8287375cSoojung Shin        mTextEditor.setFilters(new InputFilter[] {
1545751c241c4a9cb19668788e2ae83ca6e8287375cSoojung Shin                new LengthFilter(MmsConfig.getMaxTextLimit())});
1555751c241c4a9cb19668788e2ae83ca6e8287375cSoojung Shin
15672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mDone = (Button) findViewById(R.id.done_button);
15772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mDone.setOnClickListener(mDoneClickListener);
15872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
15972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        initActivityState(savedInstanceState, getIntent());
16072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
16172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        try {
16272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            mSlideshowModel = SlideshowModel.createFromMessageUri(this, mUri);
163e028faa922b4bf0eaf3834cb450677fcd3549cb5Todor Kalaydjiev            // Confirm that we have at least 1 slide to display
164e028faa922b4bf0eaf3834cb450677fcd3549cb5Todor Kalaydjiev            if (mSlideshowModel.size() == 0) {
165e028faa922b4bf0eaf3834cb450677fcd3549cb5Todor Kalaydjiev                Log.e(TAG, "Loaded slideshow is empty; can't edit nothingness, exiting.");
166e028faa922b4bf0eaf3834cb450677fcd3549cb5Todor Kalaydjiev                finish();
167e028faa922b4bf0eaf3834cb450677fcd3549cb5Todor Kalaydjiev                return;
168e028faa922b4bf0eaf3834cb450677fcd3549cb5Todor Kalaydjiev            }
16972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            // Register an observer to watch whether the data model is changed.
17072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            mSlideshowModel.registerModelChangedObserver(mModelChangedObserver);
17172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            mSlideshowEditor = new SlideshowEditor(this, mSlideshowModel);
17272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            mPresenter = (SlideshowPresenter) PresenterFactory.getPresenter(
17372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    "SlideshowPresenter", this, mSlideView, mSlideshowModel);
174edd39351defc331fc268a6ed88338f64fe6f17cfTom Taylor
17572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            // Sanitize mPosition
17672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            if (mPosition >= mSlideshowModel.size()) {
17772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                mPosition = Math.max(0, mSlideshowModel.size() - 1);
17872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            } else if (mPosition < 0) {
17972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                mPosition = 0;
18072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            }
18172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
18272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            showCurrentSlide();
18372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        } catch (MmsException e) {
18472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            Log.e(TAG, "Create SlideshowModel failed!", e);
18572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            finish();
18672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            return;
18772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
18872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
18972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
19072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private void initActivityState(Bundle savedInstanceState, Intent intent) {
19172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        if (savedInstanceState != null) {
19272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            mUri = (Uri) savedInstanceState.getParcelable(MESSAGE_URI);
19372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            mPosition = savedInstanceState.getInt(SLIDE_INDEX, 0);
19472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        } else {
19572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            mUri = intent.getData();
19672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            mPosition = intent.getIntExtra(SLIDE_INDEX, 0);
19772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
19872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
19972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
20072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    @Override
20172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    protected void onSaveInstanceState(Bundle outState) {
20272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        super.onSaveInstanceState(outState);
20372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
20472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        outState.putInt(SLIDE_INDEX, mPosition);
20572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        outState.putParcelable(MESSAGE_URI, mUri);
20672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
20772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
20872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    @Override
20972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    protected void onPause()  {
21072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        super.onPause();
21172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
212661957caeb3110ae3328a995edd467ceedc07a36Tom Taylor        // remove any callback to display a progress spinner
213661957caeb3110ae3328a995edd467ceedc07a36Tom Taylor        if (mAsyncDialog != null) {
214661957caeb3110ae3328a995edd467ceedc07a36Tom Taylor            mAsyncDialog.clearPendingProgressDialog();
215661957caeb3110ae3328a995edd467ceedc07a36Tom Taylor        }
216661957caeb3110ae3328a995edd467ceedc07a36Tom Taylor
21772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        synchronized (this) {
21872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            if (mDirty) {
21972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                try {
22072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    PduBody pb = mSlideshowModel.toPduBody();
221469db72fcf219fd4c60bc9b01c728bdc3e866d40Tom Taylor                    PduPersister.getPduPersister(this).updateParts(mUri, pb, null);
22272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    mSlideshowModel.sync(pb);
22372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                }  catch (MmsException e) {
22472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    Log.e(TAG, "Cannot update the message: " + mUri, e);
22572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                }
22672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            }
22772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
22872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
22972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
23072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    @Override
23172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    protected void onDestroy() {
23272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        super.onDestroy();
23372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
23472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        if (mSlideshowModel != null) {
23572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            mSlideshowModel.unregisterModelChangedObserver(
23672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    mModelChangedObserver);
23772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
23872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
23972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
24072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final IModelChangedObserver mModelChangedObserver =
24172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        new IModelChangedObserver() {
24272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            public void onModelChanged(Model model, boolean dataChanged) {
24372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                synchronized (SlideEditorActivity.this) {
24472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    mDirty = true;
24572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                }
24672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                setResult(RESULT_OK);
24772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            }
24872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        };
24972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
25072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final OnClickListener mOnRemoveSlide = new OnClickListener() {
25172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        public void onClick(View v) {
25272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            // Validate mPosition
25372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            if (mPosition >= 0 && mPosition < mSlideshowModel.size()) {
25472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                mSlideshowEditor.removeSlide(mPosition);
25572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                int size = mSlideshowModel.size();
25672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                if (size > 0) {
25772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    if (mPosition >= size) {
25872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                        mPosition--;
25972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    }
26072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    showCurrentSlide();
26172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } else {
26272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    finish();
26372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    return;
26472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                }
26572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            }
26672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
26772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    };
26872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
26972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final OnTextChangedListener mOnTextChangedListener = new OnTextChangedListener() {
27072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        public void onTextChanged(String s) {
271b79df272305c0c27954b7bd44de0e5df97e3e639Tom Taylor            if (!isFinishing()) {
272b79df272305c0c27954b7bd44de0e5df97e3e639Tom Taylor                mSlideshowEditor.changeText(mPosition, s);
273b79df272305c0c27954b7bd44de0e5df97e3e639Tom Taylor            }
27472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
27572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    };
27672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
27772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final OnClickListener mOnPreview = new OnClickListener() {
27872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        public void onClick(View v) {
27972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            previewSlideshow();
28072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
28172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    };
28272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
28372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final OnClickListener mOnReplaceImage = new OnClickListener() {
28472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        public void onClick(View v) {
285d9e91d95f4c8ed00d881e41b6af9783bec61cfc8Satish Roddom            SlideModel slide = mSlideshowModel.get(mPosition);
2864ee7aa9aec45dd564c0e82928fa5a8378e856dcfWei Huang            if (slide != null && slide.hasVideo()) {
287d9e91d95f4c8ed00d881e41b6af9783bec61cfc8Satish Roddom                Toast.makeText(SlideEditorActivity.this, R.string.cannot_add_picture_and_video,
288d9e91d95f4c8ed00d881e41b6af9783bec61cfc8Satish Roddom                        Toast.LENGTH_SHORT).show();
289d9e91d95f4c8ed00d881e41b6af9783bec61cfc8Satish Roddom                return;
290d9e91d95f4c8ed00d881e41b6af9783bec61cfc8Satish Roddom            }
29172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
29272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            intent.setType(ContentType.IMAGE_UNSPECIFIED);
29372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            startActivityForResult(intent, REQUEST_CODE_CHANGE_PICTURE);
29472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
29572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    };
29672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
29772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final OnClickListener mOnNavigateBackward = new OnClickListener() {
29872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        public void onClick(View v) {
29972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            if (mPosition > 0) {
30072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                mPosition --;
30172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                showCurrentSlide();
30272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            }
30372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
30472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    };
30572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
30672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final OnClickListener mOnNavigateForward = new OnClickListener() {
30772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        public void onClick(View v) {
30872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            if (mPosition < mSlideshowModel.size() - 1) {
30972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                mPosition ++;
31072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                showCurrentSlide();
31172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            }
31272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
31372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    };
31472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
31572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final OnClickListener mDoneClickListener = new OnClickListener() {
31672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        public void onClick(View v) {
31772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            Intent data = new Intent();
31872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            data.putExtra("done", true);
31972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            setResult(RESULT_OK, data);
32072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            finish();
32172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
32272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    };
32372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
324661957caeb3110ae3328a995edd467ceedc07a36Tom Taylor    private AsyncDialog getAsyncDialog() {
325661957caeb3110ae3328a995edd467ceedc07a36Tom Taylor        if (mAsyncDialog == null) {
326661957caeb3110ae3328a995edd467ceedc07a36Tom Taylor            mAsyncDialog = new AsyncDialog(this);
327661957caeb3110ae3328a995edd467ceedc07a36Tom Taylor        }
328661957caeb3110ae3328a995edd467ceedc07a36Tom Taylor        return mAsyncDialog;
329661957caeb3110ae3328a995edd467ceedc07a36Tom Taylor    }
330661957caeb3110ae3328a995edd467ceedc07a36Tom Taylor
33172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private void previewSlideshow() {
332661957caeb3110ae3328a995edd467ceedc07a36Tom Taylor        MessageUtils.viewMmsMessageAttachment(SlideEditorActivity.this, mUri, mSlideshowModel,
3337616b16b95cc2d2c694cf199851a55ce8391b94eTom Taylor                getAsyncDialog());
33472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
33572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
33672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private void updateTitle() {
33772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        setTitle(getString(R.string.slide_show_part, (mPosition + 1), mSlideshowModel.size()));
33872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
33972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
34072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    @Override
34172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public boolean onPrepareOptionsMenu(Menu menu) {
3427bf703913dfb4c253b645279d69b7c6d25634880Tom Taylor        if (isFinishing()) {
3437bf703913dfb4c253b645279d69b7c6d25634880Tom Taylor            return false;
3447bf703913dfb4c253b645279d69b7c6d25634880Tom Taylor        }
34572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        menu.clear();
34672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
34772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        SlideModel slide = mSlideshowModel.get(mPosition);
34872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
3494ee7aa9aec45dd564c0e82928fa5a8378e856dcfWei Huang        if (slide == null) {
3504ee7aa9aec45dd564c0e82928fa5a8378e856dcfWei Huang            return false;
3514ee7aa9aec45dd564c0e82928fa5a8378e856dcfWei Huang        }
3524ee7aa9aec45dd564c0e82928fa5a8378e856dcfWei Huang
35372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // Preview slideshow.
35472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        menu.add(0, MENU_PREVIEW_SLIDESHOW, 0, R.string.preview_slideshow).setIcon(
35572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                com.android.internal.R.drawable.ic_menu_play_clip);
35672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
35772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // Text
35872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        if (slide.hasText() && !TextUtils.isEmpty(slide.getText().getText())) {
35972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            //"Change text" if text is set.
36072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            menu.add(0, MENU_REMOVE_TEXT, 0, R.string.remove_text).setIcon(
36172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    R.drawable.ic_menu_remove_text);
36272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
36372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
36472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // Picture
36572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        if (slide.hasImage()) {
36672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            menu.add(0, MENU_DEL_PICTURE, 0, R.string.remove_picture).setIcon(
36772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    R.drawable.ic_menu_remove_picture);
36872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        } else if (!slide.hasVideo()) {
36972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            menu.add(0, MENU_ADD_PICTURE, 0, R.string.add_picture).setIcon(
37072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    R.drawable.ic_menu_picture);
37172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            menu.add(0, MENU_TAKE_PICTURE, 0, R.string.attach_take_photo).setIcon(
37272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    R.drawable.ic_menu_picture);
37372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
37472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
37572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // Music
37672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        if (slide.hasAudio()) {
37772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            menu.add(0, MENU_DEL_AUDIO, 0, R.string.remove_music).setIcon(
37872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    R.drawable.ic_menu_remove_sound);
37972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        } else if (!slide.hasVideo()) {
38047471dad88703d5befcbf65abd9e0cf28872bcb3Tom Taylor            if (MmsConfig.getAllowAttachAudio()) {
38147471dad88703d5befcbf65abd9e0cf28872bcb3Tom Taylor                SubMenu subMenu = menu.addSubMenu(0, MENU_SUB_AUDIO, 0, R.string.add_music)
38247471dad88703d5befcbf65abd9e0cf28872bcb3Tom Taylor                    .setIcon(R.drawable.ic_menu_add_sound);
38347471dad88703d5befcbf65abd9e0cf28872bcb3Tom Taylor                subMenu.add(0, MENU_ADD_AUDIO, 0, R.string.attach_sound);
38447471dad88703d5befcbf65abd9e0cf28872bcb3Tom Taylor                subMenu.add(0, MENU_RECORD_SOUND, 0, R.string.attach_record_sound);
38547471dad88703d5befcbf65abd9e0cf28872bcb3Tom Taylor            } else {
38647471dad88703d5befcbf65abd9e0cf28872bcb3Tom Taylor                menu.add(0, MENU_RECORD_SOUND, 0, R.string.attach_record_sound)
38747471dad88703d5befcbf65abd9e0cf28872bcb3Tom Taylor                    .setIcon(R.drawable.ic_menu_add_sound);
38847471dad88703d5befcbf65abd9e0cf28872bcb3Tom Taylor            }
38972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
39072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
39172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // Video
39272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        if (slide.hasVideo()) {
39372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            menu.add(0, MENU_DEL_VIDEO, 0, R.string.remove_video).setIcon(
3942f56791329cefc49ce79663b8d3aff50594cc1f3The Android Open Source Project                    R.drawable.ic_menu_remove_video);
39572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        } else if (!slide.hasAudio() && !slide.hasImage()) {
39672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            menu.add(0, MENU_ADD_VIDEO, 0, R.string.add_video).setIcon(R.drawable.ic_menu_movie);
397867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor            menu.add(0, MENU_TAKE_VIDEO, 0, R.string.attach_record_video)
398867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor                .setIcon(R.drawable.ic_menu_movie);
39972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
40072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
40172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // Add slide
40272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        menu.add(0, MENU_ADD_SLIDE, 0, R.string.add_slide).setIcon(
40372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                R.drawable.ic_menu_add_slide);
40472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
40572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // Slide duration
40672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        String duration = getResources().getString(R.string.duration_sec);
40772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        menu.add(0, MENU_DURATION, 0,
40872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                duration.replace("%s", String.valueOf(slide.getDuration() / 1000))).setIcon(
40972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                        R.drawable.ic_menu_duration);
41072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
41172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // Slide layout
41272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        int resId;
41372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        if (mSlideshowModel.getLayout().getLayoutType() == LayoutModel.LAYOUT_TOP_TEXT) {
41472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            resId = R.string.layout_top;
41572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        } else {
41672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            resId = R.string.layout_bottom;
41772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
41872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        // FIXME: set correct icon when layout icon is available.
41972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        menu.add(0, MENU_LAYOUT, 0, resId).setIcon(R.drawable.ic_menu_picture);
42072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        return true;
42172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
42272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
42372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    @Override
42472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public boolean onOptionsItemSelected(MenuItem item) {
42572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        switch (item.getItemId()) {
42672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case MENU_PREVIEW_SLIDESHOW:
42772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                previewSlideshow();
42872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
42972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
43072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case MENU_REMOVE_TEXT:
43172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                SlideModel slide = mSlideshowModel.get(mPosition);
4324ee7aa9aec45dd564c0e82928fa5a8378e856dcfWei Huang                if (slide != null) {
4334ee7aa9aec45dd564c0e82928fa5a8378e856dcfWei Huang                    slide.removeText();
4344ee7aa9aec45dd564c0e82928fa5a8378e856dcfWei Huang                }
43572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
43672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
43772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case MENU_ADD_PICTURE:
43872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
43972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                intent.setType(ContentType.IMAGE_UNSPECIFIED);
44072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                startActivityForResult(intent, REQUEST_CODE_CHANGE_PICTURE);
44172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
44272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
44372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case MENU_TAKE_PICTURE:
444b8eae066a7ba60722de07300bf990d519f5c81d8Tom Taylor                MessageUtils.capturePicture(this, REQUEST_CODE_TAKE_PICTURE);
44572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
44672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
44772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case MENU_DEL_PICTURE:
44872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                mSlideshowEditor.removeImage(mPosition);
44972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                setReplaceButtonText(R.string.add_picture);
45072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
45172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
45272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case MENU_ADD_AUDIO:
45372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                MessageUtils.selectAudio(this, REQUEST_CODE_CHANGE_MUSIC);
45472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
45572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
45672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case MENU_RECORD_SOUND:
45715057746d75afb5fec583f30064b382c18403608Tom Taylor                slide = mSlideshowModel.get(mPosition);
45815057746d75afb5fec583f30064b382c18403608Tom Taylor                int currentSlideSize = slide.getSlideSize();
45915057746d75afb5fec583f30064b382c18403608Tom Taylor                long sizeLimit = ComposeMessageActivity.computeAttachmentSizeLimit(mSlideshowModel,
46015057746d75afb5fec583f30064b382c18403608Tom Taylor                        currentSlideSize);
46115057746d75afb5fec583f30064b382c18403608Tom Taylor                MessageUtils.recordSound(this, REQUEST_CODE_RECORD_SOUND, sizeLimit);
46272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
46372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
46472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case MENU_DEL_AUDIO:
46572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                mSlideshowEditor.removeAudio(mPosition);
46672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
46772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
46872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case MENU_ADD_VIDEO:
46972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                intent = new Intent(Intent.ACTION_GET_CONTENT);
47072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                intent.setType(ContentType.VIDEO_UNSPECIFIED);
47102277c6b787e8e29ee22b1df745eb8549d3ff023Tom Taylor                intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
47272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                startActivityForResult(intent, REQUEST_CODE_CHANGE_VIDEO);
47372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
47472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
475867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor            case MENU_TAKE_VIDEO:
476867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor                slide = mSlideshowModel.get(mPosition);
477867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor                currentSlideSize = slide.getSlideSize();
478867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor                sizeLimit = ComposeMessageActivity.computeAttachmentSizeLimit(mSlideshowModel,
479867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor                        currentSlideSize);
480867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor                if (sizeLimit > 0) {
481867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor                    MessageUtils.recordVideo(this, REQUEST_CODE_TAKE_VIDEO, sizeLimit);
482867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor                } else {
483867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor                    Toast.makeText(this,
484867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor                            getString(R.string.message_too_big_for_video),
485867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor                            Toast.LENGTH_SHORT).show();
486867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor                }
487867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor                break;
488867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor
48972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case MENU_DEL_VIDEO:
49072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                mSlideshowEditor.removeVideo(mPosition);
49172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
49272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
49372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case MENU_ADD_SLIDE:
49472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                mPosition++;
49572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                if ( mSlideshowEditor.addNewSlide(mPosition) ) {
49672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    // add successfully
49772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    showCurrentSlide();
49872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } else {
49972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    // move position back
50072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    mPosition--;
50172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    Toast.makeText(this, R.string.cannot_add_slide_anymore,
50272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            Toast.LENGTH_SHORT).show();
50372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                }
50472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
50572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
50672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case MENU_LAYOUT:
50772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                showLayoutSelectorDialog();
50872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
50972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
51072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case MENU_DURATION:
51172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                showDurationDialog();
51272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
51372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
51472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
51572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        return true;
51672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
51772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
51872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private void setReplaceButtonText(int text) {
51972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mReplaceImage.setText(text);
52072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
52172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
52272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private void showDurationDialog() {
52372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        AlertDialog.Builder builder = new AlertDialog.Builder(this);
52472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        builder.setIcon(R.drawable.ic_mms_duration);
52572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        String title = getResources().getString(R.string.duration_selector_title);
52672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        builder.setTitle(title + (mPosition + 1) + "/" + mSlideshowModel.size());
52772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
52872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        builder.setItems(R.array.select_dialog_items,
52972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                new DialogInterface.OnClickListener() {
53072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            public void onClick(DialogInterface dialog, int which) {
53172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                if ((which >= 0) && (which < NUM_DIRECT_DURATIONS)) {
53272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    mSlideshowEditor.changeDuration(
53372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            mPosition, (which + 1) * 1000);
53472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } else {
53572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    Intent intent = new Intent(SlideEditorActivity.this,
53672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            EditSlideDurationActivity.class);
53772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    intent.putExtra(EditSlideDurationActivity.SLIDE_INDEX, mPosition);
53872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    intent.putExtra(EditSlideDurationActivity.SLIDE_TOTAL,
53972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            mSlideshowModel.size());
54072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    intent.putExtra(EditSlideDurationActivity.SLIDE_DUR,
54172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            mSlideshowModel.get(mPosition).getDuration() / 1000); // in seconds
54272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    startActivityForResult(intent, REQUEST_CODE_CHANGE_DURATION);
54372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                }
544c4a34a0ccd414e2bba937e8abd105a0383afff35Tom Taylor                dialog.dismiss();
54572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            }
54672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        });
54772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
54872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        builder.show();
54972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
55072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
55172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private void showLayoutSelectorDialog() {
55272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        AlertDialog.Builder builder = new AlertDialog.Builder(this);
55372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        builder.setIcon(R.drawable.ic_mms_layout);
55472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
55572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        String title = getResources().getString(R.string.layout_selector_title);
55672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        builder.setTitle(title + (mPosition + 1) + "/" + mSlideshowModel.size());
55772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
55872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        LayoutSelectorAdapter adapter = new LayoutSelectorAdapter(this);
55972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
56072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            public void onClick(DialogInterface dialog, int which) {
56172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                switch (which) {
5626bf6dd8f9327299fd4a829fb7844568f96dd5278Tom Taylor                    case 0: // Top text.
56372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                        mSlideshowEditor.changeLayout(LayoutModel.LAYOUT_TOP_TEXT);
56472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                        break;
5656bf6dd8f9327299fd4a829fb7844568f96dd5278Tom Taylor                    case 1: // Bottom text.
5666bf6dd8f9327299fd4a829fb7844568f96dd5278Tom Taylor                        mSlideshowEditor.changeLayout(LayoutModel.LAYOUT_BOTTOM_TEXT);
5676bf6dd8f9327299fd4a829fb7844568f96dd5278Tom Taylor                        break;
56872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                }
569c4a34a0ccd414e2bba937e8abd105a0383afff35Tom Taylor                dialog.dismiss();
57072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            }
57172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        });
57272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
57372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        builder.show();
57472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
57572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
57672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    @Override
57772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
57872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        if (resultCode != RESULT_OK) {
57972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            return;
58072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
58172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
58272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        switch(requestCode) {
58372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case REQUEST_CODE_EDIT_TEXT:
58472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                // XXX where does this come from?  Action is probably not the
58572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                // right place to have the text...
58672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                mSlideshowEditor.changeText(mPosition, data.getAction());
58772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
58872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
58972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case REQUEST_CODE_TAKE_PICTURE:
590b0664c5822ee07642617a73c932b02a2636a2223Tom Taylor                Uri pictureUri = null;
5912fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                boolean showError = false;
59272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                try {
5932fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                    pictureUri = TempFileProvider.renameScrapFile(".jpg",
5941450f3f35f29fbf8b2701dc8e8bceda326fbfcedTom Taylor                            Integer.toString(mPosition), this);
5952fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor
5962fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                    if (pictureUri == null) {
5972fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                        showError = true;
5982fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                    } else {
599b8eae066a7ba60722de07300bf990d519f5c81d8Tom Taylor                        // Remove the old captured picture's thumbnail from the cache
600b8eae066a7ba60722de07300bf990d519f5c81d8Tom Taylor                        MmsApp.getApplication().getThumbnailManager().removeThumbnail(pictureUri);
601b8eae066a7ba60722de07300bf990d519f5c81d8Tom Taylor
6022fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                        mSlideshowEditor.changeImage(mPosition, pictureUri);
6032fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                        setReplaceButtonText(R.string.replace_image);
604b0664c5822ee07642617a73c932b02a2636a2223Tom Taylor                    }
60572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } catch (MmsException e) {
60672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    Log.e(TAG, "add image failed", e);
6072fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                    showError = true;
60872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } catch (UnsupportContentTypeException e) {
60972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    MessageUtils.showErrorDialog(SlideEditorActivity.this,
61072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            getResourcesString(R.string.unsupported_media_format, getPictureString()),
61172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            getResourcesString(R.string.select_different_media, getPictureString()));
61272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } catch (ResolutionException e) {
613b0664c5822ee07642617a73c932b02a2636a2223Tom Taylor                    MessageUtils.resizeImageAsync(this, pictureUri, new Handler(),
614edd39351defc331fc268a6ed88338f64fe6f17cfTom Taylor                            mResizeImageCallback, false);
61572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } catch (ExceedMessageSizeException e) {
616b0664c5822ee07642617a73c932b02a2636a2223Tom Taylor                    MessageUtils.resizeImageAsync(this, pictureUri, new Handler(),
617f79b803adc0cee3778cf6aac52d203896cde5d95Christian Gustafsson                            mResizeImageCallback, false);
61872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                }
6192fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                if (showError) {
6202fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                    notifyUser("add picture failed");
6212fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                    Toast.makeText(SlideEditorActivity.this,
6222fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                            getResourcesString(R.string.failed_to_add_media, getPictureString()),
6232fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                            Toast.LENGTH_SHORT).show();
6242fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                }
62572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
62672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
62772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case REQUEST_CODE_CHANGE_PICTURE:
62872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                try {
62972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    mSlideshowEditor.changeImage(mPosition, data.getData());
63072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    setReplaceButtonText(R.string.replace_image);
63172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } catch (MmsException e) {
63272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    Log.e(TAG, "add image failed", e);
63372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    notifyUser("add picture failed");
63472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    Toast.makeText(SlideEditorActivity.this,
63572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            getResourcesString(R.string.failed_to_add_media, getPictureString()),
63672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            Toast.LENGTH_SHORT).show();
63772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } catch (UnsupportContentTypeException e) {
63872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    MessageUtils.showErrorDialog(SlideEditorActivity.this,
63972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            getResourcesString(R.string.unsupported_media_format, getPictureString()),
64072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            getResourcesString(R.string.select_different_media, getPictureString()));
64172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } catch (ResolutionException e) {
642edd39351defc331fc268a6ed88338f64fe6f17cfTom Taylor                    MessageUtils.resizeImageAsync(this, data.getData(), new Handler(),
643edd39351defc331fc268a6ed88338f64fe6f17cfTom Taylor                            mResizeImageCallback, false);
64472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } catch (ExceedMessageSizeException e) {
645f79b803adc0cee3778cf6aac52d203896cde5d95Christian Gustafsson                    MessageUtils.resizeImageAsync(this, data.getData(), new Handler(),
646f79b803adc0cee3778cf6aac52d203896cde5d95Christian Gustafsson                            mResizeImageCallback, false);
64772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                }
64872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
64972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
65072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case REQUEST_CODE_CHANGE_MUSIC:
65172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case REQUEST_CODE_RECORD_SOUND:
65272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                Uri uri;
65372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                if (requestCode == REQUEST_CODE_CHANGE_MUSIC) {
65472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    uri = (Uri) data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
65572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    if (Settings.System.DEFAULT_RINGTONE_URI.equals(uri)) {
65672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                        return;
65772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    }
65872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } else {
65972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    uri = data.getData();
66072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                }
66172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
66272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                try {
66372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    mSlideshowEditor.changeAudio(mPosition, uri);
66472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } catch (MmsException e) {
66572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    Log.e(TAG, "add audio failed", e);
66672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    notifyUser("add music failed");
66772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    Toast.makeText(SlideEditorActivity.this,
66872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            getResourcesString(R.string.failed_to_add_media, getAudioString()),
66972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            Toast.LENGTH_SHORT).show();
67072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } catch (UnsupportContentTypeException e) {
67172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    MessageUtils.showErrorDialog(SlideEditorActivity.this,
67272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            getResourcesString(R.string.unsupported_media_format, getAudioString()),
67372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            getResourcesString(R.string.select_different_media, getAudioString()));
67472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } catch (ExceedMessageSizeException e) {
67572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    MessageUtils.showErrorDialog(SlideEditorActivity.this,
67672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            getResourcesString(R.string.exceed_message_size_limitation),
67772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            getResourcesString(R.string.failed_to_add_media, getAudioString()));
67872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                }
67972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
68072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
681867b50f32a3035ac38178eebd827f0c8012781c2Tom Taylor            case REQUEST_CODE_TAKE_VIDEO:
68272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                try {
6832fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                    Uri videoUri = TempFileProvider.renameScrapFile(".3gp",
6841450f3f35f29fbf8b2701dc8e8bceda326fbfcedTom Taylor                            Integer.toString(mPosition), this);
6852fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor
6862fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                    mSlideshowEditor.changeVideo(mPosition, videoUri);
6872fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                } catch (MmsException e) {
6882fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                    notifyUser("add video failed");
6892fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                    Toast.makeText(SlideEditorActivity.this,
6902fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                            getResourcesString(R.string.failed_to_add_media, getVideoString()),
6912fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                            Toast.LENGTH_SHORT).show();
6922fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                } catch (UnsupportContentTypeException e) {
6932fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                    MessageUtils.showErrorDialog(SlideEditorActivity.this,
6942fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                            getResourcesString(R.string.unsupported_media_format, getVideoString()),
6952fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                            getResourcesString(R.string.select_different_media, getVideoString()));
6962fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                } catch (ExceedMessageSizeException e) {
6972fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                    MessageUtils.showErrorDialog(SlideEditorActivity.this,
6982fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                            getResourcesString(R.string.exceed_message_size_limitation),
6992fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                            getResourcesString(R.string.failed_to_add_media, getVideoString()));
7002fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                }
7012fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                break;
7022fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor
7032fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor            case REQUEST_CODE_CHANGE_VIDEO:
7042fddde28ed2ccb3c156d596160e3a504c83ce444Tom Taylor                try {
70572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    mSlideshowEditor.changeVideo(mPosition, data.getData());
70672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } catch (MmsException e) {
70772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    Log.e(TAG, "add video failed", e);
70872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    notifyUser("add video failed");
70972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    Toast.makeText(SlideEditorActivity.this,
71072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            getResourcesString(R.string.failed_to_add_media, getVideoString()),
71172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            Toast.LENGTH_SHORT).show();
71272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } catch (UnsupportContentTypeException e) {
71372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    MessageUtils.showErrorDialog(SlideEditorActivity.this,
71472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            getResourcesString(R.string.unsupported_media_format, getVideoString()),
71572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            getResourcesString(R.string.select_different_media, getVideoString()));
71672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                } catch (ExceedMessageSizeException e) {
71772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    MessageUtils.showErrorDialog(SlideEditorActivity.this,
71872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            getResourcesString(R.string.exceed_message_size_limitation),
71972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                            getResourcesString(R.string.failed_to_add_media, getVideoString()));
72072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                }
72172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
72272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
72372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case REQUEST_CODE_CHANGE_DURATION:
72472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                mSlideshowEditor.changeDuration(mPosition,
72572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                    Integer.valueOf(data.getAction()) * 1000);
72672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                break;
72772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
72872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
72972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
73072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private final ResizeImageResultCallback mResizeImageCallback = new ResizeImageResultCallback() {
731edd39351defc331fc268a6ed88338f64fe6f17cfTom Taylor        public void onResizeResult(PduPart part, boolean append) {
73272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            Context context = SlideEditorActivity.this;
73372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            if (part == null) {
73472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                Toast.makeText(SlideEditorActivity.this,
73572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                        getResourcesString(R.string.failed_to_add_media, getPictureString()),
73672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                        Toast.LENGTH_SHORT).show();
73772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                return;
73872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            }
73972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
74072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            try {
74172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                long messageId = ContentUris.parseId(mUri);
74272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                PduPersister persister = PduPersister.getPduPersister(context);
743469db72fcf219fd4c60bc9b01c728bdc3e866d40Tom Taylor                Uri newUri = persister.persistPart(part, messageId, null);
74472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                mSlideshowEditor.changeImage(mPosition, newUri);
74572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
74672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                setReplaceButtonText(R.string.replace_image);
74772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            } catch (MmsException e) {
74872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                notifyUser("add picture failed");
74972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                Toast.makeText(SlideEditorActivity.this,
75072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                        getResourcesString(R.string.failed_to_add_media, getPictureString()),
75172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                        Toast.LENGTH_SHORT).show();
75272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            } catch (UnsupportContentTypeException e) {
75372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                MessageUtils.showErrorDialog(SlideEditorActivity.this,
75472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                        getResourcesString(R.string.unsupported_media_format, getPictureString()),
75572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                        getResourcesString(R.string.select_different_media, getPictureString()));
75672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            } catch (ResolutionException e) {
75772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                MessageUtils.showErrorDialog(SlideEditorActivity.this,
75872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                        getResourcesString(R.string.failed_to_resize_image),
75972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                        getResourcesString(R.string.resize_image_error_information));
76072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            } catch (ExceedMessageSizeException e) {
76172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                MessageUtils.showErrorDialog(SlideEditorActivity.this,
76272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                        getResourcesString(R.string.exceed_message_size_limitation),
76372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                        getResourcesString(R.string.failed_to_add_media, getPictureString()));
76472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            }
76572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
76672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    };
76772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
76872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private String getResourcesString(int id, String mediaName) {
76972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        Resources r = getResources();
77072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        return r.getString(id, mediaName);
77172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
77272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
77372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private String getResourcesString(int id) {
77472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        Resources r = getResources();
77572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        return r.getString(id);
77672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
77772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
77872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private String getAudioString() {
77972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        return getResourcesString(R.string.type_audio);
78072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
78172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
78272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private String getPictureString() {
78372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        return getResourcesString(R.string.type_picture);
78472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
78572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
78672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private String getVideoString() {
78772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        return getResourcesString(R.string.type_video);
78872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
78972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
79072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private void notifyUser(String message) {
79172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        if (LOCAL_LOGV) {
79272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            Log.v(TAG, "notifyUser: message=" + message);
79372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
79472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
79572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
79672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private void showCurrentSlide() {
79772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        mPresenter.setLocation(mPosition);
79851e4621fa12400b1e79cc18b7bb0f9a83af6b622Tom Taylor        mPresenter.present(null);
79972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        updateTitle();
80072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
80172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        if (mSlideshowModel.get(mPosition).hasImage()) {
80272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            setReplaceButtonText(R.string.replace_image);
80372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        } else {
80472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            setReplaceButtonText(R.string.add_picture);
80572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
80672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
80772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project}
808