package com.cgcl.cloudesk.screens.act;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.io.FilenameFilter;
import android.androidVNC.VncCanvasActivity;
import android.androidVNC.VncConstants;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.MeasureSpec;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import com.cgcl.cloudesk.cloudeskmain.screens.act.R;
import com.cgcl.cloudesk.manage.app.AppData;
import com.cgcl.cloudesk.manage.app.File;
import com.cgcl.cloudesk.manage.com.AppInfo;
import com.cgcl.cloudesk.manage.com.VMInfo;
import com.cgcl.cloudesk.manage.config.ComConfig;
import com.cgcl.cloudesk.manage.config.CoreConfig;
import com.cgcl.cloudesk.manage.config.UIConfig;
import com.cgcl.cloudesk.manage.core.Controller;
import com.cgcl.cloudesk.manage.log.LogService;
import com.cgcl.cloudesk.manage.net.Transmitter;
import com.cgcl.cloudesk.manage.util.IPUtil;
import com.cgcl.cloudesk.manage.vnc.Vnc;
import com.cgcl.cloudesk.screens.act.aid.MyApplicationAid;
public class MainActivity extends BaseActivity {
// 系统菜单项的编号
private static final int CUSTOMIZE_ID = Menu.FIRST;
private static final int GRADESYSTEM_ID = Menu.FIRST + 1;
private static final int ABOUT_ID = Menu.FIRST+ 2;
private static final int EXIT_ID = Menu.FIRST + 3;
public static boolean uninstall = false;
public static boolean isInitSuceessed = false;//是否初始化完成的标志位
public static boolean TimeOut = false;
public static GridItem item;
private View view;
private static GridView folderListGridView;
private static ArrayList<GridItem> folderListItems =null;
private static FolderGridItemAdapter folderListAdapter =null;
private static String videoFolderPath="/sdcard/cloudeskVideo";
private static String videoFolderName="录像";
private ImageButton closeButton;
private LinearLayout rootLayout;
private PopupWindow folderWindow; //文件夹二级目录界面
private LinearLayout mainLayout;
private LinearLayout windowsLoadingBar;
private LinearLayout linuxLoadingBar;
private LinearLayout folderLoadingBar;
private static ArrayList<GridItem> windowsItems = null;
private static ArrayList<GridItem> linuxItems = null;
private static ArrayList<GridItem> folderItems = null;
private static GridItemAdapter windowsAdapter = null;
private static GridItemAdapter linuxAdapter = null;
private static GridItemAdapter folderAdapter = null;
private static MyGridView windowsGridView;
private static MyGridView linuxGridView;
private static MyGridView folderGridView;
private static String currentNamePath = null;
private static boolean flag = false;
private static Object lockObject = new Object();
private static Object folderListLockObject = new Object();
private static Object TempLockObject = new Object();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cloudesk_main);
MyApplicationAid.getInstance().addActivity(this);
AppData appData = (AppData)getApplicationContext();
setUIController(appData.getController());
setType(UIConfig.mainFormType);
this.CurrentActivity = this;
findviews();
listeners();
if (windowsItems == null)
{
flag = false ;
new Thread(){
public void run()
{
try {
Thread.sleep(180000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (!flag)
{
MainActivity.this.showError();
}
}
}.start();
}
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.v("start", "ok");
MoblieClientUI.currentActivity = this;
}
@Override
public void showError()
{
controller.logout();
AppData appData = (AppData)getApplicationContext();
appData.setInstall(false);
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(MainActivity.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();
}
});
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.v("resume", "ok");
AppData appData = (AppData)getApplicationContext();
if(appData.isInstall()==true)
{
refreshgridview();//刷新view
}
else
{
appData.setInstall(true);
}
}
private void refreshgridview() { //刷新定制应用程序
if (windowsItems == null)
return ;
windowsLoadingBar.setVisibility(View.VISIBLE);
linuxLoadingBar.setVisibility(View.VISIBLE);
folderLoadingBar.setVisibility(View.VISIBLE);
windowsGridView.setVisibility(View.GONE);
linuxGridView.setVisibility(View.GONE);
folderGridView.setVisibility(View.GONE);
if(windowsItems!=null){
Iterator<GridItem> itWindow = windowsItems.iterator();
while(itWindow.hasNext())
{
if(itWindow.next().isCustomize==true)
{
itWindow.remove();
}
}
}
if(linuxItems!=null)
{
Iterator<GridItem> itLinux = linuxItems.iterator();
while(itLinux.hasNext())
{
if(itLinux.next().isCustomize==true)
{
itLinux.remove();
}
}
}
if(Controller.customizeAppInfosVector!=null)
{
for(AppInfo appinfo:Controller.customizeAppInfosVector)
{
if(appinfo.getOsType()==ComConfig.windowsType)
{
this.windowsItems.add(new GridItem(Bytes2Bimap(appinfo.getIcon()), appinfo.getID(), appinfo.getPath(),ComConfig.windowsType,true));
}
else if(appinfo.getOsType()==ComConfig.linuxType){
this.linuxItems.add(new GridItem(Bytes2Bimap(appinfo.getIcon()), appinfo.getID(), appinfo.getPath(),ComConfig.linuxType,true));
}
}
}
windowsLoadingBar.setVisibility(View.GONE);
linuxLoadingBar.setVisibility(View.GONE);
folderLoadingBar.setVisibility(View.GONE);
windowsGridView.setVisibility(View.VISIBLE);
linuxGridView.setVisibility(View.VISIBLE);
folderGridView.setVisibility(View.VISIBLE);
windowsGridView.setAdapter(windowsAdapter);
linuxGridView.setAdapter(linuxAdapter);
folderGridView.setAdapter(folderAdapter);
}
private void findviews()
{
rootLayout=(LinearLayout)findViewById(R.id.rootLayout);
mainLayout =(LinearLayout)findViewById(R.id.mainLayout);
view = getLayoutInflater().inflate(R.layout.folder_list, null);
folderWindow =new PopupWindow(view, 800, 600, true); //要设true
folderListGridView = (GridView)view.findViewById(R.id.folder_list_grid);
closeButton=(ImageButton)view.findViewById(R.id.close_btn);
// windowsGridView = (GridView)findViewById(R.id.windows_grid);
// linuxGridView = (GridView)findViewById(R.id.linux_grid);
// folderGridView =(GridView)findViewById(R.id.folder_grid);
windowsGridView = new MyGridView(this);
linuxGridView = new MyGridView(this);
folderGridView = new MyGridView(this);
windowsGridView.setPadding(10, 10, 10, 10);
windowsGridView.setStretchMode(GridView.STRETCH_COLUMN_WIDTH);
windowsGridView.setNumColumns(8);
windowsGridView.setColumnWidth(80);
windowsGridView.setVerticalSpacing(20);
windowsGridView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
windowsGridView.setGravity(Gravity.CENTER_HORIZONTAL);
mainLayout.addView(windowsGridView,2);
linuxGridView.setPadding(10, 10, 10, 10);
linuxGridView.setStretchMode(GridView.STRETCH_COLUMN_WIDTH);
linuxGridView.setNumColumns(8);
linuxGridView.setColumnWidth(80);
linuxGridView.setVerticalSpacing(20);
linuxGridView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
linuxGridView.setGravity(Gravity.CENTER_HORIZONTAL);
mainLayout.addView(linuxGridView,5);
folderGridView.setPadding(10, 10, 10, 10);
folderGridView.setStretchMode(GridView.STRETCH_COLUMN_WIDTH);
folderGridView.setNumColumns(8);
folderGridView.setColumnWidth(80);
folderGridView.setVerticalSpacing(20);
folderGridView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
folderGridView.setGravity(Gravity.CENTER_HORIZONTAL);
mainLayout.addView(folderGridView,8);
windowsLoadingBar=(LinearLayout)findViewById(R.id.windows_login_progressbar);
linuxLoadingBar=(LinearLayout)findViewById(R.id.linux_login_progressbar);
folderLoadingBar=(LinearLayout)findViewById(R.id.folder_login_progressbar);
}
private void listeners()
{
windowsGridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
GridItem item = MainActivity.this.windowsItems.get(position);
if (item != null) {
try {
item.startApp();
Intent intent = new Intent(MainActivity.this, VncCanvasActivity.class);
intent.putExtra(VncConstants.CONNECTION,Vnc.selected.Gen_getValues());
intent.putExtra("appType", "windows");
System.out.println("begin start VncCanvasActivity");
startActivity(intent);
System.out.println("end start VncCanvasActivity");
} catch (Exception e) {
// TODO Auto-generated catch block
LogService.getInstance().WriteLog("OpenAppFailed:"+ e.getMessage());
showToast("连接超时,请稍后再试");
}
}
}
});
linuxGridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
GridItem item = MainActivity.this.linuxItems.get(position);
if (item != null) {
try {
item.startApp();
Intent intent = new Intent(MainActivity.this, VncCanvasActivity.class);
intent.putExtra(VncConstants.CONNECTION,Vnc.selected.Gen_getValues());
intent.putExtra("appType", "linux");
System.out.println("begin start VncCanvasActivity");
startActivity(intent);
System.out.println("end start VncCanvasActivity");
} catch (Exception e) {
// TODO Auto-generated catch block
LogService.getInstance().WriteLog("OpenAppFailed:"+ e.getMessage());
showToast("连接超时,请稍后再试");
}
}
}
});
folderGridView.setOnItemClickListener(new OnItemClickListener() { //文件夹列表
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
GridItem item = MainActivity.this.folderItems.get(position);
if (item != null) {
if (!item.isLocal)
try {
item.openfolder();
} catch (Exception e) {
// TODO Auto-generated catch block
LogService.getInstance().WriteLog("openFolderSocketError:"+e.getMessage());
showToast("打开文件夹超时,请检查网络设置或稍后再试");
}
else
item.openlocalfolder(item.namepath);
}
}
});
folderListGridView.setOnItemClickListener(new OnItemClickListener() { //文件夹二级列表
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
GridItem item = MainActivity.this.folderListItems.get(position);
if (item != null) {
if (item.isVideo)
{
Intent intent = new Intent(MainActivity.this, CurtainActivity.class);
intent.putExtra("videoPath",item.namepath);
startActivity(intent);
}
else
{
try {
item.startApp();
Intent intent = new Intent(MainActivity.this, VncCanvasActivity.class);
intent.putExtra(VncConstants.CONNECTION,Vnc.selected.Gen_getValues());
System.out.println("begin start VncCanvasActivity");
startActivity(intent);
System.out.println("end start VncCanvasActivity");
} catch (Exception e) {
// TODO Auto-generated catch block
LogService.getInstance().WriteLog("OpenAppFailed:"+ e.getMessage());
showToast("连接超时,请稍后再试");
}
}
}
}
});
// folderListGridView.setOnClickListener(new OnClickListener() {
//
// @Override
// public void onClick(View arg0) {
// // TODO Auto-generated method stub
// System.out.print("fuck!");
// }
// });
closeButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
if(folderWindow != null)
{
folderWindow.dismiss();
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {//menu事件
// TODO Auto-generated method stub
menu.add(0, CUSTOMIZE_ID, 0, R.string.main_customize).setIcon(R.drawable.icon_customize);
menu.add(0, GRADESYSTEM_ID, 0, R.string.main_gradesystem).setIcon(R.drawable.icon_gradesystem);
menu.add(0, ABOUT_ID, 0, R.string.main_about).setIcon(R.drawable.icon_about);
menu.add(0, EXIT_ID, 0, R.string.main_exit).setIcon(R.drawable.icon_exit);
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()){
case CUSTOMIZE_ID:
if(isInitSuceessed == true)
{
Intent intent = new Intent(MainActivity.this, CustomizeActivity.class);
startActivity(intent);
}
else {
AlertDialog.Builder customBuilder = new AlertDialog.Builder(MainActivity.this);
customBuilder.setTitle(R.string.customize_title);
customBuilder.setMessage(R.string.customize_content);
customBuilder.setPositiveButton(R.string.exit_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
customBuilder.show();
}
break;
case GRADESYSTEM_ID:
if(isInitSuceessed == true)
{
Intent intent = new Intent(MainActivity.this, DyGradeSystemActivity.class);
startActivity(intent);
}
else {
AlertDialog.Builder customBuilder = new AlertDialog.Builder(MainActivity.this);
customBuilder.setTitle("正在载入中,请稍候");
customBuilder.setMessage(R.string.customize_content);
customBuilder.setPositiveButton(R.string.exit_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
customBuilder.show();
}
break;
case ABOUT_ID:
StringBuffer sb = new StringBuffer();
sb.append(getResources().getString(R.string.activity_is_about_title)).append("\n\n");
sb.append(getResources().getString(R.string.activity_is_about_content)).append("\n\n");
AlertDialog.Builder aboutBuilder = new AlertDialog.Builder(MainActivity.this);
aboutBuilder.setTitle(R.string.about_tilte);
aboutBuilder.setMessage(sb.toString());
aboutBuilder.setPositiveButton(R.string.exit_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
aboutBuilder.show();
break;
case EXIT_ID:
exit_cloudesk();
break;
}
return super.onMenuItemSelected(featureId, item);
}
public void showLocalFileList(List<java.io.File> listFile)
{
this.folderListItems = new ArrayList<GridItem>();
this.folderListAdapter = new FolderGridItemAdapter(this.folderListItems);
Resources res=getResources();
Bitmap icon=BitmapFactory.decodeResource(res, R.drawable.icon);
Bitmap wordIcon =BitmapFactory.decodeResource(res, R.drawable.word);
Bitmap pptIcon = BitmapFactory.decodeResource(res, R.drawable.ppt);
Bitmap pdfIcon = BitmapFactory.decodeResource(res, R.drawable.pdf);
Bitmap movieIcon = BitmapFactory.decodeResource(res, R.drawable.movie);
for(java.io.File file:listFile)
{
if(file.getName().toUpperCase().endsWith(".DOC"))
{
this.folderListItems.add(new GridItem(wordIcon, file.getName(), currentNamePath+file.getName(),ComConfig.windowsType ));
}
else if (file.getName().toUpperCase().endsWith(".PPT")) {
this.folderListItems.add(new GridItem(pptIcon, file.getName(), currentNamePath+file.getName(),ComConfig.windowsType ));
}
else if (file.getName().toUpperCase().endsWith(".MP4")||file.getName().toUpperCase().endsWith(".3GP") || file.getName().toUpperCase().endsWith(".WMV"))
{
this.folderListItems.add(new GridItem(true,true, movieIcon, file.getName(), currentNamePath+file.getName()));
}
else {
this.folderListItems.add(new GridItem(icon, file.getName(), currentNamePath+file.getName(),ComConfig.windowsType ));
}
}
folderListGridView.setAdapter(folderListAdapter);
folderWindow.showAtLocation(mainLayout, Gravity.CENTER, 0, 0);
};
public void notifyFileList(List<File> fileList) //文件夹二级窗口显示
{
AppData appData = (AppData)getApplicationContext();
this.runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
synchronized (folderListLockObject) {
folderListLockObject.wait();
}
folderListGridView.setAdapter(folderListAdapter);
folderWindow.showAtLocation(mainLayout, Gravity.CENTER, 0, 0);
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
this.folderListItems = new ArrayList<GridItem>();
this.folderListAdapter = new FolderGridItemAdapter(this.folderListItems);
Resources res=getResources();
Bitmap icon=BitmapFactory.decodeResource(res, R.drawable.icon);
Bitmap wordIcon =BitmapFactory.decodeResource(res, R.drawable.word);
Bitmap pptIcon = BitmapFactory.decodeResource(res, R.drawable.ppt);
Bitmap pdfIcon = BitmapFactory.decodeResource(res, R.drawable.pdf);
Bitmap movieIcon = BitmapFactory.decodeResource(res, R.drawable.movie);
if(fileList!=null)
{
for(File file:fileList)
{
if(file.type == 1)
{
if(file.fileName.contains(".doc"))
{
this.folderListItems.add(new GridItem(wordIcon, file.fileName, currentNamePath+file.fileName,ComConfig.windowsType ));
}
else if (file.fileName.contains(".ppt")) {
this.folderListItems.add(new GridItem(pptIcon, file.fileName, currentNamePath+file.fileName,ComConfig.windowsType ));
}
else if (file.fileName.toUpperCase().endsWith(".PDF"))
{
this.folderListItems.add(new GridItem(pdfIcon, file.fileName, currentNamePath+file.fileName,ComConfig.windowsType ));
}
else {
this.folderListItems.add(new GridItem(icon, file.fileName, currentNamePath+file.fileName,ComConfig.windowsType ));
}
}
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
synchronized (folderListLockObject) {
folderListLockObject.notify();
}
if( null != appData.getVmController())
{
appData.getVmController().terminate();
appData.setVmController(null);
}
}
public void dispalyAppInfo(AppInfo[] nativeApps, AppInfo[] customizeApps, Map<String, String> namePathPair)
{
flag = true;
this. runOnUiThread(new Runnable() {
@Override
public void run() {
// refresh ui 鐨勬搷浣滀唬鐮�
// windowsLoadingBar.setVisibility(View.VISIBLE);
// linuxLoadingBar.setVisibility(View.VISIBLE);
// folderLoadingBar.setVisibility(View.VISIBLE);
// windowsGridView.setVisibility(View.GONE);
// linuxGridView.setVisibility(View.GONE);
// folderGridView.setVisibility(View.GONE);
try {
synchronized (lockObject){
lockObject.wait();
}
windowsLoadingBar.setVisibility(View.GONE);
linuxLoadingBar.setVisibility(View.GONE);
folderLoadingBar.setVisibility(View.GONE);
windowsGridView.setVisibility(View.VISIBLE);
linuxGridView.setVisibility(View.VISIBLE);
folderGridView.setVisibility(View.VISIBLE);
windowsGridView.setAdapter(windowsAdapter);
linuxGridView.setAdapter(linuxAdapter);
folderGridView.setAdapter(folderAdapter);
isInitSuceessed = true;
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
this.windowsItems = new ArrayList<GridItem>();
this.windowsAdapter = new GridItemAdapter(this.windowsItems);
this.linuxItems = new ArrayList<GridItem>();
this.linuxAdapter = new GridItemAdapter(this.linuxItems);
this.folderItems = new ArrayList<GridItem>();
this.folderAdapter = new GridItemAdapter(this.folderItems);
if(nativeApps!=null)
{
for(AppInfo appinfo:nativeApps)
{
if(appinfo.getOsType()==ComConfig.windowsType)
{
this.windowsItems.add(new GridItem(Bytes2Bimap(appinfo.getIcon()), appinfo.getID(), appinfo.getPath(),ComConfig.windowsType));
}
else if(appinfo.getOsType()==ComConfig.linuxType) {
this.linuxItems.add(new GridItem(Bytes2Bimap(appinfo.getIcon()), appinfo.getID(), appinfo.getPath(),ComConfig.linuxType));
}
}
}
if(customizeApps!=null)
{
for(AppInfo appinfo:customizeApps)
{
if(appinfo.getOsType()==ComConfig.windowsType)
{
this.windowsItems.add(new GridItem(Bytes2Bimap(appinfo.getIcon()), appinfo.getID(), appinfo.getPath(),ComConfig.windowsType, true));
}
else if(appinfo.getOsType()==ComConfig.linuxType){
this.linuxItems.add(new GridItem(Bytes2Bimap(appinfo.getIcon()), appinfo.getID(), appinfo.getPath(),ComConfig.linuxType, true));
}
}
}
Resources res=getResources();
Bitmap folderIcon=BitmapFactory.decodeResource(res, R.drawable.folder);
Iterator iter = namePathPair.entrySet().iterator();
//录像文件夹
java.io.File file = new java.io.File(videoFolderPath);
if (file.exists())
this.folderItems.add(new GridItem(true, folderIcon, videoFolderName, videoFolderPath));
while(iter.hasNext())
{
Map.Entry<String,String> entry = (Map.Entry<String,String>)iter.next();
this.folderItems.add(new GridItem(folderIcon, entry.getKey(), entry.getValue()));
}
doSpecialProcess();
synchronized (lockObject){
lockObject.notify();
}
}
ArrayList<GridItem> tempFolderItems;
public void getSpecial(String key)
{
int t = -1;
for (int i = 0; i < this.folderItems.size(); ++i)
{
if (this.folderItems.get(i).appName.startsWith(key))
{
tempFolderItems.add(this.folderItems.get(i));
t = i;
break;
}
}
if (t != -1)
this.folderItems.remove(t);
return ;
}
public void doSpecialProcess()
{
tempFolderItems = new ArrayList<GridItem>();
getSpecial("录像");
getSpecial("简报");
getSpecial("任务书");
getSpecial("2007");
getSpecial("2008");
getSpecial("2009");
getSpecial("2010");
getSpecial("2011");
for (int i = 1; i <= 8; ++i)
{
getSpecial("课题"+i);
}
for (int i = 0; i < this.folderItems.size(); ++i)
{
tempFolderItems.add(this.folderItems.get(i));
}
this.folderItems = new ArrayList<GridItem>();
for (int i = 0 ; i < this.tempFolderItems.size();++i)
{
this.folderItems.add(tempFolderItems.get(i));
}
this.folderAdapter = new GridItemAdapter(this.folderItems);
return ;
}
public void notifyCustomizeAppResult(boolean bCustomizeRestlt, AppInfo appInfo)
{
}
public void notifyUnCustomizeAppResult(boolean bSuccessToRequest,String appID)
{
}
public void notifySaveSceneResult(int saveSceneResult)
{
}
/* ===================== 鍥惧舰杞崲 ======================== */
private Bitmap Bytes2Bimap(byte[] b) //byte转成bitmap
{
if(b.length!=0)
{
return BitmapFactory.decodeByteArray(b, 0, b.length);
}
else {
return null;
}
}
/* ===================== Adapter ======================== */
private class GridItem{
private Bitmap icon;
public String appName;
private String namepath;
private String appPath;
private int osType;
private boolean isCustomize;
private boolean isLocal = false;
private boolean isVideo = false;
private GridItem(Bitmap icon, String appName, String appPath, int osType,boolean isCustomize) { //定制文件初始化
this.icon = icon;
this.appName = appName;
this.appPath =appPath;
this.osType = osType;
this.isCustomize = isCustomize;
this.namepath=null;
}
private GridItem(Bitmap icon, String appName, String appPath, int osType) { //基础文件初始化
this.icon = icon;
this.appName = appName;
this.appPath =appPath;
this.osType = osType;
this.isCustomize = false;
this.namepath=null;
}
private GridItem(Bitmap icon, String appName, String namepath) //文件夹列表初始化
{
this.icon = icon;
this.appName = appName;
this.namepath = namepath;
this.isCustomize =false;
this.osType = -1;//没有ostype
this.appPath =null;
}
private GridItem(boolean isLocal, Bitmap icon, String appName, String namepath) //文件夹列表初始化
{
this.isLocal = isLocal;
this.icon = icon;
this.appName = appName;
this.namepath = namepath;
this.isCustomize =false;
this.osType = -1;//没有ostype
this.appPath =null;
}
private GridItem(boolean isLocal, boolean isVideo, Bitmap icon, String appName, String namepath) //文件夹列表初始化
{
this.isLocal = isLocal;
this.isVideo = isVideo;
this.icon = icon;
this.appName = appName;
this.namepath = namepath;
this.isCustomize =false;
this.osType = -1;//没有ostype
this.appPath =null;
}
private void linkToVM() throws Exception
{
String windowsIP = null;
Transmitter tmpTransmitter = null;
Controller tmpController = new Controller();
tmpController.setCurrentState(CoreConfig.onlineState);
AppData appData = (AppData)getApplicationContext();
appData.setVmController(tmpController);
VMInfo[] vmInfo = controller.getVMs();
for(int i = 0 ; i < vmInfo.length ; i++)
{
if(vmInfo[i].getOs().equals("windows"))
{
windowsIP = IPUtil.intToString(vmInfo[i].getIp());
}
}
tmpTransmitter = new Transmitter(appData.getVmController(), windowsIP, "50001");
appData.setVmTransmitter(tmpTransmitter);
appData.getVmController().init(appData.getVmTransmitter(), new MoblieClientUI(), new Vnc());
appData.getVmController().start();
}
public void openfolder() throws Exception //打开文件夹
{
AppData appData = (AppData)getApplicationContext();
linkToVM();
currentNamePath = namepath;
appData.getVmController().requestFileList(namepath);
// folderWindow.showAtLocation(rootLayout, Gravity.CENTER, 0, 0);
// folderListItems = new ArrayList<GridItem>();
// folderListAdapter = new GridItemAdapter(folderListItems);
// Resources res=getResources();
// Bitmap icon=BitmapFactory.decodeResource(res, R.drawable.icon);
//
// MainActivity.this.folderListItems.add(new GridItem(icon, "word", currentNamePath+"word",ComConfig.windowsType ));
// folderListGridView.setAdapter(folderListAdapter);
}
public void openlocalfolder(String path)
{
ArrayList<java.io.File> listFile = new ArrayList<java.io.File>();
ArrayList<String> listName = new ArrayList<String>();
listName.clear();
listFile.clear();
videoFileFilter vf = new videoFileFilter();
java.io.File file =new java.io.File(path);
java.io.File[] files = file.listFiles(vf);
for(java.io.File f : files){
listName.add(f.getName());
listFile.add(f);
}
currentNamePath = namepath+"/";
showLocalFileList(listFile);
}
public void startApp() throws Exception
{
controller.startSelectedApp(this.appName, this.appPath, 0, this.osType);
}
}
private class GridItemAdapter extends BaseAdapter
{
private ArrayList<GridItem> items;
private GridItemAdapter(ArrayList<GridItem> 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;
GridItem item;
if(view ==null){
view = getLayoutInflater().inflate(R.layout.grid_item, null);
}
if((item = this.items.get(position))==null){
return view;
}
ImageView iv =(ImageView)view.findViewById(R.id.image_item);
TextView tv =(TextView)view.findViewById(R.id.text_item);
tv.setText(item.appName);
iv.setImageBitmap(item.icon);
return view;
}
}
private class FolderGridItemAdapter extends BaseAdapter
{
private ArrayList<GridItem> items;
private FolderGridItemAdapter(ArrayList<GridItem> 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;
GridItem item;
if(view ==null){
view = getLayoutInflater().inflate(R.layout.folder_item, null);
}
if((item = this.items.get(position))==null){
return view;
}
ImageView iv =(ImageView)view.findViewById(R.id.image_item1);
TextView tv =(TextView)view.findViewById(R.id.text_item1);
tv.setText(item.appName);
iv.setImageBitmap(item.icon);
return view;
}
}
public class MyGridView extends GridView{ //重写Gridview的onMeasure事件,保证不会出现UI显示上的bug
public MyGridView(Context context, AttributeSet attrs){
super(context,attrs);
}
public MyGridView(Context context) {
super(context);
}
public MyGridView(Context context,AttributeSet attrs, int defStyle){
super(context, attrs, defStyle);
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
private void exit_cloudesk() //退出cloudesk
{
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle(R.string.exit_title);
builder.setMessage(R.string.exit_confirm);
builder.setPositiveButton(R.string.exit_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
controller.logout();
AppData appData = (AppData)getApplicationContext();
appData.setInstall(false);
isInitSuceessed=false;
MyApplicationAid.getInstance().exit();
System.exit(0);
}
});
builder.setNeutralButton(R.string.exit_cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.show();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// Do something.
exit_cloudesk();
// controller.logout();
// AppData appData = (AppData)getApplicationContext();
// appData.setInstall(false);
// this.finish();//直接调用杀死当前activity方法.
return true;
}
return super.onKeyDown(keyCode, event);
}
//added by dhm 2011/10/05
public void showTimeOut()
{
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
// TODO Auto-generated method stub
AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this);
builder1.setTitle("Warning");
builder1.setMessage("连接超时,请稍后再试");
builder1.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
int k = 1;
if (MainActivity.this != null)
k = 2;
int j = k +2;
builder1.create().show();
}
});
}
private void showToast(String msg) {
Toast toast = Toast.makeText(MainActivity.this,
msg, Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
}
class videoFileFilter implements FilenameFilter
{
@Override
public boolean accept(java.io.File dir, String name) {
// TODO Auto-generated method stub
return (name.toUpperCase().endsWith(".MP4") || name.toUpperCase().endsWith(".3GP")|| name.toUpperCase().endsWith(".WMV"));
}
};