1*5eae8ebbSCole Faust /* 2*5eae8ebbSCole Faust * Copyright (C) 2010 The Android Open Source Project 3*5eae8ebbSCole Faust * 4*5eae8ebbSCole Faust * Licensed under the Apache License, Version 2.0 (the "License"); 5*5eae8ebbSCole Faust * you may not use this file except in compliance with the License. 6*5eae8ebbSCole Faust * You may obtain a copy of the License at 7*5eae8ebbSCole Faust * 8*5eae8ebbSCole Faust * http://www.apache.org/licenses/LICENSE-2.0 9*5eae8ebbSCole Faust * 10*5eae8ebbSCole Faust * Unless required by applicable law or agreed to in writing, software 11*5eae8ebbSCole Faust * distributed under the License is distributed on an "AS IS" BASIS, 12*5eae8ebbSCole Faust * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*5eae8ebbSCole Faust * See the License for the specific language governing permissions and 14*5eae8ebbSCole Faust * limitations under the License. 15*5eae8ebbSCole Faust */ 16*5eae8ebbSCole Faust 17*5eae8ebbSCole Faust 18*5eae8ebbSCole Faust package com.replica.replicaisland; 19*5eae8ebbSCole Faust 20*5eae8ebbSCole Faust import java.util.ArrayList; 21*5eae8ebbSCole Faust 22*5eae8ebbSCole Faust import org.xmlpull.v1.XmlPullParser; 23*5eae8ebbSCole Faust 24*5eae8ebbSCole Faust import android.content.Context; 25*5eae8ebbSCole Faust import android.content.res.XmlResourceParser; 26*5eae8ebbSCole Faust import android.text.TextUtils; 27*5eae8ebbSCole Faust 28*5eae8ebbSCole Faust public final class ConversationUtils { 29*5eae8ebbSCole Faust private static final int MAX_CHARACTERS_PER_PAGE = 250; 30*5eae8ebbSCole Faust 31*5eae8ebbSCole Faust public static class ConversationPage { 32*5eae8ebbSCole Faust public int imageResource; 33*5eae8ebbSCole Faust public CharSequence text; 34*5eae8ebbSCole Faust public String title; 35*5eae8ebbSCole Faust } 36*5eae8ebbSCole Faust 37*5eae8ebbSCole Faust public static class Conversation { 38*5eae8ebbSCole Faust public ArrayList<ConversationPage> pages = new ArrayList<ConversationPage>(); 39*5eae8ebbSCole Faust public boolean splittingComplete; 40*5eae8ebbSCole Faust } 41*5eae8ebbSCole Faust loadDialog(int resource, Context context)42*5eae8ebbSCole Faust public final static ArrayList<Conversation> loadDialog(int resource, Context context) { 43*5eae8ebbSCole Faust XmlResourceParser parser = context.getResources().getXml(resource); 44*5eae8ebbSCole Faust 45*5eae8ebbSCole Faust ArrayList<Conversation> dialog = null; 46*5eae8ebbSCole Faust Conversation currentConversation = null; 47*5eae8ebbSCole Faust 48*5eae8ebbSCole Faust try { 49*5eae8ebbSCole Faust int eventType = parser.getEventType(); 50*5eae8ebbSCole Faust while (eventType != XmlPullParser.END_DOCUMENT) { 51*5eae8ebbSCole Faust if (eventType == XmlPullParser.START_TAG) { 52*5eae8ebbSCole Faust if (parser.getName().equals("conversation")) { 53*5eae8ebbSCole Faust if (dialog == null) { 54*5eae8ebbSCole Faust dialog = new ArrayList<Conversation>(); 55*5eae8ebbSCole Faust } 56*5eae8ebbSCole Faust currentConversation = new Conversation(); 57*5eae8ebbSCole Faust currentConversation.splittingComplete = false; 58*5eae8ebbSCole Faust dialog.add(currentConversation); 59*5eae8ebbSCole Faust } else if (parser.getName().equals("page")) { 60*5eae8ebbSCole Faust ConversationPage page = new ConversationPage(); 61*5eae8ebbSCole Faust for (int i=0; i < parser.getAttributeCount(); i++) { 62*5eae8ebbSCole Faust final int value = parser.getAttributeResourceValue(i, -1); 63*5eae8ebbSCole Faust if (value != -1) { 64*5eae8ebbSCole Faust if (parser.getAttributeName(i).equals("image")) { 65*5eae8ebbSCole Faust page.imageResource = value; 66*5eae8ebbSCole Faust } 67*5eae8ebbSCole Faust if (parser.getAttributeName(i).equals("text")) { 68*5eae8ebbSCole Faust page.text = context.getText(value); 69*5eae8ebbSCole Faust } 70*5eae8ebbSCole Faust if (parser.getAttributeName(i).equals("title")) { 71*5eae8ebbSCole Faust page.title = context.getString(value); 72*5eae8ebbSCole Faust } 73*5eae8ebbSCole Faust } 74*5eae8ebbSCole Faust } 75*5eae8ebbSCole Faust currentConversation.pages.add(page); 76*5eae8ebbSCole Faust } 77*5eae8ebbSCole Faust } 78*5eae8ebbSCole Faust eventType = parser.next(); 79*5eae8ebbSCole Faust } 80*5eae8ebbSCole Faust } catch(Exception e) { 81*5eae8ebbSCole Faust DebugLog.e("LoadDialog", e.getStackTrace().toString()); 82*5eae8ebbSCole Faust } finally { 83*5eae8ebbSCole Faust parser.close(); 84*5eae8ebbSCole Faust } 85*5eae8ebbSCole Faust 86*5eae8ebbSCole Faust return dialog; 87*5eae8ebbSCole Faust } 88*5eae8ebbSCole Faust 89*5eae8ebbSCole Faust } 90