package cn.koolcloud.ipos.appstore.fragment.tab; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.app.FragmentManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.RelativeLayout; import android.widget.TextView; import cn.koolcloud.ipos.appstore.R; import cn.koolcloud.ipos.appstore.adapter.UpdateAppsListAdapter; import cn.koolcloud.ipos.appstore.cache.database.CacheDB; import cn.koolcloud.ipos.appstore.entity.App; import cn.koolcloud.ipos.appstore.entity.AppInfo; import cn.koolcloud.ipos.appstore.fragment.base.BaseFragment; import cn.koolcloud.ipos.appstore.utils.Env; import cn.koolcloud.ipos.appstore.utils.Logger; import cn.koolcloud.ipos.appstore.utils.ToastUtil; import cn.koolcloud.ipos.appstore.views.AppStoreListView; /** * <p>Title: UpdateSoftwareFragment.java </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2013</p> * <p>Company: All In Pay</p> * @author Teddy * @date 2013-11-26 * @version */ public class UpdateSoftwareFragment extends BaseFragment { private static final String TAG = "UpdateSoftwareFragment"; private final int HANDLE_UPDATE_APP = 0; private final int GENERAL_APPS_INSTALL_REQUEST = 1; private FragmentManager fragManager; private AppStoreListView mListView; private TextView groupTextView; private TextView updateAllTextView; private TextView ignoreTextView; private RelativeLayout updateAllLayout; private static UpdateAppsListAdapter updateAppListAdapter = null; private static List<App> appListDataSource = new ArrayList<App>(); //apps data source public static UpdateSoftwareFragment getInstance() { UpdateSoftwareFragment updateSoftwareFragment = new UpdateSoftwareFragment(); return updateSoftwareFragment; } @Override public void onAttach(Activity activity) { super.onAttach(activity); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); fragManager = getFragmentManager(); initViews(); if (isAdded() && getActivity() != null) { new CheckUpdateSoftwareThread().start(); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.update_list_grid, container, false); } @Override public void onStart() { super.onStart(); showLoading(); } private void initViews() { mListView = (AppStoreListView) getActivity().findViewById(R.id.normal_list_grid); mListView.setPullRefreshEnable(false); mListView.setPullLoadEnable(false); groupTextView = (TextView) getActivity().findViewById(R.id.group_name); updateAllLayout = (RelativeLayout) getActivity().findViewById(R.id.update_all_layout); updateAllTextView = (TextView) getActivity().findViewById(R.id.update_all); ignoreTextView = (TextView) getActivity().findViewById(R.id.view_ignore); } Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case HANDLE_UPDATE_APP: updateAppListAdapter = new UpdateAppsListAdapter(getActivity(), appListDataSource, mHandler, application); mListView.setAdapter(updateAppListAdapter); updateAppListAdapter.notifyDataSetChanged(); dismissLoading(); break; case GENERAL_APPS_INSTALL_REQUEST: File file = (File) msg.obj; // Env.install(getActivity(), file, GENERAL_APPS_INSTALL_REQUEST); if (file.exists()) { /*Intent intent = new Intent(Intent.ACTION_VIEW); try { Runtime.getRuntime().exec("chmod 655 " + file.toString()); } catch (IOException e) { e.printStackTrace(); } intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); if (isAdded() && getActivity() != null) { getActivity().startActivityForResult(intent, GENERAL_APPS_INSTALL_REQUEST); }*/ if (isAdded() && getActivity() != null) { Env.install(getActivity(), file, GENERAL_APPS_INSTALL_REQUEST); } } else { ToastUtil.showToast(application, R.string.str_apk_download_failure); } break; default: break; } } }; @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == UpdateAppsListAdapter.GENERAL_APPS_INSTALL_REQUEST && resultCode == Activity.RESULT_CANCELED) { mListView.setAdapter(updateAppListAdapter); updateAppListAdapter.notifyDataSetChanged(); } } //check out the installed software and compare the version with the cache in the database class CheckUpdateSoftwareThread extends Thread { @Override public void run() { List<AppInfo> installedSoftList = Env.getInstalledAppsToList(application, false); CacheDB cacheDB = CacheDB.getInstance(application); appListDataSource = cacheDB.getUpdatedSoft(installedSoftList); Message msg = mHandler.obtainMessage(); msg.what = HANDLE_UPDATE_APP; mHandler.sendMessage(msg); } } public static void refreshDataSet(List<App> appList) { if (appList != null ) { appListDataSource.clear(); appListDataSource.addAll(appList); } if (updateAppListAdapter != null) { updateAppListAdapter.notifyDataSetChanged(); } Logger.d("refresh update software successfull!"); } }