/******************************************************************************* * Copyright 2011, 2012, 2013 fanfou.com, Xiaoke, Zhang * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ package com.fanfou.app.opensource.ui; import java.util.List; import android.app.Activity; import android.content.Context; import android.database.Cursor; import android.view.View; import android.widget.BaseAdapter; import com.fanfou.app.opensource.AppContext; import com.fanfou.app.opensource.R; import com.fanfou.app.opensource.api.bean.Status; import com.fanfou.app.opensource.dialog.ConfirmDialog; import com.fanfou.app.opensource.service.FanfouServiceManager; import com.fanfou.app.opensource.ui.quickaction.ActionItem; import com.fanfou.app.opensource.ui.quickaction.QuickAction; /** * @author mcxiaoke * @version 1.0 2011.06.09 * @version 1.1 2011.10.25 * @version 1.2 2011.10.27 * @version 1.3 2011.10.28 * @version 2.0 2011.10.29 * @version 2.1 2011.11.07 * @version 3.0 2011.12.19 * @version 3.1 2011.12.23 * */ public final class UIManager { public abstract static class ActionResultHandler implements ActionManager.ResultListener { @Override public void onActionFailed(final int type, final String message) { } } public static final int QUICK_ACTION_ID_REPLY = 0; public static final int QUICK_ACTION_ID_DELETE = 1; public static final int QUICK_ACTION_ID_RETWEET = 2; public static final int QUICK_ACTION_ID_FAVORITE = 3; public static final int QUICK_ACTION_ID_UNFAVORITE = 4; public static final int QUICK_ACTION_ID_PROFILE = 5; public static final int QUICK_ACTION_ID_SHARE = 6; public static void doDelete(final Activity activity, final Status s, final BaseAdapter adapter) { final ActionResultHandler li = new ActionResultHandler() { @Override public void onActionSuccess(final int type, final String message) { adapter.notifyDataSetChanged(); } }; FanfouServiceManager.doStatusDelete(activity, s.id, li); } public static void doDelete(final Activity activity, final Status s, final BaseAdapter adapter, final List<Status> ss) { final ActionResultHandler li = new ActionResultHandler() { @Override public void onActionSuccess(final int type, final String message) { ss.remove(s); adapter.notifyDataSetChanged(); } }; FanfouServiceManager.doStatusDelete(activity, s.id, li); } public static void doDelete(final Activity activity, final Status s, final Cursor c) { final ActionResultHandler li = new ActionResultHandler() { @Override public void onActionSuccess(final int type, final String message) { c.requery(); } }; FanfouServiceManager.doStatusDelete(activity, s.id, li); } public static QuickAction makePopup(final Context context, final Status status) { final ActionItem reply = new ActionItem( UIManager.QUICK_ACTION_ID_REPLY, "回复", context.getResources() .getDrawable(R.drawable.ic_pop_reply)); final ActionItem delete = new ActionItem( UIManager.QUICK_ACTION_ID_DELETE, "删除", context.getResources() .getDrawable(R.drawable.ic_pop_delete)); final ActionItem retweet = new ActionItem( UIManager.QUICK_ACTION_ID_RETWEET, "转发", context.getResources() .getDrawable(R.drawable.ic_pop_retweet)); final ActionItem favorite = new ActionItem( UIManager.QUICK_ACTION_ID_FAVORITE, "收藏", context .getResources().getDrawable(R.drawable.ic_pop_favorite)); // favorite.setSticky(true); final ActionItem unfavorite = new ActionItem( UIManager.QUICK_ACTION_ID_UNFAVORITE, "取消", context .getResources().getDrawable( R.drawable.ic_pop_unfavorite)); // unfavorite.setSticky(true); final ActionItem profile = new ActionItem( UIManager.QUICK_ACTION_ID_PROFILE, "空间", context.getResources() .getDrawable(R.drawable.ic_pop_profile)); final ActionItem share = new ActionItem( UIManager.QUICK_ACTION_ID_SHARE, "分享", context.getResources() .getDrawable(R.drawable.ic_pop_share)); final boolean me = status.userId.equals(AppContext.getUserId()); final QuickAction q = new QuickAction(context, QuickAction.HORIZONTAL); q.addActionItem(me ? delete : reply); q.addActionItem(retweet); q.addActionItem(status.favorited ? unfavorite : favorite); q.addActionItem(share); q.addActionItem(profile); return q; } public static void showPopup(final Activity a, final Cursor c, final View v, final Status s) { final QuickAction q = UIManager.makePopup(a, s); q.setOnActionItemClickListener(new QuickAction.OnActionItemClickListener() { @Override public void onItemClick(final QuickAction source, final int pos, final int actionId) { switch (actionId) { case QUICK_ACTION_ID_REPLY: ActionManager.doReply(a, s); break; case QUICK_ACTION_ID_DELETE: final ConfirmDialog dialog = new ConfirmDialog(a, "删除消息", "要删除这条消息吗?"); dialog.setClickListener(new ConfirmDialog.AbstractClickHandler() { @Override public void onButton1Click() { UIManager.doDelete(a, s, c); } }); dialog.show(); break; case QUICK_ACTION_ID_FAVORITE: case QUICK_ACTION_ID_UNFAVORITE: FanfouServiceManager.doFavorite(a, s, c); break; case QUICK_ACTION_ID_RETWEET: ActionManager.doRetweet(a, s); break; case QUICK_ACTION_ID_SHARE: ActionManager.doShare(a, s); break; case QUICK_ACTION_ID_PROFILE: ActionManager.doProfile(a, s); break; default: break; } } }); q.show(v); } public static void showPopup(final Activity a, final View v, final Status s, final BaseAdapter adapter) { final QuickAction q = UIManager.makePopup(a, s); q.setOnActionItemClickListener(new QuickAction.OnActionItemClickListener() { @Override public void onItemClick(final QuickAction source, final int pos, final int actionId) { switch (actionId) { case QUICK_ACTION_ID_REPLY: ActionManager.doReply(a, s); break; case QUICK_ACTION_ID_DELETE: final ConfirmDialog dialog = new ConfirmDialog(a, "删除消息", "要删除这条消息吗?"); dialog.setClickListener(new ConfirmDialog.AbstractClickHandler() { @Override public void onButton1Click() { UIManager.doDelete(a, s, adapter); } }); dialog.show(); break; case QUICK_ACTION_ID_FAVORITE: case QUICK_ACTION_ID_UNFAVORITE: FanfouServiceManager.doFavorite(a, s, adapter); break; case QUICK_ACTION_ID_RETWEET: ActionManager.doRetweet(a, s); break; case QUICK_ACTION_ID_SHARE: ActionManager.doShare(a, s); break; case QUICK_ACTION_ID_PROFILE: ActionManager.doProfile(a, s); break; default: break; } } }); q.show(v); } public static void showPopup(final Activity a, final View v, final Status s, final BaseAdapter adapter, final List<Status> ss) { final QuickAction q = UIManager.makePopup(a, s); q.setOnActionItemClickListener(new QuickAction.OnActionItemClickListener() { @Override public void onItemClick(final QuickAction source, final int pos, final int actionId) { switch (actionId) { case QUICK_ACTION_ID_REPLY: ActionManager.doReply(a, s); break; case QUICK_ACTION_ID_DELETE: final ConfirmDialog dialog = new ConfirmDialog(a, "删除消息", "要删除这条消息吗?"); dialog.setClickListener(new ConfirmDialog.AbstractClickHandler() { @Override public void onButton1Click() { UIManager.doDelete(a, s, adapter, ss); } }); dialog.show(); break; case QUICK_ACTION_ID_FAVORITE: case QUICK_ACTION_ID_UNFAVORITE: FanfouServiceManager.doFavorite(a, s, adapter); break; case QUICK_ACTION_ID_RETWEET: ActionManager.doRetweet(a, s); break; case QUICK_ACTION_ID_SHARE: ActionManager.doShare(a, s); break; case QUICK_ACTION_ID_PROFILE: ActionManager.doProfile(a, s); break; default: break; } } }); q.show(v); } }