package cn.walcl.ulauncher.actions; import java.util.ArrayList; import java.util.List; import cn.walcl.ulauncher.Launcher; import cn.walcl.ulauncher.R; import android.content.Intent; import android.database.DataSetObserver; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListAdapter; import android.widget.TextView; public class LauncherActions { public interface Action { public String getName(); public void putIntentExtras(Intent intent); public boolean runIntent(Intent intent); public int getIconResourceId(); } private static LauncherActions mInstance = null; private Launcher mLauncher; public static synchronized LauncherActions getInstance() { if (mInstance == null) mInstance = new LauncherActions(); return mInstance; } private LauncherActions() { } public void init(Launcher launcher) { mLauncher = launcher; } Launcher getLauncher() { return mLauncher; } public List<Action> getList() { List<Action> result = new ArrayList<Action>(); DefaultAction.GetActions(result); return result; } public Intent getIntentForAction(Action action) { Intent result = new Intent(RunActionActivity.ACTION_LAUNCHERACTION); result.setClass(mLauncher, RunActionActivity.class); action.putIntentExtras(result); return result; } void launch(Intent intent) { final List<Action> actions = getList(); for(Action act : actions) { if (act.runIntent(intent)) break; } } public ListAdapter getSelectActionAdapter() { final List<Action> mActions = getList(); return new ListAdapter() { @Override public void unregisterDataSetObserver(DataSetObserver observer) { } @Override public void registerDataSetObserver(DataSetObserver observer) { } @Override public boolean isEmpty() { return mActions.isEmpty(); } @Override public boolean hasStableIds() { return false; } @Override public int getViewTypeCount() { return 1; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater li = mLauncher.getLayoutInflater(); convertView = li.inflate(R.layout.add_list_item, parent, false); } Action act = mActions.get(position); TextView textView = (TextView) convertView; textView.setText(act.getName()); textView.setCompoundDrawablesWithIntrinsicBounds( mLauncher.getResources().getDrawable(act.getIconResourceId()), null, null, null); return convertView; } @Override public int getItemViewType(int position) { return 0; } @Override public long getItemId(int position) { return position; } @Override public Object getItem(int position) { return mActions.get(position); } @Override public int getCount() { return mActions.size(); } @Override public boolean isEnabled(int position) { return true; } @Override public boolean areAllItemsEnabled() { return true; } }; } }