package com.cgcl.cloudesk.screens.act;
import java.util.ArrayList;
import java.util.Vector;
import com.cgcl.cloudesk.cloudeskmain.screens.act.R;
import com.cgcl.cloudesk.manage.app.AppData;
import com.cgcl.cloudesk.manage.com.AppInfo;
import com.cgcl.cloudesk.manage.config.UIConfig;
import com.cgcl.cloudesk.manage.core.Controller;
import com.cgcl.cloudesk.screens.act.aid.MyApplicationAid;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class CustomizeActivity extends BaseActivity {
private Button commitbtn;
private Button resetbtn;
private ListView customizeListView;
private ArrayList<ListItem> customizeListItems;
private ListItemAdapter customizeListAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.CurrentActivity = this;
AppData appData = (AppData)getApplicationContext();
setUIController(appData.getController());
setType(UIConfig.customizeFormType);
setContentView(R.layout.customize_list);
Log.v("yujia", "customize start");
findviews();
listeners();
this.runOnUiThread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(300);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
controller.requestAllAppInfo();
}
});
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
MoblieClientUI.currentActivity = this;
}
private void findviews() {
// TODO Auto-generated method stub
commitbtn = (Button)findViewById(R.id.commit_btn);
resetbtn =(Button)findViewById(R.id.reset_btn);
customizeListView =(ListView)findViewById(R.id.customize_listview);
}
private void listeners() {
// TODO Auto-generated method stub
commitbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ArrayList<String> customizeAppList = new ArrayList<String>();
ArrayList<String> uncustomizeAppList = new ArrayList<String>();
if(customizeListItems!=null)
{
for(ListItem listItem:customizeListItems)
{
if(listItem.checked==true){
customizeAppList.add(listItem.id);
}
else {
uncustomizeAppList.add(listItem.id);
}
}
}
String[] customappStrings = new String[customizeAppList.size()];
String[] uncustomappStrings =new String[uncustomizeAppList.size()];
int i = 0;
if(customizeAppList!=null)
{
for(String appString:customizeAppList)
{
customappStrings[i] = appString;
i++;
}
}
i = 0;
if(uncustomizeAppList!=null)
{
for(String appString:uncustomizeAppList)
{
uncustomappStrings[i] =appString;
i++;
}
}
Controller.customizeAppInfosVector.clear();
if(customappStrings!=null)
{
controller.customizeAppsRequest(customappStrings);
}
if(uncustomappStrings!=null)
{
controller.unCustomizeAppsRequest(uncustomappStrings);
}
showToast(getResources().getString(R.string.commit_success));
}
});
resetbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
controller.requestAllAppInfo();
displayListView(Controller.nativeAppInfosVector, Controller.customizeAppInfosVector, Controller.unCustomizeAppInfosVector);
}
});
customizeListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
ListItem item = CustomizeActivity.this.customizeListItems.get(position);
if (item != null) {
item.checkedItem();
CheckBox cBox = (CheckBox)view.findViewById(R.id.list_cb);
cBox.setChecked(item.checked);
}
}
});
}
public void displayListView(Vector<AppInfo> nativeApps, Vector<AppInfo> customizeApps, Vector<AppInfo> uncustomizeApps) {
// TODO Auto-generated method stub
this.customizeListItems = new ArrayList<ListItem>();
this.customizeListAdapter = new ListItemAdapter(customizeListItems);
if(customizeApps!=null)
{
for(AppInfo appInfo:customizeApps)
{
// customizeListItems.add(new ListItem(appInfo.getID(), true));
customizeListItems.add(new ListItem(appInfo.getID(), true, Bytes2Bimap(appInfo.getIcon())));
}
}
if(uncustomizeApps!=null)
{
for(AppInfo appInfo:uncustomizeApps)
{
// customizeListItems.add(new ListItem(appInfo.getID(), false));
customizeListItems.add(new ListItem(appInfo.getID(), false, Bytes2Bimap(appInfo.getIcon())));
}
}
this.runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
customizeListView.setAdapter(customizeListAdapter);
}
});
}
/* ===================== Adapter ======================== */
private class ListItem
{
private boolean checked;
private String id;
private Bitmap icon;
// private ListItem(String id, boolean checked)
// {
// this.id = id;
// this.checked = checked;
// }
private ListItem(String id, boolean checked, Bitmap icon)
{
this.id = id;
this.checked = checked;
this.icon = icon;
}
private void checkedItem()
{
if(this.checked==false)
{
this.checked = true;
}
else {
this.checked = false;
}
}
}
private class ListItemAdapter extends BaseAdapter
{
private ArrayList<ListItem> items;
private ListItemAdapter(ArrayList<ListItem> items) {
this.items = items;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return this.items.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return items.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view =convertView;
ListItem item;
if(view ==null){
view = getLayoutInflater().inflate(R.layout.list_item, null);
}
if((item = this.items.get(position))==null){
return view;
}
TextView tv =(TextView)view.findViewById(R.id.list_tv);
CheckBox cb =(CheckBox)view.findViewById(R.id.list_cb);
ImageView iv = (ImageView)view.findViewById(R.id.list_iv);
tv.setText(item.id);
cb.setChecked(item.checked);
iv.setImageBitmap(item.icon);
return view;
}
}
private Bitmap Bytes2Bimap(byte[] b) //byte杞崲bitmap
{
if(b.length!=0)
{
return BitmapFactory.decodeByteArray(b, 0, b.length);
}
else {
return null;
}
}
private void showToast(String msg) {
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// Do something.
AppData appData = (AppData)getApplicationContext();
appData.setInstall(true);
this.finish();//鐩存帴璋冪敤鏉�褰撳墠activity鏂规硶.
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public void showError()
{
controller.logout();
AppData appData = (AppData)getApplicationContext();
appData.setInstall(false);
MainActivity.isInitSuceessed=false;
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.runOnUiThread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(CustomizeActivity.this);
builder.setTitle(R.string.error_load_title);
builder.setMessage(R.string.error_network_content);
builder.setPositiveButton(R.string.exit_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
AppData appData = (AppData)getApplicationContext();
appData.setInstall(false);
MyApplicationAid.getInstance().exit();
System.exit(0);
}
});
builder.show();
}
});
}
}