pox 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +29 -0
- data/Rakefile +10 -0
- data/lib/pox.rb +2 -0
- data/lib/pox/engine.rb +8 -0
- data/lib/pox/version.rb +3 -0
- data/pox.gemspec +20 -0
- data/vendor/assets/javascripts/agent/adaptor-cos.js +94 -0
- data/vendor/assets/javascripts/agent/adaptor-default.js +175 -0
- data/vendor/assets/javascripts/agent/adaptor-ipanel.js +127 -0
- data/vendor/assets/javascripts/agent/adaptor-vision.js +100 -0
- data/vendor/assets/javascripts/agent/core.js +12 -0
- data/vendor/assets/javascripts/build-in.js +161 -0
- data/vendor/assets/javascripts/pox.js +24 -0
- data/vendor/assets/javascripts/pox/ajax.js +68 -0
- data/vendor/assets/javascripts/pox/all.js +1 -0
- data/vendor/assets/javascripts/pox/animate.js +211 -0
- data/vendor/assets/javascripts/pox/browser.js +33 -0
- data/vendor/assets/javascripts/pox/core.js +289 -0
- data/vendor/assets/javascripts/pox/debugger.js +54 -0
- data/vendor/assets/javascripts/pox/dom.js +261 -0
- data/vendor/assets/javascripts/pox/transition.js +316 -0
- metadata +85 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 98684756f7077ea76353f47765f1204e2d8ce42c
|
4
|
+
data.tar.gz: efa34c24d09f0db234cdfcb14d6da76b290f55c3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 021f5ceb785b4df15e053ef91f9fae23878b0582b13f0b40d5d24893ecf25bba3a9083fd8a23976a9c0d10f29b71addc80ef953e82cc20c4ca2b3481555d8c8c
|
7
|
+
data.tar.gz: af580107b68f8eba743736b8d677f818fe0d30774bf41998de1633103df98acc1143bda74f1ee67da2700a1462c7b5398c711f4da90a729b756f04e323991aef
|
data/.gitignore
ADDED
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Sunteya
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Pox
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'pox'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install pox
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
TODO: Write usage instructions here
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require 'bundler'
|
3
|
+
Bundler::GemHelper.install_tasks
|
4
|
+
|
5
|
+
class Bundler::GemHelper
|
6
|
+
def rubygem_push(gem_path)
|
7
|
+
sh("gem push '#{path}' --host http://gems.bstar.wido.me")
|
8
|
+
Bundler.ui.confirm "Pushed #{name} #{version} to gems.bstar.wido.me."
|
9
|
+
end
|
10
|
+
end
|
data/lib/pox.rb
ADDED
data/lib/pox/engine.rb
ADDED
data/lib/pox/version.rb
ADDED
data/pox.gemspec
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'pox/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "pox"
|
8
|
+
spec.version = Pox::VERSION
|
9
|
+
spec.authors = ["nmzhu", "gxw"]
|
10
|
+
spec.email = ["nmzhu@b-star.cn", "xwgou@b-star.cn"]
|
11
|
+
spec.summary = %q{assets for ipanel}
|
12
|
+
spec.description = %q{assets for ipanel}
|
13
|
+
|
14
|
+
spec.files = `git ls-files -z`.split("\x0")
|
15
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
16
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
|
+
spec.require_paths = ["lib"]
|
18
|
+
|
19
|
+
spec.add_development_dependency "rake"
|
20
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
//= require ./adaptor-default
|
2
|
+
|
3
|
+
(function() {
|
4
|
+
"use strict";
|
5
|
+
|
6
|
+
|
7
|
+
if (!window.ChannelManager) {
|
8
|
+
return;
|
9
|
+
}
|
10
|
+
|
11
|
+
var CosAgent = {
|
12
|
+
|
13
|
+
name: "cos",
|
14
|
+
|
15
|
+
keys: ({
|
16
|
+
UP: 38,
|
17
|
+
LEFT: 37,
|
18
|
+
RIGHT: 39,
|
19
|
+
DOWN: 40,
|
20
|
+
ENTER: 4097,
|
21
|
+
RETURN: 4096,
|
22
|
+
|
23
|
+
NUM_0: 48,
|
24
|
+
NUM_1: 49,
|
25
|
+
NUM_2: 50,
|
26
|
+
NUM_3: 51,
|
27
|
+
NUM_4: 52,
|
28
|
+
NUM_5: 53,
|
29
|
+
NUM_6: 54,
|
30
|
+
NUM_7: 55,
|
31
|
+
NUM_8: 56,
|
32
|
+
NUM_9: 57,
|
33
|
+
|
34
|
+
PAGE_UP: 33,
|
35
|
+
PAGE_DOWN: 34,
|
36
|
+
|
37
|
+
// MUTE: #,
|
38
|
+
// VOLUME_DEC: #,
|
39
|
+
// VOLUME_INC: #,
|
40
|
+
CHANNEL_INC: 4111,
|
41
|
+
CHANNEL_DEC: 4112,
|
42
|
+
|
43
|
+
RED :2305,
|
44
|
+
GREEN :2306,
|
45
|
+
YELLOW :2307,
|
46
|
+
BLUE :2308,
|
47
|
+
|
48
|
+
// POWER: #,
|
49
|
+
// EXIT: #,
|
50
|
+
INFO: 73,
|
51
|
+
|
52
|
+
KEY_SERVICE: 402
|
53
|
+
// KEY_TV: #,
|
54
|
+
// KEY_GUIDE: #,
|
55
|
+
// KEY_MUSIC: #
|
56
|
+
})
|
57
|
+
};
|
58
|
+
Pox.extend(Pox.Agent, CosAgent);
|
59
|
+
|
60
|
+
Pox.extend(Pox.Agent.Broadcast, {
|
61
|
+
initMediaPlayer: function() {
|
62
|
+
if (this.mediaPlayer) { return }
|
63
|
+
|
64
|
+
this.mediaPlayer = new MediaPlayer();
|
65
|
+
// var playerId = this.mediaPlayer.getPlayerInstanceID();
|
66
|
+
this.mediaPlayer.bindPlayerInstance(1);
|
67
|
+
|
68
|
+
var self = this;
|
69
|
+
Pox.leave(function() {
|
70
|
+
self.mediaPlayer.stop();
|
71
|
+
self.mediaPlayer.unbindPlayerInstance();
|
72
|
+
});
|
73
|
+
},
|
74
|
+
|
75
|
+
playChannel: function(logicalId) {
|
76
|
+
this.initMediaPlayer();
|
77
|
+
// get Channel
|
78
|
+
var channel = ChannelManager.getChannelByLogicalID(logicalId);
|
79
|
+
|
80
|
+
// get DvbService and format data source
|
81
|
+
var srv = channel.getService();
|
82
|
+
var url = "dvb://" + srv.original_network_id + "." + srv.transport_stream_id + "." + srv.service_id;
|
83
|
+
this.mediaPlayer.setMediaSource(url);
|
84
|
+
|
85
|
+
this.mediaPlayer.play();
|
86
|
+
},
|
87
|
+
|
88
|
+
screenDimension: function(left, top, width, height) {
|
89
|
+
var rect = new Rectangle(left, top, width, height); // x, y, width, height
|
90
|
+
this.mediaPlayer.setVideoDisplayArea(rect);
|
91
|
+
this.mediaPlayer.refresh();
|
92
|
+
}
|
93
|
+
});
|
94
|
+
})();
|
@@ -0,0 +1,175 @@
|
|
1
|
+
//= require ./core
|
2
|
+
|
3
|
+
(function() {
|
4
|
+
"use strict";
|
5
|
+
|
6
|
+
/** @lends Pox.Agent */
|
7
|
+
var DefaultAgent = {
|
8
|
+
|
9
|
+
/** 当前机顶盒名称 */
|
10
|
+
name: "default",
|
11
|
+
|
12
|
+
/**
|
13
|
+
* 将数字键的 char 转换成对应数字, 无效则返回 NaN
|
14
|
+
* @param {string} which
|
15
|
+
* @return {number}
|
16
|
+
*/
|
17
|
+
numKey: function(which) {
|
18
|
+
switch(which) {
|
19
|
+
case this.keys.NUM_0:
|
20
|
+
return 0;
|
21
|
+
case this.keys.NUM_1:
|
22
|
+
return 1;
|
23
|
+
case this.keys.NUM_2:
|
24
|
+
return 2;
|
25
|
+
case this.keys.NUM_3:
|
26
|
+
return 3;
|
27
|
+
case this.keys.NUM_4:
|
28
|
+
return 4;
|
29
|
+
case this.keys.NUM_5:
|
30
|
+
return 5;
|
31
|
+
case this.keys.NUM_6:
|
32
|
+
return 6;
|
33
|
+
case this.keys.NUM_7:
|
34
|
+
return 7;
|
35
|
+
case this.keys.NUM_8:
|
36
|
+
return 8;
|
37
|
+
case this.keys.NUM_9:
|
38
|
+
return 9;
|
39
|
+
default:
|
40
|
+
return NaN;
|
41
|
+
}
|
42
|
+
},
|
43
|
+
|
44
|
+
/**
|
45
|
+
* 将方向键 char 转换成字符串标识 (LEFT, RIGHT, UP, DOWN)
|
46
|
+
* param {string} which
|
47
|
+
* return {string}
|
48
|
+
*/
|
49
|
+
directionKey: function(which) {
|
50
|
+
switch(which) {
|
51
|
+
case $a.keys.LEFT:
|
52
|
+
return "LEFT";
|
53
|
+
case $a.keys.RIGHT:
|
54
|
+
return "RIGHT";
|
55
|
+
case $a.keys.UP:
|
56
|
+
return "UP";
|
57
|
+
case $a.keys.DOWN:
|
58
|
+
return "DOWN";
|
59
|
+
default:
|
60
|
+
return null;
|
61
|
+
}
|
62
|
+
},
|
63
|
+
|
64
|
+
/**
|
65
|
+
* 对内部文字进行反编码, 解决有些内部文字乱码问题
|
66
|
+
* param {string} msg
|
67
|
+
* return {string}
|
68
|
+
*/
|
69
|
+
dencrypt: function(msg) {
|
70
|
+
return msg;
|
71
|
+
},
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
/**
|
76
|
+
* 键值定义
|
77
|
+
* @type KeysDefined
|
78
|
+
*/
|
79
|
+
keys: ({
|
80
|
+
/**
|
81
|
+
* @typedef KeysDefined
|
82
|
+
* @prop UP 上方向键
|
83
|
+
* @prop LEFT 左方向键
|
84
|
+
* @prop RIGHT 右方向键
|
85
|
+
* @prop DOWN 下方向键
|
86
|
+
* @prop ENTER 确定键
|
87
|
+
* @prop RETURN 返回键
|
88
|
+
* @prop NUM_0 数字0键
|
89
|
+
* @prop NUM_1 数字1键
|
90
|
+
* @prop NUM_2 数字2键
|
91
|
+
* @prop NUM_3 数字3键
|
92
|
+
* @prop NUM_4 数字4键
|
93
|
+
* @prop NUM_5 数字5键
|
94
|
+
* @prop NUM_6 数字6键
|
95
|
+
* @prop NUM_7 数字7键
|
96
|
+
* @prop NUM_8 数字8键
|
97
|
+
* @prop NUM_9 数字9键
|
98
|
+
* @prop PAGE_UP 上一页键
|
99
|
+
* @prop PAGE_DOWN 下一页键
|
100
|
+
* @prop CHANNEL_INC 频道加键
|
101
|
+
* @prop CHANNEL_DEC 频道减键
|
102
|
+
* @prop INFO 信息键
|
103
|
+
*/
|
104
|
+
UP: 38,
|
105
|
+
LEFT: 37,
|
106
|
+
RIGHT: 39,
|
107
|
+
DOWN: 40,
|
108
|
+
ENTER: 13,
|
109
|
+
RETURN: 8, // BACKSPACE
|
110
|
+
|
111
|
+
NUM_0: 48,
|
112
|
+
NUM_1: 49,
|
113
|
+
NUM_2: 50,
|
114
|
+
NUM_3: 51,
|
115
|
+
NUM_4: 52,
|
116
|
+
NUM_5: 53,
|
117
|
+
NUM_6: 54,
|
118
|
+
NUM_7: 55,
|
119
|
+
NUM_8: 56,
|
120
|
+
NUM_9: 57,
|
121
|
+
|
122
|
+
PAGE_UP: 219, // [
|
123
|
+
PAGE_DOWN: 221, // ]
|
124
|
+
|
125
|
+
CHANNEL_INC: 61, // -
|
126
|
+
CHANNEL_DEC: 109, // =
|
127
|
+
|
128
|
+
INFO: 73 // i
|
129
|
+
})
|
130
|
+
};
|
131
|
+
|
132
|
+
Pox.extend(Pox.Agent, DefaultAgent);
|
133
|
+
|
134
|
+
/**
|
135
|
+
* 机顶盒组播对象
|
136
|
+
* @namespace Pox.Agent.Broadcast
|
137
|
+
*/
|
138
|
+
/** @lends Pox.Agent.Broadcast */
|
139
|
+
Pox.Agent.Broadcast = {
|
140
|
+
/**
|
141
|
+
* 播放直播频道
|
142
|
+
* @param {string} id
|
143
|
+
*/
|
144
|
+
playChannel: function(id) {
|
145
|
+
console.log("play channel: id = " + id);
|
146
|
+
},
|
147
|
+
|
148
|
+
/**
|
149
|
+
* 获取节目单
|
150
|
+
* @param {string} id
|
151
|
+
* @return {Object}
|
152
|
+
*/
|
153
|
+
nowPlaying: function(id) {
|
154
|
+
return {
|
155
|
+
"now": {
|
156
|
+
"startTime": "00:00",
|
157
|
+
"name": "program1"
|
158
|
+
},
|
159
|
+
"next": {
|
160
|
+
"startTime": "01:00",
|
161
|
+
"name": "program2"
|
162
|
+
}
|
163
|
+
}
|
164
|
+
},
|
165
|
+
|
166
|
+
/**
|
167
|
+
* 设置屏幕位置大小
|
168
|
+
* @param {number} left
|
169
|
+
* @param {number} right
|
170
|
+
* @param {number} width
|
171
|
+
* @param {number} height
|
172
|
+
*/
|
173
|
+
screenDimension: function(left, top, width, height) { }
|
174
|
+
};
|
175
|
+
})();
|
@@ -0,0 +1,127 @@
|
|
1
|
+
//= require ./adaptor-default
|
2
|
+
|
3
|
+
(function() {
|
4
|
+
"use strict";
|
5
|
+
|
6
|
+
if (navigator.userAgent.toLowerCase().indexOf("ipanel") == -1) {
|
7
|
+
return;
|
8
|
+
}
|
9
|
+
|
10
|
+
var IpanelAgent = {
|
11
|
+
name: "ipanel",
|
12
|
+
|
13
|
+
dencrypt: function(msg) {
|
14
|
+
if (msg) {
|
15
|
+
return iPanel.misc.getUserCharsetStr(msg, "gb2312");
|
16
|
+
}
|
17
|
+
|
18
|
+
return msg;
|
19
|
+
},
|
20
|
+
|
21
|
+
keys: {
|
22
|
+
UP: 1,
|
23
|
+
LEFT: 3,
|
24
|
+
RIGHT: 4,
|
25
|
+
DOWN: 2,
|
26
|
+
ENTER: 13,
|
27
|
+
RETURN: 340,
|
28
|
+
|
29
|
+
RED: 832,
|
30
|
+
YELLOW: 834,
|
31
|
+
|
32
|
+
NUM_0: 48,
|
33
|
+
NUM_1: 49,
|
34
|
+
NUM_2: 50,
|
35
|
+
NUM_3: 51,
|
36
|
+
NUM_4: 52,
|
37
|
+
NUM_5: 53,
|
38
|
+
NUM_6: 54,
|
39
|
+
NUM_7: 55,
|
40
|
+
NUM_8: 56,
|
41
|
+
NUM_9: 57,
|
42
|
+
|
43
|
+
PAGE_UP: 372,
|
44
|
+
PAGE_DOWN: 373,
|
45
|
+
|
46
|
+
MUTE: 597,
|
47
|
+
VOLUME_DEC: 596,
|
48
|
+
VOLUME_INC: 595,
|
49
|
+
CHANNEL_INC: 593,
|
50
|
+
CHANNEL_DEC: 594,
|
51
|
+
|
52
|
+
POWER: 258,
|
53
|
+
EXIT: 339,
|
54
|
+
INFO: 567, // i
|
55
|
+
|
56
|
+
KEY_SERVICE: 562,
|
57
|
+
KEY_TV: 1038,
|
58
|
+
KEY_GUIDE: 513,
|
59
|
+
KEY_MUSIC: 564
|
60
|
+
}
|
61
|
+
};
|
62
|
+
|
63
|
+
Pox.extend(Pox.Agent, IpanelAgent);
|
64
|
+
|
65
|
+
Pox.extend(Pox, {
|
66
|
+
now: function() {
|
67
|
+
return new Date();
|
68
|
+
}
|
69
|
+
});
|
70
|
+
|
71
|
+
Pox.extend(Pox.Browser, {
|
72
|
+
supportWebkitTransition: true,
|
73
|
+
supportWebkitTransform: false
|
74
|
+
});
|
75
|
+
|
76
|
+
Pox.extend(Pox.Agent.Broadcast, {
|
77
|
+
playChannel: function(id) {
|
78
|
+
var channel = this._channelByUpcode(id);
|
79
|
+
if (channel) {
|
80
|
+
var service = channel.getService();
|
81
|
+
DVB.playAV(service.frequency, service.serviceId);
|
82
|
+
}
|
83
|
+
},
|
84
|
+
|
85
|
+
nowPlaying: function(id) {
|
86
|
+
try {
|
87
|
+
var channel = this._channelByUpcode(id);
|
88
|
+
if (!channel) {
|
89
|
+
return {};
|
90
|
+
}
|
91
|
+
|
92
|
+
var service = channel.getService();
|
93
|
+
if (!service) {
|
94
|
+
return {};
|
95
|
+
}
|
96
|
+
|
97
|
+
var result = {};
|
98
|
+
result["now"] = this._convertProgram(service.presentProgram);
|
99
|
+
result["next"] = this._convertProgram(service.followingProgram);
|
100
|
+
return result;
|
101
|
+
} catch(e) {
|
102
|
+
return {};
|
103
|
+
}
|
104
|
+
},
|
105
|
+
|
106
|
+
screenDimension: function(left, top, width, height) {
|
107
|
+
media.video.setPosition(left, top, width, height);
|
108
|
+
},
|
109
|
+
|
110
|
+
_convertProgram: function(data) {
|
111
|
+
var result = {};
|
112
|
+
result["name"] = iPanel.misc.getUserCharsetStr(data.name, "gb2312");
|
113
|
+
result["startTime"] = iPanel.misc.getUserCharsetStr(data.startTime, "gb2312");
|
114
|
+
return result;
|
115
|
+
},
|
116
|
+
|
117
|
+
_channelByUpcode: function(upcode) {
|
118
|
+
var user = users.currentUser;
|
119
|
+
return user.channels.getChannelByNum(upcode);
|
120
|
+
}
|
121
|
+
});
|
122
|
+
|
123
|
+
Pox.leave(function() {
|
124
|
+
try { DVB.stopAV(0); } catch(e) {}
|
125
|
+
try { media.AV.close(); } catch(e) {}
|
126
|
+
});
|
127
|
+
})();
|