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