1/*
2 * Copyright (C) 2008 Esmertec AG.
3 * Copyright (C) 2008 The Android Open Source Project
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *      http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18package com.android.mms.ui;
19
20import com.android.mms.R;
21
22import android.content.Context;
23import android.graphics.Bitmap;
24import android.graphics.BitmapFactory;
25import android.media.MediaPlayer;
26import android.net.Uri;
27import android.text.TextUtils;
28import android.text.method.HideReturnsTransformationMethod;
29import android.util.AttributeSet;
30import android.util.Log;
31import android.view.View;
32import android.widget.ImageView;
33import android.widget.LinearLayout;
34import android.widget.TextView;
35
36import java.io.IOException;
37import java.util.Map;
38
39/**
40 * A simplified view of slide in the slides list.
41 */
42public class SlideListItemView extends LinearLayout implements SlideViewInterface {
43    private static final String TAG = "SlideListItemView";
44
45    private TextView mTextPreview;
46    private ImageView mImagePreview;
47    private TextView mAttachmentName;
48    private ImageView mAttachmentIcon;
49
50    public SlideListItemView(Context context) {
51        super(context);
52    }
53
54    public SlideListItemView(Context context, AttributeSet attrs) {
55        super(context, attrs);
56    }
57
58    @Override
59    protected void onFinishInflate() {
60        mTextPreview = (TextView) findViewById(R.id.text_preview);
61        mTextPreview.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
62        mImagePreview = (ImageView) findViewById(R.id.image_preview);
63        mAttachmentName = (TextView) findViewById(R.id.attachment_name);
64        mAttachmentIcon = (ImageView) findViewById(R.id.attachment_icon);
65    }
66
67    public void startAudio() {
68        // Playing audio is not needed in this view.
69    }
70
71    public void startVideo() {
72        // Playing audio is not needed in this view.
73    }
74
75    public void setAudio(Uri audio, String name, Map<String, ?> extras) {
76        if (name != null) {
77            mAttachmentName.setText(name);
78            mAttachmentIcon.setImageResource(R.drawable.ic_mms_music);
79        } else {
80            mAttachmentName.setText("");
81            mAttachmentIcon.setImageDrawable(null);
82        }
83    }
84
85    public void setImage(String name, Bitmap bitmap) {
86        try {
87            if (null == bitmap) {
88                bitmap = BitmapFactory.decodeResource(getResources(),
89                        R.drawable.ic_missing_thumbnail_picture);
90            }
91            mImagePreview.setImageBitmap(bitmap);
92        } catch (java.lang.OutOfMemoryError e) {
93            Log.e(TAG, "setImage: out of memory: ", e);
94        }
95    }
96
97    public void setImageRegionFit(String fit) {
98        // TODO Auto-generated method stub
99    }
100
101    public void setImageVisibility(boolean visible) {
102        // TODO Auto-generated method stub
103    }
104
105    public void setText(String name, String text) {
106        mTextPreview.setText(text);
107        mTextPreview.setVisibility(TextUtils.isEmpty(text) ? View.GONE : View.VISIBLE);
108    }
109
110    public void setTextVisibility(boolean visible) {
111        // TODO Auto-generated method stub
112    }
113
114    public void setVideo(String name, Uri video) {
115        if (name != null) {
116            mAttachmentName.setText(name);
117            mAttachmentIcon.setImageResource(R.drawable.movie);
118        } else {
119            mAttachmentName.setText("");
120            mAttachmentIcon.setImageDrawable(null);
121        }
122
123        MediaPlayer mp = new MediaPlayer();
124        try {
125            mp.setDataSource(mContext, video);
126            mImagePreview.setImageBitmap(mp.getFrameAt(1000));
127        } catch (IOException e) {
128            Log.e(TAG, "Unexpected IOException.", e);
129        } finally {
130            mp.release();
131        }
132    }
133
134    public void setVideoThumbnail(String name, Bitmap thumbnail) {
135    }
136
137    public void setVideoVisibility(boolean visible) {
138        // TODO Auto-generated method stub
139    }
140
141    public void stopAudio() {
142        // Stopping audio is not needed in this view.
143    }
144
145    public void stopVideo() {
146        // Stopping video is not needed in this view.
147    }
148
149    public void reset() {
150        // TODO Auto-generated method stub
151    }
152
153    public void setVisibility(boolean visible) {
154        // TODO Auto-generated method stub
155    }
156
157    public void pauseAudio() {
158        // TODO Auto-generated method stub
159
160    }
161
162    public void pauseVideo() {
163        // TODO Auto-generated method stub
164
165    }
166
167    public void seekAudio(int seekTo) {
168        // TODO Auto-generated method stub
169
170    }
171
172    public void seekVideo(int seekTo) {
173        // TODO Auto-generated method stub
174
175    }
176}
177