/**
*
*/
package com.mcxiaoke.minicat.controller;
import android.app.Activity;
import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Handler;
import android.os.Message;
import com.mcxiaoke.minicat.app.UIAbout;
import com.mcxiaoke.minicat.app.UIConversation;
import com.mcxiaoke.minicat.app.UIDebugMode;
import com.mcxiaoke.minicat.app.UIFavorites;
import com.mcxiaoke.minicat.app.UIGallery;
import com.mcxiaoke.minicat.app.UIHome;
import com.mcxiaoke.minicat.app.UILogin;
import com.mcxiaoke.minicat.app.UIOptions;
import com.mcxiaoke.minicat.app.UIPhoto;
import com.mcxiaoke.minicat.app.UIPhotos;
import com.mcxiaoke.minicat.app.UIProfile;
import com.mcxiaoke.minicat.app.UIRecords;
import com.mcxiaoke.minicat.app.UISearch;
import com.mcxiaoke.minicat.app.UISearchResults;
import com.mcxiaoke.minicat.app.UIStatus;
import com.mcxiaoke.minicat.app.UIThread;
import com.mcxiaoke.minicat.app.UITimeline;
import com.mcxiaoke.minicat.app.UIUserList;
import com.mcxiaoke.minicat.app.UIWrite;
import com.mcxiaoke.minicat.dao.model.DirectMessageModel;
import com.mcxiaoke.minicat.dao.model.StatusModel;
import com.mcxiaoke.minicat.dao.model.StatusUpdateInfo;
import com.mcxiaoke.minicat.dao.model.UserModel;
import com.mcxiaoke.minicat.service.SyncService;
import com.mcxiaoke.minicat.util.StatusHelper;
import com.mcxiaoke.minicat.util.Utils;
import java.util.ArrayList;
/**
* @author mcxiaoke
* @version 1.1 2012.04.24
*/
public class UIController {
private static void startUIByAnimation(Activity activity, Intent intent) {
activity.startActivity(intent);
}
private static void startUIByAnimationBack(Activity activity, Intent intent) {
activity.startActivity(intent);
}
public static void showFanfouBlog(Context context) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://blog.fanfou.com/"));
context.startActivity(intent);
}
public static void showOption(Activity context) {
Intent intent = new Intent(context, UIOptions.class);
startUIByAnimation(context, intent);
}
public static void goStatusPage(Activity context, StatusModel s) {
if (s != null) {
Intent intent = new Intent(context, UIStatus.class);
intent.putExtra("data", s);
startUIByAnimation(context, intent);
}
}
public static void showDebug(Activity context) {
startUIByAnimation(context, new Intent(context, UIDebugMode.class));
}
public static void showAbout(Activity context) {
startUIByAnimation(context, new Intent(context, UIAbout.class));
}
public static void showLogin(Context context) {
Intent intent = new Intent(context, UILogin.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent);
}
public static void showTopic(Activity context) {
startUIByAnimation(context, new Intent(context, UISearch.class));
}
public static void showHome(Activity context) {
Intent intent = new Intent(context, UIHome.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent);
}
public static void showConversation(Activity context, DirectMessageModel dm) {
Intent intent = new Intent(context, UIConversation.class);
intent.putExtra("refresh", true);
if (dm.isIncoming()) {
intent.putExtra("id", dm.getSenderId());
intent.putExtra("screen_name", dm.getSenderScreenName());
intent.putExtra("profile_image_url", dm.getSenderProfileImageUrl());
} else {
intent.putExtra("id", dm.getRecipientId());
intent.putExtra("screen_name", dm.getRecipientScreenName());
intent.putExtra("profile_image_url",
dm.getRecipientProfileImageUrl());
}
startUIByAnimation(context, intent);
}
public static void showConversation(Activity context, UserModel user,
boolean refresh) {
Intent intent = new Intent(context, UIConversation.class);
intent.putExtra("id", user.getId());
intent.putExtra("screen_name", user.getScreenName());
intent.putExtra("profile_image_url", user.getProfileImageUrlLarge());
intent.putExtra("refresh", refresh);
startUIByAnimation(context, intent);
}
public static void showWrite(Activity activity) {
Intent intent = new Intent(activity, UIWrite.class);
startUIByAnimation(activity, intent);
}
public static void goBackToWrite(Activity activity, StatusUpdateInfo info) {
Intent intent = new Intent(activity, UIWrite.class);
intent.putExtra(StatusUpdateInfo.TAG, info);
startUIByAnimationBack(activity, intent);
}
public static void showWrite(Activity context, String text) {
Intent intent = new Intent(context, UIWrite.class);
intent.putExtra("text", text);
startUIByAnimation(context, intent);
}
public static void doFavorite(final Context context, String id) {
final Handler handler = getFavoriteHandler(context);
SyncService.favorite(context, id, handler);
}
public static void doUnFavorite(final Context context, String id) {
final Handler handler = getFavoriteHandler(context);
SyncService.unfavorite(context, id, handler);
}
private static Handler getFavoriteHandler(final Context context) {
final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case SyncService.RESULT_SUCCESS:
boolean favorited = msg.getData().getBoolean("boolean");
Utils.notify(context, favorited ? "收藏成功" : "取消收藏成功");
break;
case SyncService.RESULT_ERROR:
break;
default:
break;
}
}
};
return handler;
}
public static void doRetweet(Activity context, final StatusModel status) {
Intent intent = new Intent(context, UIWrite.class);
StringBuilder builder = new StringBuilder();
builder.append(" 转@").append(status.getUserScreenName()).append(" ")
.append(status.getSimpleText());
intent.putExtra("text", builder.toString());
intent.putExtra("id", status.getId());
intent.putExtra("type", StatusUpdateInfo.TYPE_REPOST);
startUIByAnimation(context, intent);
}
public static void doShare(Context context, StatusModel status) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "来自" + status.getUserScreenName()
+ "的饭否消息");
intent.putExtra(Intent.EXTRA_TEXT, status.getSimpleText());
context.startActivity(Intent.createChooser(intent, "分享"));
}
public static void doReply(Activity context, StatusModel status) {
if (status != null) {
StringBuilder sb = new StringBuilder();
boolean replyToAll = true;
if (replyToAll) {
ArrayList<String> names = StatusHelper.getMentions(status);
for (String name : names) {
sb.append("@").append(name).append(" ");
}
} else {
sb.append("@").append(status.getUserScreenName()).append(" ");
}
Intent intent = new Intent(context, UIWrite.class);
intent.putExtra("id", status.getId());
intent.putExtra("text", sb.toString());
intent.putExtra("type", StatusUpdateInfo.TYPE_REPLY);
startUIByAnimation(context, intent);
} else {
showWrite(context);
}
}
public static void showRecords(Activity context) {
Intent intent = new Intent(context, UIRecords.class);
startUIByAnimation(context, intent);
}
public static void showProfile(Activity context, String id) {
Intent intent = new Intent(context, UIProfile.class);
intent.putExtra("id", id);
startUIByAnimation(context, intent);
}
public static void showProfile(Activity context, UserModel user) {
Intent intent = new Intent(context, UIProfile.class);
intent.putExtra("id", user.getId());
startUIByAnimation(context, intent);
}
public static void showTimeline(Activity context, UserModel user) {
Intent intent = new Intent(context, UITimeline.class);
intent.putExtra("data", user);
startUIByAnimation(context, intent);
}
public static void showFavorites(Activity context, UserModel user) {
Intent intent = new Intent(context, UIFavorites.class);
intent.putExtra("data", user);
startUIByAnimation(context, intent);
}
public static void showThread(Activity context, String id) {
Intent intent = new Intent(context, UIThread.class);
intent.putExtra("id", id);
startUIByAnimation(context, intent);
}
private static void showUserList(Activity context, String id, String name, boolean following) {
Intent intent = new Intent(context, UIUserList.class);
intent.putExtra("type", following ? UserModel.TYPE_FRIENDS : UserModel.TYPE_FOLLOWERS);
intent.putExtra("id", id);
intent.putExtra("name", name);
startUIByAnimation(context, intent);
}
public static void showFollowing(Activity context, String id, String name) {
showUserList(context, id, name, true);
}
public static void showFollowers(Activity context, String id, String name) {
showUserList(context, id, name, false);
}
public static void showPhoto(Activity context, String url) {
Intent intent = new Intent(context, UIPhoto.class);
intent.putExtra("url", url);
context.startActivity(intent);
}
public static void showAlbum(Activity context, UserModel user) {
Intent intent = new Intent(context, UIPhotos.class);
intent.putExtra("user", user);
startUIByAnimation(context, intent);
}
public static void showSearchResults(Activity context, String query) {
Intent intent = new Intent(context, UISearchResults.class);
intent.setAction(Intent.ACTION_SEARCH);
intent.putExtra(SearchManager.QUERY, query);
context.startActivity(intent);
}
public static void showGallery(Activity context, String userId, int index) {
Intent intent = new Intent(context, UIGallery.class);
intent.putExtra("userId", userId);
intent.putExtra("index", index);
context.startActivity(intent);
}
}