Welcome to mirror list, hosted at ThFree Co, Russian Federation.

window.js « pane « view « src - github.com/candy-chat/candy.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: b6bb489a5528309d3be14e72c47970937f19e261 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/** File: window.js
 * Candy - Chats are not dead yet.
 *
 * Authors:
 *   - Patrick Stadler <patrick.stadler@gmail.com>
 *   - Michael Weibel <michael.weibel@gmail.com>
 *
 * Copyright:
 *   (c) 2011 Amiado Group AG. All rights reserved.
 *   (c) 2012-2014 Patrick Stadler & Michael Weibel. All rights reserved.
 */
'use strict';

/* global Candy, jQuery, window */

/** Class: Candy.View.Pane
 * Candy view pane handles everything regarding DOM updates etc.
 *
 * Parameters:
 *   (Candy.View.Pane) self - itself
 *   (jQuery) $ - jQuery
 */
Candy.View.Pane = (function(self) {

  /** Class: Candy.View.Pane.Window
   * Window related view updates
   */
  self.Window = {
    /** PrivateVariable: _hasFocus
     * Window has focus
     */
    _hasFocus: true,
    /** PrivateVariable: _plainTitle
     * Document title
     */
    _plainTitle: window.top.document.title,
    /** PrivateVariable: _unreadMessagesCount
     * Unread messages count
     */
    _unreadMessagesCount: 0,

    /** Variable: autoscroll
     * Boolean whether autoscroll is enabled
     */
    autoscroll: true,

    /** Function: hasFocus
     * Checks if window has focus
     *
     * Returns:
     *   (Boolean)
     */
    hasFocus: function() {
      return self.Window._hasFocus;
    },

    /** Function: increaseUnreadMessages
     * Increases unread message count in window title by one.
     */
    increaseUnreadMessages: function() {
      self.Window.renderUnreadMessages(++self.Window._unreadMessagesCount);
    },

    /** Function: reduceUnreadMessages
     * Reduce unread message count in window title by `num`.
     *
     * Parameters:
     *   (Integer) num - Unread message count will be reduced by this value
     */
    reduceUnreadMessages: function(num) {
      self.Window._unreadMessagesCount -= num;
      if(self.Window._unreadMessagesCount <= 0) {
        self.Window.clearUnreadMessages();
      } else {
        self.Window.renderUnreadMessages(self.Window._unreadMessagesCount);
      }
    },

    /** Function: clearUnreadMessages
     * Clear unread message count in window title.
     */
    clearUnreadMessages: function() {
      self.Window._unreadMessagesCount = 0;
      window.top.document.title = self.Window._plainTitle;
    },

    /** Function: renderUnreadMessages
     * Update window title to show message count.
     *
     * Parameters:
     *   (Integer) count - Number of unread messages to show in window title
     */
    renderUnreadMessages: function(count) {
      window.top.document.title = Candy.View.Template.Window.unreadmessages.replace('{{count}}', count).replace('{{title}}', self.Window._plainTitle);
    },

    /** Function: onFocus
     * Window focus event handler.
     */
    onFocus: function() {
      self.Window._hasFocus = true;
      if (Candy.View.getCurrent().roomJid) {
        self.Room.setFocusToForm(Candy.View.getCurrent().roomJid);
        self.Chat.clearUnreadMessages(Candy.View.getCurrent().roomJid);
      }
    },

    /** Function: onBlur
     * Window blur event handler.
     */
    onBlur: function() {
      self.Window._hasFocus = false;
    }
  };

  return self;
}(Candy.View.Pane || {}, jQuery));