package com.android.launcher3;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import android.os.AsyncTask;
import android.R.integer;
import android.app.ActionBar;
import android.app.Activity;
import android.app.WallpaperManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageParser.NewPermissionInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Gravity;
import android.view.MenuItem;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.view.WindowManager;
import java.lang.reflect.Method;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.BitmapDrawable;
import android.util.Log;
import java.io.ByteArrayOutputStream;
import android.graphics.Bitmap.CompressFormat;
import android.net.Uri;
import android.content.ContentValues;
import android.database.Cursor;
import java.io.InputStream;
import java.io.ByteArrayInputStream;
/**
*add 20140902 for HOSIN_CUST_LAUNCHER_MESSI
*/
public class ThemeEffectPreview extends Activity implements OnClickListener{
private ViewPager viewPager;
private List<View> views;
private ImageView[] imageViews;
private LinearLayout imageLayout;
private Button applyBtn;
private SharedPreferences sharedPreferences;
private MyViewPageAdapter pageAdapter;
private String theme;
private MenuItem refreshItem;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.theme_effect_preview);
initLayout();
initViews();
}
private void initLayout(){
viewPager = (ViewPager) findViewById(R.id.theme_effect_view_pager);
imageLayout = (LinearLayout) findViewById(R.id.theme_effect_image_linear);
applyBtn = (Button) findViewById(R.id.theme_effect_btn);
applyBtn.setOnClickListener(this);
imageViews = new ImageView[2];
imageViews[0]= (ImageView) imageLayout.getChildAt(0);
imageViews[1]= (ImageView) imageLayout.getChildAt(1);
}
private void initViews(){
views = new ArrayList<View>();
sharedPreferences = getSharedPreferences(LauncherApplication.SHARED_PREFRENCE, Context.MODE_PRIVATE);
theme = getIntent().getStringExtra(LauncherApplication.NAME_KEY);
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setTitle(theme);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
try {
Bitmap previewBitmap_01 = BitmapFactory.decodeStream(getAssets().open(getString(R.string.theme)+"/"+theme+"/"+getString(R.string.preview)
+"/"+"preview_01.jpg"));
Bitmap previewBitmap_02 = BitmapFactory.decodeStream(getAssets().open(getString(R.string.theme)+"/"+theme+"/"+getString(R.string.preview)
+"/"+"preview_02.jpg"));
ImageView imageView_01 = new ImageView(this);
imageView_01.setImageBitmap(previewBitmap_01);
ImageView imageView_02 = new ImageView(this);
imageView_02.setImageBitmap(previewBitmap_02);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
params.gravity = Gravity.CENTER;
views.add(imageView_01);
views.add(imageView_02);
pageAdapter = new MyViewPageAdapter(views);
viewPager.setAdapter(pageAdapter);
viewPager.setCurrentItem(0);
viewPager.setOnPageChangeListener(new MyOnPageChangeListener());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void setRefreshActionButtonState(boolean refreshing){
if(refreshItem!=null){
if(refreshing){
refreshItem.setVisible(true);
refreshItem.setActionView(R.layout.actionbar_indeterminate_progress);
}
else{
refreshItem.setVisible(false);
refreshItem.setActionView(null);
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
// TODO Auto-generated method stub
getMenuInflater().inflate(R.menu.main_content,menu);
refreshItem = menu.findItem(R.id.menu_refresh);
setRefreshActionButtonState(false);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case android.R.id.home:
this.finish();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
private class MyViewPageAdapter extends PagerAdapter{
public List<View> mListViews;
public MyViewPageAdapter(List<View> listViews) {
this.mListViews = listViews;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mListViews.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == (arg1);
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView(mListViews.get(arg1));
}
@Override
public Object instantiateItem(View arg0, int arg1) {
((ViewPager) arg0).addView(mListViews.get(arg1), 0);
return mListViews.get(arg1);
}
}
private class MyOnPageChangeListener implements OnPageChangeListener{
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
for(int i=0;i<imageViews.length;i++){
if(arg0==i){
imageViews[i].setImageResource(R.drawable.dot_select);
}
else {
imageViews[i].setImageResource(R.drawable.dot_unselect);
}
}
}
}
protected class WallPaperSetTask extends AsyncTask<Void, Void, Boolean> {
private String theme;
private Context mContext;
public WallPaperSetTask(String theme,Context context){
this.theme = theme;
mContext = context;
}
@Override
protected Boolean doInBackground(Void... params) {
WallpaperManager wallpaperManager = WallpaperManager.getInstance(mContext);
try {
String path = mContext.getString(R.string.theme)+"/"+theme+"/"
+mContext.getString(R.string.wallpaper)+"/"+mContext.getString(R.string.wallpaper)+".jpg";
wallpaperManager.setStream(mContext.getAssets().open(path));
/*Bitmap bitmap = BitmapFactory.decodeStream(getAssets().open(path));
int width = Utilities.getScreenWidth(ThemeEffectPreview.this);
int height = Utilities.getScreenHeight(ThemeEffectPreview.this);
int x = (bitmap.getWidth() -width)/2;
int y = (bitmap.getHeight() - height)/2;
Bitmap bitmapCrop = Bitmap.createBitmap(bitmap,x,y,width,height);
; ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmapCrop.compress(CompressFormat.JPEG,85,bos);
String[] array = mContext.getResources().getStringArray(R.array.wallpaper_chooser);*/
ContentValues value_lock_screen = new ContentValues();
value_lock_screen.put("_id",1);
value_lock_screen.put("flag",0);
ContentValues value_main_menu = new ContentValues();
value_main_menu.put("_id",2);
value_main_menu.put("flag",0);
Uri url = Uri.parse("content://"+"com.android.launcher3.settings"+"/"+"wallpaper");
Log.i("messi","insert start");
Uri newUrl_lock_screen = ThemeEffectPreview.this.getContentResolver().insert(url,value_lock_screen);
Uri newUrl_main_menu = ThemeEffectPreview.this.getContentResolver().insert(url,value_main_menu);
if(newUrl_lock_screen == null){
Log.i("messi","update start");
mContext.getContentResolver().update(url,value_lock_screen,"_id = ?",new String[]{"1"});
}
if(newUrl_main_menu == null){
Log.i("messi","update start");
mContext.getContentResolver().update(url,value_main_menu,"_id = ?",new String[]{"2"});
}
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
@Override
protected void onPreExecute(){
setRefreshActionButtonState(true);
applyBtn.setClickable(false);
sharedPreferences.edit()
.putString(LauncherApplication.NAME_KEY, getIntent().getStringExtra(LauncherApplication.NAME_KEY)).commit();
LauncherApplication.themeChanged = true;
}
@Override
protected void onPostExecute(Boolean result) {
String path = mContext.getString(R.string.theme)+"/"+theme+"/"
+mContext.getString(R.string.wallpaper)+"/"+mContext.getString(R.string.wallpaper)+".jpg";
Bitmap bitmap = null;
try{
bitmap = BitmapFactory.decodeStream(mContext.getAssets().open(path));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Drawable d = new BitmapDrawable(bitmap);
setKeyguardBg(d);
Intent intent = new Intent(ThemeEffectPreview.this,Launcher.class);
startActivity(intent);
finish();
android.os.Process.killProcess(android.os.Process.myPid());
}
}
//Hosin_messi add start
public void setKeyguardBg(Drawable d) {
// TODO Auto-generated method stub
try {
Log.i("messi","setKeyguardViewBg theme ");
Object service = getSystemService("keyguard");
Class<?> keyguardViewManager= Class
.forName("com.android.keyguard.KeyguardViewManager");
Method setbg = null;
if (service != null) {
Log.i("messi","setKeyguardViewBg->>service != null");
setbg = keyguardViewManager.getMethod("setKeyguardViewBg",Drawable.class);
setbg.setAccessible(true);
setbg.invoke(service,d);
}
} catch (Exception e) {
}
}
// Hosin_messi add end
private void saveWallPaper(){
}
@Override
public void onClick(View v) {
/*try{
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
String path = getString(R.string.theme)+"/"+theme+"/"
+getString(R.string.wallpaper)+"/"+getString(R.string.wallpaper)+".jpg";
wallpaperManager.setStream(getAssets().open(path));
Bitmap bitmap = BitmapFactory.decodeStream(getAssets().open(path));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG,85,bos);
ContentValues values = new ContentValues();
values.put("_id",1);
values.put("type","wallpaper");
values.put("wallpaper",bos.toByteArray());
Uri url = Uri.parse("content://"+"com.android.launcher3.settings"+"/"+"wallpaper");
Log.i("messi","insert start");
Uri newUrl =getContentResolver().insert(url,values);
Log.i("messi","insert end: "+newUrl);
if(newUrl == null){
Log.i("messi","update start");
getContentResolver().update(url,values,null,null);
}
} catch (Exception e) {
}
*/
WallPaperSetTask task = new WallPaperSetTask(theme,this);
task.execute();
// TODO Auto-generated method stub
// setRefreshActionButtonState(true);
//WindowManager manager = getWindowManager();
//WindowManager.LayoutParams params = new WindowManager.LayoutParams();
// params.gravity =Gravity.CENTER;
// View view = getLayoutInflater().inflate(R.layout.actionbar_indeterminate_progress, null);
//manager.addView(view, params );
// applyBtn.setClickable(false);
// sharedPreferences.edit()
//.putString(LauncherApplication.NAME_KEY, getIntent().getStringExtra(LauncherApplication.NAME_KEY)).commit();
// LauncherApplication.themeChanged = true;
// Intent intent = new Intent(this,Launcher.class);
// intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
//startActivity(intent);
// android.os.Process.killProcess(android.os.Process.myPid());
// Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
// i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//startActivity(i);
}
}