xref: /aosp_15_r20/external/replicaisland/src/com/replica/replicaisland/ConversationUtils.java (revision 5eae8ebb3c5756e41e77a1f7201fcf94b0eade1f)
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