/* * Copyright 2009 Andrew Shu * * This file is part of "reddit is fun". * * "reddit is fun" is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * "reddit is fun" is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with "reddit is fun". If not, see <http://www.gnu.org/licenses/>. */ package com.andrewshu.android.reddit.common; import android.app.Activity; public class Constants { public static final boolean LOGGING = true; public static final boolean USE_COMMENTS_CACHE = false; public static final boolean USE_THREADS_CACHE = false; public static final boolean USE_SUBREDDITS_CACHE = true; // File containing the serialized variables of last subreddit viewed public static final String FILENAME_SUBREDDIT_CACHE = "subreddit.dat"; // File containing the serialized variables of last comments viewed public static final String FILENAME_THREAD_CACHE = "thread.dat"; // File containing a long integer System.currentTimeMillis(). Timestamp is shared among caches. public static final String FILENAME_CACHE_INFO = "cacheinfo.dat"; public static final String[] FILENAMES_CACHE = { FILENAME_SUBREDDIT_CACHE, FILENAME_THREAD_CACHE, FILENAME_CACHE_INFO }; public static final long MESSAGE_CHECK_MINIMUM_INTERVAL_MILLIS = 5 * 60 * 1000; // 5 minutes public static final String LAST_MAIL_CHECK_TIME_MILLIS_KEY = "LAST_MAIL_CHECK_TIME_MILLIS_KEY"; // 1:subreddit 2:threadId 3:commentId // The following commented-out one is good, but tough to get right, e.g., // http://www.reddit.com/eorhm vs. http://www.reddit.com/prefs, mobile, store, etc. // So, for now require the captured URLs to have /comments or /tb prefix. // public static final String COMMENT_PATH_PATTERN_STRING // = "(?:/r/([^/]+)/comments|/comments|/tb)?/([^/]+)(?:/?$|/[^/]+/([a-zA-Z0-9]+)?)?"; public static final String COMMENT_PATH_PATTERN_STRING = "(?:/r/([^/]+)/comments|/comments|/tb)/([^/]+)(?:/?$|/[^/]+/([a-zA-Z0-9]+)?)?"; public static final String REDDIT_PATH_PATTERN_STRING = "(?:/r/([^/]+))?/?$"; public static final String USER_PATH_PATTERN_STRING = "/user/([^/]+)/?$"; public static final String COMMENT_KIND = "t1"; public static final String THREAD_KIND = "t3"; public static final String MESSAGE_KIND = "t4"; public static final String SUBREDDIT_KIND = "t5"; public static final String MORE_KIND = "more"; public static final int DEFAULT_THREAD_DOWNLOAD_LIMIT = 25; public static final int DEFAULT_COMMENT_DOWNLOAD_LIMIT = 200; public static final long DEFAULT_FRESH_DURATION = 1800000; // 30 minutes public static final long DEFAULT_FRESH_SUBREDDIT_LIST_DURATION = 86400000; // 24 hours // startActivityForResult request codes public static final int ACTIVITY_PICK_SUBREDDIT = 0; public static final int ACTIVITY_SUBMIT_LINK = 1; // notifications public static final int NOTIFICATION_HAVE_MAIL = 0; // services public static final int SERVICE_ENVELOPE = 0; // --- Intent extras --- // Tell PickSubredditActivity to hide the fake subreddits string public static final String EXTRA_HIDE_FAKE_SUBREDDITS_STRING = "hideFakeSubreddits"; public static final String EXTRA_ID = "id"; // Tell CommentsListActivity to jump to a comment context (a URL. pattern match) public static final String EXTRA_COMMENT_CONTEXT = "jumpToComment"; // Tell CommentsListActivity to show "more children" public static final String EXTRA_MORE_CHILDREN_ID = "moreChildrenId"; public static final String EXTRA_NUM_COMMENTS = "num_comments"; public static final String EXTRA_SUBREDDIT = "subreddit"; public static final String EXTRA_THREAD_URL = "thread_url"; public static final String EXTRA_TITLE = "title"; // User-defined result codes public static final int RESULT_LOGIN_REQUIRED = Activity.RESULT_FIRST_USER; // Menu and dialog actions public static final int DIALOG_LOGIN = 2; public static final int DIALOG_LOGOUT = 3; public static final int DIALOG_THEME = 12; public static final int DIALOG_REPLY = 14; public static final int DIALOG_HIDE_COMMENT = 17; public static final int DIALOG_SHOW_COMMENT = 18; public static final int DIALOG_SORT_BY = 20; public static final int DIALOG_SORT_BY_NEW = 21; public static final int DIALOG_SORT_BY_CONTROVERSIAL = 22; public static final int DIALOG_SORT_BY_TOP = 23; public static final int DIALOG_COMMENT_CLICK = 24; public static final int DIALOG_MESSAGE_CLICK = 25; public static final int DIALOG_GOTO_PARENT = 28; public static final int DIALOG_EDIT = 29; public static final int DIALOG_DELETE = 30; public static final int DIALOG_COMPOSE = 31; public static final int DIALOG_FIND = 32; public static final int DIALOG_REPORT = 33; public static final int DIALOG_THREAD_CLICK = 34; public static final int DIALOG_VIEW_PROFILE = 35; // progress dialogs public static final int DIALOG_LOGGING_IN = 1000; public static final int DIALOG_SUBMITTING = 1004; public static final int DIALOG_REPLYING = 1005; public static final int DIALOG_LOADING_REDDITS_LIST = 1006; public static final int DIALOG_DELETING = 1008; public static final int DIALOG_EDITING = 1009; public static final int DIALOG_COMPOSING = 1012; public static final int SHARE_CONTEXT_ITEM = 1013; public static final int OPEN_IN_BROWSER_CONTEXT_ITEM = 1014; public static final int OPEN_COMMENTS_CONTEXT_ITEM = 1015; public static final int SAVE_CONTEXT_ITEM = 1016; public static final int UNSAVE_CONTEXT_ITEM = 1017; public static final int HIDE_CONTEXT_ITEM = 1018; public static final int UNHIDE_CONTEXT_ITEM = 1019; public static final int VIEW_SUBREDDIT_CONTEXT_ITEM = 1020; // Special CSS for webviews to match themes public static final String CSS_DARK = "<style>body{color:#c0c0c0;background-color:#000000}a:link{color:#ffffff}</style>"; // Colors for markdown public static final int MARKDOWN_LINK_COLOR = 0xff2288cc; // States for StateListDrawables public static final int[] STATE_CHECKED = new int[]{android.R.attr.state_checked}; public static final int[] STATE_NONE = new int[0]; // Strings public static final String NO_STRING = "no"; public static final String FRONTPAGE_STRING = "reddit front page"; public static final String HAVE_MAIL_TICKER = "reddit mail"; public static final String HAVE_MAIL_TITLE = "reddit is fun"; public static final String HAVE_MAIL_TEXT = "You have reddit mail."; // save instance state Bundle keys public static final String AFTER_KEY = "after"; public static final String BEFORE_KEY = "before"; public static final String DELETE_TARGET_KIND_KEY = "delete_target_kind"; public static final String EDIT_TARGET_BODY_KEY = "edit_target_body"; public static final String ID_KEY = "id"; public static final String JUMP_TO_THREAD_ID_KEY = "jump_to_thread_id"; public static final String KARMA_KEY = "karma"; public static final String LAST_AFTER_KEY = "last_after"; public static final String LAST_BEFORE_KEY = "last_before"; public static final String REPORT_TARGET_NAME_KEY = "report_target_name"; public static final String REPLY_TARGET_NAME_KEY = "reply_target_name"; public static final String SUBREDDIT_KEY = "subreddit"; public static final String THREAD_COUNT_KEY = "thread_count"; public static final String THREAD_ID_KEY = "thread_id"; public static final String THREAD_LAST_COUNT_KEY = "last_thread_count"; public static final String THREAD_TITLE_KEY = "thread_title"; public static final String USERNAME_KEY = "username"; public static final String VOTE_TARGET_THING_INFO_KEY = "vote_target_thing_info"; public static final String WHICH_INBOX_KEY = "which_inbox"; public static final String SUBMIT_KIND_LINK = "link"; public static final String SUBMIT_KIND_SELF = "self"; public static final String SUBMIT_KIND_POLL = "poll"; // Sorting things public static final class ThreadsSort { public static final String SORT_BY_KEY = "threads_sort_by"; public static final String SORT_BY_HOT = "hot"; public static final String SORT_BY_NEW = "new"; public static final String SORT_BY_CONTROVERSIAL = "controversial"; public static final String SORT_BY_TOP = "top"; public static final String SORT_BY_HOT_URL = ""; public static final String SORT_BY_NEW_URL = "new/"; public static final String SORT_BY_CONTROVERSIAL_URL = "controversial/"; public static final String SORT_BY_TOP_URL = "top/"; public static final String[] SORT_BY_CHOICES = {SORT_BY_HOT, SORT_BY_NEW, SORT_BY_CONTROVERSIAL, SORT_BY_TOP}; public static final String[] SORT_BY_URL_CHOICES = {SORT_BY_HOT_URL, SORT_BY_NEW_URL, SORT_BY_CONTROVERSIAL_URL, SORT_BY_TOP_URL}; public static final String SORT_BY_NEW_NEW = "new"; public static final String SORT_BY_NEW_RISING = "rising"; public static final String SORT_BY_NEW_NEW_URL = "sort=new"; public static final String SORT_BY_NEW_RISING_URL = "sort=rising"; public static final String[] SORT_BY_NEW_CHOICES = {SORT_BY_NEW_NEW, SORT_BY_NEW_RISING}; public static final String[] SORT_BY_NEW_URL_CHOICES = {SORT_BY_NEW_NEW_URL, SORT_BY_NEW_RISING_URL}; public static final String SORT_BY_CONTROVERSIAL_HOUR = "this hour"; public static final String SORT_BY_CONTROVERSIAL_DAY = "today"; public static final String SORT_BY_CONTROVERSIAL_WEEK = "this week"; public static final String SORT_BY_CONTROVERSIAL_MONTH = "this month"; public static final String SORT_BY_CONTROVERSIAL_YEAR = "this year"; public static final String SORT_BY_CONTROVERSIAL_ALL = "all time"; public static final String SORT_BY_CONTROVERSIAL_HOUR_URL = "t=hour"; public static final String SORT_BY_CONTROVERSIAL_DAY_URL = "t=day"; public static final String SORT_BY_CONTROVERSIAL_WEEK_URL = "t=week"; public static final String SORT_BY_CONTROVERSIAL_MONTH_URL = "t=month"; public static final String SORT_BY_CONTROVERSIAL_YEAR_URL = "t=year"; public static final String SORT_BY_CONTROVERSIAL_ALL_URL = "t=all"; public static final String[] SORT_BY_CONTROVERSIAL_CHOICES = {SORT_BY_CONTROVERSIAL_HOUR, SORT_BY_CONTROVERSIAL_DAY, SORT_BY_CONTROVERSIAL_WEEK, SORT_BY_CONTROVERSIAL_MONTH, SORT_BY_CONTROVERSIAL_YEAR, SORT_BY_CONTROVERSIAL_ALL}; public static final String[] SORT_BY_CONTROVERSIAL_URL_CHOICES = {SORT_BY_CONTROVERSIAL_HOUR_URL, SORT_BY_CONTROVERSIAL_DAY_URL, SORT_BY_CONTROVERSIAL_WEEK_URL, SORT_BY_CONTROVERSIAL_MONTH_URL, SORT_BY_CONTROVERSIAL_YEAR_URL, SORT_BY_CONTROVERSIAL_ALL_URL}; public static final String SORT_BY_TOP_HOUR = "this hour"; public static final String SORT_BY_TOP_DAY = "today"; public static final String SORT_BY_TOP_WEEK = "this week"; public static final String SORT_BY_TOP_MONTH = "this month"; public static final String SORT_BY_TOP_YEAR = "this year"; public static final String SORT_BY_TOP_ALL = "all time"; public static final String SORT_BY_TOP_HOUR_URL = "t=hour"; public static final String SORT_BY_TOP_DAY_URL = "t=day"; public static final String SORT_BY_TOP_WEEK_URL = "t=week"; public static final String SORT_BY_TOP_MONTH_URL = "t=month"; public static final String SORT_BY_TOP_YEAR_URL = "t=year"; public static final String SORT_BY_TOP_ALL_URL = "t=all"; public static final String[] SORT_BY_TOP_CHOICES = {SORT_BY_TOP_HOUR, SORT_BY_TOP_DAY, SORT_BY_TOP_WEEK, SORT_BY_TOP_MONTH, SORT_BY_TOP_YEAR, SORT_BY_TOP_ALL}; public static final String[] SORT_BY_TOP_URL_CHOICES = {SORT_BY_TOP_HOUR_URL, SORT_BY_TOP_DAY_URL, SORT_BY_TOP_WEEK_URL, SORT_BY_TOP_MONTH_URL, SORT_BY_TOP_YEAR_URL, SORT_BY_TOP_ALL_URL}; } public static final class CommentsSort { public static final String SORT_BY_KEY = "comments_sort_by"; public static final String SORT_BY_BEST = "best"; public static final String SORT_BY_HOT = "hot"; public static final String SORT_BY_NEW = "new"; public static final String SORT_BY_CONTROVERSIAL = "controversial"; public static final String SORT_BY_TOP = "top"; public static final String SORT_BY_OLD = "old"; public static final String SORT_BY_BEST_URL = "sort=confidence"; public static final String SORT_BY_HOT_URL = "sort=hot"; public static final String SORT_BY_NEW_URL = "sort=new"; public static final String SORT_BY_CONTROVERSIAL_URL = "sort=controversial"; public static final String SORT_BY_TOP_URL = "sort=top"; public static final String SORT_BY_OLD_URL = "sort=old"; public static final String[] SORT_BY_CHOICES = {SORT_BY_BEST, SORT_BY_HOT, SORT_BY_NEW, SORT_BY_CONTROVERSIAL, SORT_BY_TOP, SORT_BY_OLD}; public static final String[] SORT_BY_URL_CHOICES = {SORT_BY_BEST_URL, SORT_BY_HOT_URL, SORT_BY_NEW_URL, SORT_BY_CONTROVERSIAL_URL, SORT_BY_TOP_URL, SORT_BY_OLD_URL}; } // JSON values public static final String JSON_AFTER = "after"; public static final String JSON_AUTHOR = "author"; public static final String JSON_BEFORE = "before"; public static final String JSON_BODY = "body"; public static final String JSON_CHILDREN = "children"; public static final String JSON_DATA = "data"; public static final String JSON_ERRORS = "errors"; public static final String JSON_JSON = "json"; public static final String JSON_KIND = "kind"; public static final String JSON_LISTING = "Listing"; public static final String JSON_MEDIA = "media"; public static final String JSON_MEDIA_EMBED = "media_embed"; public static final String JSON_MODHASH = "modhash"; public static final String JSON_NEW = "new"; public static final String JSON_NUM_COMMENTS = "num_comments"; public static final String JSON_TITLE = "title"; public static final String JSON_SUBREDDIT = "subreddit"; public static final String JSON_REPLIES = "replies"; public static final String JSON_SELFTEXT = "selftext"; public static final String JSON_SELFTEXT_HTML = "selftext_html"; public static final String JSON_SUBJECT = "subject"; // TabSpec tags public static final String TAB_LINK = "tab_link"; public static final String TAB_TEXT = "tab_text"; // Preference keys and values public static final String PREF_HOMEPAGE = "homepage"; public static final String PREF_USE_EXTERNAL_BROWSER = "use_external_browser"; public static final String PREF_CONFIRM_QUIT = "confirm_quit"; public static final String PREF_SAVE_HISTORY = "save_history"; public static final String PREF_ALWAYS_SHOW_NEXT_PREVIOUS = "always_show_next_previous"; public static final String PREF_COMMENTS_SORT_BY_URL = "sort_by_url"; public static final String PREF_THEME = "theme"; public static final String PREF_THEME_LIGHT = "THEME_LIGHT"; public static final String PREF_THEME_DARK = "THEME_DARK"; public static final String PREF_TEXT_SIZE = "text_size"; public static final String PREF_TEXT_SIZE_MEDIUM = "TEXT_SIZE_MEDIUM"; public static final String PREF_TEXT_SIZE_LARGE = "TEXT_SIZE_LARGE"; public static final String PREF_TEXT_SIZE_LARGER = "TEXT_SIZE_LARGER"; public static final String PREF_TEXT_SIZE_HUGE = "TEXT_SIZE_HUGE"; public static final String PREF_SHOW_COMMENT_GUIDE_LINES = "show_comment_guide_lines"; public static final String PREF_ROTATION = "rotation"; public static final String PREF_ROTATION_UNSPECIFIED = "ROTATION_UNSPECIFIED"; public static final String PREF_ROTATION_PORTRAIT = "ROTATION_PORTRAIT"; public static final String PREF_ROTATION_LANDSCAPE = "ROTATION_LANDSCAPE"; public static final String PREF_LOAD_THUMBNAILS = "load_thumbnails"; public static final String PREF_LOAD_THUMBNAILS_ONLY_WIFI = "load_thumbnails_only_wifi"; public static final String PREF_MAIL_NOTIFICATION_STYLE = "mail_notification_style"; public static final String PREF_MAIL_NOTIFICATION_STYLE_DEFAULT = "MAIL_NOTIFICATION_STYLE_DEFAULT"; public static final String PREF_MAIL_NOTIFICATION_STYLE_BIG_ENVELOPE = "MAIL_NOTIFICATION_STYLE_BIG_ENVELOPE"; public static final String PREF_MAIL_NOTIFICATION_STYLE_OFF = "MAIL_NOTIFICATION_STYLE_OFF"; public static final String PREF_MAIL_NOTIFICATION_SERVICE = "mail_notification_service"; public static final String PREF_MAIL_NOTIFICATION_SERVICE_OFF = "MAIL_NOTIFICATION_SERVICE_OFF"; public static final String PREF_MAIL_NOTIFICATION_SERVICE_5MIN = "MAIL_NOTIFICATION_SERVICE_5MIN"; public static final String PREF_MAIL_NOTIFICATION_SERVICE_30MIN = "MAIL_NOTIFICATION_SERVICE_30MIN"; public static final String PREF_MAIL_NOTIFICATION_SERVICE_1HOUR = "MAIL_NOTIFICATION_SERVICE_1HOUR"; public static final String PREF_MAIL_NOTIFICATION_SERVICE_6HOURS = "MAIL_NOTIFICATION_SERVICE_6HOURS"; public static final String PREF_MAIL_NOTIFICATION_SERVICE_1DAY = "MAIL_NOTIFICATION_SERVICE_1DAY"; // Reddit's base URL, without trailing slash public static final String REDDIT_BASE_URL = "http://www.reddit.com"; public static final String REDDIT_SSL_BASE_URL = "https://pay.reddit.com"; public static final String REDDIT_LOGIN_URL = "https://ssl.reddit.com/api/login"; // A short HTML file returned by reddit, so we can get the modhash public static final String MODHASH_URL = REDDIT_BASE_URL + "/r"; }