// Created by plusminus on 4:15:07 PM - Feb 26, 2009 package org.androad.sys.ors.adt.rs; import org.androad.R; import org.androad.sys.ors.adt.lus.Country; import org.androad.sys.turninstructions.ITurnInstructionsSet; import org.androad.sys.turninstructions.TurnInstructionLoader; import android.content.Context; public enum DirectionsLanguage { // =========================================================== // Elements // =========================================================== ENGLISH("en", R.string.dialect_none, R.xml.turninstructions_en), CZECH("cs", R.string.dialect_none, R.xml.turninstructions_cs), GERMAN("de", R.string.dialect_none, R.xml.turninstructions_de), GERMAN_PLATT("de-opplat", R.string.dialect_germany_platt, R.xml.turninstructions_de), GERMAN_SCHWAEBISCH("de-swabia", R.string.dialect_germany_schwaebisch, R.xml.turninstructions_de), GERMAN_BERLINERISCH("de-berlin", R.string.dialect_germany_berlinerisch, R.xml.turninstructions_de), GERMAN_RHEINLAENDISCH("de-rheinl", R.string.dialect_germany_rheinlaendisch, R.xml.turninstructions_de), GERMAN_RUHRPOTT("de-ruhrpot", R.string.dialect_germany_ruhrpott, R.xml.turninstructions_de), FRENCH("fr", R.string.dialect_none), FINNISH("fi", R.string.dialect_none), ESPERANTO("eo", R.string.dialect_none), DUTCH("nl", R.string.dialect_none, R.xml.turninstructions_de), DUTCH_FLANDERN("nl_BE", R.string.dialect_none, R.xml.turninstructions_de), SPANISH("es", R.string.dialect_none), ITALIAN("it", R.string.dialect_none), TURKISH("tr", R.string.dialect_none), PORTUGUESE("pt_BR", R.string.dialect_none), SWEDISH("se", R.string.dialect_none); // =========================================================== // Constants // =========================================================== // =========================================================== // Fields // =========================================================== public final String ID; public final int NAMERESID; private Country MOTHERCOUNTRY; private final int TURNINSTRUCTIONSREDID; private ITurnInstructionsSet mTurnInstructionsSet; // =========================================================== // Constructors // =========================================================== private DirectionsLanguage(final String pIdentifier, final int pNameResID){ this(pIdentifier, pNameResID, R.xml.turninstructions_en); } private DirectionsLanguage(final String pIdentifier, final int pNameResID, final int pTurnInstructionsResID){ this.ID = pIdentifier; this.NAMERESID = pNameResID; this.TURNINSTRUCTIONSREDID = pTurnInstructionsResID; } public static DirectionsLanguage fromAbbreviation(final String pID) { for(final DirectionsLanguage d : values()) { if(d.ID.compareToIgnoreCase(pID) == 0) { return d; } } return DirectionsLanguage.ENGLISH; } public String getIETFLanguageTag() { if(this.MOTHERCOUNTRY == null || this.MOTHERCOUNTRY.IETFLANGUAGETAG == null) { return Country.UNITEDKINGDOM.IETFLANGUAGETAG; } else { return this.MOTHERCOUNTRY.IETFLANGUAGETAG; } } public Country getMotherCountry(){ if(this.MOTHERCOUNTRY == null) { this.MOTHERCOUNTRY = Country.fromDialect(this); } return this.MOTHERCOUNTRY; } public ITurnInstructionsSet getTurnInstructionsSet(final Context ctx) { if (this.mTurnInstructionsSet == null) { try { this.mTurnInstructionsSet = TurnInstructionLoader.load(ctx.getResources().getXml(this.TURNINSTRUCTIONSREDID)); } catch (final Throwable t) { } } return this.mTurnInstructionsSet; } public String getThenCommandWithoutDistance(final Context ctx, final RoutePreferenceType pPreferenceType){ final String thenCommandString = this.mTurnInstructionsSet.getThenCommandWithoutDistance(); if(thenCommandString == null){ /* Default-Fallback. */ return ENGLISH.getThenCommandWithoutDistance(ctx, pPreferenceType); }else{ return thenCommandString.replace("@MobilityBasedMovementInstruction", (pPreferenceType == RoutePreferenceType.PEDESTRIAN) ? this.mTurnInstructionsSet.getPedestrian() : this.mTurnInstructionsSet.getVehicle()); } } public String getThenCommandWithDistance(final Context ctx, final RoutePreferenceType pPreferenceType){ final String thenCommandString = this.mTurnInstructionsSet.getThenCommandWithDistance(); if(thenCommandString == null){ /* Default-Fallback. */ return ENGLISH.getThenCommandWithDistance(ctx, pPreferenceType); }else{ return thenCommandString.replace("@MobilityBasedMovementInstruction", (pPreferenceType == RoutePreferenceType.PEDESTRIAN) ? this.mTurnInstructionsSet.getPedestrian() : this.mTurnInstructionsSet.getVehicle()); } } // =========================================================== // Getter & Setter // =========================================================== // =========================================================== // Methods from SuperClass/Interfaces // =========================================================== // =========================================================== // Methods // =========================================================== // =========================================================== // Inner and Anonymous Classes // =========================================================== }