Ignore:
Timestamp:
Aug 20, 2008, 5:13:14 PM (13 years ago)
Author:
rene <rene@…>
Branches:
master
Children:
e11e2c
Parents:
577806
Message:

implemented new notifcation-box. Now using textfield.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • chrome/content/v_identity/vI_notificationBar.xml

    r577806 ra26656  
    11<?xml version="1.0"?>
    22
    3 <!DOCTYPE overlay [
     3<!DOCTYPE bindings [
    44<!ENTITY % versionDTD SYSTEM "chrome://v_identity/content/_version.dtd">
    55%versionDTD;
     
    3939      <field name="_timer">null</field>
    4040      <field name="_closedNotification">null</field>
    41       <field name="_blockBox">null</field>
     41      <field name="_blockingCanvas">null</field>
    4242
    4343      <property name="notificationsHidden"
     
    4747            this.setAttribute('notificationshidden', true);
    4848          else this.removeAttribute('notificationshidden');
     49          return val;
    4950        </setter>
    5051      </property>
     
    9394            newitem.setAttribute("label", aLabel);
    9495            newitem.setAttribute("value", aValue);
    95             newitem.setAttribute("image", aImage);
     96            if (aImage)
     97                newitem.setAttribute("image", aImage);
    9698            if (!insertPos) {
    9799              newitem.style.position = "fixed";
     
    171173      </method>
    172174
     175      <method name="removeTransientNotifications">
     176        <body>
     177          <![CDATA[
     178            var notifications = this.allNotifications;
     179            for (var n = notifications.length - 1; n >= 0; n--) {
     180              var notification = notifications[n];
     181              if (notification.persistence)
     182                notification.persistence--;
     183              else if (Date.now() > notification.timeout)
     184                this.removeNotification(notification);
     185            }
     186          ]]>
     187        </body>
     188      </method>
     189
    173190      <method name="_showNotification">
    174191        <parameter name="aNotification"/>
     
    186203                  removeChild(this._closedNotification); }
    187204          catch (e) {};
     205              this._setBlockingState(this.currentNotification);
    188206            }
    189207
     
    245263                  self._closedNotification.parentNode.
    246264                    removeChild(self._closedNotification);
     265                self._setBlockingState(self.currentNotification);
    247266              }
    248267            }
    249268
    250269            this._timer = setInterval(slide, 50);
     270          ]]>
     271        </body>
     272      </method>
     273
     274      <method name="_setBlockingState">
     275        <parameter name="aNotification"/>
     276        <body>
     277          <![CDATA[
     278            var isblock = aNotification &&
     279                          aNotification.priority == this.PRIORITY_CRITICAL_BLOCK;
     280            var canvas = this._blockingCanvas;
     281            if (isblock) {
     282              if (!canvas)
     283                canvas = document.createElementNS("http://www.w3.org/1999/xhtml", "canvas");
     284              const XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
     285              var content = this.firstChild;
     286              if (!content ||
     287                   content.namespaceURI != XULNS ||
     288                   content.localName != "browser")
     289                return;
     290
     291              var width = content.boxObject.width;
     292              var height = content.boxObject.height;
     293              content.collapsed = true;
     294
     295              canvas.setAttribute("width", width);
     296              canvas.setAttribute("height", height);
     297              canvas.setAttribute("flex", "1");
     298
     299              this.appendChild(canvas);
     300              this._blockingCanvas = canvas;
     301
     302              var bgcolor = "white";
     303              try {
     304                var prefService = Components.classes["@mozilla.org/preferences-service;1"].
     305                                    getService(Components.interfaces.nsIPrefBranch);
     306                bgcolor = prefService.getCharPref("browser.display.background_color");
     307
     308                var win = content.contentWindow;
     309                var context = canvas.getContext("2d");
     310                context.globalAlpha = 0.5;
     311                context.drawWindow(win, win.scrollX, win.scrollY,
     312                                   width, height, bgcolor);
     313              }
     314              catch(ex) { };
     315            }
     316            else if (canvas) {
     317              canvas.parentNode.removeChild(canvas);
     318              this._blockingCanvas = null;
     319              var content = this.firstChild;
     320              if (content)
     321                content.collapsed = false;
     322            }
    251323          ]]>
    252324        </body>
     
    255327    </implementation>
    256328  </binding>
    257      
     329
    258330  <binding id="notification">
    259331    <content>
     
    262334                  oncommand="this.parentNode.parentNode._doButtonCommand(event);">
    263335          <xul:image anonid="messageImage" class="messageImage" xbl:inherits="src=image"/>
    264           <xul:description anonid="messageText" class="messageText" flex="1" xbl:inherits="xbl:text=label"/>
    265           <xul:spacer flex="1"/>
     336      <xul:vbox><xul:spacer flex="1" />
     337          <xul:label id="vINotificationTitle" hidden="true" align="right" />
     338          <xul:label class="v_identity_logo vINotificationLogo"
     339                              value="&vident.vidLogo.label; &vident.version;" align="right" />
     340          <xul:spacer flex="1" /></xul:vbox>
     341          <xul:textbox id="vINotificationTextbox" anonid="messageText" class="plain" height="3"
     342            value="" flex="1" multiline="true" readonly="true"
     343            xbl:inherits="value=label"
     344            DOMAttrModified="if(event.attrName == 'value') this.value = event.newValue; return true;"
     345            onoverflow="vI_notificationBar.overflow(this);" oncontextmenu="" />
    266346          <children/>
    267347        </xul:hbox>
    268         <xul:vbox><xul:spacer flex="1" /><xul:label class="v_identity_logo vINotificationLogo"
    269             value="&vident.vidLogo.label; &vident.version;" align="right" />
    270         <xul:spacer flex="1" /></xul:vbox>
    271348        <xul:toolbarbutton ondblclick="event.stopPropagation();"
    272                            class="messageCloseButton"
     349                           class="messageCloseButton tabbable"
    273350                           xbl:inherits="hidden=hideclose"
    274351                           oncommand="vI_notificationBar.clear();"/>
     
    279356    </resources>
    280357    <implementation implements="nsIAccessibleProvider">
    281       <property name="accessible" readonly="true">
     358      <property name="accessibleType" readonly="true">
    282359        <getter>
    283360          <![CDATA[
    284             var accService = Components.classes["@mozilla.org/accessibilityService;1"].getService(Components.interfaces.nsIAccessibilityService);
    285             return accService.createXULAlertAccessible(this);
     361            return Components.interfaces.nsIAccessibleProvider.XULAlert;
    286362          ]]>
    287363        </getter>
    288364      </property>
    289365
    290       <property name="label" onset="return this.setAttribute('label', val);"
     366      <property name="label" onset="this.setAttribute('label', val); return val;"
    291367                             onget="return this.getAttribute('label');"/>
    292       <property name="value" onset="return this.setAttribute('value', val);"
     368      <property name="value" onset="this.setAttribute('value', val); return val;"
    293369                             onget="return this.getAttribute('value');"/>
    294       <property name="image" onset="return this.setAttribute('image', val);"
     370      <property name="image" onset="this.setAttribute('image', val); return val;"
    295371                             onget="return this.getAttribute('image');"/>
    296       <property name="type" onget="return this.getAttribute('type');"
    297                             onset="this.setAttribute('type', val); return val;"/>
    298       <property name="priority" onget="return this.getAttribute('priority');"
     372      <property name="type" onset="this.setAttribute('type', val); return val;"
     373                            onget="return this.getAttribute('type');"/>
     374      <property name="priority" onget="return parseInt(this.getAttribute('priority')) || 0;"
    299375                                onset="this.setAttribute('priority', val); return val;"/>
     376      <property name="persistence" onget="return parseInt(this.getAttribute('persistence')) || 0;"
     377                                   onset="this.setAttribute('persistence', val); return val;"/>
     378      <field name="timeout">0</field>
    300379
    301380      <property name="control" readonly="true">
     
    334413            var button = aEvent.target.buttonInfo;
    335414            if (button.popup) {
     415              document.popupNode = aEvent.target;
    336416              document.getElementById(button.popup).
    337417                showPopup(aEvent.originalTarget, -1, -1, "popup", "bottomleft", "topleft");
Note: See TracChangeset for help on using the changeset viewer.