package cn.koolcloud.ipos.appstore.ui; import java.util.Map; import android.content.Intent; import android.content.pm.PackageInfo; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.widget.ArrayAdapter; import cn.koolcloud.ipos.appstore.R; import cn.koolcloud.ipos.appstore.fragment.LeftCategoryFragment; import cn.koolcloud.ipos.appstore.fragment.tab.NormalListFragment; import cn.koolcloud.ipos.appstore.utils.Env; import cn.koolcloud.ipos.appstore.utils.Logger; import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.app.ActionBar.OnNavigationListener; import com.actionbarsherlock.widget.SearchView; public class CategoryMainActivity extends BaseActivity { private final static String TAG = "CategoryMainActivity"; private final int INIT_APP_INFOS = 0; private SearchView searchView; //search view in action bar private ActionBar actionBar; //action bar private boolean useLogo = false; //action bar logo private boolean showHomeUp = true; //show home up in action bar private FragmentManager fragmentManager = null; private Bundle mBundle; private static CategoryMainActivity instance; public static CategoryMainActivity getInstance() { return instance; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); instance = this; setContentView(R.layout.main_framework); fragmentManager = getSupportFragmentManager(); mBundle = getIntent().getExtras(); activityList.add(this); initActionBar(); initFragments(); } /** * @Title: initActionBar * @Description: Initialize Action Bar * @param * @return void * @throws */ private void initActionBar() { actionBar = getSupportActionBar(); // set defaults for logo & home up actionBar.setDisplayHomeAsUpEnabled(showHomeUp); actionBar.setDisplayUseLogoEnabled(useLogo); actionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.title_bg)); actionBar.setIcon(R.drawable.logo); // set up list nav actionBar.setListNavigationCallbacks(ArrayAdapter.createFromResource(this, R.array.sections, R.layout.sherlock_spinner_dropdown_item), new OnNavigationListener() { public boolean onNavigationItemSelected(int itemPosition, long itemId) { // FIXME add proper implementation return false; } }); } private void initFragments() { //navigation bar LeftCategoryFragment navFragment = LeftCategoryFragment.getInstance(); navFragment.setArguments(mBundle); //replace FrameLayout with left category fragment and home frame with apps fragment FragmentTransaction fragTransaction = fragmentManager.beginTransaction(); fragTransaction.replace(R.id.left_content, (Fragment) navFragment); fragTransaction.commit(); } public void refreshLocalSoftData() { /*((AppStoreApplication) application).initApps(); try { //delay execute invoke refresh data set Thread.currentThread().sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); }*/ // NormalListFragment.refreshDataSet(); new InitAppsThread().start(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // super.onActivityResult(requestCode, resultCode, data); NormalListFragment normalFragment = (NormalListFragment) fragmentManager.findFragmentById(R.id.frame_content); if (normalFragment != null) { normalFragment.onActivityResult(requestCode, resultCode, data); } } /*@Override protected void onDestroy() { activityList.remove(this); super.onDestroy(); }*/ Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case INIT_APP_INFOS: NormalListFragment.refreshDataSet(); break; default: break; } } }; //init apps in a new thread class InitAppsThread extends Thread { @Override public void run() { Logger.d("invoke scan local apps"); Long start = System.currentTimeMillis(); Map<String, PackageInfo> installedPackage = Env.scanInstalledAppToMap(getApplicationContext()); Long end = System.currentTimeMillis(); Logger.d("total time:" + (end - start)); //cache installed package application.saveInstalledAppsInfo(installedPackage); Message msg = mHandler.obtainMessage(); msg.obj = installedPackage; msg.what = INIT_APP_INFOS; mHandler.sendMessage(msg); } } }