package com.moez.QKSMS.ui.messagelist;
import android.graphics.Bitmap;
import android.net.Uri;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.moez.QKSMS.R;
import com.moez.QKSMS.common.LiveViewManager;
import com.moez.QKSMS.common.google.ItemLoadedCallback;
import com.moez.QKSMS.common.google.ThumbnailManager;
import com.moez.QKSMS.enums.QKPreference;
import com.moez.QKSMS.interfaces.SlideViewInterface;
import com.moez.QKSMS.interfaces.LiveView;
import com.moez.QKSMS.ui.base.ClickyViewHolder;
import com.moez.QKSMS.ui.base.QKActivity;
import com.moez.QKSMS.ui.mms.Presenter;
import com.moez.QKSMS.ui.view.AvatarView;
import com.moez.QKSMS.ui.view.QKTextView;
import java.util.Map;
public class MessageListViewHolder extends ClickyViewHolder<MessageItem> implements SlideViewInterface {
private final String TAG = "MessageListViewHolder";
// Views
protected View mRoot;
protected QKTextView mBodyTextView;
protected QKTextView mDateView;
protected ImageView mLockedIndicator;
protected ImageView mDeliveredIndicator;
protected ImageView mDetailsIndicator;
protected AvatarView mAvatarView;
protected LinearLayout mMessageBlock;
protected View mSpace;
protected FrameLayout mMmsView;
protected ImageView mImageView;
protected ImageButton mSlideShowButton;
protected Button mDownloadButton;
protected QKTextView mDownloadingLabel;
protected ImageLoadedCallback mImageLoadedCallback;
protected Presenter mPresenter;
public MessageListViewHolder(QKActivity context, View view) {
super(context, view);
mRoot = view;
mBodyTextView = (QKTextView) view.findViewById(R.id.text_view);
mDateView = (QKTextView) view.findViewById(R.id.date_view);
mLockedIndicator = (ImageView) view.findViewById(R.id.locked_indicator);
mDeliveredIndicator = (ImageView) view.findViewById(R.id.delivered_indicator);
mDetailsIndicator = (ImageView) view.findViewById(R.id.details_indicator);
mAvatarView = (AvatarView) view.findViewById(R.id.avatar);
mMessageBlock = (LinearLayout) view.findViewById(R.id.message_block);
mSpace = view.findViewById(R.id.space);
mMmsView = (FrameLayout) view.findViewById(R.id.mms_view);
mImageView = (ImageView) view.findViewById(R.id.image_view);
mSlideShowButton = (ImageButton) view.findViewById(R.id.play_slideshow_button);
}
protected void showMmsView(boolean visible) {
mMmsView.setVisibility(visible ? View.VISIBLE : View.GONE);
mImageView.setVisibility(visible ? View.VISIBLE : View.GONE);
}
protected void inflateDownloadControls() {
if (mDownloadButton == null) {
mRoot.findViewById(R.id.mms_downloading_view_stub).setVisibility(View.VISIBLE);
mDownloadButton = (Button) mRoot.findViewById(R.id.btn_download_msg);
mDownloadingLabel = (QKTextView) mRoot.findViewById(R.id.label_downloading);
}
}
protected void setLiveViewCallback(LiveView liveViewCallback) {
LiveViewManager.registerView(QKPreference.THEME, this, liveViewCallback);
}
@Override
public void setImage(String name, Bitmap bitmap) {
if (bitmap == null) {
showMmsView(false);
} else {
showMmsView(true);
try {
mImageView.setImageBitmap(bitmap);
mImageView.setVisibility(View.VISIBLE);
} catch (java.lang.OutOfMemoryError e) {
Log.e(TAG, "setImage: out of memory: ", e);
}
}
}
@Override
public void setImageRegionFit(String fit) {
}
@Override
public void setImageVisibility(boolean visible) {
}
@Override
public void setVideo(String name, Uri video) {
}
@Override
public void setVideoThumbnail(String name, Bitmap bitmap) {
showMmsView(true);
try {
mImageView.setImageBitmap(bitmap);
mImageView.setVisibility(View.VISIBLE);
} catch (java.lang.OutOfMemoryError e) {
Log.e(TAG, "setVideo: out of memory: ", e);
}
}
@Override
public void setVideoVisibility(boolean visible) {
}
@Override
public void startVideo() {
}
@Override
public void stopVideo() {
}
@Override
public void pauseVideo() {
}
@Override
public void seekVideo(int seekTo) {
}
@Override
public void setAudio(Uri audio, String name, Map<String, ?> extras) {
}
@Override
public void startAudio() {
}
@Override
public void stopAudio() {
}
@Override
public void pauseAudio() {
}
@Override
public void seekAudio(int seekTo) {
}
@Override
public void setText(String name, String text) {
}
@Override
public void setTextVisibility(boolean visible) {
}
@Override
public int getWidth() {
return 0;
}
@Override
public int getHeight() {
return 0;
}
@Override
public void reset() {
}
@Override
public void setVisibility(boolean visible) {
}
static protected class ImageLoadedCallback implements ItemLoadedCallback<ThumbnailManager.ImageLoaded> {
private long mMessageId;
private final MessageListViewHolder mListItem;
public ImageLoadedCallback(MessageListViewHolder listItem) {
mListItem = listItem;
mListItem.setImage(null, null);
mMessageId = listItem.mData.getMessageId();
}
public void reset(MessageListViewHolder listItem) {
mMessageId = listItem.mData.getMessageId();
}
public void onItemLoaded(ThumbnailManager.ImageLoaded imageLoaded, Throwable exception) {
// Make sure we're still pointing to the same message. The list item could have // been recycled.
MessageItem msgItem = mListItem.mData;
if (msgItem != null && msgItem.getMessageId() == mMessageId) {
if (imageLoaded.mIsVideo) {
mListItem.setVideoThumbnail(null, imageLoaded.mBitmap);
} else {
mListItem.setImage(null, imageLoaded.mBitmap);
}
}
}
}
}