package com.dappervision.wearscript.launcher; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.LinearLayout; import android.widget.ListAdapter; import android.widget.ListView; import com.dappervision.wearscript.HardwareDetector; import com.google.android.glass.widget.CardScrollAdapter; import com.google.android.glass.widget.CardScrollView; public class ScriptListFragment extends Fragment { BroadcastReceiver mPackageBroadcastReciever = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { updateUI(); } }; AdapterView.OnItemClickListener mOnItemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { WearScriptInfo info = (WearScriptInfo) mListAdapter.getItem(i); mCallbacks.onScriptSelected(info); } }; //private static final String TAG = "ScriptListFragment"; private InstalledScripts mInstalledScripts; private AdapterView adapterView; private Callbacks mCallbacks; private ListAdapter mListAdapter; public static ScriptListFragment newInstance() { ScriptListFragment fragment = new ScriptListFragment(); return fragment; } @Override public void onAttach(Activity activity) { super.onAttach(activity); mCallbacks = (Callbacks) activity; } @Override public void onDetach() { super.onDetach(); mCallbacks = null; } public void updateUI() { mInstalledScripts.load(); } public ListAdapter buildListAdapter() { if (HardwareDetector.isGlass) { return new WearScriptsCardAdapter(this, mInstalledScripts); } else { return new WearScriptsAdapter(this, mInstalledScripts); } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mInstalledScripts = new InstalledScripts(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); intentFilter.addDataScheme("package"); getActivity().registerReceiver(mPackageBroadcastReciever, intentFilter); mListAdapter = buildListAdapter(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { LinearLayout layout = new LinearLayout(getActivity()); if (HardwareDetector.isGlass) { CardScrollView view = new CardScrollView(getActivity()); view.setHorizontalScrollBarEnabled(true); view.setAdapter((CardScrollAdapter) mListAdapter); view.activate(); adapterView = view; } else { adapterView = new ListView(getActivity()); adapterView.setAdapter(mListAdapter); } adapterView.setOnItemClickListener(mOnItemClickListener); layout.addView(adapterView); return layout; } @Override public void onResume() { super.onResume(); adapterView.requestFocus(); } @Override public void onDestroy() { super.onDestroy(); getActivity().unregisterReceiver(mPackageBroadcastReciever); } public interface Callbacks { void onScriptSelected(WearScriptInfo scriptInfo); } }