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