ginebra2/chrome/bedrockchrome/networkstatus.snippet/networkstatus.js
author hgs
Fri, 15 Oct 2010 17:30:59 -0400
changeset 16 3c88a81ff781
parent 12 afcd8e6d025b
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*!
3
hgs
parents: 0
diff changeset
     2
  \file networkstatus.js This module contains the NetworkStatusDialog class which
hgs
parents: 0
diff changeset
     3
  displays network/http errors.
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
*/
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
3
hgs
parents: 0
diff changeset
     6
function NetworkStatusDialog() {
hgs
parents: 0
diff changeset
     7
    var onChromeComplete = function()
hgs
parents: 0
diff changeset
     8
    {
hgs
parents: 0
diff changeset
     9
        // Get external mouse events.
hgs
parents: 0
diff changeset
    10
        snippets.NetworkStatusChromeId.externalMouseEvent.connect(this.handleExternalMouseEvent.bind(this));
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
3
hgs
parents: 0
diff changeset
    12
        // Watch for page load errors.
hgs
parents: 0
diff changeset
    13
        window.pageController.pageLoadFailed.connect(
hgs
parents: 0
diff changeset
    14
          function() {
hgs
parents: 0
diff changeset
    15
             if (!window.pageController.loadCanceled ) {
hgs
parents: 0
diff changeset
    16
                if (window.pageController.errorUrlMatches) {
hgs
parents: 0
diff changeset
    17
                   update();
hgs
parents: 0
diff changeset
    18
                   showNetworkStatus();
hgs
parents: 0
diff changeset
    19
                }
hgs
parents: 0
diff changeset
    20
             }
hgs
parents: 0
diff changeset
    21
          }
hgs
parents: 0
diff changeset
    22
        );        
hgs
parents: 0
diff changeset
    23
    }
hgs
parents: 0
diff changeset
    24
    
hgs
parents: 0
diff changeset
    25
    //! Add text to the given DOM element, truncate it at the given width (in pixels).
hgs
parents: 0
diff changeset
    26
    //! Returns the remainder of the string.
hgs
parents: 0
diff changeset
    27
    function truncateTextToWidth(element, text, width)
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
    {
3
hgs
parents: 0
diff changeset
    29
       element.innerHTML = '<span style="white-space:nowrap;">' + text + '</span>';
hgs
parents: 0
diff changeset
    30
       if(element.offsetWidth > width)
hgs
parents: 0
diff changeset
    31
       {
hgs
parents: 0
diff changeset
    32
          var i = 1;
hgs
parents: 0
diff changeset
    33
          element.innerHTML = '';
hgs
parents: 0
diff changeset
    34
          while(element.offsetWidth < (width) && i < text.length)
hgs
parents: 0
diff changeset
    35
          {
hgs
parents: 0
diff changeset
    36
             element.innerHTML = text.substr(0,i);
hgs
parents: 0
diff changeset
    37
             i++;
hgs
parents: 0
diff changeset
    38
          }
hgs
parents: 0
diff changeset
    39
          return text.substr(i-1);
hgs
parents: 0
diff changeset
    40
       }
hgs
parents: 0
diff changeset
    41
       return "";
hgs
parents: 0
diff changeset
    42
    } 
hgs
parents: 0
diff changeset
    43
    
hgs
parents: 0
diff changeset
    44
    //! Update text elements with error info.
hgs
parents: 0
diff changeset
    45
    var update = function()
hgs
parents: 0
diff changeset
    46
    {
hgs
parents: 0
diff changeset
    47
        // Set URL.  Two lines of it are displayed, the first wraps to the second and the second
hgs
parents: 0
diff changeset
    48
        // is truncated with an ellipsis appended by CSS.
hgs
parents: 0
diff changeset
    49
        var parentWidth = document.getElementById("networkStatusTextUrlParent").offsetWidth;
hgs
parents: 0
diff changeset
    50
        var restOfUrl = truncateTextToWidth(document.getElementById("networkStatusTextUrl1Id"), '"' + pageController.networkErrorUrl + '"', parentWidth);
hgs
parents: 0
diff changeset
    51
        document.getElementById("networkStatusTextUrl2Id").innerHTML = restOfUrl;
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
3
hgs
parents: 0
diff changeset
    53
        // Set error message.
hgs
parents: 0
diff changeset
    54
        if(pageController.networkErrorMsg != undefined && pageController.networkErrorMsg != "") {
hgs
parents: 0
diff changeset
    55
            document.getElementById("networkStatusTextMsgId").innerHTML = pageController.networkErrorMsg;
hgs
parents: 0
diff changeset
    56
        }
hgs
parents: 0
diff changeset
    57
        else {
hgs
parents: 0
diff changeset
    58
            document.getElementById("networkStatusTextMsgId").innerHTML = window.localeDelegate.translateText("txt_browser_error_generic_error_msg");
hgs
parents: 0
diff changeset
    59
        }
hgs
parents: 0
diff changeset
    60
    }
hgs
parents: 0
diff changeset
    61
    
hgs
parents: 0
diff changeset
    62
    //! Handles external mouse events - dismisses status dialog.
hgs
parents: 0
diff changeset
    63
    /*!
hgs
parents: 0
diff changeset
    64
      \param type the type of event
hgs
parents: 0
diff changeset
    65
      \param name the name of event
hgs
parents: 0
diff changeset
    66
      \param description event description
hgs
parents: 0
diff changeset
    67
    */
hgs
parents: 0
diff changeset
    68
    this.handleExternalMouseEvent = function(type, name, description)
hgs
parents: 0
diff changeset
    69
    {
hgs
parents: 0
diff changeset
    70
        if (name == "QGraphicsSceneMousePressEvent") {
hgs
parents: 0
diff changeset
    71
            this.hideNetworkStatus();
hgs
parents: 0
diff changeset
    72
        }
hgs
parents: 0
diff changeset
    73
    }
hgs
parents: 0
diff changeset
    74
    
hgs
parents: 0
diff changeset
    75
    //! Show the network status dialog and shaded overlay.
hgs
parents: 0
diff changeset
    76
    var showNetworkStatus = function(){
hgs
parents: 0
diff changeset
    77
hgs
parents: 0
diff changeset
    78
        var snippet = snippets.NetworkStatusChromeId;
hgs
parents: 0
diff changeset
    79
        snippet.updateOwnerArea();
hgs
parents: 0
diff changeset
    80
        snippet.show(true);
hgs
parents: 0
diff changeset
    81
        snippet.zValue = 1;
hgs
parents: 0
diff changeset
    82
        snippet.repaint();
hgs
parents: 0
diff changeset
    83
    
hgs
parents: 0
diff changeset
    84
        //networkTimeoutId = setTimeout(hideNetworkStatus, 2000);
hgs
parents: 0
diff changeset
    85
    }
hgs
parents: 0
diff changeset
    86
hgs
parents: 0
diff changeset
    87
    //! Hide the network status dialog and shaded overlay.
hgs
parents: 0
diff changeset
    88
    this.hideNetworkStatus = function(){
hgs
parents: 0
diff changeset
    89
        snippets.NetworkStatusChromeId.hide();
hgs
parents: 0
diff changeset
    90
    }
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    91
3
hgs
parents: 0
diff changeset
    92
    //! Create the DOM elements for the dialog.
hgs
parents: 0
diff changeset
    93
    this.setupPage = function(){    
16
hgs
parents: 12
diff changeset
    94
    	 if(app.ui() == "maemo5_ui") {
hgs
parents: 12
diff changeset
    95
    	 	 var html =
hgs
parents: 12
diff changeset
    96
            '<div class="networkStatusBoxMaemo">' +
3
hgs
parents: 0
diff changeset
    97
                '<ul>' +
hgs
parents: 0
diff changeset
    98
                    '<li>' +
hgs
parents: 0
diff changeset
    99
                        '<img src="networkstatus.snippet/icons/icon_dialog_error.png"/>&nbsp;&nbsp;' +
hgs
parents: 0
diff changeset
   100
                        '<span class="networkStatusText">' +
hgs
parents: 0
diff changeset
   101
                            window.localeDelegate.translateText("txt_browser_error_page_load_failed") +
hgs
parents: 0
diff changeset
   102
                        '</span>' +
hgs
parents: 0
diff changeset
   103
                    '</li>' +
hgs
parents: 0
diff changeset
   104
                    '<li id="networkStatusTextUrlParent">' +
hgs
parents: 0
diff changeset
   105
                        '<span class="networkStatusText" id="networkStatusTextUrl1Id"></span><br/>' +
hgs
parents: 0
diff changeset
   106
                        '<div class="networkStatusText2" id="networkStatusTextUrl2Id"></div>' +
hgs
parents: 0
diff changeset
   107
                    '</li>' +
hgs
parents: 0
diff changeset
   108
                    '<li>' +
12
hgs
parents: 3
diff changeset
   109
                        '<p class="networkErrorMessage" id="networkStatusTextMsgId"/>' +
3
hgs
parents: 0
diff changeset
   110
                    '</li>' +
hgs
parents: 0
diff changeset
   111
                    '<li>' +
hgs
parents: 0
diff changeset
   112
                        '<center><img id="networkStatus_okId" class="networkStatusOkButton"/></center>' +
hgs
parents: 0
diff changeset
   113
                    '</li>' +
hgs
parents: 0
diff changeset
   114
                '</ul>' +
hgs
parents: 0
diff changeset
   115
            '</div>';
16
hgs
parents: 12
diff changeset
   116
    	 }
hgs
parents: 12
diff changeset
   117
    	 else {
hgs
parents: 12
diff changeset
   118
        var html =
hgs
parents: 12
diff changeset
   119
            '<div class="networkStatusBox">' +
hgs
parents: 12
diff changeset
   120
                '<ul>' +
hgs
parents: 12
diff changeset
   121
                    '<li>' +
hgs
parents: 12
diff changeset
   122
                        '<img src="/networkstatus/icon_dialog_error.png"/>&nbsp;&nbsp;' +
hgs
parents: 12
diff changeset
   123
                        '<span class="networkStatusText">' +
hgs
parents: 12
diff changeset
   124
                            window.localeDelegate.translateText("txt_browser_error_page_load_failed") +
hgs
parents: 12
diff changeset
   125
                        '</span>' +
hgs
parents: 12
diff changeset
   126
                    '</li>' +
hgs
parents: 12
diff changeset
   127
                    '<li id="networkStatusTextUrlParent">' +
hgs
parents: 12
diff changeset
   128
                        '<span class="networkStatusText" id="networkStatusTextUrl1Id"></span><br/>' +
hgs
parents: 12
diff changeset
   129
                        '<div class="networkStatusText2" id="networkStatusTextUrl2Id"></div>' +
hgs
parents: 12
diff changeset
   130
                    '</li>' +
hgs
parents: 12
diff changeset
   131
                    '<li>' +
hgs
parents: 12
diff changeset
   132
                        '<p class="networkErrorMessage" id="networkStatusTextMsgId"/>' +
hgs
parents: 12
diff changeset
   133
                    '</li>' +
hgs
parents: 12
diff changeset
   134
                    '<li>' +
hgs
parents: 12
diff changeset
   135
                        '<center><img id="networkStatus_okId" class="networkStatusOkButton"/></center>' +
hgs
parents: 12
diff changeset
   136
                    '</li>' +
hgs
parents: 12
diff changeset
   137
                '</ul>' +
hgs
parents: 12
diff changeset
   138
            '</div>';
hgs
parents: 12
diff changeset
   139
        }
3
hgs
parents: 0
diff changeset
   140
        document.write(html);
hgs
parents: 0
diff changeset
   141
        new SimpleButton("networkStatus_okId",
16
hgs
parents: 12
diff changeset
   142
                         "/networkstatus/button_dialog_ok_wait.png",
hgs
parents: 12
diff changeset
   143
                         "/networkstatus/button_dialog_ok_press.png",
3
hgs
parents: 0
diff changeset
   144
                         "",
hgs
parents: 0
diff changeset
   145
                         this.onOkPressed.bind(this));
hgs
parents: 0
diff changeset
   146
    }
hgs
parents: 0
diff changeset
   147
hgs
parents: 0
diff changeset
   148
    this.onOkPressed = function() {
hgs
parents: 0
diff changeset
   149
        this.hideNetworkStatus();
hgs
parents: 0
diff changeset
   150
    }
hgs
parents: 0
diff changeset
   151
hgs
parents: 0
diff changeset
   152
    this.setupPage();
hgs
parents: 0
diff changeset
   153
hgs
parents: 0
diff changeset
   154
    chrome.chromeComplete.connect(onChromeComplete.bind(this));
0
1450b09d0cfd Revision: 201015
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   155
}