SlideshowAttachmentView.java revision 79bf6f70c54d08dc9c3481b8461a3a46a3cefb83
1663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* 2663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * Copyright (C) 2008 Esmertec AG. 3663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * Copyright (C) 2008 The Android Open Source Project 4663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * 5663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * Licensed under the Apache License, Version 2.0 (the "License"); 6663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * you may not use this file except in compliance with the License. 7663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * You may obtain a copy of the License at 8663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * 9663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * http://www.apache.org/licenses/LICENSE-2.0 10663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * 11663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * Unless required by applicable law or agreed to in writing, software 12663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * distributed under the License is distributed on an "AS IS" BASIS, 13663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * See the License for the specific language governing permissions and 15663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * limitations under the License. 16663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng */ 17663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 18663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengpackage com.android.mms.ui; 19663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 20663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengimport com.android.mms.R; 21663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 22663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengimport android.content.Context; 23663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengimport android.graphics.Bitmap; 24663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengimport android.graphics.BitmapFactory; 25663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengimport android.media.MediaPlayer; 26663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengimport android.net.Uri; 27663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengimport android.util.AttributeSet; 28663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengimport android.util.Log; 29663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengimport android.view.View; 30663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengimport android.widget.ImageView; 31663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengimport android.widget.LinearLayout; 32663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengimport android.widget.TextView; 33663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 34663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengimport java.io.IOException; 35663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengimport java.util.Map; 36663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 37663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/** 38663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng * This class provides an embedded editor/viewer of slide-show attachment. 39663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng */ 40663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengpublic class SlideshowAttachmentView extends LinearLayout implements 41663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng SlideViewInterface { 42663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng private static final String TAG = "SlideshowAttachmentView"; 43663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 44663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng private ImageView mImageView; 45663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng private TextView mTextView; 46663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 47663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public SlideshowAttachmentView(Context context) { 48663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng super(context); 49663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 50663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 51663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public SlideshowAttachmentView(Context context, AttributeSet attrs) { 52663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng super(context, attrs); 53663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 54663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 55663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng @Override 56663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng protected void onFinishInflate() { 57663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng mImageView = (ImageView) findViewById(R.id.slideshow_image); 58663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng mTextView = (TextView) findViewById(R.id.slideshow_text); 59663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 60663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 61663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void startAudio() { 62663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng // TODO Auto-generated method stub 63663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 64663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 65663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void startVideo() { 66663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng // TODO Auto-generated method stub 67663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 68663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 69663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void setAudio(Uri audio, String name, Map<String, ?> extras) { 70663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng // TODO Auto-generated method stub 71663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 72663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 73663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void setImage(String name, Bitmap bitmap) { 74663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng if (null == bitmap) { 75663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng try { 76663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng bitmap = BitmapFactory.decodeResource(getResources(), 77663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng R.drawable.ic_missing_thumbnail_picture); 78663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } catch (java.lang.OutOfMemoryError e) { 79663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng // We don't even have enough memory to load the "missing thumbnail" image 80663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 81663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 82663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng if (bitmap != null) { 83663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng mImageView.setImageBitmap(bitmap); // implementation doesn't appear to be null-safe 84663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 85663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 86663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 87663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void setImageRegionFit(String fit) { 88663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng // TODO Auto-generated method stub 89663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 90663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 91663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void setImageVisibility(boolean visible) { 92663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng mImageView.setVisibility(visible ? View.VISIBLE : View.INVISIBLE); 93663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 94663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 95663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void setText(String name, String text) { 96663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng mTextView.setText(text); 97663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 98663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 99663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void setTextVisibility(boolean visible) { 100663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng mTextView.setVisibility(visible ? View.VISIBLE : View.INVISIBLE); 101663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 102663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 103663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void setVideo(String name, Uri video) { 104663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng MediaPlayer mp = new MediaPlayer(); 105663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng try { 106663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng mp.setDataSource(mContext, video); 107663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng mImageView.setImageBitmap(mp.getFrameAt(1000)); 108663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } catch (IOException e) { 109663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng Log.e(TAG, "Unexpected IOException.", e); 110663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } finally { 111663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng mp.release(); 112663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 113663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 114663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 115663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void setVideoVisibility(boolean visible) { 116663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng // TODO Auto-generated method stub 117663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 118663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 119663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void stopAudio() { 120663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng // TODO Auto-generated method stub 121663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 122663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 123663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void stopVideo() { 124663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng // TODO Auto-generated method stub 125663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 126663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 127663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void reset() { 128663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng mImageView.setImageURI(null); 129663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng mTextView.setText(""); 130663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 131663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 132663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void setVisibility(boolean visible) { 133663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng // TODO Auto-generated method stub 134663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 135663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 136663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void pauseAudio() { 137663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng // TODO Auto-generated method stub 138663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 139663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 140663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 141663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void pauseVideo() { 142663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng // TODO Auto-generated method stub 143663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 144663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 145663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 146663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void seekAudio(int seekTo) { 147663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng // TODO Auto-generated method stub 148663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 149663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 150663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 151663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void seekVideo(int seekTo) { 152663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng // TODO Auto-generated method stub 153663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 154663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 155663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 156663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng public void setVideoThumbnail(String name, Bitmap bitmap) { 157663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng } 158663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng} 159663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng