Commit | Line | Data |
---|---|---|
eaaf73b0 | 1 | _kiwi.model.Panel = Backbone.Model.extend({\r |
9df70c63 D |
2 | initialize: function (attributes) {\r |
3 | var name = this.get("name") || "";\r | |
eaaf73b0 | 4 | this.view = new _kiwi.view.Panel({"model": this, "name": name});\r |
9df70c63 D |
5 | this.set({\r |
6 | "scrollback": [],\r | |
7 | "name": name\r | |
8 | }, {"silent": true});\r | |
9 | },\r | |
10 | \r | |
11 | addMsg: function (nick, msg, type, opts) {\r | |
f0999cef D |
12 | var message_obj, bs, d,\r |
13 | scrollback = (parseInt(_kiwi.global.settings.get('scrollback'), 10) || 250);\r | |
9df70c63 D |
14 | \r |
15 | opts = opts || {};\r | |
16 | \r | |
17 | // Time defaults to now\r | |
18 | if (!opts || typeof opts.time === 'undefined') {\r | |
f34d4d0f | 19 | d = opts.date = new Date();\r |
9df70c63 D |
20 | opts.time = d.getHours().toString().lpad(2, "0") + ":" + d.getMinutes().toString().lpad(2, "0") + ":" + d.getSeconds().toString().lpad(2, "0");\r |
21 | }\r | |
22 | \r | |
23 | // CSS style defaults to empty string\r | |
24 | if (!opts || typeof opts.style === 'undefined') {\r | |
25 | opts.style = '';\r | |
26 | }\r | |
27 | \r | |
9df70c63 | 28 | // Run through the plugins\r |
f34d4d0f | 29 | message_obj = {"msg": msg, "date": opts.date, "time": opts.time, "nick": nick, "chan": this.get("name"), "type": type, "style": opts.style};\r |
eaaf73b0 | 30 | //tmp = _kiwi.plugs.run('addmsg', message_obj);\r |
9df70c63 D |
31 | if (!message_obj) {\r |
32 | return;\r | |
33 | }\r | |
34 | \r | |
35 | // The CSS class (action, topic, notice, etc)\r | |
36 | if (typeof message_obj.type !== "string") {\r | |
37 | message_obj.type = '';\r | |
38 | }\r | |
39 | \r | |
40 | // Make sure we don't have NaN or something\r | |
41 | if (typeof message_obj.msg !== "string") {\r | |
42 | message_obj.msg = '';\r | |
43 | }\r | |
44 | \r | |
9df70c63 D |
45 | // Update the scrollback\r |
46 | bs = this.get("scrollback");\r | |
b00b7b82 D |
47 | if (bs) {\r |
48 | bs.push(message_obj);\r | |
9df70c63 | 49 | \r |
b00b7b82 D |
50 | // Keep the scrolback limited\r |
51 | if (bs.length > scrollback) {\r | |
52 | bs.splice(scrollback);\r | |
53 | }\r | |
54 | this.set({"scrollback": bs}, {silent: true});\r | |
9df70c63 | 55 | }\r |
9df70c63 D |
56 | \r |
57 | this.trigger("msg", message_obj);\r | |
58 | },\r | |
59 | \r | |
648e2c01 D |
60 | \r |
61 | clearMessages: function () {\r | |
62 | this.set({'scrollback': []}, {silent: true});\r | |
63 | this.addMsg('', 'Window cleared');\r | |
64 | \r | |
65 | this.view.render();\r | |
66 | },\r | |
67 | \r | |
ea033d12 D |
68 | closePanel: function () {\r |
69 | if (this.view) {\r | |
51ae0eb8 | 70 | this.view.unbind();\r |
ea033d12 | 71 | this.view.remove();\r |
51ae0eb8 | 72 | this.view = undefined;\r |
ea033d12 D |
73 | delete this.view;\r |
74 | }\r | |
9df70c63 D |
75 | \r |
76 | var members = this.get('members');\r | |
77 | if (members) {\r | |
78 | members.reset([]);\r | |
79 | this.unset('members');\r | |
80 | }\r | |
81 | \r | |
6d5faa6e | 82 | this.get('panel_list').remove(this);\r |
f5f8cee8 | 83 | \r |
ea033d12 | 84 | this.unbind();\r |
9df70c63 D |
85 | this.destroy();\r |
86 | \r | |
87 | // If closing the active panel, switch to the server panel\r | |
48d8935c D |
88 | if (this === _kiwi.app.panels().active) {\r |
89 | _kiwi.app.connections.active_connection.panels.server.view.show();\r | |
9df70c63 D |
90 | }\r |
91 | },\r | |
92 | \r | |
ea033d12 D |
93 | // Alias to closePanel() for child objects to override\r |
94 | close: function () {\r | |
95 | return this.closePanel();\r | |
96 | },\r | |
97 | \r | |
9df70c63 | 98 | isChannel: function () {\r |
eaaf73b0 | 99 | var channel_prefix = _kiwi.gateway.get('channel_prefix'),\r |
9df70c63 D |
100 | this_name = this.get('name');\r |
101 | \r | |
19cc6364 | 102 | if (this.isApplet() || !this_name) return false;\r |
9df70c63 | 103 | return (channel_prefix.indexOf(this_name[0]) > -1);\r |
df7b7bf8 D |
104 | },\r |
105 | \r | |
4d4145aa D |
106 | isQuery: function () {\r |
107 | if (!this.isChannel() && !this.isApplet() && !this.isServer()) {\r | |
108 | return true;\r | |
109 | }\r | |
110 | \r | |
111 | return false;\r | |
112 | },\r | |
113 | \r | |
19cc6364 D |
114 | isApplet: function () {\r |
115 | return this.applet ? true : false;\r | |
72371b1a D |
116 | },\r |
117 | \r | |
118 | isServer: function () {\r | |
119 | return this.server ? true : false;\r | |
145389ff D |
120 | },\r |
121 | \r | |
122 | isActive: function () {\r | |
6d5faa6e | 123 | return (_kiwi.app.panels().active === this);\r |
9df70c63 D |
124 | }\r |
125 | }); |