Subversion Repositories HomeAutomation

Rev

Rev 73 | Rev 1398 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed

  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. }