package edu.mit.mitmobile2.tour; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import edu.mit.mitmobile2.MITMenuItem; import edu.mit.mitmobile2.NewModule; import edu.mit.mitmobile2.NewModuleActivity; import edu.mit.mitmobile2.R; import edu.mit.mitmobile2.StyledContentHTML; import edu.mit.mitmobile2.tour.Tour.Site; import edu.mit.mitmobile2.tour.Tour.StartLocation; import edu.mit.mitmobile2.tour.Tour.TourSiteStatus; public class TourStartHelpActivity extends NewModuleActivity { public static final String SELECTED_SITE = "selected_site"; @SuppressLint("SetJavaScriptEnabled") @Override protected void onCreate(Bundle saveInstance) { super.onCreate(saveInstance); final Tour tour = TourModel.getTour(this); // construct webview WebView mainContent = new WebView(this); setContentView(mainContent, false); mainContent.getSettings().setJavaScriptEnabled(true); mainContent.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); mainContent.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if(url.startsWith("selectsite://")) { String locationId = url.substring("selectsite://".length()); StartLocation location = tour.getStartLocation(locationId); Site site = tour.getSite(location.getSiteGuid()); Intent resultIntent = new Intent(); resultIntent.putExtra(SELECTED_SITE, site.getTourMapItem(TourSiteStatus.FUTURE)); setResult(RESULT_OK, resultIntent); finish(); return true; } return false; } }); mainContent.setWebChromeClient(new WebChromeClient() { @Override public void onConsoleMessage(String message, int lineNumber, String sourceID) { Log.d("TourSuggestedLocations", message + " -- From line " + lineNumber + " of " + sourceID); } }); String html = constructHtml(tour); mainContent.loadDataWithBaseURL(null, StyledContentHTML.html(this, html), "text/html", "utf-8", null); addSecondaryTitle("Suggested Points"); } private String constructHtml(Tour tour) { HashMap<String, String> webViewData = new HashMap<String, String>(); webViewData.put("INTRO", tour.getStartLocationsHeader()); String itemsHtml = ""; int photoCounter = 0; for(StartLocation location : tour.getStartLocations()) { String photoHtml; if(location.getPhotoUrl() != null) { String altText = location.getLocationId().replace('-', ' '); boolean leftOrRight = (photoCounter % 2) == 0; String imgClass = leftOrRight ? "floatleft" : "floatright"; imgClass += " padtop locationImg"; photoHtml = "<img src=\"" + location.getPhotoUrl() + "\" " + "id=\"" + location.getLocationId() + "\" " + "alt=\"" + altText + "\" " + "width=\"160\" height=\"100\" " + "class=\"" + imgClass + "\" />"; photoCounter++; } else { photoHtml = ""; } itemsHtml += "" + "<li><a href=\"selectsite://" + location.getLocationId() + "\" >" + photoHtml + "<strong>" + location.getTitle() + ":</strong> " + location.getContent() + "</a></li>"; } webViewData.put("ITEMS", itemsHtml); return StyledContentHTML.populateTemplate(this, "tour/suggested_stops.html", webViewData); } @Override protected NewModule getNewModule() { return new TourModule(); } @Override public boolean isModuleHomeActivity() { return false; } @Override protected List<MITMenuItem> getPrimaryMenuItems() { ArrayList<MITMenuItem> items = new ArrayList<MITMenuItem>(); items.add(new MITMenuItem("viewmap", "View on Map", R.drawable.menu_view_on_map)); return items; } @Override protected void onOptionSelected(String optionId) { if (optionId.equals("viewmap")) { finish(); } } @Override protected boolean isScrollable() { return false; } }