package com.wistron.WiViewer;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import Utilities.CSStaticData;
import Utilities.FileTypeHelper;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ActivityInfo;
import android.content.res.ColorStateList;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.graphics.Color;
import android.graphics.Matrix;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.SpannableString;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationSet;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;
import com.wistron.StereoUI.FileInfoMsgBox;
import com.wistron.StereoUI.MsgBox;
import com.wistron.StereoUI.ShareMenu;
import com.wistron.StereoUI.SlideButton;
import com.wistron.StereoUI.SlideButton.OnCheckedChangedListener;
import com.wistron.WiCamera.InterSurfaceView;
import com.wistron.WiCamera.WiCameraActivity;
import com.wistron.WiGallery.AsyncFileProvider;
import com.wistron.WiGallery.FavoriteDBAdapter;
import com.wistron.WiGallery.WiGalleryOpenGLRenderer;
import com.wistron.swpc.wicamera3dii.R;
public class WiImageViewerActivity extends Activity implements
OnGestureListener
{
/** Called when the activity is first created. */
private String Tag = "WiImageViewerActivity";
public final static int WiImageViewerActivityID = 0x76113;
private boolean m_isMove = false;// 记录动画是否完成
public static MediaFilePicker m_bitmappicker; // 读取图片
private int screenWidth;// 当前屏幕宽
private int screenHeight;// 当前屏幕高
private int m_position;// 用于左右移动的位置
private int m_alpha;// 用于淡入淡出的透明度
public static WiImageView m_imageview;
private Runnable m_runnable;// 移入移出
private Runnable m_runnable1;// 移動還原
private Runnable mrunnable2;// 淡入淡出
private GestureDetector m_gesturedetector;
private static boolean m_control_isshow = true;// 用于标记控件层是否显示
private int m_fontsize = 22;
private Matrix matrix;// 用于键盘控制的放大缩小
float m_moveX = 0;
public static int m_isNextBitmapLoaded = 0;// 标记下一张图片是够加载完成
public Bitmap[][] m_bitmaps = null;// 用于存放读取出来的上下一张图片
private boolean m_stopdispatch = false;// 判断是否分发触摸事件
float m_FirstTouchX = 0;// 标记触摸的起始位置
private boolean m_isNext = false;// 用于标记是否为下一张
private boolean m_isSolidPlay = false;// 进行其他操作时当前是否在幻灯片播放
private boolean m_moveIsOver = false;// 标记当前是否还在移动
private boolean m_SDismounted = false;// 标记sd卡是否被拔出
// oncreate时就查询favorite信息
private List<String> mFavoriteInfoList;
private int mFavoriteListCount = 0;
private Handler m_handler;
private SDCardBroadcastReceiver m_sdcardbroadcastReceiver;
private RelativeLayout m_imageviewLayout;
private static RelativeLayout m_controlLayout;
private static RelativeLayout m_popupLayout;
private RelativeLayout m_MoreLayout;
private RelativeLayout m_playbuttonLayout;
// private FrameLayout m_framelayout;
private SlideButton m_3DSwitchButton;
private Button m_CameraSwitchButton;
private Button m_MoreButton;
public Button m_btn_play_video;
private TextView m_Indicator;
// private FrameLayout m_framelayout = null;
private final static int CONTROL_HANDLER_APPEAR_CTRLS = 0x10; // 控制Handler:显示控制栏
private final static int CONTROL_HANDLER_HIDE_CTRLS = 0x11; // 控制Handler:隐藏控制栏
private final static int CONTROL_HANDLER_SHOW_NEXT = 0x12; //
private final static int CONTROL_HANDLER_SHOW_PRA = 0x13; //
private final static int CONTROL_HANDLER_SHOW_SOLID = 0x14; //
public final static int CONTROL_HANDLER_SHOW_MOVEINFO = 0x15; //
public final static int CONTROL_HANDLER_SHOW_MOVEINFO_FUCTION = 0x16; //
public final static int CONTROL_HANDLER_HIDEDELAY_INMOVE = 0x17; //
private static final long DELAY_HIDE_TIME = 3000; // 自动隐藏控件时间
public final static int REQUESTCODE_WIIMAGEEDITOR = 6000;
private boolean m_downisonthisview = false;// 判斷down事件是否在當前view上
private boolean m_control_isPresseddown = false;
public boolean m_isLandscape = true;
private ShareMenu mShareMenu;
private static MsgBox mMsgBox;
private static int mMsgBox_type = 0;// 1为删除 提示,2为删光提示
private FileInfoMsgBox mMsgBox_info;
// 定义菜单变量
private int[][] mMoreMenuResId = null;
private int[][] mGalleryMoveToMenuResId = null;
private ListView mMenuListView = null, mSubMenuListView = null;
private ViewerListAdapter mMenuListAdapter = null, mSubListAdapter = null;
public static int mListPosition = -1;
public static int mSubListPosition = -1;
public static ArrayList<Integer> mDisableList = null;
private XmlPullParser mTextColorWhite = null;
private XmlPullParser mTextColorGreen = null;
public static ColorStateList COLORSTATELIST_WHITE = null;
public static ColorStateList COLORSTATELIST_GREEN = null;
private HashMap<Integer, Integer> mSubMenuStateMap;
private Context mContext = null;
private RelativeLayout mMenuLayout = null,// 主菜单layout
mSubMenuLayout = null;// 子菜单layout
// private RelativeLayout controlplayandshow_relativelayout;
private TextView mSubListTitle = null;
private static final int SUBMENU_MOVETO_INTERNAL = 0x00140;
private int m_init_playmode = 0;// 定义进入时是否为幻灯播放
private int m_init_loadimagenum = 0;
public static MsgBox msgBox_disappearautoBox = null;
private boolean isLaunchedFromInner = true;
private static boolean m_move_istoinner = true;
private static String m_move_filename = "";
LoadBufImageTask loadtask0;//异步加载上一张
LoadBufImageTask loadtask1;//异步加载下一张
LoadImageTask task;//异步加载当前图片
@Override
public void finish()
{
if (CSStaticData.DEBUG)
Log.e(Tag, "finish");
// **********当有对话框时应当先销毁
super.finish();
}
@Override
protected void onDestroy()
{
if (CSStaticData.DEBUG)
Log.e(Tag, "onDestroy");
unregisterReceiver(m_sdcardbroadcastReceiver);
if(m_isNextBitmapLoaded>0)
{
if(task!=null)
task.cancel(true);
if(loadtask1!=null)
loadtask1.cancel(true);
if(loadtask0!=null)
loadtask0.cancel(true);
}
super.onDestroy();
}
@Override
protected void onStart()
{
if (CSStaticData.DEBUG)
Log.e(Tag, "onStart");
super.onStart();
}
@Override
protected void onResume()
{
if (CSStaticData.DEBUG)
Log.e(Tag, "onResume");
if (CSStaticData.g_is_3D_mode)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
}
setScreenDimension(CSStaticData.g_is_3D_mode);
m_3DSwitchButton.setChecked(CSStaticData.g_is_3D_mode);
//加载图片
if(WiImageView.isRecycledD(m_imageview.m_curbitmap))
{
LoadImageTask.Callback callback = new LoadImageTask.Callback() {
@Override
public void onComplete(long time,Bitmap[] mBitmaps)
{
if(CSStaticData.DEBUG)
Log.e(Tag, "[onComplete]------------------->生成图片用时"+time);
Log.e(Tag, "[onComplete]------------------->生成图片用时"+time);
// WiImageView.recycleDBitmap(m_imageview.m_curbitmap);
m_imageview.setCurbitmap(mBitmaps);
m_imageview.setBackgroundColor(Color.BLACK);
m_imageview.resetRect();
m_imageview.invalidate();
m_isNextBitmapLoaded--;
}
};
task =new LoadImageTask(WiImageViewerActivity.this, callback,m_imageview);
task.execute(m_bitmappicker.getCurrentFileName());
m_isNextBitmapLoaded++;
}
if(WiImageView.isRecycledD(m_bitmaps[1]))
loadBitmap(true);
if(WiImageView.isRecycledD(m_bitmaps[0]))
{
if(m_bitmappicker.getCurrentFileIndex() > 0)
loadBitmap(false);
}
updateUIinfo();
mListPosition = -1;
if (mMenuListAdapter != null)
{
mMenuListAdapter.notifyDataSetChanged();
}
m_handle_control.removeMessages(CONTROL_HANDLER_HIDE_CTRLS);
m_handle_control.sendEmptyMessage(CONTROL_HANDLER_APPEAR_CTRLS);
boolean bool = (mMsgBox != null && mMsgBox.isShown())
|| (mMsgBox_info != null && mMsgBox_info.isShown());
if (!bool)
m_handle_control.sendEmptyMessageDelayed(
CONTROL_HANDLER_HIDE_CTRLS, DELAY_HIDE_TIME);
super.onResume();
}
@Override
protected void onPause()
{
if (CSStaticData.DEBUG)
Log.e(Tag, "onPause");
stopsolidplay();
mMenuLayout.setVisibility(View.GONE);
m_MoreButton
.setBackgroundResource(R.drawable.gallery_more_btn_selector);
if (CSStaticData.g_is_3D_mode)
{
setScreenDimension(false);
}
showButtonsWithoutDelay();
m_handle_control_outside.removeMessages(CONTROL_HANDLER_HIDEDELAY_INMOVE);
super.onPause();
}
@Override
protected void onStop()
{
// TODO Auto-generated method stub
if (CSStaticData.DEBUG)
Log.e(Tag, "onStop");
WiImageView.recycleDBitmap(m_imageview.m_curbitmap);
WiImageView.recycleDBitmap(m_imageview.m_nextbitmap);
WiImageView.recycleDBitmap(m_imageview.m_tempbitmap);
WiImageView.recycleDBitmap(m_bitmaps[0]);
WiImageView.recycleDBitmap(m_bitmaps[1]);
super.onStop();
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
if (CSStaticData.DEBUG)
Log.e(Tag, "onCreate");
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
requestWindowFeature(Window.FEATURE_NO_TITLE);
TDStaticData.SCREEN_WIDTH = getWindowManager().getDefaultDisplay()
.getWidth();
TDStaticData.SCREEN_HEIGHT = getWindowManager().getDefaultDisplay()
.getHeight();
TDStaticData.SCREEN_WIDTH_ORG = TDStaticData.SCREEN_WIDTH;
TDStaticData.SCREEN_HEIGHT_ORG = TDStaticData.SCREEN_HEIGHT;
// 特性
// TDStaticData.SCREEN_WIDTH=1184;
// TDStaticData.SCREEN_HEIGHT=720;
// TDStaticData.SCREEN_WIDTH_ORG=1280;
// TDStaticData.SCREEN_HEIGHT_ORG=720;
screenWidth = TDStaticData.SCREEN_WIDTH_ORG;
screenHeight = TDStaticData.SCREEN_HEIGHT_ORG;
if (screenWidth < screenHeight)
{
m_isLandscape = false;
}
if (CSStaticData.DEBUG)
Log.e(Tag, "屏幕长宽为" + screenWidth + "*" + screenHeight);
Intent intent = WiImageViewerActivity.this.getIntent();
String intentPath = intent.getDataString();
if (intentPath != null)
{
// 第三方调用
isLaunchedFromInner = false;
intentPath = Uri.decode(intentPath);
m_bitmappicker = new MediaFilePicker(intentPath);
} else
{
// 内部调用通过gallery启动图片浏览器
isLaunchedFromInner = true;
String playmode = intent.getStringExtra("cmd");
if (playmode != null && playmode.equals("sildeshow"))
{
m_init_playmode = 1;
} else if (playmode != null && playmode.equals("play"))
{
m_init_playmode = 0;
}
String fileName = intent.getStringExtra("filePath");
if (fileName != null)
{
List<String> fileList = new ArrayList<String>();
fileList = intent.getStringArrayListExtra("fileList");
m_bitmappicker = new MediaFilePicker(fileList, fileName);
} else
{
try
{
m_bitmappicker = new MediaFilePicker(
TDStaticData.VIEWMODE_ALL_VIEW, null);
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
// 自定义启动,扫描文件夹,然后自己生成文件列表
// try
// {
// m_bitmappicker=new BitmapPicker(TDStaticData.VIEWMODE_ALL_VIEW,
// null);
// } catch (IOException e)
// {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
setContentView(R.layout.wiimagevieweractivity_main);
m_imageviewLayout = (RelativeLayout) findViewById(R.id.imageview_relativelayout);
m_controlLayout = (RelativeLayout) findViewById(R.id.imageview_relativelayout_control);
m_popupLayout = (RelativeLayout) findViewById(R.id.popup_relativelayout);
m_playbuttonLayout = (RelativeLayout) findViewById(R.id.playbutton_relativelayout);
m_MoreLayout = (RelativeLayout) findViewById(R.id.MenuLayout);
// m_framelayout=(FrameLayout)
// findViewById(R.id.imageviewer_framelayout);
// 定义wiimageview层,并添加到framelayout
m_imageview = new WiImageView(WiImageViewerActivity.this,
m_bitmappicker);
m_imageviewLayout.addView(m_imageview);
initializeControls();
// 设置事件处理
initData();
// 设置菜单初始化
initListViewListenner();
initializeListeners();
m_bitmaps = new Bitmap[2][2];
matrix = new Matrix();
initStatusData();
// 添加相应识别器
m_gesturedetector = new GestureDetector(this);
// 设置动画runnable
setMovement();
// 注册sd卡插拔广播
registerSDMount();
//lookupFavoriteInfo();
m_isNextBitmapLoaded=0;
// 初始化屏幕显示
}
/**
* 设置动画方式,上下一张切换,返回和幻灯片播放
*/
public void setMovement()
{
m_handler = new Handler();
m_runnable1 = new Runnable()
{
@Override
public void run()
{
if (m_isNext)
{
m_position -= (screenWidth / 12);
int i = m_position;
if (i > 0)
{
m_imageview.setSrc1Rect(0, 0, screenHeight, screenWidth
/ 2 - i);
m_imageview.setDst1Rect(i, 0, screenHeight,
screenWidth / 2);
m_imageview.setDst2Rect(i + screenWidth / 2, 0,
screenHeight, screenWidth);
m_imageview.setSrc2Rect(screenWidth / 2 - i, 0,
screenHeight, screenWidth / 2);
m_imageview.setDst3Rect(0, 0, screenHeight, i);
m_imageview.setDst4Rect(screenWidth / 2, 0,
screenHeight, screenWidth / 2 + i);
m_imageview.postInvalidate();
}
} else
{
m_position += screenWidth / 12;
int i = m_position;
if (m_position < screenWidth / 2)
{
m_imageview.setSrc1Rect(screenWidth / 2 - i, 0,
screenHeight, screenWidth / 2);
m_imageview.setDst1Rect(0, 0, screenHeight, i);
m_imageview.setDst2Rect(screenWidth / 2, 0,
screenHeight, screenWidth / 2 + i);
m_imageview.setSrc2Rect(0, 0, screenHeight, screenWidth
/ 2 - i);
m_imageview.setDst3Rect(i, 0, screenHeight,
screenWidth / 2);
m_imageview.setDst4Rect(screenWidth / 2 + i, 0,
screenHeight, screenWidth);
m_imageview.postInvalidate();
}
}
if (m_position > 0 && m_position < screenWidth / 2)
{
m_handler.postDelayed(m_runnable1, 40);
}
/*
* if ((m_position <= 0 && m_position > -(screenWidth / 12)) ||
* (m_position >= screenWidth / 2 && m_position < (screenWidth /
* 2 + screenWidth / 12)))
*/
else
{
m_imageview.resetRect();
m_imageview.setNextbitmap(null);
m_imageview.postInvalidate();
updateUIinfo();
m_isMove = false;
m_moveX = 0;
}
}
};
// 下一张的移动动画
m_runnable = new Runnable()
{
@Override
public void run()
{
if (m_isNext)
{
m_position -= (screenWidth / 12);
int i = m_position;
if (m_position > 0)
{
m_imageview.setSrc1Rect(screenWidth / 2 - i, 0,
screenHeight, screenWidth / 2);
m_imageview.setDst1Rect(0, 0, screenHeight, i);
m_imageview.setDst2Rect(screenWidth / 2, 0,
screenHeight, screenWidth / 2 + i);
m_imageview.setSrc2Rect(0, 0, screenHeight, screenWidth
/ 2 - i);
m_imageview.setDst3Rect(i, 0, screenHeight,
screenWidth / 2);
m_imageview.setDst4Rect(screenWidth / 2 + i, 0,
screenHeight, screenWidth);
m_imageview.postInvalidate();
}
} else
{
m_position += screenWidth / 12;
int i = m_position;
if (m_position < screenWidth / 2)
{
m_imageview.setSrc1Rect(0, 0, screenHeight, screenWidth
/ 2 - i);
m_imageview.setDst1Rect(i, 0, screenHeight,
screenWidth / 2);
m_imageview.setDst2Rect(screenWidth / 2 + i, 0,
screenHeight, screenWidth);
m_imageview.setSrc2Rect(screenWidth / 2 - i, 0,
screenHeight, screenWidth / 2);
m_imageview.setDst3Rect(0, 0, screenHeight, i);
m_imageview.setDst4Rect(screenWidth / 2, 0,
screenHeight, screenWidth / 2 + i);
m_imageview.postInvalidate();
}
}
if (m_position > 0 && m_position < screenWidth / 2)
{
m_handler.postDelayed(m_runnable, 40);
}
/*
* if ((m_position <= 0 && m_position > -(screenWidth / 12)) ||
* (m_position >= screenWidth / 2 && m_position < (screenWidth /
* 2 + screenWidth / 12)))
*/
else
{
if (m_isNext)
{
WiImageView.recycleDBitmap(m_bitmaps[0]);
m_bitmaps[0] = m_imageview.m_curbitmap;
} else
{
WiImageView.recycleDBitmap(m_bitmaps[1]);
m_bitmaps[1] = m_imageview.m_curbitmap;
}
m_imageview.resetRect();
m_imageview.exchange();
m_imageview.setNextbitmap(null);
m_imageview.postInvalidate();
updateUIinfo();
m_isMove = false;
m_moveX = 0;
}
}
};
// 渐变动画
mrunnable2 = new Runnable()
{
@Override
public void run()
{
int i = m_alpha;
m_alpha = m_alpha + 15;
if (m_alpha < 255)
{
if (m_imageview.mode != 0)
{
m_handler.postDelayed(mrunnable2, 25);
m_imageview.setAlpha(i);
m_imageview.postInvalidate();
} else
{
if (CSStaticData.DEBUG)
Log.e(Tag, "slide show exit wrong");
/*
* m_imageview.setAlpha(0); m_imageview.exchange();
* m_imageview.setNextbitmap(null);
* m_imageview.resetRect();
* m_imageview.postInvalidate();
*/
}
} else if (m_alpha >= 255 && m_alpha < 270)
{
m_imageview.setAlpha(0);
WiImageView.recycleDBitmap(m_bitmaps[0]);
m_bitmaps[0] = m_imageview.m_curbitmap;
m_imageview.exchange();
m_imageview.setNextbitmap(null);
m_imageview.postInvalidate();
m_bitmappicker.getNextBitmap();
updateUIinfo();
if (m_imageview.mode == 1)
{
// 设置下一张图片
File file = new File(
m_bitmappicker.getCurrentFileName());
if (file.exists())
{
m_imageview.setNextbitmap(m_bitmaps[1]);
m_bitmappicker.getNextBitmap();
loadBitmap(true);
m_bitmappicker.getPreBitmap();
m_alpha = 0;
m_handler.postDelayed(mrunnable2, 2000);
} else
{
m_imageview.mode = 0;
}
}
}
}
};
}
/**
* 注册sd卡插拔
*/
private void registerSDMount()
{
IntentFilter intentFilter = new IntentFilter(
Intent.ACTION_MEDIA_MOUNTED);
intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED);
intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED);
intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
intentFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL);
intentFilter.addDataScheme("file");
m_sdcardbroadcastReceiver = new SDCardBroadcastReceiver();
registerReceiver(m_sdcardbroadcastReceiver, intentFilter);// 注册监听函数
}
/**
* 控制空间层的隐藏消失,显示时,点击消失
*/
private void resetDelay()
{
// TODO Auto-generated method stub
if (m_control_isshow)
{
m_handle_control.removeMessages(CONTROL_HANDLER_APPEAR_CTRLS);
m_handle_control.removeMessages(CONTROL_HANDLER_HIDE_CTRLS);
m_handle_control.sendEmptyMessage(CONTROL_HANDLER_HIDE_CTRLS);
} else
{
m_handle_control.removeMessages(CONTROL_HANDLER_HIDE_CTRLS);
m_handle_control.sendEmptyMessage(CONTROL_HANDLER_APPEAR_CTRLS);
m_handle_control.sendEmptyMessageDelayed(
CONTROL_HANDLER_HIDE_CTRLS, DELAY_HIDE_TIME);
}
}
private void showButtonsWithoutDelay()
{
m_handle_control.removeMessages(CONTROL_HANDLER_HIDE_CTRLS);
m_handle_control.sendEmptyMessage(CONTROL_HANDLER_APPEAR_CTRLS);
m_handle_control_outside.removeMessages(CONTROL_HANDLER_HIDEDELAY_INMOVE);
}
private void hideButtonsWithDelay()
{
m_handle_control.removeMessages(CONTROL_HANDLER_HIDE_CTRLS);
m_handle_control.sendEmptyMessage(CONTROL_HANDLER_APPEAR_CTRLS);
m_handle_control.sendEmptyMessageDelayed(CONTROL_HANDLER_HIDE_CTRLS,
DELAY_HIDE_TIME);
}
/**
* 初始化控件
*/
private void initializeControls()
{
if (CSStaticData.DEBUG)
Log.e(Tag, "initializeControls");
m_3DSwitchButton = (SlideButton) findViewById(R.id.toggleButtonDimension);
m_CameraSwitchButton = (Button) findViewById(R.id.button2);
m_MoreButton = (Button) findViewById(R.id.button1);
m_btn_play_video = (Button) findViewById(R.id.imageview_play_video);
m_Indicator = (TextView) findViewById(R.id.tx_title);
m_Indicator.setText(R.string.imageview_title);
msgBox_disappearautoBox = new MsgBox(WiImageViewerActivity.this);
// msgBox_disappearautoBox.setMessage("...");
// msgBox_disappearautoBox.hideDelay(2000);
msgBox_disappearautoBox.setModelStatus(false);
msgBox_disappearautoBox.addToLayout(m_popupLayout);
}
/**
* 设置控件层隐藏和显示
*/
public static void setCtlable(boolean bool)
{
if (bool)
{
m_controlLayout.setVisibility(View.VISIBLE);
} else
{
m_controlLayout.setVisibility(View.GONE);
}
}
/**
* 初始化按钮点击事件监听器
*/
private void initializeListeners()
{
m_3DSwitchButton.setOnChangedListener(new OnCheckedChangedListener()
{
@Override
public void OnChecked(boolean isChecked)
{
int isLandscape = getRequestedOrientation();
if (isChecked)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
if (isLandscape == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
|| isLandscape == ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
|| isLandscape == ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT)
{
return;
}
} else
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
}
CSStaticData.g_is_3D_mode = isChecked;
setScreenDimension(isChecked);
}
});
m_CameraSwitchButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent(WiImageViewerActivity.this,
com.wistron.WiCamera.WiCameraActivity.class);
intent.putExtra("camera_cmd", "call_from_imageview");
startActivity(intent);
// finish();
}
});
m_btn_play_video.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
if (CSStaticData.DEBUG)
Log.e(Tag, "[m_btn_play_video] 点击事件");
if (FileTypeHelper.isVideoFile(m_bitmappicker
.getCurrentFileName()) && m_imageview.mode == 0)
{
Tplay(true);
} else if (FileTypeHelper.isImageFile(m_bitmappicker
.getCurrentFileName()) && m_imageview.mode == 0)
{
if (isPanoramaImage(m_bitmappicker.getCurrentFileName()))
{
callPanoramaViewer(m_bitmappicker.getCurrentFileName());
}
}
}
});
m_MoreButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
if (mMenuLayout.getVisibility() == View.VISIBLE)
{
mMenuLayout.setVisibility(View.INVISIBLE);
m_MoreButton
.setBackgroundResource(R.drawable.gallery_more_btn_selector);
hideButtonsWithDelay();
return;
}
mListPosition = -1;
updateMenuInfo(m_bitmappicker.getCurrentFileName());
mMenuListView.setAdapter(mMenuListAdapter);
mMenuLayout.setVisibility(View.VISIBLE);
mSubMenuLayout.setVisibility(View.INVISIBLE);
showButtonsWithoutDelay();
m_MoreButton
.setBackgroundResource(R.drawable.gallery_more_btn_click);
}
});
m_MoreLayout.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
// TODO Auto-generated method stub
if (m_imageview.mode == 1)
{
stopsolidplay();
return true;
}
if (mMenuLayout.getVisibility() == View.VISIBLE)
{
mMenuLayout.setVisibility(View.INVISIBLE);
if (mShareMenu != null && mShareMenu.isShown())
{
mShareMenu.hideAndRemove();
// m_popupLayout.removeView(mShareMenu);
}
hideButtonsWithDelay();
m_MoreButton
.setBackgroundResource(R.drawable.gallery_more_btn_selector);
return true;
}
return false;
}
});
m_imageview.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent ev)
{
m_gesturedetector.onTouchEvent(ev);
if (m_imageview.mode == 1 || m_isMove
|| (m_isNextBitmapLoaded > 0))
{
m_stopdispatch = true;
}
if (m_stopdispatch)
{
switch (ev.getAction())
{
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_POINTER_2_DOWN:
return true;
case MotionEvent.ACTION_UP:
m_stopdispatch = false;
return true;
}
}
m_imageview.onTouchEvent(ev);
if (m_imageview.m_Scale == 1.0f)
{
switch (ev.getAction())
{
case MotionEvent.ACTION_DOWN:
{
m_downisonthisview = true;
m_FirstTouchX = ev.getX();
m_moveX = 0;
m_moveIsOver = false;
break;
}
case MotionEvent.ACTION_MOVE:
{
if (m_downisonthisview)
{
if (!m_moveIsOver)
{
float mCurX = ev.getX();
// Log.e(Tag, "mCurX" + mCurX);
// Log.e(Tag, "mFirstTouchX" + m_FirstTouchX);
m_moveX = (mCurX - m_FirstTouchX) / 2;
if (m_moveX != 0)
showNextOnMove(m_moveX < 0);
}
}
break;
}
case MotionEvent.ACTION_POINTER_2_DOWN:
case MotionEvent.ACTION_UP:
{
m_downisonthisview = false;
m_moveIsOver = true;
// Log.e(Tag,
// "MotionEvent.ACTION_UPXXXXXXXXXXXXXXXXXXXXXXXXXXX");
if (m_moveX < 0
&& m_bitmappicker.getCurrentFileIndex() == (m_bitmappicker
.getFileCounts() - 1) || m_moveX > 0
&& m_bitmappicker.getCurrentFileIndex() == 0)
{
return true;
}
// Log.e(Tag, "m_isMove" + m_isMove);
// Log.e(Tag, "m_moveX" + m_moveX);
if (!m_isMove && m_moveX != 0)
{
if (Math.abs(m_moveX) < screenWidth / 4)
{
moveBack(m_moveX, true);
} else
{
if (m_moveX > 0)
{
m_bitmappicker.getPreBitmap();
loadBitmap(false);
} else
{
m_bitmappicker.getNextBitmap();
loadBitmap(true);
}
moveBack(m_moveX, false);
}
// setNumber();
}
m_moveX = 0;
}
}
}
/*
* else { switch (ev.getAction()) { case
* MotionEvent.ACTION_DOWN: Log.e(Tag, "scale!=1 ACTION_DOWN");
* break; case MotionEvent.ACTION_MOVE: Log.e(Tag,
* "scale!=1 ACTION_MOVE"); break; case MotionEvent.ACTION_UP:
* break; case MotionEvent.ACTION_POINTER_2_DOWN: break;
*
* } }
*/
// return m_gesturedetector.onTouchEvent(arg1);
// resetDelay();
return true;
}
});
//
// m_csbtn_back.setOnClickListener(new OnClickListener()
// {
//
// @Override
// public void onClick(View v)
// {
// onBackPressed();
// }
// });
//
// m_csbtn_share.setOnClickListener(new OnClickListener()
// {
//
// @Override
// public void onClick(View v)
// {
// Tshare();
//
// }
// });
// m_csbtn_home.setOnClickListener(new OnClickListener()
// {
//
// @Override
// public void onClick(View v)
// {
// // TODO Auto-generated method stub
// stopsolidplay();
// Intent intent = new Intent(Intent.ACTION_MAIN);
// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);// pay more //
// // attention
// intent.addCategory(Intent.CATEGORY_HOME);
// startActivity(intent);
// }
// });
//
// m_csbtn_set.setOnClickListener(new OnClickListener()
// {
// @Override
// public void onClick(View v)
// {
// // TODO Auto-generated method stub
// Tsetting();
//
// }
// });
// m_cstex_indi3d.setOnClickListener(new OnClickListener()
// {
// @Override
// public void onClick(View v)
// {
// // TODO Auto-generated method stub
// m_imageview.ChangeMode();
//
// }
// });
// m_csbtn_play.setOnClickListener(new OnClickListener()
// {
//
// @Override
// public void onClick(View v)
// {
// // TODO Auto-generated method stub
// Tplay();
//
// }
// });
//
// m_csbtn_delete.setOnClickListener(new OnClickListener()
// {
// @Override
// public void onClick(View v)
// {
// // TODO Auto-generated method stub
// Tdeletefile();
// }
// });
m_MoreButton.setOnTouchListener(mButtonOntouchListener);
m_3DSwitchButton.setOnTouchListener(mButtonOntouchListener);
m_CameraSwitchButton.setOnTouchListener(mButtonOntouchListener);
}
/**
* 设置播放,设置,分享,删除按钮为可用
*/
public void setControlEnable()
{
// 设置按钮的可用性
// m_csbtn_play.setEnable(true);
// m_csbtn_set.setEnable(true);
// m_csbtn_share.setEnable(true);
// m_csbtn_delete.setEnable(true);
}
/**
* Handler 控制控件消失和显示
*/
Handler m_handle_control = new Handler()
{
@Override
public void handleMessage(Message msg)
{
// TODO Auto-generated method stub
switch (msg.what)
{
case CONTROL_HANDLER_APPEAR_CTRLS:
// setCtlable();
setCtlable(true);
m_control_isshow = true;
break;
case CONTROL_HANDLER_HIDE_CTRLS:
setCtlable(false);
m_control_isshow = false;
break;
case CONTROL_HANDLER_SHOW_NEXT:
m_handler.post(m_runnable);
break;
case CONTROL_HANDLER_SHOW_PRA:
break;
case CONTROL_HANDLER_SHOW_SOLID:
solidShow();
case CONTROL_HANDLER_SHOW_MOVEINFO_FUCTION:
MsgBox msgBox = new MsgBox(WiImageViewerActivity.this);
msgBox.setMessage("...");
msgBox.hideDelay(2000);
msgBox.setModelStatus(false);
msgBox.addToLayout(m_popupLayout);
msgBox.show();
break;
}
super.handleMessage(msg);
}
};
/**
* Handler 控制控件消失和显示
*/
public static Handler m_handle_control_outside = new Handler()
{
@Override
public void handleMessage(Message msg)
{
String temp = "";
// TODO Auto-generated method stub
switch (msg.what)
{
case CONTROL_HANDLER_SHOW_MOVEINFO:
if (msg.obj != null)
{
boolean isSuccess = false;
if (msg.arg1 <= 0)
{
isSuccess = false;
} else
{
isSuccess = true;
}
if (isSuccess)
{
String genfilepath = "";
if (m_move_istoinner)
{
temp = m_move_filename
+ " has been moved to internal storage";
genfilepath = CSStaticData.TMP_INT_DIR
+ m_move_filename;
} else
{
temp = m_move_filename
+ " has been moved to external storage";
genfilepath = CSStaticData.TMP_EXT_DIR
+ m_move_filename;
}
m_bitmappicker.updateCurrentFilePath(genfilepath);
} else
{
if (m_move_istoinner)
{
temp = "fail to move" + m_move_filename
+ " to internal storage";
} else
{
temp = "fail to move" + m_move_filename
+ " to external storage";
}
}
}
mMsgBox.updateMessage(temp);
mMsgBox_type=0;
mMsgBox.hideDelay(2000);
sendEmptyMessageDelayed(CONTROL_HANDLER_HIDEDELAY_INMOVE, DELAY_HIDE_TIME);
//hideButtonsWithDelay();
break;
case CONTROL_HANDLER_HIDEDELAY_INMOVE:
setCtlable(false);
m_control_isshow = false;
break;
}
super.handleMessage(msg);
}
};
@Override
public boolean onDown(MotionEvent arg0)
{
// TODO Auto-generated method stub
return false;
}
/**
* back键方法重写
*/
@Override
public void onBackPressed()
{
setControlEnable();
if (mMsgBox != null && mMsgBox.isShown())
{
mMsgBox.hide();
m_popupLayout.removeView(mMsgBox);
if (m_isSolidPlay)
{
solidShow();
m_isSolidPlay = false;
}
hideButtonsWithDelay();
if(m_bitmappicker.getCurrentFileIndex() == -1)
{
//文件为空,自动退出
super.onBackPressed();
}
return;
}
if (mMsgBox_info != null && mMsgBox_info.isShown())
{
mMsgBox_info.hideAndRemove();
hideButtonsWithDelay();
if (m_isSolidPlay)
{
solidShow();
m_isSolidPlay = false;
}
return;
}
if (mShareMenu != null && mShareMenu.isShown())
{
mShareMenu.hideAndRemove();
//m_popupLayout.removeView(mShareMenu);
if (m_isSolidPlay)
{
solidShow();
m_isSolidPlay = false;
}
mListPosition = -1;
mMenuListAdapter.notifyDataSetChanged();
return;
}
if (m_imageview.mode == 1)
{
stopsolidplay();
return;
}
if (m_isMove)
{
m_handler.removeCallbacks(m_runnable);
}
if (mSubMenuLayout.getVisibility() == View.VISIBLE)
{
mSubMenuLayout.setVisibility(View.INVISIBLE);
mListPosition = -1;
mMenuListAdapter.notifyDataSetChanged();
return;
}
if (mMenuLayout.getVisibility() == View.VISIBLE)
{
mMenuLayout.setVisibility(View.INVISIBLE);
m_MoreButton
.setBackgroundResource(R.drawable.gallery_more_btn_selector);
return;
}
super.onBackPressed();
}
public OnTouchListener mButtonOntouchListener = new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
int action = event.getAction();
switch (action)
{
case MotionEvent.ACTION_DOWN:
Log.e(Tag, "MotionEvent.ACTION_DOWN");
showButtonsWithoutDelay();
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
hideButtonsWithDelay();
Log.e(Tag, "MotionEvent.ACTION_UP");
break;
default:
break;
}
return false;
}
};
//
// @Override
// public boolean onKeyDown(int keyCode, KeyEvent msg)
// {
// Log.e("onKeyDown", "ok");
// resetDelayonFling();
// if (m_isMove)
// {
//
// } else
// {
//
// if (m_imageview.mode == 1 && keyCode != KeyEvent.KEYCODE_BACK)
// {
// m_csbtn_set.setEnable(true);
// m_csbtn_share.setEnable(true);
// m_csbtn_delete.setEnable(true);
// m_csbtn_play.setEnable(true);
// stopsolidplay();
// return super.onKeyDown(keyCode, msg);
// }
// if (TDStaticData.g_msgbox == null)
// {
//
// if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT)
// {
// if (m_imageview.mode == 1)
// {
// stopsolidplay();
// } else
// {
// if(m_isNextBitmapLoaded)
// {
// if (m_bitmappicker.getCurrentFileIndex() < (m_bitmappicker
// .getFileCounts() - 1))
// {
// showNext(true);
//
// }
// }
// }
// }
// if (keyCode == KeyEvent.KEYCODE_S)
// {
// Tshare();
//
// }
// if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT)
// {
//
// if (m_imageview.mode == 1)
// {
// stopsolidplay();
// } else
// {
// if(m_isNextBitmapLoaded)
// {
// if (m_bitmappicker.getCurrentFileIndex() > 0)
// {
// showNext(false);
//
// }
// }
// }
// }
// if (keyCode == KeyEvent.KEYCODE_A)
// {
// Tplay();
//
// }
// // if (keyCode == KeyEvent.KEYCODE_V)
// // {
// //
// // matrix.postScale(1.1f, 1.1f, TDStaticData.SCREEN_WIDTH / 4,
// // TDStaticData.SCREEN_HEIGHT / 2);
// // m_imageview.setMatrix(matrix);
// //
// // }
// // if (keyCode == KeyEvent.KEYCODE_B)
// // {
// //
// // matrix.postScale(0.9f, 0.9f, TDStaticData.SCREEN_WIDTH / 4,
// // TDStaticData.SCREEN_HEIGHT / 2);
// // m_imageview.setMatrix(matrix);
// //
// // }
// if (keyCode == KeyEvent.KEYCODE_I)
// {
// Tsetting();
//
// }
// if (keyCode == KeyEvent.KEYCODE_D)
// {
// Tdeletefile();
//
// }
// }
//
// }
// if (TDStaticData.g_msgbox != null)
// {
// switch (keyCode)
// {
// case KeyEvent.KEYCODE_Y:
// TDStaticData.g_msgbox.yesPerformClick();
// m_csbtn_play.setEnable(true);
// m_csbtn_set.setEnable(true);
// m_csbtn_share.setEnable(true);
// m_csbtn_delete.setEnable(true);
// break;
// case KeyEvent.KEYCODE_N:
// TDStaticData.g_msgbox.noPerformClick();
// break;
// case KeyEvent.KEYCODE_C:
// TDStaticData.g_msgbox.cancelPerformClick();
// break;
// }
// }
// Log.e("onKeyDown", "ok");
// return super.onKeyDown(keyCode, msg);
//
// }
//
/**
* 触发fling事件,显示上下一张切换
*/
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY)
{
if (CSStaticData.DEBUG)
Log.e(Tag, "onFling");
// TODO Auto-generated method stub
// && Math.abs(velocityX) > 200
// resetDelayonFling();
if ((int) m_imageview.m_rotate % 90 != 0)
{
return false;
}
if (m_imageview.mode == 1)
stopsolidplay();
else
{
// ******如果没有对话框则
if (true)// TDStaticData.g_msgbox == null
{
float x1 = 0;
float x2 = 0;
float vx = 0;
try
{
x1 = e1.getX();
x2 = e2.getX();
vx = velocityX;
} catch (Exception e)
{
// TODO: handle exception
e.printStackTrace();
return false;
}
if (Math.abs(x1 - x2) > 100 && vx < -200)
{
if (m_isMove || (m_isNextBitmapLoaded > 0))
{
} else
{
if (m_bitmappicker.getCurrentFileIndex() < (m_bitmappicker
.getFileCounts() - 1))
{
if (m_imageview.m_Scale != 1)
{
m_imageview.setNextbitmap(null);
}
if (m_moveX > 0)
{
moveBack(m_moveX, true);
} else
{
showNext(true);
}
// setNumber();
}
}
} else if (Math.abs(x2 - x1) > 100 && vx > 200)
{
if (m_isMove || (m_isNextBitmapLoaded > 0))
{
} else
{
if (m_bitmappicker.getCurrentFileIndex() > 0)
{
if (m_imageview.m_Scale != 1)
{
m_imageview.setNextbitmap(null);
}
if (m_moveX < 0)
{
moveBack(m_moveX, true);
} else
{
showNext(false);
}
// setNumber();
}
}
}
}
}
return false;
}
@Override
public void onLongPress(MotionEvent arg0)
{
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2,
float arg3)
{
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent arg0)
{
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent arg0)
{
// TODO Auto-generated method stub
if (CSStaticData.DEBUG)
Log.e(Tag, "onSingleTapUp");
resetDelay();
stopsolidplay();
return false;
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev)
{
// TODO Auto-generated method stub
if (mMsgBox != null && mMsgBox.isShown())
{
return mMsgBox.dispatchTouchEvent(ev);
}
if (mMsgBox_info != null && mMsgBox_info.isShown())
{
// Log.e(Tag, "mMsgBox_info ***********");
// mMsgBox_info.dispatchTouchEvent(ev);
// if (!mMsgBox_info.getMsgBoxTouched()) {
// mMsgBox_info.hide();
// m_popupLayout.removeView(mMsgBox_info);
// if (m_isSolidPlay)
// {
// m_isSolidPlay = false;
// solidShow();
// }
// }
// mMsgBox_info.setMsgBoxTouched(false);
mMsgBox_info.dispatchTouchEvent(ev);
if (!mMsgBox_info.isShown())
hideButtonsWithDelay();
return true;
}
return super.dispatchTouchEvent(ev);
}
/**
* 更据当前文件序号,或者文件类型来更新UI
*/
public void updateUIinfo()
{
if (m_imageview.mode == 1)
return;
int visi = m_btn_play_video.getVisibility();
boolean isshow;
if (visi == View.VISIBLE)
{
isshow = true;
} else
{
isshow = false;
}
if (CSStaticData.DEBUG)
Log.e(Tag, "[updateUIinfo]----------------------->isshow=" + isshow);
if (FileTypeHelper.isImageFile(m_bitmappicker.getCurrentFileName()))
{
// 图片文件
if (isPanoramaImage(m_bitmappicker.getCurrentFileName()))
{
// 全景图标显示
if (isshow)
{
m_btn_play_video
.setBackgroundResource(R.drawable.panorameviiewer_icon);
} else
{
ButtonAnim(m_btn_play_video, true,
R.drawable.panorameviiewer_icon);
}
} else
{
// 图标隐藏
if (isshow)
{
ButtonAnim(m_btn_play_video, false, 0);
}
}
m_imageview.isScalable = true;
m_imageview.isRotatable = true;
} else if (FileTypeHelper.isVideoFile(m_bitmappicker
.getCurrentFileName()))
{
// 视频图标显示
if (isshow)
{
m_btn_play_video
.setBackgroundResource(R.drawable.video_review_icon);
} else
{
ButtonAnim(m_btn_play_video, true, R.drawable.video_review_icon);
}
m_imageview.isScalable = false;
m_imageview.isRotatable = false;
} else
{
// 未知文件则隐藏图标。
if (isshow)
{
ButtonAnim(m_btn_play_video, false, 0);
}
m_imageview.isScalable = false;
m_imageview.isRotatable = false;
}
}
public void ButtonAnim(final Button bt, final boolean isshow, int background)
{
try
{
bt.setVisibility(View.VISIBLE);
bt.setBackgroundResource(background);
if (isshow)
{
if (bt.getParent() == null)
{
m_playbuttonLayout.addView(bt);
}
}
AnimationSet as = new AnimationSet(true);
AlphaAnimation al;
if (isshow)
{
al = new AlphaAnimation(0, 1);
} else
{
al = new AlphaAnimation(1, 0);
}
al.setDuration(400);
al.setFillAfter(true);
as.addAnimation(al);
as.setFillAfter(true);
bt.startAnimation(as);
as.setAnimationListener(new AnimationListener()
{
@Override
public void onAnimationStart(Animation arg0)
{
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation arg0)
{
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation arg0)
{
// TODO Auto-generated method stub
if (CSStaticData.DEBUG)
Log.e(Tag,
"[onAnimationEnd]--------------------------->isshow="
+ isshow);
if (!isshow)
{
bt.setVisibility(View.GONE);
if (bt.getParent() != null)
m_playbuttonLayout.removeView(bt);
}
}
});
} catch (Exception e)
{
// TODO: handle exception
if (CSStaticData.DEBUG)
Log.e(Tag, "an exception is detected when setting icon state");
}
}
/**
* 幻灯播放
*/
public void solidShow()
{
if (m_bitmappicker.getFileCounts() > 1)
{
if (CSStaticData.DEBUG)
Log.e(Tag, "[solidShow]---------->幻灯播放开始");
m_imageview.mode = 1;
m_imageview.setNextbitmap(m_bitmaps[1]);
m_bitmappicker.getNextBitmap();
loadBitmap(true);
m_bitmappicker.getPreBitmap();
m_alpha = 0;
m_handler.postDelayed(mrunnable2, 2000);
// m_handler.post(mrunnable2);
if (m_btn_play_video.getParent() != null)
{
m_btn_play_video.setVisibility(View.GONE);
m_playbuttonLayout.removeView(m_btn_play_video);
}
}
}
/**
* 设置按钮功能,用于显示文件信息等等
*/
public void Tsetting()
{
if (m_isMove || m_bitmappicker.getFileCounts() <= 0)
return;
if (m_imageview.mode == 1)
{
m_isSolidPlay = true;
stopsolidplay();
}
SpannableString[] string = null;
mMsgBox_info = new FileInfoMsgBox(mContext);
if (FileTypeHelper.isImageFile(m_bitmappicker.getCurrentFileName()))
{
ImageInfo m_imaImageInfo = new ImageInfo(WiImageViewerActivity.this);
ImageInfoBean m_ImageInfoBean = m_imaImageInfo
.getImagesInfo(m_bitmappicker.getCurrentFileName());
if (m_ImageInfoBean != null)
{
string = m_ImageInfoBean.showInfoList();
mMsgBox_info.setMessage(string);
} else
{
mMsgBox_info.setMessage("Fail to get info!");
}
} else if (FileTypeHelper.isVideoFile(m_bitmappicker
.getCurrentFileName()))
{
VideoProvider m_videoProvider = new VideoProvider(
WiImageViewerActivity.this);
VideoInfo m_videoinfo = m_videoProvider.getVideoInfo(m_bitmappicker
.getCurrentFileName());
if (m_videoinfo != null)
{
string = m_videoinfo.showInfoList();
mMsgBox_info.setMessage(string);
} else
{
mMsgBox_info.setMessage("Fail to get info!");
}
}
mMsgBox_info.setTitle("Details");
mMsgBox_info.setClickBlankHide(true);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
400, LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
layoutParams.setMargins(0, 80, 0, 20);
mMsgBox_info.setLayoutParams(layoutParams);
mMsgBox_info.addToLayout(m_popupLayout);
}
/**
* 播放按钮功能
*/
public void Tplay(boolean isplayvideo)
{
if (!m_SDismounted)
{
if (!m_isMove)
{
if (m_bitmappicker.getFileCounts() <= 0)
return;
m_isSolidPlay = false;
if (isplayvideo)
{
if (FileTypeHelper.isVideoFile(m_bitmappicker
.getCurrentFileName()) && m_imageview.mode == 0)
{
ArrayList<String> mList = m_bitmappicker.getVideoList();
Intent intent = new Intent(WiImageViewerActivity.this,
WiVideoViewerActivity.class);
intent.putExtra("filePath",
m_bitmappicker.getCurrentFileName());
intent.putStringArrayListExtra("fileList", mList);
intent.putExtra("cmd", "sildeshow");
startActivityForResult(intent,
TDStaticData.REQUEST_CODE_LOAD_VIDEO);
}
} else
{
if (m_imageview.mode == 0)
{
solidShow();
} else
{
stopsolidplay();
}
}
}
}
}
/**
* 分享按钮功能
*/
public void Tshare()
{
if (m_isMove)
return;
if (m_bitmappicker.getFileCounts() <= 0)
return;
if (m_imageview.mode == 1)
{
m_isSolidPlay = true;
stopsolidplay();
}
mShareMenu = new ShareMenu(WiImageViewerActivity.this,
0, 0);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(300, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
layoutParams.setMargins(0,60, 0, 0);
mShareMenu.setShareLayoutParams(layoutParams);
mShareMenu.setAnchor(ShareMenu.ANCHOR_TOP_RIGHT);
String m_filePath_menuString = "file:/"
+ m_bitmappicker.getCurrentFileName();
ArrayList<String> m_ArrayList = new ArrayList<String>();
if (FileTypeHelper.isImageFile(m_bitmappicker.getCurrentFileName()))
{
m_ArrayList.add(m_filePath_menuString);
mShareMenu.setImagePath(m_ArrayList);
} else
{
m_ArrayList.add(m_filePath_menuString);
mShareMenu.setVideoPath(m_ArrayList);
}
mShareMenu.addToLayout(mMenuLayout);
mShareMenu.show();
}
/**
* 删除按钮功能
*/
public void Tdeletefile()
{
if (m_isMove)
return;
if (m_bitmappicker.getFileCounts() <= 0)
return;
if (m_imageview.mode == 1)
{
m_isSolidPlay = true;
stopsolidplay();
}
String mString = "Do you want to delete this image?";
if (FileTypeHelper.isVideoFile(m_bitmappicker.getCurrentFileName()))
mString = "Do you want to delete this video?";
stopsolidplay();
mMsgBox = new MsgBox(mContext);
mMsgBox_type = 1;
mMsgBox.setMessage(getResources().getText(R.string.gallery_delete_text));
mMsgBox.setBackgound(R.drawable.main_menu_window_portrait);
mMsgBox.setPositiveButton(
getResources().getText(R.string.gallery_delete_confirm),
new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
setControlEnable();
// 添加删除
AsyncFileProvider asyncer = null;
if (WiGalleryOpenGLRenderer.mAsyncFileProvider == null)
{
asyncer = new AsyncFileProvider(mContext);
} else
{
asyncer = WiGalleryOpenGLRenderer.mAsyncFileProvider;
}
List<String> temp = new ArrayList<String>();
temp.add(m_bitmappicker.getCurrentFileName());
asyncer.deteleFiles(temp, false, true, WiImageViewerActivityID);
// 更新cameraReview的链表信息。
if (WiCameraActivity.m_main_handle != null)
{
Message deletemesg = new Message();
if (FileTypeHelper.isVideoFile(m_bitmappicker
.getCurrentFileName()))
{
deletemesg.what = InterSurfaceView.CAMERA_VIDEOLIST_UPDATE ;
} else
{
deletemesg.what = InterSurfaceView.CAMERA_PICLIST_UPDATE;
}
deletemesg.obj = m_bitmappicker
.getCurrentFileName();
WiCameraActivity.m_main_handle
.sendMessage(deletemesg);
}
// if(WiGalleryOpenGLRenderer.mAsyncFileProvider != null
// && WiGalleryOpenGLRenderer.mAsyncFileProvider !=
// null){
// List<String> temp=new ArrayList<String>();
// temp.add(m_bitmappicker.getCurrentFileName());
// WiGalleryOpenGLRenderer.mAsyncFileProvider.deteleFiles(temp,
// false);
// }
boolean nextorpre = true;
if (m_bitmappicker.getCurrentFileIndex() == m_bitmappicker
.getFileCounts() - 1)
{
nextorpre = false;
}
m_bitmappicker.deleteFile();
updateUIinfo();
mMsgBox.hide();
m_popupLayout.removeView(mMsgBox);
if (m_bitmappicker.getCurrentFileIndex() == -1)
{
showInfoWhenDeleteAll();
} else
{
m_imageview.resetRect();
if (!nextorpre)
{
m_imageview.setCurbitmapR(m_bitmaps[0]);
loadBitmap(false);
} else
{
m_imageview.setCurbitmapR(m_bitmaps[1]);
loadBitmap(true);
}
m_imageview.resetRect();
m_imageview.invalidate();
}
hideButtonsWithDelay();
}
});
mMsgBox.setNegativeButton(
getResources().getText(R.string.gallery_delete_cancel),
new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
mMsgBox.hide();
m_popupLayout.removeView(mMsgBox);
setControlEnable();
if (m_isSolidPlay)
{
m_isSolidPlay = false;
solidShow();
}
hideButtonsWithDelay();
}
});
mMsgBox.addToLayout(m_popupLayout);
mMsgBox.show();
}
/**
* 触发显示下一张图片的动画
*/
public void showNext(boolean bool)
{
if (bool)
{
m_isNext = true;
m_imageview.setNextbitmap(m_bitmaps[1]);
m_bitmappicker.getNextBitmap();
loadBitmap(true);
m_position = screenWidth / 2 + (int) m_moveX;
} else
{
m_isNext = false;
m_imageview.setNextbitmap(m_bitmaps[0]);
m_bitmappicker.getPreBitmap();
loadBitmap(false);
m_position = (int) m_moveX;
}
m_isMove = true;
m_handler.post(m_runnable);
}
/**
* 在没有缩放的情况下,图片随手指移动
*/
public void showNextOnMove(boolean bool)
{
// true 下一張,false 上一張
if (bool)
{
if (m_bitmappicker.getCurrentFileIndex() < (m_bitmappicker
.getFileCounts() - 1))
{
/*
* if (m_imageview.m_nextbitmap == null) {
* m_imageview.setNextbitmap(m_bitmaps[1]); }
*/
m_imageview.setNextbitmap(m_bitmaps[1]);
m_imageview.setSrc1Rect(-(int) m_moveX, 0, screenHeight,
screenWidth / 2);
m_imageview.setDst1Rect(0, 0, screenHeight, (int) m_moveX
+ screenWidth / 2);
m_imageview.setDst2Rect(screenWidth / 2, 0, screenHeight,
screenWidth + (int) m_moveX);
m_imageview.setSrc2Rect(0, 0, screenHeight, -(int) m_moveX);
m_imageview.setDst3Rect((int) m_moveX + screenWidth / 2, 0,
screenHeight, screenWidth / 2);
m_imageview.setDst4Rect(screenWidth + (int) m_moveX, 0,
screenHeight, screenWidth);
m_imageview.invalidate();
}
} else
{
if (m_bitmappicker.getCurrentFileIndex() > 0)
{/*
* if (m_imageview.m_nextbitmap == null) {
* m_imageview.setNextbitmap(m_bitmaps[0]); }
*/
m_imageview.setNextbitmap(m_bitmaps[0]);
m_imageview.setSrc1Rect(0, 0, screenHeight, screenWidth / 2
- (int) m_moveX);
m_imageview.setDst1Rect((int) m_moveX, 0, screenHeight,
screenWidth / 2);
m_imageview.setDst2Rect(screenWidth / 2 + (int) m_moveX, 0,
screenHeight, screenWidth);
m_imageview.setSrc2Rect(screenWidth / 2 - (int) m_moveX, 0,
screenHeight, screenWidth / 2);
m_imageview.setDst3Rect(0, 0, screenHeight, (int) m_moveX);
m_imageview.setDst4Rect(screenWidth / 2, 0, screenHeight,
screenWidth / 2 + (int) m_moveX);
m_imageview.invalidate();
}
}
// Log.e(Tag, "show next on move over XXXXXXXXXXXXXXXXXXX");
}
/**
* 手指松开时,移回到原图的动画
*/
public void moveBack(float X, boolean bool)
{
m_isMove = true;
if (X < 0)
{
m_isNext = false;
m_position = screenWidth / 2 + (int) X;
if (!bool)
{
m_isNext = true;
}
} else
{
m_isNext = true;
m_position = (int) X;
if (!bool)
{
m_isNext = false;
}
}
if (!bool)
m_handler.post(m_runnable);
else
{
m_handler.post(m_runnable1);
}
}
/**
* 停止幻灯片播放
*/
public void stopsolidplay()
{
if (m_imageview.mode == 1)
{
if (CSStaticData.DEBUG)
Log.e(Tag, "[stopsolidplay]---------->幻灯播放结束 ");
m_handler.removeCallbacks(mrunnable2);
m_imageview.mode = 0;
if (m_imageview.getPAlpha() < 127)
{
WiImageView.recycleDBitmap(m_bitmaps[1]);
m_bitmaps[1] = m_imageview.m_nextbitmap;
m_imageview.setNextbitmap(null);
} else
{
WiImageView.recycleDBitmap(m_bitmaps[0]);
m_bitmaps[0] = m_imageview.m_curbitmap;
m_imageview.exchange();
m_imageview.setNextbitmap(null);
m_bitmappicker.getNextBitmap();
}
m_imageview.setAlpha(0);
m_imageview.postInvalidate();
updateUIinfo();
hideButtonsWithDelay();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (CSStaticData.DEBUG)
{
Log.e("onActivityResult", "程序返回标示");
Log.e(Tag, "requestCode=" + requestCode + "resultCode="
+ resultCode + data);
}
switch (requestCode)
{
case TDStaticData.REQUEST_CODE_LOAD_VIDEO:
if (resultCode == RESULT_OK)
{
List<String> deletelist = data
.getStringArrayListExtra("deletelist");
if (deletelist != null)
{
if (CSStaticData.DEBUG)
Log.e(Tag,
"当前的文件索引为"
+ m_bitmappicker.getCurrentFileIndex()
+ m_bitmappicker.getCurrentFileName());
m_bitmappicker.deleteFileList(deletelist);
if (CSStaticData.DEBUG)
Log.e(Tag,
"删除后当前的文件索引为"
+ m_bitmappicker.getCurrentFileIndex()
+ m_bitmappicker.getCurrentFileName());
if (m_bitmappicker.getCurrentFileIndex() == -1)
{
showInfoWhenDeleteAll();
} else
{
// 显示删除后的图片
m_imageview
.setCurbitmapR(m_imageview
.getNextBitmapEx(m_bitmappicker
.getFirBitmap()));
m_imageview.resetRect();
m_imageview.invalidate();
// 加载上下一张图片
OperateBitmaps.recycleDBitmap(m_bitmaps[0]);
OperateBitmaps.recycleDBitmap(m_bitmaps[1]);
loadBitmap(false);
loadBitmap(true);
}
}
updateUIinfo();
}
break;
case REQUESTCODE_WIIMAGEEDITOR:
if (resultCode == RESULT_OK)
{
String redeyefilepath = data.getStringExtra("redeyefilepath");
if (redeyefilepath != null)
{
// 更新链表,然后刷新图片。
m_bitmappicker.addFile(redeyefilepath);
OperateBitmaps.recycleDBitmap(m_bitmaps[1]);
loadBitmap(true);
if (WiGalleryOpenGLRenderer.mAsyncFileProvider != null)
{
Log.e(Tag, "向gallery中添加数据");
WiGalleryOpenGLRenderer.mAsyncFileProvider
.addNewFile(redeyefilepath);
}
}
}
break;
}
}
public void showInfoWhenDeleteAll()
{
// {
// mMsgBox = new MsgBox(mContext);
// mMsgBox_type = 2;
// mMsgBox.setMessage(getResources().getText(
// R.string.gallery_delete_warn));
// mMsgBox.setBackgound(R.drawable.main_menu_window_portrait);
// mMsgBox.addToLayout(m_popupLayout);
//// mMsgBox.setPositiveButton(
//// getResources()
//// .getText(
//// R.string.gallery_delete_warn_confirm),
//// new OnClickListener()
//// {
// //
//// @Override
//// public void onClick(View v)
//// {
//// // TODO Auto-generated method stub
//// mMsgBox.hide();
//// m_popupLayout.removeView(mMsgBox);
//// // finish();
//// }
//// });
// mMsgBox.show();
// m_imageview.setCurbitmap(null);
// m_imageview.invalidate();
// m_MoreButton.setClickable(false);
// }
finish();
}
/**
* 异步加载下一张要显示的图片
*/
public void loadBitmapInBackground(String string, int next)
{
if(next==0)
{
loadtask0 = new LoadBufImageTask(this);
loadtask0.execute(string, next);
}
else if(next==1)
{
loadtask1 = new LoadBufImageTask(this);
loadtask1.execute(string, next);
}
}
public void loadBitmap(Boolean isnext)
{
if(m_bitmappicker.getFileCounts()>0)
{
if (isnext)
{
loadBitmapInBackground(m_bitmappicker.getNextBitmapforBuf(), 1);
Log.e(Tag, "[loadBitmap]------------>加载下一张图片");
} else
{
// if (m_bitmappicker.getCurrentFileIndex() > 0)
// {
loadBitmapInBackground(m_bitmappicker.getPreBitmapforBuf(), 0);
Log.e(Tag, "[loadBitmap]------------>加载上一张图片");
// }
}
}
}
class LoadBufImageTask extends AsyncTask<Object, Integer, Object>
{
// 可变长的输入参数,与AsyncTask.exucute()对应
Bitmap[] bufBitmaps;
int whichtoupdate;
public LoadBufImageTask(Context context)
{
m_isNextBitmapLoaded++;
bufBitmaps = new Bitmap[2];
}
@Override
protected String doInBackground(Object... params)
{
bufBitmaps = m_imageview.getNextBitmapEx((String) params[0]);
whichtoupdate = (Integer) params[1];
return null;
}
@Override
protected void onCancelled()
{
super.onCancelled();
}
@Override
protected void onPostExecute(Object result)
{
Log.e(Tag, "[onPostExecute]---------->異步加載完成,更新的方向为"
+ whichtoupdate);
if (CSStaticData.DEBUG)
Log.e(Tag, "[onPostExecute]---------->異步加載完成,更新的方向为"
+ whichtoupdate);
if (whichtoupdate == 0)
m_bitmaps[0] = bufBitmaps;
else
{
m_bitmaps[1] = bufBitmaps;
}
m_isNextBitmapLoaded--;
m_init_loadimagenum++;
if (m_init_loadimagenum == 2)
{
if (m_init_playmode == 1)
{
m_init_playmode = 0;
m_handle_control
.sendEmptyMessage(CONTROL_HANDLER_SHOW_SOLID);
// m_handle_control.sendEmptyMessageDelayed(CONTROL_HANDLER_SHOW_SOLID,2000);
}
}
}
@Override
protected void onPreExecute()
{
// 任务启动,可以在这里显示一个对话框,这里简单处理
if (CSStaticData.DEBUG)
Log.e(Tag, "[onPreExecute]---------->異步加載圖片開始");
}
@Override
protected void onProgressUpdate(Integer... values)
{
// 更新进度
}
}
private void initData()
{
// 初始化菜单颜色
mTextColorWhite = getResources().getXml(
R.drawable.textcolor_selector_white);
mTextColorGreen = getResources().getXml(
R.drawable.textcolor_selector_green);
try
{
COLORSTATELIST_WHITE = ColorStateList.createFromXml(getResources(),
mTextColorWhite);
COLORSTATELIST_GREEN = ColorStateList.createFromXml(getResources(),
mTextColorGreen);
} catch (XmlPullParserException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
mMoreMenuResId = new int[][]
{
{ R.drawable.gallery_more_share,
R.string.gallery_menu_item_share },
{ R.drawable.gallery_more_delete,
R.string.gallery_menu_item_delete },
{ R.drawable.gallery_more_move, R.string.gallery_menu_item_move },
{ R.drawable.gallery_more_set_as_favorite,
R.string.gallery_menu_item_setfavorite },
{ R.drawable.gallery_more_remove_favorite,
R.string.gallery_menu_item_removefavorite },
{ R.drawable.gallery_slideshow,
R.string.gallery_menu_item_slideshow },
{ R.drawable.gallery_more_file_info,
R.string.gallery_menu_item_fileinfo },
{ R.drawable.gallery_remove_red_eye,
R.string.gallery_remove_red_eye },
{ 0, R.string.gallery_menu_item_2Dto3D } };
mGalleryMoveToMenuResId = new int[][]
{
{ 0, R.string.gallery_menu_item_internal },
{ 0, R.string.gallery_menu_item_external }, };
mDisableList = new ArrayList<Integer>();
mSubMenuStateMap = new HashMap<Integer, Integer>();
mSubMenuStateMap.put(SUBMENU_MOVETO_INTERNAL, -1);
mContext = WiImageViewerActivity.this;
mMenuLayout = (RelativeLayout) findViewById(R.id.moreMenuLayout);
mSubMenuLayout = (RelativeLayout) findViewById(R.id.subMenuLayout);
mMenuListView = (ListView) findViewById(R.id.moreListView);
mSubMenuListView = (ListView) findViewById(R.id.subListView);
mSubListTitle = (TextView) findViewById(R.id.subListTitle);
mMenuListAdapter = new ViewerListAdapter(mContext, mMoreMenuResId);
mSubListAdapter = new ViewerListAdapter(mContext, null);
mMenuListAdapter
.setMenuType(ViewerListAdapter.MENU_TYPE_MAIN_MENU_IMAGEVIEWER);
mSubListAdapter
.setMenuType(ViewerListAdapter.MENU_TYPE_SUB_MENU_IMAGEVIEWER);
mSubListAdapter.setMap(mSubMenuStateMap);
mMenuListView.setAdapter(mMenuListAdapter);
mMenuLayout.setVisibility(View.INVISIBLE);// 调用此方法让主菜单显示或隐藏
mSubMenuLayout.setVisibility(View.INVISIBLE);// 调用此方法让子菜单显示或隐藏
}
public void setScreenDimension(boolean is3D)
{
m_imageview.ChangeMode(is3D);
String[] cmdTurnOn3D =
{ // 开启屏幕3D命名
"/system/bin/sh", "-c",
"echo 1 > /sys/devices/platform/mipi_masterimage.513/enable_3d_barrier" };
String[] cmdTurnOff3D =
{ // 关闭屏幕3D命令
"/system/bin/sh", "-c",
"echo 0 > /sys/devices/platform/mipi_masterimage.513/enable_3d_barrier" };
// CSStaticData.g_is_3D_mode = is3D;
try
{
if (is3D)
{
if (CSStaticData.DEBUG)
{
Log.w(Tag, "[setScreenDimension]开启屏幕3D显示模式");
}
Runtime.getRuntime().exec(cmdTurnOn3D);
} else
{
if (CSStaticData.DEBUG)
{
Log.w(Tag, "[setScreenDimension]关闭屏幕3D显示模式");
}
Runtime.getRuntime().exec(cmdTurnOff3D);
}
} catch (IOException exp)
{
if (CSStaticData.DEBUG)
{
Log.w(Tag, "[setScreenDimension]屏幕3D显示模式切换:失败,命令行输入流异常");
}
} catch (SecurityException exp)
{
if (CSStaticData.DEBUG)
{
Log.w(Tag, "[setScreenDimension]屏幕3D显示模式切换:失败,系统安全保护阻止本操作");
}
} catch (Exception exp)
{
if (CSStaticData.DEBUG)
{
Log.w(Tag, "[setScreenDimension]屏幕3D显示模式切换:失败,未知错误");
}
}
}
private void initListViewListenner()
{
mMenuListView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3)
{
// mSubMenuLayout.setVisibility(View.INVISIBLE);//调用此方法让子菜单显示或隐藏
mListPosition = arg2;
int count = arg0.getChildCount();
for (int i = 0; i < count; i++)
{
if (((TextView) arg0.getChildAt(i).findViewById(
R.id.videoPlayerMenuText)).getCurrentTextColor() != Color.GRAY)
{
((TextView) arg0.getChildAt(i).findViewById(
R.id.videoPlayerMenuText))
.setTextColor(COLORSTATELIST_WHITE);
}
}
((TextView) arg1.findViewById(R.id.videoPlayerMenuText))
.setTextColor(COLORSTATELIST_GREEN);
switch (arg2)
{
case 0:
mSubMenuLayout.setVisibility(View.INVISIBLE);// 调用此方法让子菜单显示或隐藏
if (mShareMenu != null && mShareMenu.isShown())
{
mShareMenu.hideAndRemove();
((TextView) arg1.findViewById(R.id.videoPlayerMenuText))
.setTextColor(COLORSTATELIST_WHITE);
return;
}
Tshare();
break;
case 1:
Tdeletefile();
mMenuLayout.setVisibility(View.INVISIBLE);
m_MoreButton
.setBackgroundResource(R.drawable.gallery_more_btn_selector);
break;
case 2:
if (mSubMenuLayout.getVisibility() == View.VISIBLE
&& mSubListTitle.getText() == getResources()
.getText(R.string.gallery_menu_item_move))
{
mSubMenuLayout.setVisibility(View.INVISIBLE);
((TextView) arg1.findViewById(R.id.videoPlayerMenuText))
.setTextColor(COLORSTATELIST_WHITE);
return;
}
mSubListAdapter.setItemStartId(SUBMENU_MOVETO_INTERNAL);
mSubListAdapter.setResId(mGalleryMoveToMenuResId);
mSubListTitle.setText(R.string.gallery_menu_item_move);
mSubMenuLayout.setVisibility(View.VISIBLE);// 调用此方法让子菜单显示或隐藏
break;
case 3:
mMenuLayout.setVisibility(View.INVISIBLE);
m_MoreButton
.setBackgroundResource(R.drawable.gallery_more_btn_selector);
// mDisableList.add(new Integer(4));
// mDisableList.remove(new Integer(3));
setFavoriteInfo(m_bitmappicker.getCurrentFileName(), true);
String temp = m_bitmappicker.getCurFileName();
msgBox_disappearautoBox.updateMessage(temp
+ " has been set as favorite .");
msgBox_disappearautoBox.show();
msgBox_disappearautoBox.hideDelay(2000);
hideButtonsWithDelay();
break;
case 4:
mMenuLayout.setVisibility(View.INVISIBLE);
m_MoreButton
.setBackgroundResource(R.drawable.gallery_more_btn_selector);
// mDisableList.add(new Integer(3));
// mDisableList.remove(new Integer(4));
setFavoriteInfo(m_bitmappicker.getCurrentFileName(), false);
msgBox_disappearautoBox
.updateMessage("Favorite tag has been removed.");
msgBox_disappearautoBox.show();
msgBox_disappearautoBox.hideDelay(2000);
hideButtonsWithDelay();
break;
case 5:
Tplay(false);
hideButtonsWithDelay();
mMenuLayout.setVisibility(View.INVISIBLE);
m_MoreButton
.setBackgroundResource(R.drawable.gallery_more_btn_selector);
break;
case 6:
Tsetting();
mMenuLayout.setVisibility(View.INVISIBLE);
m_MoreButton
.setBackgroundResource(R.drawable.gallery_more_btn_selector);
break;
case 7:
// 去红眼功能
if (FileTypeHelper.isImageFile(m_bitmappicker
.getCurrentFileName()))
{
Intent intent = new Intent(
WiImageViewerActivity.this,
com.wistron.WiEditor.WiImageEditorActivity.class);
intent.putExtra("filePath",
m_bitmappicker.getCurrentFileName());
startActivityForResult(intent,
REQUESTCODE_WIIMAGEEDITOR);
}
mMenuLayout.setVisibility(View.INVISIBLE);
m_MoreButton
.setBackgroundResource(R.drawable.gallery_more_btn_selector);
hideButtonsWithDelay();
break;
case 8:
mMenuLayout.setVisibility(View.INVISIBLE);
m_MoreButton
.setBackgroundResource(R.drawable.gallery_more_btn_selector);
hideButtonsWithDelay();
}
if (arg2 != 0)
{
if (mShareMenu != null && mShareMenu.isShown())
{
mShareMenu.hideAndRemove();
// m_popupLayout.removeView(mShareMenu);
}
}
mSubMenuListView.setAdapter(mSubListAdapter);
}
});
mSubMenuListView.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3)
{
// TODO Auto-generated method stub
mSubListPosition = arg2;
switch (arg1.getId())
{
// group菜单的id,每个菜单内部,选项的id目前设置为每项递增1
case SUBMENU_MOVETO_INTERNAL:
// mSubMenuStateMap.put(SUBMENU_MOVETO_INTERNAL, arg2);
moveFuction(m_bitmappicker.getCurrentFileName(),
m_bitmappicker.getCurFileName(), true);
break;
case SUBMENU_MOVETO_INTERNAL + 1:
// mSubMenuStateMap.put(SUBMENU_MOVETO_INTERNAL, arg2);
moveFuction(m_bitmappicker.getCurrentFileName(),
m_bitmappicker.getCurFileName(), false);
break;
}
mSubMenuLayout.setVisibility(View.INVISIBLE);
mMenuLayout.setVisibility(View.INVISIBLE);
m_MoreButton
.setBackgroundResource(R.drawable.gallery_more_btn_selector);
}
});
}
public void lookupFavoriteInfo()
{
FavoriteDBAdapter dbAdapter = new FavoriteDBAdapter(mContext);
mFavoriteInfoList = dbAdapter.getFavoriteFiles();
if (mFavoriteInfoList != null && mFavoriteInfoList.size() > 0)
{
mFavoriteListCount = mFavoriteInfoList.size();
} else
{
mFavoriteListCount = 0;
}
dbAdapter.dispose();
dbAdapter = null;
}
public void moveFuction(final String filepath, final String filename,
final boolean isToInner)
{
if (filepath != null)
{
mMsgBox = new MsgBox(mContext);
mMsgBox_type = 3;
String temp = null;
if (isToInner)
{
temp = "Do you want to move " + filename
+ " to interal storage ?";
} else
{
temp = "Do you want to move " + filename
+ " to exteral storage ?";
}
mMsgBox.setMessage(temp);
mMsgBox.setBackgound(R.drawable.main_menu_window_portrait);
mMsgBox.setPositiveButton(
getResources().getText(R.string.gallery_delete_confirm),
new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
setControlEnable();
mMsgBox.hide();
m_popupLayout.removeView(mMsgBox);
mMsgBox = new MsgBox(mContext);
mMsgBox_type=4;
mMsgBox.setMessage("Moving……Please wait for a while");
mMsgBox.setBackgound(R.drawable.main_menu_window_portrait);
mMsgBox.addToLayout(m_popupLayout);
mMsgBox.show();
List<String> tempList = new ArrayList<String>();
tempList.add(filepath);
AsyncFileProvider asyncer = null;
if (WiGalleryOpenGLRenderer.mAsyncFileProvider == null)
{
asyncer = new AsyncFileProvider(mContext);
} else
{
asyncer = WiGalleryOpenGLRenderer.mAsyncFileProvider;
}
if (isToInner)
{
asyncer.moveTo(tempList,
CSStaticData.TMP_INT_DIR, false, WiImageViewerActivityID);
} else
{
asyncer.moveTo(tempList,
CSStaticData.TMP_EXT_DIR, false, WiImageViewerActivityID);
}
m_move_istoinner = isToInner;
m_move_filename = filename;
//hideButtonsWithDelay();
}
});
mMsgBox.setNegativeButton(
getResources().getText(R.string.gallery_delete_cancel),
new OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
mMsgBox.hide();
m_popupLayout.removeView(mMsgBox);
setControlEnable();
if (m_isSolidPlay)
{
m_isSolidPlay = false;
solidShow();
}
hideButtonsWithDelay();
}
});
mMsgBox.addToLayout(m_popupLayout);
mMsgBox.show();
}
}
public void setFavoriteInfo(String fileString, boolean bool)
{
// 设置喜好数据库
if (fileString != null)
{
{//LiuWei
// FavoriteDBAdapter dbAdapter = new FavoriteDBAdapter(
// WiImageViewerActivity.this);
// List<String> selectedList = new ArrayList<String>();
// selectedList.add(fileString);
// if (bool)
// {
// dbAdapter.setAsFavorite(selectedList);
// } else
// {
// dbAdapter.removeFromFavorite(selectedList);
// }
// dbAdapter.dispose();
// dbAdapter = null;
}
{//Cocoonshu
AsyncFileProvider asyncFileProvider = null;
if(WiGalleryOpenGLRenderer.mAsyncFileProvider == null){
asyncFileProvider = new AsyncFileProvider(WiImageViewerActivity.this);
}else{
asyncFileProvider = WiGalleryOpenGLRenderer.mAsyncFileProvider;
}
List<String> selectedList = new ArrayList<String>();
selectedList.add(fileString);
if(bool){
asyncFileProvider.setFavoriteToDB(selectedList, WiImageViewerActivityID);
}else{
asyncFileProvider.removeFavoriteFromDB(selectedList, WiImageViewerActivityID);
}
asyncFileProvider = null;
}
}
}
public void updateMenuInfo(String filepath)
{
lookupFavoriteInfo();
boolean isFavorite = false;
boolean isInner = false;
boolean isVideo = false;
for (int i = 0; i < mFavoriteListCount; i++)
{
if (mFavoriteInfoList.get(i).equals(filepath))
{
isFavorite = true;
}
}
if (filepath != null)
{
isInner = FileTypeHelper.isInternalFile(filepath);
isVideo = FileTypeHelper.isVideoFile(filepath);
} else
{
isInner = false;
}
if (isInner)
{
mSubMenuStateMap.put(SUBMENU_MOVETO_INTERNAL, 0);
} else
{
mSubMenuStateMap.put(SUBMENU_MOVETO_INTERNAL, 1);
}
mDisableList.clear();
if (isFavorite)
{
mDisableList.add(new Integer(3));
} else
{
mDisableList.add(new Integer(4));
}
if (isVideo)
{
mDisableList.add(new Integer(7));
mDisableList.add(new Integer(8));
}
}
private void callPanoramaViewer(String path)
{
Intent intent = new Intent();
intent.setClass(WiImageViewerActivity.this,
com.wistron.WiViewer.Panorama360Activity.class);
intent.putExtra("cmd", "pano");
intent.putExtra("filePath", path);
startActivity(intent);
}
private boolean isPanoramaImage(String path)
{
if (path == null)
return false;
Options opts = new Options();
opts.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path, opts);
int width = opts.outWidth;
int height = opts.outHeight;
boolean isJps = path.toLowerCase().endsWith(".jps");
if (isJps)
{
width = width / 2;
}
if (height != 0 && (width / height) >= 3 && width >= 1500)
{
return true;
} else
{
return false;
}
}
/**
* 设置sd卡插拔广播
*/
public class SDCardBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context arg0, Intent arg1)
{
System.out.println("SDCardBroadcastReceiver 被注册");
// TODO Auto-generated method stub
String action = arg1.getAction();
// 当SD卡插入时
if (Intent.ACTION_MEDIA_MOUNTED.equals(action)
|| Intent.ACTION_MEDIA_SCANNER_STARTED.equals(action)
|| Intent.ACTION_MEDIA_SCANNER_FINISHED.equals(action))
{
m_SDismounted = false;
setControlEnable();
// 当SD卡拔出时
} else if (Intent.ACTION_MEDIA_REMOVED.equals(action)
|| Intent.ACTION_MEDIA_UNMOUNTED.equals(action)
|| Intent.ACTION_MEDIA_BAD_REMOVAL.equals(action))
{
m_SDismounted = true;
stopsolidplay();
// ******设置按钮的状态,是否可用
// m_csbtn_play.setEnable(false);
// m_csbtn_set.setEnable(false);
// m_csbtn_share.setEnable(false);
// m_csbtn_delete.setEnable(false);
}
}
}
/**
* 恢复保存状态
*/
private void initStatusData()
{
ImageViewerStateInfo stateInfo = (ImageViewerStateInfo) getLastNonConfigurationInstance();
if (stateInfo != null)
{
m_bitmappicker = new MediaFilePicker(stateInfo.getmFileList(),
stateInfo.getmCurrentFileIndex());
m_imageview.setMediaPicker(m_bitmappicker);
if (stateInfo.ismIsSlideShow())
{
m_init_playmode = 1;
} else
{
m_init_playmode = 0;
}
int boxtype = stateInfo.isDeleteBoxShow();
if (boxtype != 0)
{
if (boxtype == 1)
{
Tdeletefile();
} else if (boxtype == 2)
{
// 提示删光了
showInfoWhenDeleteAll();
} else if (boxtype == 3)
{
// 移动
boolean isinner = false;
int a = mSubMenuStateMap.get(SUBMENU_MOVETO_INTERNAL);
if (a == 1)
{
isinner = true;
}
moveFuction(m_bitmappicker.getCurrentFileName(),
m_bitmappicker.getCurFileName(), isinner);
}
else if(boxtype==4)
{
mMsgBox = new MsgBox(mContext);
mMsgBox_type=4;
mMsgBox.setMessage("Moving……Please wait for a while");
mMsgBox.setBackgound(R.drawable.main_menu_window_portrait);
mMsgBox.addToLayout(m_popupLayout);
mMsgBox.show();
}
}
if (stateInfo.isFileInfoBoxShow())
Tsetting();
}
}
/**
* 保存状态
*/
@Override
public Object onRetainNonConfigurationInstance()
{
Log.w(Tag, "[onRetainNonConfigurationInstance]");
int boxtype = 0;
boolean isInfo = false;
if (mMsgBox != null && mMsgBox.isShown())
{
boxtype = mMsgBox_type;
}
if (mMsgBox_info != null && mMsgBox_info.isShown())
{
isInfo = true;
}
ImageViewerStateInfo stateInfo = new ImageViewerStateInfo(
m_bitmappicker.getCurrentFileIndex(), m_isSolidPlay,
m_imageview.is_3D, m_bitmappicker.getfilepathList(), boxtype,
isInfo);
return stateInfo;
}
}