From 5277349428f0376d699ef1677dd0f852de3b6649 Mon Sep 17 00:00:00 2001 From: Darren Date: Sun, 2 Sep 2012 01:58:09 +0100 Subject: [PATCH] TopicBar now editable to set topic --- client_backbone/model_application.js | 9 ++++---- client_backbone/view.js | 34 ++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/client_backbone/model_application.js b/client_backbone/model_application.js index 80c1521..2f508e3 100644 --- a/client_backbone/model_application.js +++ b/client_backbone/model_application.js @@ -40,6 +40,8 @@ kiwi.model.Application = Backbone.Model.extend(new (function () { this.controlbox = new kiwi.view.ControlBox({el: $('#controlbox')[0]}); this.bindControllboxCommands(this.controlbox); + this.topicbar = new kiwi.view.TopicBar({el: $('#topic')[0]}); + // Container for the channels this.panels = new kiwi.model.PanelList(); this.panels.server.view.show(); @@ -206,7 +208,7 @@ kiwi.model.Application = Backbone.Model.extend(new (function () { // If this is the active channel, update the topic bar too if (c.get('name') === kiwi.current_panel.get('name')) { - that.setCurrentTopic(event.topic); + that.topicbar.setCurrentTopic(event.topic); } }); @@ -404,6 +406,7 @@ kiwi.model.Application = Backbone.Model.extend(new (function () { kiwi.gateway.part(channel); }); } + // TODO: More responsive = close tab now, more accurate = leave until part event //kiwi.app.panels.remove(kiwi.current_panel); }; @@ -438,10 +441,6 @@ kiwi.model.Application = Backbone.Model.extend(new (function () { - this.setCurrentTopic = function (new_topic) { - $('#topic input').val(new_topic); - }; - this.isChannelName = function (channel_name) { var channel_prefix = kiwi.gateway.get('channel_prefix'); diff --git a/client_backbone/view.js b/client_backbone/view.js index 1edda45..e2de6e5 100644 --- a/client_backbone/view.js +++ b/client_backbone/view.js @@ -222,7 +222,7 @@ kiwi.view.Panel = Backbone.View.extend({ // TODO: Why is kiwi.app not defined when this is fist called :/ if (kiwi.app) { - kiwi.app.setCurrentTopic(this.model.get("topic") || ""); + kiwi.app.topicbar.setCurrentTopic(this.model.get("topic") || ""); } this.scrollToBottom(); @@ -255,7 +255,7 @@ kiwi.view.Channel = kiwi.view.Panel.extend({ // If this is the active channel then update the topic bar if (kiwi.current_panel === this) { - kiwi.app.setCurrentTopic(this.model.get("topic")); + kiwi.app.topicbar.setCurrentTopic(this.model.get("topic")); } } }); @@ -338,9 +338,33 @@ kiwi.view.Tabs = Backbone.View.extend({ -kiwi.view.ControlBox = Backbone.View.extend({ - that: this, +kiwi.view.TopicBar = Backbone.View.extend({ + events: { + 'keydown input': 'process' + }, + + initialize: function () { + }, + + process: function (ev) { + var inp = $(ev.currentTarget), + inp_val = inp.val(); + if (ev.keyCode !== 13) return; + + if (kiwi.current_panel.isChannel && kiwi.current_panel.isChannel()) { + kiwi.gateway.topic(kiwi.current_panel.get('name'), inp_val); + } + }, + + setCurrentTopic: function (new_topic) { + $('input', this.$el).val(new_topic); + } +}); + + + +kiwi.view.ControlBox = Backbone.View.extend({ buffer: [], // Stores previously run commands buffer_pos: 0, // The current position in the buffer @@ -371,7 +395,7 @@ kiwi.view.ControlBox = Backbone.View.extend({ this.buffer.push(inp.val()); this.buffer_pos = this.buffer.length; } - + inp.val(''); break; -- 2.25.1