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
18package com.replica.replicaisland;
19
20import java.util.ArrayList;
21
22import org.xmlpull.v1.XmlPullParser;
23
24import android.content.Context;
25import android.content.res.XmlResourceParser;
26import android.text.TextUtils;
27
28public 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
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