Subversion Repositories HomeAutomation

Rev

Rev 73 | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed

  1. class TimeDateObj {
  2.    
  3.     private var timeDateMC:MovieClip;
  4.     private var timeDateTF:TextField;
  5.    
  6.     private var timeDateFont:TextFormat;
  7.     //variabeldeklaration
  8.     //screen position and size
  9.     private var timeDateTop:Number;
  10.     private var timeDateLeft:Number;
  11.     private var timeDateWidth:Number;
  12.     private var timeDateHeight:Number;
  13.    
  14.     private var timeDateConfFormat:String;
  15.    
  16.     function TimeDateObj (mainScene:MovieClip, configXML:XMLNode) {
  17.         //TODO
  18.         //objektet lyder inte width
  19.         var configArr:Array = parseConfig(configXML);
  20.        
  21.         if (configArr[0] > -1) {
  22.             trace("Config error: " + configArr[0]);
  23.         } else {
  24.             timeDateFont = new TextFormat();
  25.            
  26.             timeDateFont.font = configArr[1];
  27.             timeDateFont.color = configArr[6];
  28.             timeDateLeft = configArr[2];
  29.             timeDateTop = configArr[3];
  30.             timeDateWidth = configArr[4];
  31.             timeDateHeight = configArr[5];
  32.             timeDateConfFormat = configArr[7];
  33.            
  34.             timeDateMC = mainScene.createEmptyMovieClip("timeDateMC", mainScene.getNextHighestDepth());
  35.             timeDateMC._x=timeDateLeft;
  36.             timeDateMC._y=timeDateTop;
  37.             timeDateTF = timeDateMC.createTextField("timeDateTF", 1, 0, 0, 0, 10);
  38.             timeDateTF.embedFonts = true;
  39.        
  40.        
  41.             timeDateTF.text = "Bla bla";
  42.             timeDateTF.setTextFormat(timeDateFont);
  43.  
  44.             timeDateTF.autoSize = "left";
  45.             timeDateMC._width = timeDateWidth;
  46.             timeDateMC._height = timeDateHeight;
  47.            
  48.             timeDateTF.selectable = false;
  49.             timeDateTF.type = "dynamic";
  50.             timeDateMC._visible = true;
  51.            
  52.            
  53.             updateTimer();
  54.             //timeDateTF._rotation = 45;
  55.             timeDateMC._rotation = configArr[8];
  56.            
  57.             var intervalID:Number = setInterval(this, "updateTimer", 200);
  58.             //trace(timeDateTF.text);
  59.         }
  60.     }
  61.    
  62.    
  63.      private function updateTimer():Void {
  64.         /*var my_date:Date = new Date();
  65.         var minStr:String = my_date.getMinutes().toString();
  66.         var div:String = ":";
  67.         if (minStr.length == 1) {
  68.             var div:String = ":0";
  69.         }*/
  70.         //trace(timeDateConfFormat);
  71.         timeDateTF.text = parseFormat(timeDateConfFormat);
  72.         //timeDateTF.text = my_date.getHours() + div + minStr;
  73.         timeDateTF.setTextFormat(timeDateFont);
  74.     }
  75.    
  76.     private function parseFormat(timeDateFormat:String): String {
  77.         //TODO:
  78.         //fixa så escapeade tecken inte parsas om till tid/datum
  79.         var dayOfWeek_array:Array = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
  80.         var shortDayOfWeek_array:Array = new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
  81.         var month_array:Array = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
  82.         var shortMonth_array:Array = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
  83.         var daysInMonth_array:Array = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
  84.        
  85.         var today_date:Date = new Date();
  86.         var dummyInt:Number = today_date.getDate();
  87.         var date_d:String = "" + dummyInt;
  88.         if (dummyInt < 10) {
  89.             date_d = "0" + date_d;
  90.         }
  91.  
  92.         var date_D:String = shortDayOfWeek_array[today_date.getDay()];
  93.         var date_j:String = "" + today_date.getDate();
  94.         var date_l:String = dayOfWeek_array[today_date.getDay()];
  95.        
  96.         var date_N:String = "" + today_date.getDay();
  97.         if (today_date.getDay() == 0) {
  98.             date_N = "7";
  99.         }
  100.        
  101.         if (today_date.getDate() == 1 || today_date.getDate() == 21 || today_date.getDate() == 31) {
  102.             var date_S:String = "st";
  103.         } else if (today_date.getDate() == 2 || today_date.getDate() == 22) {
  104.             var date_S:String = "nd";
  105.         } else if (today_date.getDate() == 3 || today_date.getDate() == 23) {
  106.             var date_S:String = "rd";
  107.         } else {
  108.             var date_S:String = "th";
  109.         }
  110.        
  111.         var date_w:String = "" + today_date.getDay();
  112.         var date_F:String = month_array[today_date.getMonth()];
  113.        
  114.         var dummyInt:Number = today_date.getMonth()+1;
  115.         var date_m:String = "" + dummyInt;
  116.         if (dummyInt < 10) {
  117.             date_m = "0" + date_m;
  118.         }
  119.        
  120.         var date_M:String = shortMonth_array[today_date.getMonth()];
  121.         var date_n:String = "" + today_date.getMonth();
  122.         var date_t:String = daysInMonth_array[today_date.getMonth()];
  123.         var date_Y:String = "" + today_date.getFullYear();
  124.         var date_y:String = date_Y.substr(2, 2);
  125.        
  126.         dummyInt = today_date.getHours();
  127.         var date_a:String = (dummyInt<12) ? "am" : "pm";
  128.         var date_A:String = (dummyInt<12) ? "AM" : "PM";
  129.  
  130.     dummyInt = dummyInt%12;
  131.     if (dummyInt == 0) {
  132.         dummyInt = 12;
  133.     }
  134.         var date_g:String = "" + dummyInt;
  135.         var date_G:String = "" + today_date.getHours();
  136.         var date_h:String = "" + dummyInt;
  137.         var date_H:String = "" + today_date.getHours();
  138.         if (dummyInt < 10) {
  139.             date_h = "0" + date_h;
  140.         }
  141.         dummyInt = today_date.getHours();
  142.         if (dummyInt < 10) {
  143.             date_H = "0" + date_H;
  144.         }
  145.        
  146.         dummyInt = today_date.getMinutes();
  147.         var date_i:String = "" + dummyInt;
  148.         if (dummyInt < 10) {
  149.             date_i = "0" + date_i;
  150.         }
  151.         dummyInt = today_date.getSeconds();
  152.         var date_s:String = "" + dummyInt;
  153.         if (dummyInt < 10) {
  154.             date_s = "0" + date_s;
  155.         }
  156.        
  157.         var dummyInt2:Number = dummyInt2.parseInt(today_date.valueOf()/1000)
  158.         var date_U:String = "" + dummyInt;
  159.        
  160.         var returnstr:String = replace(timeDateFormat, "dd", date_d);
  161.         returnstr = replace(returnstr, "d", date_d);
  162.         returnstr = replace(returnstr, "D", date_D);
  163.         returnstr = replace(returnstr, "j", date_j);
  164.         returnstr = replace(returnstr, "l", date_l);
  165.         returnstr = replace(returnstr, "N", date_N);
  166.         returnstr = replace(returnstr, "S", date_S);
  167.         returnstr = replace(returnstr, "w", date_w);
  168.         returnstr = replace(returnstr, "F", date_F);
  169.         returnstr = replace(returnstr, "mm", date_m);
  170.         returnstr = replace(returnstr, "m", date_m);
  171.         returnstr = replace(returnstr, "M", date_M);
  172.         returnstr = replace(returnstr, "n", date_n);
  173.         returnstr = replace(returnstr, "t", date_t);
  174.         returnstr = replace(returnstr, "YYYY", date_Y);
  175.         returnstr = replace(returnstr, "Y", date_Y);
  176.         returnstr = replace(returnstr, "yy", date_y);
  177.         returnstr = replace(returnstr, "y", date_y);
  178.         returnstr = replace(returnstr, "a", date_a);
  179.         returnstr = replace(returnstr, "A", date_A);
  180.         returnstr = replace(returnstr, "g", date_g);
  181.         returnstr = replace(returnstr, "G", date_G);
  182.         returnstr = replace(returnstr, "hh", date_h);
  183.         returnstr = replace(returnstr, "h", date_h);
  184.         returnstr = replace(returnstr, "HH", date_H);
  185.         returnstr = replace(returnstr, "H", date_H);
  186.         returnstr = replace(returnstr, "ii", date_i);
  187.         returnstr = replace(returnstr, "i", date_i);
  188.         returnstr = replace(returnstr, "ss", date_s);
  189.         returnstr = replace(returnstr, "s", date_s);
  190.         returnstr = replace(returnstr, "U", date_U);
  191. //      returnstr = replace(returnstr, "", );
  192.  
  193.         /*
  194.     not implemented:
  195.     Timezone (e, I (capital i), O, T, Z)
  196.     Full Date/Time (c, r)
  197.     Anything with leap year (L, z)
  198.     Week (W)
  199.     and o
  200.         */
  201.    
  202.         return returnstr;
  203.     }
  204.    
  205.     private function replace(holder:String, searchfor:String, replacement:String):String {
  206.         var temparray:Array = holder.split(searchfor);
  207.         holder = temparray.join(replacement);
  208.         return (holder);
  209.     }
  210.    
  211.     private function parseConfig(data:XMLNode): Array {
  212.         var confError:Number = -1;
  213.         var confArr:Array = new Array();
  214.         for (var bNode:XMLNode = data.firstChild; bNode != null && confError == -1; bNode=bNode.nextSibling) {
  215.             //trace(bNode.nodeName);
  216.             if (bNode.nodeName == "option") {
  217.                 switch (bNode.attributes.name) {
  218.                     case "font":
  219.                     if (bNode.attributes.value.length > 0) {   
  220.                         confArr[1] = bNode.attributes.value;
  221.                     } else {
  222.                         confError = 1;
  223.                     }
  224.                     break;
  225.                     case "left":
  226.                     if (parseFloat(bNode.attributes.value) >= 0) {
  227.                         confArr[2] = parseFloat(bNode.attributes.value) * Stage.width;
  228.                     } else {
  229.                         confError = 2;
  230.                     }
  231.                     break;
  232.                     case "top":
  233.                     if (parseFloat(bNode.attributes.value) >= 0) {
  234.                         confArr[3] = parseFloat(bNode.attributes.value) * Stage.height;
  235.                     } else {
  236.                         confError = 3;
  237.                     }
  238.                     break;
  239.                     case "width":
  240.                     if (parseFloat(bNode.attributes.value) >= 0) {
  241.                         confArr[4] = parseFloat(bNode.attributes.value) * Stage.width;
  242.                     } else {
  243.                         confError = 4;
  244.                     }
  245.                     break;
  246.                     case "height":
  247.                     if (parseFloat(bNode.attributes.value) >= 0) {
  248.                         confArr[5] = parseFloat(bNode.attributes.value) * Stage.height;
  249.                     } else {
  250.                         confError = 5;
  251.                     }
  252.                     break;
  253.                     case "fontcolor":
  254.                     if (parseInt(bNode.attributes.value) >= 0) {
  255.                         confArr[6] = parseInt(bNode.attributes.value);
  256.                         //trace(confArr[6]);
  257.                     } else {
  258.                         confError = 6;
  259.                     }
  260.                     break;
  261.                     case "format":
  262.                     if (bNode.attributes.value.length > 0) {
  263.                         confArr[7] = bNode.attributes.value;
  264.                         //trace(confArr[6]);
  265.                     } else {
  266.                         confError = 7;
  267.                     }
  268.                     break;
  269.                     case "rotation":
  270.                     if (parseInt(bNode.attributes.value) >= -180 && parseInt(bNode.attributes.value) <= 180) {
  271.                         confArr[8] = parseInt(bNode.attributes.value);
  272.                         //trace(confArr[6]);
  273.                     } else {
  274.                         confError = 8;
  275.                     }
  276.                     break;
  277.                
  278.                 }
  279.             }
  280.         }
  281.         confArr[0] = confError;
  282.         return confArr;
  283.     }
  284.    
  285. }