/** * Copyright 2012 Neurowork Consulting S.L. * * This file is part of eMobc. * * AppLevel.java * eMobc Android Framework * * eMobc is free software: you can redistribute it and/or modify * it under the terms of the Affero GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * eMobc 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 Affero GNU General Public License * along with eMobc. If not, see <http://www.gnu.org/licenses/>. * */ package com.emobc.android.levels; import java.util.List; import java.util.Locale; import android.app.Activity; import android.content.Context; import android.util.Log; import com.emobc.android.ActivityType; import com.emobc.android.SearchResult; import com.emobc.android.activities.AudioActivity; import com.emobc.android.activities.ButtonsActivity; import com.emobc.android.activities.CalendarActivity; import com.emobc.android.activities.CoverActivity; import com.emobc.android.activities.CrudReadActivity; import com.emobc.android.activities.FormActivity; import com.emobc.android.activities.ImageListActivity; import com.emobc.android.activities.ImageTextDescriptionActivity; import com.emobc.android.activities.MapsActivity; import com.emobc.android.activities.QrActivity; import com.emobc.android.activities.QuizActivity; import com.emobc.android.activities.SaleActivity; import com.emobc.android.activities.SearchActivity; import com.emobc.android.activities.ShowProfileActivity; import com.emobc.android.activities.WebActivity; import com.emobc.android.parse.ParseUtils; /** * Application Level * <p> * An Application Level is a primary Level in the eMobc Framework. * Each application has an <tt>app.xml</tt> file which defines the primary * levels. Each of these levels has one or more secondary levels associated. * </p> * @author Jorge E. Villaverde * @author Jonatan Alcocer Luna * @see AppLevelData * @version 0.1 * @since 0.1 */ public class AppLevel { private final int number; private String id; private String title; private String fileName; private ActivityType activityType; private AppLevelData levelData = null; private String xib; private boolean useProfile = false; public static final AppLevel COVER_APP_LEVEL; public static final AppLevel PROFILE_APP_LEVEL; public static final AppLevel SEARCH_APP_LEVEL; static{ COVER_APP_LEVEL = new AppLevel(1); COVER_APP_LEVEL.setActivityType(ActivityType.COVER_ACTIVITY); COVER_APP_LEVEL.setTitle("Cover App Level"); PROFILE_APP_LEVEL = new AppLevel(2); PROFILE_APP_LEVEL.setActivityType(ActivityType.PROFILE_ACTIVITY); PROFILE_APP_LEVEL.setTitle("Cover App Level"); SEARCH_APP_LEVEL = new AppLevel(3); SEARCH_APP_LEVEL.setActivityType(ActivityType.SEARCH_ACTIVITY); SEARCH_APP_LEVEL.setTitle("Search App Level"); } public AppLevel(int number) { super(); this.number = number; } public int getNumber() { return number; } public void setTitle(String title) { this.title = title; } public String getTitle() { return title; } public void setFileName(String fileName) { this.fileName = fileName; } public String getFileName() { return fileName; } public void setActivityType(ActivityType activityType) { this.activityType = activityType; } public ActivityType getActivityType() { return activityType; } /** * Depending on the 'ActivityType' of AppLevel, returns. Class that corresponds * @return Class<? extends Activity> */ public Class<? extends Activity> getAcivityClass(){ switch (activityType) { case COVER_ACTIVITY: return CoverActivity.class; case IMAGE_TEXT_DESCRIPTION_ACTIVITY: return ImageTextDescriptionActivity.class; case QR_ACTIVITY: return QrActivity.class; case MAP_ACTIVITY: return MapsActivity.class; case CALENDAR_ACTIVITY: return CalendarActivity.class; case QUIZ_ACTIVITY: return QuizActivity.class; case BUTTONS_ACTIVITY: return ButtonsActivity.class; case FORM_ACTIVITY: return FormActivity.class; case AUDIO_ACTIVITY: return AudioActivity.class; case PROFILE_ACTIVITY: return ShowProfileActivity.class; case WEB_ACTIVITY: return WebActivity.class; case SEARCH_ACTIVITY: return SearchActivity.class; case CRUD_ACTIVITY: return CrudReadActivity.class; case SALE_ACTIVITY: return SaleActivity.class; default: Log.w("AppLevel: getActiviClass", "Asiging default Activity Class to Activity Type: " + activityType); return ImageListActivity.class; } } public AppLevelData getData(Context context) { return getData(context, Locale.getDefault()); } public AppLevelData getData(Context context, Locale locale) { if(levelData == null){ levelData = ParseUtils.parseLevelData(context, locale, fileName, activityType, useProfile); } return levelData; } public void setId(String id) { this.id = id; } public String getId() { return id; } public List<SearchResult> findWidthText(Context context, String text) { return getData(context).findWidthText(text, id); } public List<SearchResult> findWidthText(Context context, Locale locale, String text) { return getData(context, locale).findWidthText(text, id); } public List<SearchResult> getAllImages(Context context, Locale locale) { return getData(context, locale).getAllImages(id); } public List<SearchResult> getAllImages(Context context) { return getData(context).getAllImages(id); } public List<SearchResult> findAllGeoref(Context context, Locale locale) { return getData(context, locale).findAllGeoref(id); } public List<SearchResult> findAllGeoref(Context context) { return getData(context).findAllGeoref(id); } public String toString(){ StringBuilder builder = new StringBuilder(); if(id != null && id.length() > 0){ builder.append("Level Id:"); builder.append(id); }else{ builder.append("Level Nro:"); builder.append(number); } if(activityType != null){ builder.append( ", Type: "); builder.append(activityType.toString()); } return builder.toString(); } public String getXib() { return xib; } public void setXib(String xib) { this.xib = xib; } public boolean isUseProfile() { return useProfile; } public void setUseProfile(boolean useProfile) { this.useProfile = useProfile; } }