Subversion Repositories HomeAutomation

Rev

Details | Last modification | View Log | SVN | RSS feed

Rev Author Line No. Line
15 arune 1
/*
2
 * File created by arune
3
 * at 2004-dec
4
 */
5
package Macbeth.Modules.modMediaManager;
6
 
7
import java.util.*;
8
 
9
import Macbeth.System.*;
10
import Macbeth.Utilities.*;
11
import Macbeth.XML.XMLDataHandler;
12
 
13
/**
14
 *
15
 *
16
 * @author arune
17
 */
18
public class modMediaManager extends MbModule {
19
    private String menuMiddleId;
20
 
21
    //menusystem specific bool, if this submenu is activated
22
    private boolean activated;
23
 
24
    /**
25
     * Creates a new instance of modMediaManager.
26
     */
27
    public modMediaManager() {
28
        //construct MbModule
29
        super();
30
        //initial values
31
        menuMiddleId = "0";
32
        activated = false;
33
        //register our packet data handler
34
        setPacketDataHandler(new PacketDataHandler());
35
    }
36
 
37
    public String name() {
38
        return "MediaManager";
39
    }
40
 
41
    public String description() {
42
        return "jadajada";
43
    }
44
 
45
    /**
46
     * This method sets default values on all _required_ data
47
     * fields in the data repository.
48
     */
49
    public void initDataFields() {
50
        //set default values on all REQUIRED option fields before starting up subsystems
51
//        options.putField("host", "localhost");
52
//        options.putField("port", "2050");
53
    }
54
 
55
    public void startup() throws MbStartupException {
56
        //startup MbModule
57
        super.startup();
58
 
59
        sendToMenuSys("<registersubmod displayname=\"Media\" displaydesc=\"Välj film eller musik\" visible=\"true\" />");
60
    }
61
 
62
    /**
63
     * Shuts down this module.
64
     */
65
    public void shutdown() {
66
        sendToMenuSys("<unregistersubmod />");
67
        //shut down MbModule        
68
        super.shutdown();
69
    }
70
 
71
    private void sendToMenuSys(String dataToSend) {
72
        MbPacket p = new MbPacket();
73
        p.setDestination(new MbLocation("self", "MenuSystem"));
74
        p.appendContents(dataToSend);
75
        sendPacket(p);
76
    }
77
 
78
    /**
79
     * Takes care of XML-data found in incoming packets.
80
     */
81
    private class PacketDataHandler implements XMLDataHandler {
82
        public void XMLstartElement(String element, HashMap attributes) {
83
            if (element.equals("activate")) {
84
                //menusystem activates this submenu
85
                //we should send a menu to display
86
                activated = true;
87
                String dataToSend = "";
88
                dataToSend = dataToSend + "<packet menuid=\"MainMenu\"><data>";
89
                dataToSend = dataToSend + "<middleid>" + menuMiddleId + "</middleid>";
90
                dataToSend = dataToSend + "<list id=\"menudata\">";
91
 
92
                for (int i = 0; i < 200; i++) {
93
                    dataToSend = dataToSend + "<item id=\"" + i + "\" title=\"Test item #" + i + "\" desc=\"Description test test test, dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla\" />";
94
                }
95
 
96
                dataToSend = dataToSend + "</list>";
97
                dataToSend = dataToSend + "</data></packet>";
98
 
99
                sendToMenuSys(dataToSend);
100
 
101
            } else if (element.equals("refresh")) {
102
                //menusystem wants a refreshed menu
103
                String dataToSend = "";
104
                dataToSend = dataToSend + "<packet menuid=\"MainMenu\"><data>";
105
                dataToSend = dataToSend + "<middleid>" + menuMiddleId + "</middleid>";
106
                dataToSend = dataToSend + "<list id=\"menudata\">";
107
                for (int i = 0; i < 200; i++) {
108
                    dataToSend = dataToSend + "<item id=\"" + i + "\" title=\"Test item #" + i + "\" desc=\"Description test test test, dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla dubbla\" />";
109
                }
110
                dataToSend = dataToSend + "</list>";
111
                dataToSend = dataToSend + "</data></packet>";
112
 
113
                sendToMenuSys(dataToSend);
114
 
115
            } else if (element.equals("deactivate")) {
116
                //menusystem deactivates this submenu
117
                activated = false;
118
                //resendMenuTimer.cancel();
119
 
120
            } else if (element.equals("padLeft") && attributes.containsKey("state") && attributes.containsKey("level")) {
121
                //user pressed padleft on his remote
122
                //we should traverse back one step or deactivate
123
                //if we are in submenu root
124
                String state = (String)attributes.get("state");
125
                int level = Integer.parseInt((String)attributes.get("level"));
126
 
127
                if (level >= 2) {
128
                    if (state.equals("DOWN")) {
129
                        activated = false;
130
 
131
                        sendToMenuSys("<deactivates />");
132
                    }
133
                }
134
            } else if (element.equals("padRight") && attributes.containsKey("state") && attributes.containsKey("level")) {
135
                //user pressed padright on his remote
136
                //we should traverse forward one step 
137
                String state = (String)attributes.get("state");
138
                int level = Integer.parseInt((String)attributes.get("level"));
139
 
140
                if (level >= 2) {
141
                    if (state.equals("DOWN")) {
142
                    }
143
                }
144
 
145
            } else if (element.equals("padOk") && attributes.containsKey("state") && attributes.containsKey("level")) {
146
                //user pressed padOk on his remote
147
                // 
148
                String state = (String)attributes.get("state");
149
                int level = Integer.parseInt((String)attributes.get("level"));
150
 
151
                if (level >= 3) {
152
                    if (state.equals("DOWN")) {
153
                    }
154
                }
155
 
156
            } else if (element.equals("padUp") && attributes.containsKey("state") && attributes.containsKey("level")) {
157
                //user pressed padright on his remote
158
                //we should traverse forward one step 
159
                String state = (String)attributes.get("state");
160
                int level = Integer.parseInt((String)attributes.get("level"));
161
 
162
                if (level >= 1) {
163
                    if (state.equals("DOWN")) {
164
                        sendToMenuSys("<packet menuid=\"MainMenu\"><command><scroll>1</scroll></command></packet>");
165
                    } else {
166
                        sendToMenuSys("<packet menuid=\"MainMenu\"><command><scroll>0</scroll></command></packet>");
167
                    }
168
                }
169
 
170
            } else if (element.equals("padDown") && attributes.containsKey("state") && attributes.containsKey("level")) {
171
                //user pressed padright on his remote
172
                //we should traverse forward one step 
173
                String state = (String)attributes.get("state");
174
                int level = Integer.parseInt((String)attributes.get("level"));
175
 
176
                if (level >= 1) {
177
                    if (state.equals("DOWN")) {
178
                        sendToMenuSys("<packet menuid=\"MainMenu\"><command><scroll>-1</scroll></command></packet>");
179
                    } else {
180
                        sendToMenuSys("<packet menuid=\"MainMenu\"><command><scroll>0</scroll></command></packet>");
181
                    }
182
                }
183
 
184
            } else if (element.equals("middleid") && attributes.containsKey("value") && attributes.containsKey("menuid") && attributes.containsKey("userlevel")) {
185
                String middleId = (String)attributes.get("value");
186
                String menuId = (String)attributes.get("menuid");
187
                int userlevel = 0;
188
                try {
189
                    userlevel = Integer.parseInt((String)attributes.get("userlevel"));
190
                } catch (NumberFormatException ex) {
191
                    _errors.println("There was a faulty userlevel sent to me: " + (String)attributes.get("userlevel"));
192
                }
193
 
194
                if (userlevel >= 2 && menuId.equals("MainMenu")) {
195
                    menuMiddleId = middleId;
196
                }              
197
            }
198
 
199
        }
200
 
201
        public void XMLendElement(String element) {}
202
        public void XMLelementData(String data) {}
203
        public void XMLdocumentStart() {}
204
        public void XMLdocumentEnd() {}
205
    }
206
 
207
}