/*
* Catroid: An on-device visual programming system for Android devices
* Copyright (C) 2010-2016 The Catrobat Team
* (<http://developer.catrobat.org/credits>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* An additional term exception under section 7 of the GNU Affero
* General Public License, version 3, is available at
* http://developer.catrobat.org/license_additional_term
*
* This program 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.catrobat.catroid.common;
import android.os.Environment;
import java.util.Calendar;
public final class Constants {
// Reflection in testcases needed
// http://stackoverflow.com/questions/1615163/modifying-final-fields-in-java?answertab=votes#tab-top
public static final float CURRENT_CATROBAT_LANGUAGE_VERSION = Float.valueOf(0.993f);
public static final String PLATFORM_NAME = "Android";
public static final int APPLICATION_BUILD_NUMBER = 0; // updated from jenkins nightly/release build
public static final String APPLICATION_BUILD_NAME = ""; // updated from jenkins nightly/release build
public static final String PROJECTCODE_NAME = "code.xml";
public static final String PROJECTPERMISSIONS_NAME = "permissions.txt";
public static final String PROJECTCODE_NAME_TMP = "tmp_" + PROJECTCODE_NAME;
public static final String SCENES_ENABLED_TAG = "<scenesEnabled>";
public static final String CATROBAT_EXTENSION = ".catrobat";
public static final String IMAGE_STANDARD_EXTENSION = ".png";
public static final String SOUND_STANDARD_EXTENSION = ".wav";
public static final char REMIX_URL_PREFIX_INDICATOR = '[';
public static final char REMIX_URL_SUFIX_INDICATOR = ']';
public static final char REMIX_URL_SEPARATOR = ',';
public static final char REMIX_URL_PREFIX_REPLACE_INDICATOR = '(';
public static final char REMIX_URL_SUFIX_REPLACE_INDICATOR = ')';
public static final char REMIX_URL_REPLACE_SEPARATOR = ';';
//Extensions:
public static final String[] IMAGE_EXTENSIONS = { ".png", ".jpg", ".jpeg", ".png", ".gif" };
public static final String[] SOUND_EXTENSIONS = { ".wav", ".mp3", ".mpga", ".wav", ".ogy" };
public static final String DEFAULT_ROOT = Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/Pocket Code";
public static final String TMP_PATH = DEFAULT_ROOT + "/tmp";
public static final String TMP_IMAGE_PATH = TMP_PATH + "/PocketPaintImage.tmp";
public static final String TEXT_TO_SPEECH_TMP_PATH = TMP_PATH + "/textToSpeech";
public static final String IMAGE_DIRECTORY = "images";
public static final String SOUND_DIRECTORY = "sounds";
public static final String SCENES_DIRECTORY = "scenes";
public static final String BACKPACK_DIRECTORY = "backpack";
public static final String TMP_LOOKS_PATH = TMP_PATH + "/looks";
public static final String TMP_SOUNDS_PATH = TMP_PATH + "/sounds";
public static final String BACKPACK_SOUND_DIRECTORY = "backpack_sound";
public static final String BACKPACK_IMAGE_DIRECTORY = "backpack_image";
public static final String NUMBER_OF_BRICKS_INSERTED_FROM_BACKPACK = "NUMBER_OF_BRICKS_INSERTED";
public static final String FILENAME_SEPARATOR = "_";
public static final String NO_MEDIA_FILE = ".nomedia";
public static final String TEXT_TO_SPEECH = "TEXT_TO_SPEECH";
public static final String BLUETOOTH_LEGO_NXT = "BLUETOOTH_LEGO_NXT";
public static final String BLUETOOTH_PHIRO_PRO = "BLUETOOTH_PHIRO_PRO";
public static final String ARDRONE_SUPPORT = "ARDRONE_SUPPORT";
public static final String CAMERA_FLASH = "CAMERA_FLASH";
public static final String VIBRATOR = "VIBRATOR";
public static final String FACE_DETECTION = "FACE_DETECTION";
public static final String NFC = "NFC";
public static final int NO_POSITION = -1;
//Broadcast system:
public static final String ACTION_SPRITE_SEPARATOR = "#";
public static final String BROADCAST_NOTIFY_ACTION = "broadcast_notify";
public static final String START_SCRIPT = "start_script";
public static final String BROADCAST_SCRIPT = "broadcast_script";
public static final String RASPI_SCRIPT = "raspi_pinchange_script";
public static final String RASPI_BROADCAST_PREFIX = "#RASPI#";
public static final String RASPI_BROADCAST_INTERRUPT_PREFIX = RASPI_BROADCAST_PREFIX + "interrupt ";
public static final String OPENING_BRACE = "(";
//Web:
public static final String MAIN_URL_HTTPS = "https://share.catrob.at";
public static final String BASE_URL_HTTPS = MAIN_URL_HTTPS + "/pocketcode/";
public static final String LIBRARY_LOOKS_URL = "https://share.catrob.at/pocketcode/pocket-library/looks";
public static final String LIBRARY_BACKGROUNDS_URL_PORTRAIT = "https://share.catrob.at/pocketcode/pocket-library/backgrounds-portrait";
public static final String LIBRARY_BACKGROUNDS_URL_LANDSCAPE = "https://share.catrob.at/pocketcode/pocket-library/backgrounds-landscape";
public static final String LIBRARY_SOUNDS_URL = "https://share.catrob.at/pocketcode/pocket-library/sounds";
public static final String LIBRARY_BASE_URL = "https://share.catrob.at/pocketcode/download-media/";
public static final String SHARE_PROGRAM_URL = "https://share.catrob.at/pocketcode/program/";
public static final String CATROBAT_TERMS_OF_USE_URL = BASE_URL_HTTPS + "termsOfUse";
public static final String CATROBAT_ABOUT_URL = "http://www.catrobat.org/";
public static final String ABOUT_POCKETCODE_LICENSE_URL = "http://developer.catrobat.org/licenses";
public static final String CATROBAT_HELP_URL = BASE_URL_HTTPS + "help";
public static final String CATROBAT_TOKEN_LOGIN_URL = BASE_URL_HTTPS + "tokenlogin?username=";
public static final String CATROBAT_TOKEN_LOGIN_AMP_TOKEN = "&token=";
public static final String STANDALONE_URL = "http://catrob.at/csadttwt";
public static final String TOKEN = "token";
public static final String NO_TOKEN = "no_token";
public static final String FACEBOOK_TOKEN_REFRESH_NEEDED = "FACEBOOK_TOKEN_REFRESH_NEEDED";
public static final String USERNAME = "username";
public static final String NO_USERNAME = "no_username";
public static final String EMAIL = "email";
public static final String NO_EMAIL = "no_email";
public static final String LOCALE = "locale";
public static final String RESTRICTED_USER = "restricted_user";
public static final String FACEBOOK_ID = "FACEBOOK_ID";
public static final String NO_FACEBOOK_ID = "NO_FACEBOOK_ID";
public static final String FACEBOOK_USERNAME = "FACEBOOK_USERNAME";
public static final String NO_FACEBOOK_USERNAME = "NO_FACEBOOK_USERNAME";
public static final String FACEBOOK_LOCALE = "FACEBOOK_LOCALE";
public static final String NO_FACEBOOK_LOCALE = "NO_FACEBOOK_LOCALE";
public static final String FACEBOOK_EMAIL = "FACEBOOK_EMAIL";
public static final String NO_FACEBOOK_EMAIL = "NO_FACEBOOK_EMAIL";
public static final String JSON_ERROR_CODE = "errorCode";
public static final int ERROR_CODE_FACEBOOK_SESSION_EXPIRED = 190;
public static final String GOOGLE_ID = "GOOGLE_ID";
public static final String NO_GOOGLE_ID = "NO_GOOGLE_ID";
public static final String GOOGLE_USERNAME = "GOOGLE_USERNAME";
public static final String NO_GOOGLE_USERNAME = "NO_GOOGLE_USERNAME";
public static final String GOOGLE_LOCALE = "GOOGLE_LOCALE";
public static final String NO_GOOGLE_LOCALE = "NO_GOOGLE_LOCALE";
public static final String GOOGLE_EMAIL = "GOOGLE_EMAIL";
public static final String NO_GOOGLE_EMAIL = "NO_GOOGLE_EMAIL";
public static final String GOOGLE_ID_TOKEN = "GOOGLE_ID_TOKEN";
public static final String NO_GOOGLE_ID_TOKEN = "NO_GOOGLE_ID_TOKEN";
public static final String GOOGLE_EXCHANGE_CODE = "GOOGLE_EXCHANGE_CODE";
public static final String NO_GOOGLE_EXCHANGE_CODE = "NO_GOOGLE_EXCHANGE_CODE";
public static final String CURRENT_OAUTH_PROVIDER = "PROVIDER";
public static final String FACEBOOK = "FACEBOOK";
public static final String GOOGLE_PLUS = "GPLUS";
public static final String NO_OAUTH_PROVIDER = "NATIVE";
public static final String REQUEST_MOBILE = "mobile";
public static final String FLAVOR_DEFAULT = "PocketCode";
public static final String PLATFORM_DEFAULT = "Android";
public static final String WHATSAPP_URI = "whatsapp://";
// Scratch Converter
public static final int DOWNLOAD_FILE_HTTP_TIMEOUT = 30_000;
public static final long INVALID_SCRATCH_PROGRAM_ID = 0;
public static final String SCRATCH_CONVERTER_CLIENT_ID_SHARED_PREFERENCE_NAME = "scratchconverter.clientID";
public static final String SCRATCH_CONVERTER_DOWNLOAD_STATE_SHARED_PREFERENCE_NAME = "scratchconverter"
+ ".downloadStatePref";
public static final String SCRATCH_CONVERTER_HOST = "scratch2.catrob.at";
public static final String SCRATCH_SEARCH_URL = "https://api.scratch.mit.edu/search/projects";
public static final String SCRATCH_IMAGE_BASE_URL = "https://uploads.scratch.mit.edu/projects/thumbnails/";
public static final int SCRATCH_CONVERTER_MAX_NUMBER_OF_JOBS_PER_CLIENT = 3;
public static final String SCRATCH_CONVERTER_WEB_SOCKET = "ws://" + SCRATCH_CONVERTER_HOST + "/convertersocket";
public static final String SCRATCH_CONVERTER_BASE_URL = "http://" + SCRATCH_CONVERTER_HOST + "/";
public static final String SCRATCH_CONVERTER_API_BASE_URL = SCRATCH_CONVERTER_BASE_URL + "api/v1/";
public static final String SCRATCH_CONVERTER_API_DEFAULT_PROJECTS_URL = SCRATCH_CONVERTER_API_BASE_URL + "projects/";
public static final int SCRATCH_SECOND_RELEASE_PUBLISHED_DATE_YEAR = 2013;
public static final int SCRATCH_SECOND_RELEASE_PUBLISHED_DATE_MONTH = Calendar.MAY;
public static final int SCRATCH_SECOND_RELEASE_PUBLISHED_DATE_DAY = 9;
public static final int SCRATCH_HTTP_REQUEST_MIN_TIMEOUT = 1_000; // in ms
public static final int SCRATCH_HTTP_REQUEST_MAX_NUM_OF_RETRIES = 2;
public static final int SCRATCH_IMAGE_DEFAULT_WIDTH = 480;
public static final int SCRATCH_IMAGE_DEFAULT_HEIGHT = 360;
public static final String DATE_FORMAT_DEFAULT = "yyyy-MM-dd HH:mm:ss";
public static final String DATE_FORMAT_ISO_8601 = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
public static final long MEMORY_OBJECT_CACHE_EXPIRE_TIME = 120_000; // 2 minutes (in ms)
public static final int MEMORY_OBJECT_CACHE_MAX_SIZE = 10_000;
public static final String INTENT_SCRATCH_PROGRAM_DATA = "scratchProgramData";
public static final int INTENT_REQUEST_CODE_SPEECH = 0;
public static final int INTENT_REQUEST_CODE_CONVERT = 1;
// Pocket Paint
public static final String EXTRA_PICTURE_PATH_POCKET_PAINT = "org.catrobat.extra.PAINTROID_PICTURE_PATH";
public static final String EXTRA_PICTURE_NAME_POCKET_PAINT = "org.catrobat.extra.PAINTROID_PICTURE_NAME";
public static final String EXTRA_X_VALUE_POCKET_PAINT = "org.catrobat.extra.PAINTROID_X";
public static final String EXTRA_Y_VALUE_POCKET_PAINT = "org.catrobat.extra.PAINTROID_Y";
public static final String POCKET_PAINT_PACKAGE_NAME = "org.catrobat.paintroid";
public static final String POCKET_PAINT_DOWNLOAD_LINK = "market://details?id=" + POCKET_PAINT_PACKAGE_NAME;
public static final String POCKET_PAINT_INTENT_ACTIVITY_NAME = "org.catrobat.paintroid.MainActivity";
//Various:
public static final int BUFFER_8K = 8 * 1024;
public static final String PREF_PROJECTNAME_KEY = "projectName";
public static final String PROJECTNAME_TO_LOAD = "projectNameToLoad";
public static final String PROJECT_OPENED_FROM_PROJECTS_LIST = "projectList";
public static final String MEDIA_TYPE_LOOK = "look";
public static final String MEDIA_TYPE_SOUND = "sound";
public static final String COLLISION_PNG_META_TAG_KEY = "CollisionPolygonVertices";
public static final int COLLISION_VERTEX_LIMIT = 100;
public static final float COLLISION_POLYGON_CREATION_EPSILON = 10.0f;
public static final String COLLISION_POLYGON_METADATA_PATTERN = "((((\\d+\\.\\d+);(\\d+\\.\\d+);){2,}(\\d+\\.\\d+);(\\d+\\.\\d+))\\|)*((\\d+\\.\\d+);(\\d+\\.\\d+);){2,}(\\d+\\.\\d+);(\\d+\\.\\d+)";
public static final float COLLISION_WITH_FINGER_TOUCH_RADIUS = 50;
// background sprite is always on index 0
public static final int Z_INDEX_BACKGROUND = 0;
// this offset reflects the offset caused by "virtual" layers (currently only PenActor)
// which are sneaked in at the Stage creation when starting the scene.
public static final int Z_INDEX_NUMBER_VIRTUAL_LAYERS = 1;
// the minimum z index a real sprite layer can have
public static final int Z_INDEX_FIRST_SPRITE = Z_INDEX_BACKGROUND + Z_INDEX_NUMBER_VIRTUAL_LAYERS + 1;
public static final String NO_VARIABLE_SELECTED = "No variable set";
public static final String PROJECT_UPLOAD_NAME = "projectUploadName";
public static final String PROJECT_UPLOAD_DESCRIPTION = "setProjectDescription";
public static final int SAY_BRICK = 0;
public static final int THINK_BRICK = 1;
public static final int MAX_STRING_LENGTH_BUBBLES = 16;
public static final int BORDER_THICKNESS_BUBBLES = 5;
public static final int TEXT_SIZE_BUBBLE = 30;
public static final int LINE_SPACING_BUBBLES = 3;
public static final int PADDING_TOP = 40;
public static final int PADDING_LEFT = 30;
public static final int OFFSET_FOR_THINK_BUBBLES_AND_ARROW = 40;
//Services + Notifications
public static final int UPDATE_UPLOAD_PROGRESS = 100;
public static final int UPDATE_DOWNLOAD_PROGRESS = 101;
public static final int UPDATE_DOWNLOAD_ERROR = 105;
//Up-/Download Status Codes
public static final int STATUS_CODE_INTERNAL_SERVER_ERROR = 500;
public static final int STATUS_CODE_UPLOAD_MISSING_DATA = 501;
public static final int STATUS_CODE_UPLOAD_MISSING_CHECKSUM = 503;
public static final int STATUS_CODE_UPLOAD_INVALID_CHECKSUM = 504;
public static final int STATUS_CODE_UPLOAD_COPY_FAILED = 505;
public static final int STATUS_CODE_UPLOAD_UNZIP_FAILED = 506;
public static final int STATUS_CODE_UPLOAD_MISSING_XML = 507;
public static final int STATUS_CODE_UPLOAD_RENAME_FAILED = 513;
public static final int STATUS_CODE_UPLOAD_SAVE_THUMBNAIL_FAILED = 514;
public static final int STATUS_CODE_UPLOAD_OLD_CATROBAT_LANGUAGE = 518;
public static final int STATUS_CODE_UPLOAD_OLD_CATROBAT_VERSION = 519;
// Suppress default constructor for noninstantiability
private Constants() {
throw new AssertionError();
}
}