/* * Copyright 2012 GitHub Inc. * * 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 tk.djcrazy.MyCC98.util; import java.io.Serializable; import android.app.Activity; import android.content.Intent; /** * Helper for creating intents */ public class Intents { /** * Prefix for all intents created */ public static final String INTENT_PREFIX = "tk.djcrazy.mycc98."; /** * Prefix for all extra data added to intents */ public static final String INTENT_EXTRA_PREFIX = INTENT_PREFIX + "extra."; public static final String EXTRA_BOARD_ID = INTENT_EXTRA_PREFIX + "BOARD_ID"; public static final String EXTRA_BOARD_NAME = INTENT_EXTRA_PREFIX + "BOARD_NAME"; public static final String EXTRA_POST_ID = INTENT_EXTRA_PREFIX + "POST_ID"; public static final String EXTRA_POST_NAME = INTENT_EXTRA_PREFIX + "POST_NAME"; public static final String EXTRA_PAGE_NUMBER = INTENT_EXTRA_PREFIX + "PAGE_NUMBER"; public static final String EXTRA_REPLY_USER_NAME = INTENT_EXTRA_PREFIX + "REPLY_USER_NAME"; public static final String EXTRA_REPLY_USER_POST_TIME = INTENT_EXTRA_PREFIX + "REPLY_USER_POST_TIME"; public static final String EXTRA_REPLY_CONTENT = INTENT_EXTRA_PREFIX + "REPLY_CONTENT"; public static final String EXTRA_FLOOR_NUMBER = INTENT_EXTRA_PREFIX + "FLOOR_NUMBER"; public static final String EXTRA_IS_QUOTE_USER = INTENT_EXTRA_PREFIX + "IS_QUOTE_USER"; public static final String EXTRA_PM_TO_USER = INTENT_EXTRA_PREFIX + "PM_TO_USER"; public static final String EXTRA_PM_TITLE = INTENT_EXTRA_PREFIX + "PM_TITLE"; public static final String EXTRA_PM_CONTENT = INTENT_EXTRA_PREFIX + "PM_CONTENT"; public static final String EXTRA_REQUEST_TYPE = INTENT_EXTRA_PREFIX + "REQUEST_TYPE"; public static final String EXTRA_DOWNLOAD_LINK = INTENT_EXTRA_PREFIX + "DOWNLOAD_LINK"; public static final String EXTRA_PM_SENDER = INTENT_EXTRA_PREFIX + "PM_SENDER"; public static final String EXTRA_PM_SEND_TIME = INTENT_EXTRA_PREFIX + "PM_SEND_TIME"; public static final String EXTRA_PM_ID = INTENT_EXTRA_PREFIX + "PM_ID"; public static final String EXTRA_NEED_LOGIN = INTENT_EXTRA_PREFIX + "NEED_LOGIN"; public static final String EXTRA_FORCE_REFRESH = INTENT_EXTRA_PREFIX + "FORCE_REFRESH"; public static class Builder { private final Intent intent; /** * Create builder with suffix * * @param actionSuffix */ public Builder(String actionSuffix) { // actionSuffix = e.g. "repos.VIEW" intent = new Intent(INTENT_PREFIX + actionSuffix); } public Builder() { intent = new Intent(); } public Builder(Activity activity, Class<?> class1) { intent = new Intent(activity, class1); } public Builder boardId(String boardId) { return add(EXTRA_BOARD_ID, boardId); } public Builder postId(String postId) { return add(EXTRA_POST_ID, postId); } public Builder pageNumber(int postNumber) { return add(EXTRA_PAGE_NUMBER, postNumber); } public Builder boardName(String name) { return add(EXTRA_BOARD_NAME, name); } public Builder postName(String name) { return add(EXTRA_POST_NAME, name); } public Builder replyUserName(String name) { return add(EXTRA_REPLY_USER_NAME, name); } public Builder replyUserPostTime(String time) { return add(EXTRA_REPLY_USER_POST_TIME, time); } public Builder replyContent(String content) { return add(EXTRA_REPLY_CONTENT, content); } public Builder floorNumber(int floorNum) { return add(EXTRA_FLOOR_NUMBER, floorNum); } public Builder isQuoteUser(boolean is) { return add(EXTRA_IS_QUOTE_USER, is); } public Builder pmToUser(String name) { return add(EXTRA_PM_TO_USER, name); } public Builder pmTitle(String name) { return add(EXTRA_PM_TITLE, name); } public Builder pmContent(String content) { return add(EXTRA_PM_CONTENT, content); } public Builder requestType(int type) { return add(EXTRA_REQUEST_TYPE, type); } public Builder downloadLink(String type) { return add(EXTRA_DOWNLOAD_LINK, type); } public Builder forceRefresh(boolean forceRefresh) { return add(EXTRA_FORCE_REFRESH, forceRefresh); } public Builder pmSender(String type) { return add(EXTRA_PM_SENDER, type); } public Builder pmSendTime(String type) { return add(EXTRA_PM_SEND_TIME, type); } public Builder pmId(int type) { return add(EXTRA_PM_ID, type); } public Builder needLogin(boolean need) { return add(EXTRA_NEED_LOGIN, need); } /** * Add extra field data value to intent being built up * * @param fieldName * @param value * @return this builder */ private Builder add(String fieldName, String value) { intent.putExtra(fieldName, value); return this; } /** * Add extra field data value to intent being built up * * @param fieldName * @param value * @return this builder */ private Builder add(String fieldName, int value) { intent.putExtra(fieldName, value); return this; } /** * Add extra field data value to intent being built up * * @param fieldName * @param values * @return this builder */ private Builder add(String fieldName, int[] values) { intent.putExtra(fieldName, values); return this; } /** * Add extra field data value to intent being built up * * @param fieldName * @param values * @return this builder */ private Builder add(String fieldName, boolean[] values) { intent.putExtra(fieldName, values); return this; } /** * Add extra field data value to intent being built up * * @param fieldName * @param value * @return this builder */ private Builder add(String fieldName, Serializable value) { intent.putExtra(fieldName, value); return this; } /** * Get built intent * * @return intent */ public Intent toIntent() { return intent; } } }