Ruby4Skype 0.2.3 → 0.3.1
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.
- data/LICENSE +3 -0
- data/README +14 -0
- data/Rakefile +67 -0
- data/lib/skypeapi.rb +570 -509
- data/lib/skypeapi/application.rb +79 -77
- data/lib/skypeapi/call.rb +243 -230
- data/lib/skypeapi/chat.rb +162 -172
- data/lib/skypeapi/chatmember.rb +26 -28
- data/lib/skypeapi/chatmessage.rb +81 -65
- data/lib/skypeapi/error.rb +8 -0
- data/lib/skypeapi/event.rb +25 -26
- data/lib/skypeapi/filetransfer.rb +47 -28
- data/lib/skypeapi/group.rb +72 -73
- data/lib/skypeapi/menuitem.rb +44 -44
- data/lib/skypeapi/message.rb +39 -41
- data/lib/skypeapi/object.rb +246 -82
- data/lib/skypeapi/os/etc.rb +48 -98
- data/lib/skypeapi/os/mac.rb +92 -4
- data/lib/skypeapi/os/notifier.rb +31 -0
- data/lib/skypeapi/os/window_event_queue.rb +198 -0
- data/lib/skypeapi/os/window_messagehandler.rb +120 -0
- data/lib/skypeapi/os/windows.rb +170 -306
- data/lib/skypeapi/profile.rb +190 -120
- data/lib/skypeapi/sharefunctions.rb +31 -23
- data/lib/skypeapi/sms.rb +87 -67
- data/lib/skypeapi/user.rb +159 -99
- data/lib/skypeapi/version.rb +3 -3
- data/lib/skypeapi/voicemail.rb +59 -52
- data/spec/matcher_be_boolean.rb +10 -0
- data/spec/skypeapi/application_spec.rb +76 -0
- data/spec/skypeapi/chat_spec.rb +356 -0
- data/spec/skypeapi/chatmember_spec.rb +42 -0
- data/spec/skypeapi/chatmessage_spec.rb +89 -0
- data/spec/skypeapi/event_spec.rb +31 -0
- data/spec/skypeapi/filetransfer_spec.rb +67 -0
- data/spec/skypeapi/group_spec.rb +16 -0
- data/spec/skypeapi/menuitem_spec.rb +37 -0
- data/spec/skypeapi/os/windows_spec.rb +305 -0
- data/spec/skypeapi/profile_spec.rb +22 -0
- data/spec/skypeapi/user_spec.rb +25 -0
- data/spec/skypeapi_spec.rb +528 -0
- metadata +32 -12
- data/lib/skypeapi/os/timer.rb +0 -108
data/LICENSE
ADDED
data/README
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
= SkypeAPI
|
2
|
+
|
3
|
+
==sample
|
4
|
+
require 'skypeapi'
|
5
|
+
|
6
|
+
SkypeAPI.init
|
7
|
+
SkypeAPI.start_messageloop
|
8
|
+
SkypeAPI::ChatMessage.set_notify do |chatmessage, property, value|
|
9
|
+
if property == :status and value == 'RECEIVED'
|
10
|
+
chatmessage.get_chat.send_message chatmessage.get_body
|
11
|
+
end
|
12
|
+
end
|
13
|
+
SkypeAPI.attach_wait
|
14
|
+
sleep
|
data/Rakefile
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
#
|
2
|
+
# To change this template, choose Tools | Templates
|
3
|
+
# and open the template in the editor.
|
4
|
+
|
5
|
+
|
6
|
+
require 'rubygems'
|
7
|
+
require 'rake'
|
8
|
+
require 'rake/clean'
|
9
|
+
require 'rake/gempackagetask'
|
10
|
+
#require 'rake/rdoctask'
|
11
|
+
require 'hanna/rdoctask'
|
12
|
+
|
13
|
+
|
14
|
+
require 'rake/testtask'
|
15
|
+
require 'spec/rake/spectask'
|
16
|
+
|
17
|
+
spec = Gem::Specification.new do |s|
|
18
|
+
s.name = 'Ruby4Skype'
|
19
|
+
s.version = '0.3.1'
|
20
|
+
s.has_rdoc = true
|
21
|
+
s.extra_rdoc_files = ['README', 'LICENSE']
|
22
|
+
s.summary = 'SkypeAPI wrapper'
|
23
|
+
s.description = s.summary
|
24
|
+
s.author = 'bopper'
|
25
|
+
s.email = 'bopper123@gmail.com'
|
26
|
+
s.homepage = 'http://rubyforge.org/projects/skyperapper/'
|
27
|
+
s.rubyforge_project = "Ruby4Skype"
|
28
|
+
# s.executables = ['your_executable_here']
|
29
|
+
s.files = %w(LICENSE README Rakefile) + Dir.glob("{lib,spec}/**/*")
|
30
|
+
s.require_path = "lib"
|
31
|
+
# s.bindir = "bin"
|
32
|
+
end
|
33
|
+
|
34
|
+
Rake::GemPackageTask.new(spec) do |p|
|
35
|
+
p.gem_spec = spec
|
36
|
+
p.need_tar = true
|
37
|
+
p.need_zip = true
|
38
|
+
end
|
39
|
+
|
40
|
+
Rake::RDocTask.new do |rdoc|
|
41
|
+
#files =['README', 'LICENSE', 'lib/**/*.rb']
|
42
|
+
#files =['README', 'LICENSE', 'lib/skypeapi/os/windows.rb', 'lib/skypeapi/chat.rb', 'lib/skypeapi/chatmessage.rb','lib/skypeapi/chatmember.rb','lib/skypeapi/user.rb','lib/skypeapi/version.rb', 'lib/skypeapi/call.rb','lib/skypeapi/application.rb']
|
43
|
+
files = ['README','LICENSE']
|
44
|
+
files << ['lib/skypeapi.rb']
|
45
|
+
files << ['lib/skypeapi/*.rb']
|
46
|
+
rdoc.rdoc_files.add(files)
|
47
|
+
rdoc.main = "README" # page to start on
|
48
|
+
rdoc.title = "SkypeAPI Docs"
|
49
|
+
rdoc.rdoc_dir = 'doc' # rdoc output folder
|
50
|
+
rdoc.options << '--line-numbers'
|
51
|
+
rdoc.options << '-c UTF-8'
|
52
|
+
rdoc.options << '--inline-source'
|
53
|
+
rdoc.options << '--template=hanna'
|
54
|
+
end
|
55
|
+
|
56
|
+
Rake::TestTask.new do |t|
|
57
|
+
t.test_files = FileList['test/**/*.rb']
|
58
|
+
end
|
59
|
+
|
60
|
+
Spec::Rake::SpecTask.new do |t|
|
61
|
+
t.spec_files = FileList['spec/**/*.rb']
|
62
|
+
end
|
63
|
+
|
64
|
+
#desc "Publish to RubyForge"
|
65
|
+
#task :rubyforge => [:rdoc] do
|
66
|
+
# Rake::RubyForgePublisher.new(RUBYFORGE_PROJECT, 'bopper').upload
|
67
|
+
#end
|
data/lib/skypeapi.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require "forwardable
|
2
|
-
require
|
1
|
+
require "forwardable"
|
2
|
+
require 'skypeapi/os/notifier'
|
3
3
|
require "skypeapi/object.rb"
|
4
4
|
require "skypeapi/version.rb"
|
5
5
|
require "skypeapi/user.rb"
|
@@ -17,564 +17,625 @@ require "skypeapi/filetransfer.rb"
|
|
17
17
|
require "skypeapi/event.rb"
|
18
18
|
require "skypeapi/menuitem.rb"
|
19
19
|
require "skypeapi/os/etc.rb"
|
20
|
+
require 'skypeapi/error'
|
20
21
|
|
21
|
-
class SkypeAPIError < StandardError
|
22
|
-
class Attach < SkypeAPIError; end
|
23
|
-
class API < SkypeAPIError; end
|
24
|
-
class NotImprement < SkypeAPIError; end
|
25
|
-
end
|
26
22
|
|
27
23
|
module SkypeAPI
|
28
|
-
|
29
|
-
extend
|
30
|
-
extend
|
31
|
-
extend
|
24
|
+
extend AbstractObject::Notify
|
25
|
+
extend AbstractObject::Get
|
26
|
+
extend AbstractObject::Invokers
|
27
|
+
extend AbstractObject::Parser
|
32
28
|
|
33
|
-
P2M = Hash.new{|hash,key| hash[key] = key}
|
34
|
-
V2O = Hash.new
|
29
|
+
#P2M = Hash.new{|hash,key| hash[key] = key}
|
30
|
+
#V2O = Hash.new
|
31
|
+
|
32
|
+
@property2symbol = Hash.new{|hash,key| hash[key] = key}
|
33
|
+
@property2callback = Hash.new
|
35
34
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
35
|
+
class << self
|
36
|
+
|
37
|
+
def init os=RUBY_PLATFORM.downcase
|
38
|
+
unless @inited
|
39
|
+
case os
|
40
|
+
when /(mswin(?!ce))|(mingw)|(cygwin)|(bccwin)/
|
41
|
+
require 'skypeapi/os/windows.rb'
|
42
|
+
@os = SkypeAPI::OS::Windows.new
|
43
|
+
when /(mac)|(darwin)/
|
44
|
+
require 'skypeapi/os/mac.rb'
|
45
|
+
@os = SkypeAPI::OS::Mac.new
|
46
|
+
when /(linux)/
|
47
|
+
require 'skypeapi/os/linux.rb'
|
48
|
+
@os = SkypeAPI::OS::Linux.new
|
49
|
+
else
|
50
|
+
raise SkypeAPI::NotImplementError.new("#{os} is unknown or not support OS")
|
51
|
+
end
|
52
|
+
|
53
|
+
self.class.extend Forwardable
|
54
|
+
self.class.def_delegators(:@os,
|
55
|
+
:invoke,
|
56
|
+
:add_event,
|
57
|
+
:del_event,
|
58
|
+
:get_event,
|
59
|
+
:exist_event?,
|
60
|
+
:attach,
|
61
|
+
:attach_wait,
|
62
|
+
:polling,
|
63
|
+
:start_messageloop,
|
64
|
+
:messgeloop,
|
65
|
+
:close
|
66
|
+
)
|
67
|
+
class << self
|
68
|
+
alias addEvent add_event
|
69
|
+
alias setEvent add_event
|
70
|
+
alias delEvent del_event
|
71
|
+
alias getEvent get_event
|
72
|
+
alias existEvent? exist_event?
|
73
|
+
alias attachWait attach_wait
|
74
|
+
end
|
75
|
+
|
76
|
+
@notify = Hash.new
|
77
|
+
#@os.add_notify nil, method(:notified)
|
78
|
+
|
79
|
+
@notifier = SkypeAPI::OS::Notifier.new
|
80
|
+
@os.set_notify_selector @notifier.method(:fire)
|
81
|
+
@notifier.add nil, method(:notified)
|
82
|
+
objectsInit
|
83
|
+
|
84
|
+
#@inited = true
|
48
85
|
else
|
49
|
-
raise
|
86
|
+
#raise SkypeAPI::Error('init at onece')
|
50
87
|
end
|
51
|
-
|
52
|
-
#SkypeAPI縺ッ繝「繧ク繝・繝シ繝ォ縺ョ縺溘a縺ォ縲√ョ繝ェ繧イ繝シ繧ソ繝シ縺ァ繧ッ繝ゥ繧ケ繝。繧ス繝・ラ縺ィ縺励※螳夂セゥ縲・
|
53
|
-
#SkypeAPI逶エ荳九・繝。繧ス繝・ラ縺ッ蜈ィ縺ヲ繧ッ繝ゥ繧ケ繝。繧ス繝・ラ縺ェ縺ョ縺ァ繧「繧ッ繧サ繧ケ蜿ッ閭ス.
|
54
|
-
self.class.extend Forwardable
|
55
|
-
self.class.def_delegators(:@os,
|
56
|
-
:invoke,
|
57
|
-
:add_event,
|
58
|
-
:del_event,
|
59
|
-
:get_event,
|
60
|
-
:exist_event?,
|
61
|
-
:attach,
|
62
|
-
:attach_wait,
|
63
|
-
:polling,
|
64
|
-
:wait,
|
65
|
-
:close
|
66
|
-
)
|
67
|
-
class << self
|
68
|
-
alias addEvent add_event
|
69
|
-
alias setEvent add_event
|
70
|
-
alias delEvent del_event
|
71
|
-
alias getEvent get_event
|
72
|
-
alias existEvent? exist_event?
|
73
|
-
alias attachWait attach_wait
|
74
|
-
end
|
75
|
-
|
76
|
-
#螟門・逕ィ縲・
|
77
|
-
#self.class.__send__(:define_method, :os, Proc.new{@os})
|
78
|
-
|
79
|
-
@notify = Hash.new
|
80
|
-
@os.add_notify nil, method(:notified)
|
81
|
-
objectsInit
|
82
|
-
|
83
|
-
@inited = true
|
84
|
-
else
|
85
|
-
#raise SkypeAPIError,'init at onece'
|
86
88
|
end
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
'
|
105
|
-
].join(')|(?:') + ')'
|
106
|
-
|
107
|
-
if msg =~ /^(#{propertyReg}) (.+)$/m
|
108
|
-
skypeProperty = $1; value = $2
|
109
|
-
property = self::P2M[skypeProperty].to_s.downcase.to_sym if self::P2M[skypeProperty].class == Symbol
|
110
|
-
value = self::V2O[skypeProperty].call value if self::V2O[skypeProperty]
|
89
|
+
|
90
|
+
def new
|
91
|
+
init
|
92
|
+
self
|
93
|
+
end
|
94
|
+
|
95
|
+
def os
|
96
|
+
@os
|
97
|
+
end
|
98
|
+
|
99
|
+
def notified msg
|
100
|
+
skypeProperty = nil
|
101
|
+
propertyReg = '(?:' + [
|
102
|
+
'CONTACTS FOCUSED',
|
103
|
+
'RINGTONE 1 STATUS',
|
104
|
+
'RINGTONE 1',
|
105
|
+
'[^ ]+'
|
106
|
+
].join(')|(?:') + ')'
|
111
107
|
|
112
|
-
if
|
113
|
-
|
114
|
-
|
108
|
+
if msg =~ /^(#{propertyReg}) (.+)$/m
|
109
|
+
skypeProperty = $1; value = $2
|
110
|
+
#property = self::P2M[skypeProperty].to_s.downcase.to_sym if self::P2M[skypeProperty].class == Symbol
|
111
|
+
#value = self::V2O[skypeProperty].call value if self::V2O[skypeProperty]
|
112
|
+
property = @property2symbol[skypeProperty].to_s.downcase.to_sym if @property2symbol[skypeProperty].class == Symbol
|
113
|
+
value = @property2callback[skypeProperty].call value if @property2callback[skypeProperty]
|
114
|
+
|
115
|
+
if @notify[nil]
|
116
|
+
@notify[nil][nil].call property, value if @notify[nil][nil]
|
117
|
+
@notify[nil][value].call property if @notify[nil][value]
|
118
|
+
end
|
119
|
+
if @notify[property]
|
120
|
+
@notify[property][nil].call value if @notify[property][nil]
|
121
|
+
@notify[property][value].call if @notify[property][value]
|
122
|
+
end
|
115
123
|
end
|
116
|
-
|
117
|
-
|
118
|
-
|
124
|
+
end
|
125
|
+
|
126
|
+
def objectsInit
|
127
|
+
[SkypeAPI::User,SkypeAPI::Profile,SkypeAPI::Call,SkypeAPI::Message,SkypeAPI::Chat,SkypeAPI::ChatMessage,SkypeAPI::ChatMember,SkypeAPI::VoiceMail,SkypeAPI::SMS,SkypeAPI::Application,SkypeAPI::Group,SkypeAPI::FileTransfer,SkypeAPI::Event,SkypeAPI::MenuItem].each do |klass|
|
128
|
+
#@os.add_notify /^#{klass::OBJECT_NAME} (.+)$/m, klass.method(:notified)
|
129
|
+
@notifier.add /^#{klass::OBJECT_NAME} (.+)$/m, klass.method(:notified)
|
119
130
|
end
|
120
131
|
end
|
132
|
+
|
133
|
+
def user(id) SkypeAPI::User.new(id) ; end
|
134
|
+
|
135
|
+
def call(id) SkypeAPI::Call.new(id) ; end
|
136
|
+
|
137
|
+
#def Profile() SkypeAPI::Profile.new nil ; end
|
138
|
+
|
139
|
+
#def profile() SkypeAPI::Profile.new nil ; end
|
140
|
+
|
141
|
+
def chat(id) SkypeAPI::Chat.new(id) ; end
|
142
|
+
|
143
|
+
def chatMessage(id) SkypeAPI::ChatMessage.new(id) ; end
|
144
|
+
|
145
|
+
def chatMember(id) SkypeAPI::ChatMember.new(id) ; end
|
146
|
+
|
147
|
+
#def message(id) SkypeAPI::Message.new(id) ; end
|
148
|
+
|
149
|
+
def voiceMail(id) SkypeAPI::VoiceMail.new(id) ; end
|
150
|
+
|
151
|
+
def sms(id) SkypeAPI::SMS.new(id) ; end
|
152
|
+
|
153
|
+
def app(id) SkypeAPI::Application.new(id) ; end
|
154
|
+
|
155
|
+
def group(id) SkypeAPI::Group.new(id) ; end
|
156
|
+
|
157
|
+
def fileTransfer(id) SkypeAPI::FileTransfer.new(id) ; end
|
158
|
+
|
159
|
+
def event(id) SkypeAPI::Event.new(id) ; end
|
160
|
+
|
161
|
+
def menuItem(id) SkypeAPI::MenuItem.new(id) ; end
|
162
|
+
|
121
163
|
end
|
122
|
-
|
123
|
-
|
124
|
-
[
|
125
|
-
|
164
|
+
|
165
|
+
class << self
|
166
|
+
#@property2symbol = Hash.new{|hash,key| hash[key] = key}
|
167
|
+
#@property2callback = Hash.new
|
168
|
+
attr_reader :property2symbol, :property2callback
|
169
|
+
|
170
|
+
#General
|
171
|
+
extend AbstractObject::Get
|
172
|
+
|
173
|
+
def get_skype_version() invoke_get("SKYPEVERSION") end
|
174
|
+
def_parser(:skype_version,"SKYPEVERSION")
|
175
|
+
alias getSkypeVersion get_skype_version
|
176
|
+
|
177
|
+
def get_current_user_handle() invoke_get("CURRENTUSERHANDLE") end
|
178
|
+
def_parser(:current_user_handle,"CURRENTUSERHANDLE")
|
179
|
+
alias getCurrentUserHandle get_current_user_handle
|
180
|
+
|
181
|
+
def get_user_status() invoke_get("USERSTATUS") end
|
182
|
+
def_parser(:user_status,"USERSTATUS")
|
183
|
+
alias getUserStatus get_user_status
|
184
|
+
|
185
|
+
# privilege SkypeOut | SkypeIn | VoiceMail
|
186
|
+
def get_privilege(privilege) parse :privilege, invoke_get("PRIVILEGE #{privilege}") end
|
187
|
+
def_parser(:privilege){|str| str._flag}
|
188
|
+
alias getPrivilege get_privilege
|
189
|
+
|
190
|
+
def set_user_status(status) invoke_set("USERSTATUS", status) end
|
191
|
+
alias setUserStatus set_user_status
|
192
|
+
|
193
|
+
def get_predictive_dialer_country() invoke_get("PREDICTIVE_DIALER_COUNTRY") end
|
194
|
+
def_parser(:predictive_dialer_country)
|
195
|
+
alias getPredictiveDialerCountry get_predictive_dialer_country
|
196
|
+
|
197
|
+
def get_connstatus() invoke_get("CONNSTATUS") end
|
198
|
+
def_parser(:connstatus)
|
199
|
+
alias getConnstatus get_connstatus
|
200
|
+
|
201
|
+
def get_audio_in() invoke_get("AUDIO_IN") end
|
202
|
+
def_parser(:audio_in)
|
203
|
+
alias getAudioIn get_audio_in
|
204
|
+
|
205
|
+
def set_audio_in(device) invoke_set "AUDIO_IN", device end
|
206
|
+
alias setAudioIn set_audio_in
|
207
|
+
|
208
|
+
def get_audio_out() invoke_get("AUDIO_OUT") end
|
209
|
+
def_parser(:audio_out)
|
210
|
+
alias getAudioOut get_audio_out
|
211
|
+
|
212
|
+
def set_audio_out(device) invoke_set "AUDIO_OUT", device ; end
|
213
|
+
alias setAudioOut set_audio_out
|
214
|
+
|
215
|
+
def get_ringer() invoke_get("RINGER") end
|
216
|
+
def_parser(:ringer)
|
217
|
+
alias getRinger get_ringer
|
218
|
+
|
219
|
+
def set_ringer(device) invoke_set("RINGER", device) ; end
|
220
|
+
alias setRinger set_ringer
|
221
|
+
|
222
|
+
def get_mute() parse :mute, invoke_get("MUTE") end
|
223
|
+
def_parser(:mute){|str| str._flag}
|
224
|
+
alias getMute get_mute
|
225
|
+
|
226
|
+
def set_mute(flag) parse :mute, invoke_set("MUTE", flag._swi) ;end
|
227
|
+
alias setMute set_mute
|
228
|
+
|
229
|
+
def get_avatar(filePath, num=1) invoke_get("AVATAR #{num} #{filePath}") end
|
230
|
+
alias getAvatar get_avatar
|
231
|
+
|
232
|
+
def set_avatar(filePath, idx="", num=1)
|
233
|
+
invoke_set("AVATAR", "#{num} #{filePath}#{idx.empty? ? '' : ':'+idx.to_s}").split(' ')[1..-1].join(' ')
|
126
234
|
end
|
127
|
-
|
128
|
-
|
129
|
-
def self.User() User ;end
|
130
|
-
|
131
|
-
def self.user(id) User.new(id) ; end
|
132
|
-
|
133
|
-
def self.Call() Call ; end
|
134
|
-
|
135
|
-
def self.call(id) Call.new(id) ; end
|
136
|
-
|
137
|
-
def self.Profile() Profile.new nil ; end
|
138
|
-
|
139
|
-
def self.profile() Profile.new nil ; end
|
140
|
-
|
141
|
-
def self.Chat() Chat ; end
|
142
|
-
|
143
|
-
def self.chat(id) Chat.new(id) ; end
|
144
|
-
|
145
|
-
def self.ChatMessage() ChatMessage ; end
|
146
|
-
|
147
|
-
def self.chatMessage(id) ChatMessage.new(id) ; end
|
148
|
-
|
149
|
-
def self.ChatMember() ChatMember ; end
|
150
|
-
|
151
|
-
def self.chatMember(id) ChatMember.new(id) ; end
|
152
|
-
|
153
|
-
def self.Message() Message ; end
|
154
|
-
|
155
|
-
def self.message(id) Message.new(id) ; end
|
156
|
-
|
157
|
-
def self.VoiceMail() VoiceMail ; end
|
158
|
-
|
159
|
-
def self.voiceMail(id)VoiceMail.new(id) ; end
|
160
|
-
|
161
|
-
def self.SMS() SMS ; end
|
162
|
-
|
163
|
-
def self.sms(id) SMS.new(id) ; end
|
164
|
-
|
165
|
-
def self.Application() Application ; end
|
166
|
-
|
167
|
-
def self.application(id) Application.new(id) ; end
|
168
|
-
|
169
|
-
def self.Group() Group ; end
|
170
|
-
|
171
|
-
def self.group(id) Group.new(id) ; end
|
235
|
+
alias setAvatar set_avatar
|
172
236
|
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
getter :PredictiveDialerCountry, 'PREDICTIVE_DIALER_COUNTRY'
|
200
|
-
|
201
|
-
getter :Connstatus, 'CONNSTATUS'
|
202
|
-
|
203
|
-
getter :AudioIn, 'AUDIO_IN'
|
204
|
-
|
205
|
-
def self.setAudioIn(device) invoke_set "AUDIO_IN", device ; end
|
206
|
-
|
207
|
-
getter :AudioOut, 'AUDIO_OUT'
|
208
|
-
|
209
|
-
def self.setAudioOut(device) invoke_set "AUDIO_OUT", device ; end
|
210
|
-
|
211
|
-
getter :Ringer, 'RINGER'
|
212
|
-
|
213
|
-
def self.setRinger(device) invoke_set("RINGER", device) ; end
|
214
|
-
|
215
|
-
getter :Mute, 'MUTE' do |str|
|
216
|
-
str._flag
|
217
|
-
end
|
218
|
-
|
219
|
-
def self.setMute(flag) invoke_set("MUTE", flag._swi) ;end
|
220
|
-
|
221
|
-
def self.getAvatar(filePath, num=1) invoke_get("AVATAR #{num} #{filePath}") ; end
|
222
|
-
notice :Avator, 'AVATOR'
|
223
|
-
#?
|
224
|
-
|
225
|
-
def self.setAvatar(filePath, idx="", num=1)
|
226
|
-
invoke_set("AVATAR", "#{num} #{filePath}#{idx.empty? ? '' : ':'+idx.to_s}").split(' ')[1]
|
227
|
-
end
|
228
|
-
|
229
|
-
def self.getRingtone(id=1) invoke_get("RINGTONE #{id}") ; end
|
230
|
-
|
231
|
-
def self.setRingtone(filePath, idx="", id=1) invoke_set("RINGTONE","#{id} #{filePath}:#{idx}") ; end
|
232
|
-
|
233
|
-
notice :Ringtone, "RINGTONE 1" do |str|
|
234
|
-
num, file = str.split(' ',2)
|
235
|
-
return num.to_i, file
|
236
|
-
end
|
237
|
-
#?
|
238
|
-
|
239
|
-
def self.getRingtoneStatus(id=1)
|
240
|
-
invoke("GET RINGTONE #{id} STATUS") =~ /RINGTONE #{id} ((ON)|(OFF))/
|
241
|
-
$2._flag
|
242
|
-
end
|
243
|
-
|
244
|
-
notice :RingtoneStatus, "RINGTONE 1 STATUS" do |str|
|
245
|
-
str._flag
|
246
|
-
end
|
247
|
-
#?
|
237
|
+
def get_ringtone(id=1) invoke_get("RINGTONE #{id}") end
|
238
|
+
def_parser(:ringtone, "RINGTONE 1")
|
239
|
+
alias getRingtone get_ringtone
|
240
|
+
|
241
|
+
def set_ringtone(filePath, idx="", id=1) invoke_set("RINGTONE","#{id} #{filePath}:#{idx}") end
|
242
|
+
alias setRingtone set_ringtone
|
243
|
+
|
244
|
+
def get_ringtone_status(id=1)
|
245
|
+
invoke("GET RINGTONE #{id} STATUS") =~ /RINGTONE #{id} ((ON)|(OFF))/
|
246
|
+
$2._flag
|
247
|
+
end
|
248
|
+
def_parser(:ringtone_status, "RINGTONE 1 STATUS" ){|str| str._flag}
|
249
|
+
alias getRingtoneStatus get_ringtone_status
|
250
|
+
|
251
|
+
def set_ringtone_status(flag, id=1)
|
252
|
+
invoke("SET RINGTONE #{id} STATUS #{flag._swi}") =~ /RINGTONE #{id} ((ON)|(OFF))/
|
253
|
+
$2._flag
|
254
|
+
end
|
255
|
+
alias setRingtoneStatus set_ringtone_status
|
256
|
+
|
257
|
+
def get_pc_speaker() parse :pc_speaker, invoke_get('PCSPEAKER') end
|
258
|
+
def_parser(:pc_speaker, 'PCSPEAKER'){|str| str._flag}
|
259
|
+
alias getPCSpeaker get_pc_speaker
|
260
|
+
|
261
|
+
def set_pc_speaker(flag) parse :pc_speaker, invoke_set("PCSPEAKER", flag._swi) ; end
|
262
|
+
alias setPCSpeaker set_pc_speaker
|
248
263
|
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
264
|
+
def get_agc() parse :agc, invoke_get("AGC") end
|
265
|
+
def_parser(:agc){|str| str._flag}
|
266
|
+
alias getAGC get_agc
|
267
|
+
|
268
|
+
def set_agc(flag) parse :agc, invoke_set("AGC", flag._swi) end
|
269
|
+
alias setAGC set_agc
|
270
|
+
|
271
|
+
def get_aec() parse :aec, invoke_get("AEC") end
|
272
|
+
def_parser(:aec){|str| str._flag}
|
273
|
+
alias getAEC get_aec
|
274
|
+
|
275
|
+
def set_aec(flag) parse :aec, invoke_set("AEC", flag._swi) end
|
276
|
+
alias setAEC set_aec
|
277
|
+
|
278
|
+
#notice?
|
279
|
+
def reset_idle_timer() invoke("RESETIDLETIMER") == "RESETIDLETIMER" end
|
280
|
+
def_parser :reset_idle_timer, 'RESETIDLETIMER'
|
281
|
+
alias resetIdleTimer reset_idle_timer
|
282
|
+
|
283
|
+
def get_auto_away() parse :auto_away, invoke_get("AUTOAWAY") end
|
284
|
+
def_parser(:auto_away,"AUTOAWAY"){|str| str._flag}
|
285
|
+
alias getAutoAway get_auto_away
|
286
|
+
|
287
|
+
def set_auto_away(flag) parse :auto_away, invoke_set('AUTOAWAY', flag._swi) end
|
288
|
+
alias setAutoAway set_auto_away
|
289
|
+
|
290
|
+
def get_video_in() invoke_get("VIDEO_IN") end
|
291
|
+
def_parser(:video_in)
|
292
|
+
alias getVideoIn get_video_in
|
293
|
+
|
294
|
+
def set_video_in(device) invoke_set("VIDEO_IN", device) end
|
295
|
+
alias setVideoIn set_video_in
|
253
296
|
|
254
|
-
|
255
|
-
str._flag
|
256
|
-
end
|
257
|
-
|
258
|
-
def self.setPCSpeaker(flag) invoke_set("PCSPEAKER", flag._swi) ; end
|
259
|
-
|
260
|
-
getter :AGC, 'AGC' do |str|
|
261
|
-
str._flag
|
262
|
-
end
|
263
|
-
|
264
|
-
def self.setAGC(flag) invoke_set("AGC", flag._swi) ; end
|
265
|
-
|
266
|
-
getter :AEC, 'AEC' do |str|
|
267
|
-
str._flag
|
268
|
-
end
|
269
|
-
|
270
|
-
def self.setAEC(flag) invoke_set("AEC", flag._swi) ; end
|
271
|
-
|
272
|
-
def self.resetIdleTimer() invoke("RESETIDLETIMER") == "RESETIDLETIMER" ; end
|
273
|
-
notice :ResetIdleTimer, 'RESETIDLETIMER' #?
|
274
|
-
|
275
|
-
getter :AutoAway ,'AUTOAWAY' do |str|
|
276
|
-
str._flag
|
277
|
-
end
|
278
|
-
|
279
|
-
def self.setAutoAway(flag) invoke_set('AUTOAWAY', flag._swi) ; end
|
280
|
-
|
281
|
-
getter :VideoIn, 'VIDEO_IN'
|
282
|
-
|
283
|
-
def self.setVideoIn(device) invoke_set("VIDEO_IN", device) ; end
|
284
|
-
|
285
|
-
def self.ping waitLimit=nil
|
286
|
-
if waitLimit
|
287
|
-
invoke_block "PING", waitLimit
|
288
|
-
else
|
297
|
+
def ping
|
289
298
|
invoke("PING") == "PONG"
|
290
299
|
end
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
300
|
+
|
301
|
+
#UserInterFace
|
302
|
+
|
303
|
+
def focus() invoke('FOCUS') == 'FOCUS' end
|
304
|
+
|
305
|
+
def minimize() invoke('MINIMIZE') == 'MINIMIZE' end
|
306
|
+
|
307
|
+
def get_window_state() invoke_get("WINDOWSTATE") end
|
308
|
+
def_parser(:window_state,"WINDOWSTATE")
|
309
|
+
alias getWindowState get_window_state
|
310
|
+
|
311
|
+
def set_window_state(state) invoke_set("WINDOWSTATE", state) end
|
312
|
+
alias setWindowState set_window_state
|
313
|
+
|
314
|
+
def open prop, *value
|
315
|
+
begin
|
316
|
+
"OPEN #{prop} #{value.join(' ')}".rstrip == invoke("OPEN #{prop} #{value.join(' ')}".rstrip)
|
317
|
+
rescue => e
|
318
|
+
e.backtrace.shift
|
319
|
+
raise e
|
320
|
+
end
|
321
|
+
end
|
322
|
+
|
323
|
+
def openVideoTest id=''
|
324
|
+
open 'VIDEOTEST', id
|
325
|
+
end
|
326
|
+
alias open_video_test openVideoTest
|
327
|
+
|
328
|
+
def openVoiceMail id
|
329
|
+
open 'VOICEMAIL', id
|
330
|
+
end
|
331
|
+
alias open_voice_mail openVoiceMail
|
332
|
+
|
333
|
+
def openAddAFriend user=''
|
334
|
+
open 'ADDAFRIEND', user.to_s
|
335
|
+
end
|
336
|
+
alias open_add_a_friend openAddAFriend
|
337
|
+
|
338
|
+
def openIM user, msg=''
|
339
|
+
open 'IM', user.to_s, msg
|
340
|
+
end
|
341
|
+
alias open_im openIM
|
342
|
+
|
343
|
+
def openChat chat
|
344
|
+
open 'CHAT', chat
|
345
|
+
end
|
346
|
+
alias open_chat openChat
|
347
|
+
|
348
|
+
def openFileTransfer path=nil, *users
|
349
|
+
open 'FILETRANSFER', "#{users.join(', ')}",path ? "IN #{path}" : ''
|
350
|
+
end
|
351
|
+
alias open_file_trasfer openFileTransfer
|
352
|
+
|
353
|
+
def openLiveTab
|
354
|
+
open 'LIVETAB'
|
355
|
+
end
|
356
|
+
alias open_live_tab openLiveTab
|
357
|
+
|
358
|
+
def openProfile
|
359
|
+
open 'PROFILE'
|
360
|
+
end
|
361
|
+
alias open_profile openProfile
|
362
|
+
|
363
|
+
def openUserInfo user
|
364
|
+
open 'USERINFO', user.to_s
|
365
|
+
end
|
366
|
+
alias open_user_info openUserInfo
|
367
|
+
|
368
|
+
def openConference
|
369
|
+
open 'CONFERENCE'
|
370
|
+
end
|
371
|
+
alias open_conference openConference
|
372
|
+
|
373
|
+
def openSearch
|
374
|
+
open 'SEARCH'
|
375
|
+
end
|
376
|
+
alias open_search openSearch
|
377
|
+
|
378
|
+
def openOptions page=''
|
379
|
+
open 'OPTIONS', page
|
380
|
+
end
|
381
|
+
alias open_options openOptions
|
382
|
+
|
383
|
+
def openCallHistory
|
384
|
+
open 'CALLHISTORY'
|
385
|
+
end
|
386
|
+
alias open_call_history openCallHistory
|
387
|
+
|
388
|
+
def openContacts
|
389
|
+
open 'CONTACTS'
|
390
|
+
end
|
391
|
+
alias open_contancts openContacts
|
392
|
+
|
393
|
+
def openDialPad
|
394
|
+
open 'DIALPAD'
|
395
|
+
end
|
396
|
+
alias open_dial_pad openDialPad
|
397
|
+
|
398
|
+
def openSendContacts *users
|
399
|
+
open 'SENDCONTACTS', users.join(' ')
|
400
|
+
end
|
401
|
+
alias open_send_contancts openSendContacts
|
402
|
+
|
403
|
+
def openBlockedUsers
|
404
|
+
open 'BLOCKEDUSERS'
|
405
|
+
end
|
406
|
+
alias open_blocked_users openBlockedUsers
|
407
|
+
|
408
|
+
def openImportContacts
|
409
|
+
open 'IMPORTCONTACTS'
|
410
|
+
end
|
411
|
+
alias open_import_contacts openImportContacts
|
412
|
+
|
413
|
+
def openGettingStarted
|
414
|
+
open 'GETTINGSTARTED'
|
415
|
+
end
|
416
|
+
alias open_getting_started openGettingStarted
|
417
|
+
|
418
|
+
def openAuthorization user
|
419
|
+
open 'AUTHORIZATION', user
|
420
|
+
end
|
421
|
+
alias open_authorization openAuthorization
|
422
|
+
|
423
|
+
def BTNPressed key
|
424
|
+
invoke_echo "BTN_PRESSED #{key}"
|
425
|
+
end
|
426
|
+
alias btnp_presse BTNPressed
|
427
|
+
|
428
|
+
def BTNReleased key
|
429
|
+
invoke_echo "BTN_RELEASED #{key}"
|
430
|
+
end
|
431
|
+
alias btn_released BTNReleased
|
432
|
+
|
433
|
+
def get_contacts_focused() parse :contacts_focused, invoke_get("CONTACTS_FOCUSED") end
|
434
|
+
def_parser(:contacts_focused){|str| SkypeAPI::User.new str}
|
435
|
+
alias getContactsFocused get_contacts_focused
|
365
436
|
|
366
|
-
|
367
|
-
|
368
|
-
|
437
|
+
def get_ui_language() invoke_get("UI_LANGUAGE") end
|
438
|
+
def_parser(:ui_language,"UI_LANGUAGE")
|
439
|
+
alias getUILanguage get_ui_language
|
369
440
|
|
370
|
-
|
371
|
-
|
372
|
-
|
441
|
+
def set_ui_language(lang) invoke_set("UI_LANGUAGE", lang) end
|
442
|
+
alias setUILanguage set_ui_language
|
443
|
+
|
444
|
+
def get_wallpaper() invoke_get("WALLPAPER") end
|
445
|
+
def_parser(:wallpaper)
|
446
|
+
alias getWallPaper get_wallpaper
|
373
447
|
|
374
|
-
|
375
|
-
|
376
|
-
|
448
|
+
def set_wallpaper(filePath) invoke_set('WALLPAPER', filePath) end
|
449
|
+
alias setWallpaper set_wallpaper
|
450
|
+
|
451
|
+
def get_silent_mode() parse :silent_mode, invoke_get("SILENT_MODE") end
|
452
|
+
def_parser(:silent_mode){|str| str._flag}
|
453
|
+
alias getSilentMode get_silent_mode
|
377
454
|
|
378
|
-
|
379
|
-
|
380
|
-
end
|
381
|
-
|
382
|
-
def self.openAuthorization user
|
383
|
-
open 'AUTHORIZATION', user
|
384
|
-
end
|
385
|
-
|
386
|
-
def self.BTNPressed key
|
387
|
-
invoke_echo "BTN_PRESSED #{key}"
|
388
|
-
end
|
389
|
-
|
390
|
-
def self.BTNReleased key
|
391
|
-
invoke_echo "BTN_RELEASED #{key}"
|
392
|
-
end
|
393
|
-
|
394
|
-
getter :ContactsFocused, 'CONTACTS_FOCUSED' do |str|
|
395
|
-
user str
|
396
|
-
end
|
397
|
-
#nitify?
|
398
|
-
|
399
|
-
getter :UILanguage, 'UI_LANGUAGE'
|
400
|
-
|
401
|
-
def self.setUILanguage(lang) invoke_set("UI_LANGUAGE", lang); end
|
402
|
-
|
403
|
-
getter :WallPaper, 'WALLPAPER'
|
404
|
-
|
405
|
-
def self.setWallPaper(filePath) invoke_set('WALLPAPER', filePath) ; end
|
406
|
-
|
407
|
-
getter :SilentMode, 'SILENT_MODE' do |str|
|
408
|
-
str._flag
|
409
|
-
end
|
455
|
+
def set_silent_mode(flag) parse :silent_mode, invoke_set('SILENT_MODE', flag._swi) end
|
456
|
+
alias setSilentMode set_silent_mode
|
410
457
|
|
411
|
-
|
458
|
+
#Search
|
412
459
|
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
[]
|
460
|
+
def search prop, preffix=prop, val=''
|
461
|
+
ret = invoke "SEARCH #{prop} #{val}"
|
462
|
+
ret =~ /^#{preffix} (.+)$/
|
463
|
+
if $1
|
464
|
+
$1.split(', ')
|
465
|
+
else
|
466
|
+
[]
|
467
|
+
end
|
422
468
|
end
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
469
|
+
|
470
|
+
def searchFriends
|
471
|
+
search('FRIENDS','USERS').map do |handle|
|
472
|
+
user(handle)
|
473
|
+
end
|
428
474
|
end
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
475
|
+
|
476
|
+
def searchUsers target
|
477
|
+
search('USERS','USERS',target).map do |handle|
|
478
|
+
user(handle)
|
479
|
+
end
|
434
480
|
end
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
481
|
+
|
482
|
+
def searchCalls target
|
483
|
+
search('CALLS','CALLS',target).map do |id|
|
484
|
+
call(id)
|
485
|
+
end
|
440
486
|
end
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
487
|
+
|
488
|
+
def searchActiveCalls
|
489
|
+
search('ACTIVECALLS','CALLS').map do |id|
|
490
|
+
call(id)
|
491
|
+
end
|
446
492
|
end
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
493
|
+
|
494
|
+
def searchMissedCalls
|
495
|
+
search('MISSEDCALLS','CALLS').map do |id|
|
496
|
+
call(id)
|
497
|
+
end
|
452
498
|
end
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
499
|
+
|
500
|
+
def searchSMSs
|
501
|
+
search('SMSS').map do |id|
|
502
|
+
sms(id)
|
503
|
+
end
|
458
504
|
end
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
505
|
+
|
506
|
+
def searchMissedSMSs
|
507
|
+
search('MISSEDSMSS','SMSS').map do |id|
|
508
|
+
sms(id)
|
509
|
+
end
|
464
510
|
end
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
511
|
+
|
512
|
+
def searchVoiceMails
|
513
|
+
search('VOICEMAILS').map do |id|
|
514
|
+
voiceMail(id)
|
515
|
+
end
|
470
516
|
end
|
471
|
-
end
|
472
517
|
|
473
|
-
|
474
|
-
|
475
|
-
|
518
|
+
def searchMissedVoiceMails
|
519
|
+
search('MISSEDVOICEMAILS','VOICEMAILS').map do |id|
|
520
|
+
voiceMail id
|
521
|
+
end
|
522
|
+
end
|
523
|
+
|
524
|
+
def searchMessages(target='')
|
525
|
+
search('MESSAGES', 'MESSAGES', target).map do |id|
|
526
|
+
message id
|
527
|
+
end
|
476
528
|
end
|
477
|
-
end
|
478
529
|
|
479
|
-
|
480
|
-
|
481
|
-
|
530
|
+
def searchMissedMessages
|
531
|
+
search('MISSEDMESSAGES','MESSAGES').map do |id|
|
532
|
+
message id
|
533
|
+
end
|
482
534
|
end
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
535
|
+
|
536
|
+
def searchChats
|
537
|
+
search('CHATS').map do |id|
|
538
|
+
chat id
|
539
|
+
end
|
488
540
|
end
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
541
|
+
|
542
|
+
def searchActiveChats
|
543
|
+
search('ACTIVECHATS','CHATS').map do |id|
|
544
|
+
chat id
|
545
|
+
end
|
494
546
|
end
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
547
|
+
|
548
|
+
def searchMissedChats
|
549
|
+
search('MISSEDCHATS','CHATS').map do |id|
|
550
|
+
chat id
|
551
|
+
end
|
500
552
|
end
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
553
|
+
|
554
|
+
def searchRecentChats
|
555
|
+
search('RECENTCHATS','CHATS').map do |id|
|
556
|
+
chat id
|
557
|
+
end
|
506
558
|
end
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
559
|
+
|
560
|
+
def searchBookMarkedChats
|
561
|
+
search('BOOKMARKEDCHATS','CHATS').map do |id|
|
562
|
+
chat id
|
563
|
+
end
|
512
564
|
end
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
565
|
+
|
566
|
+
def searchChatMessages target=''
|
567
|
+
search('CHATMESSAGES','CHATMESSAGES', target).map do |id|
|
568
|
+
chatMessage id
|
569
|
+
end
|
518
570
|
end
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
571
|
+
|
572
|
+
def searchMissedChatMessages
|
573
|
+
search('MISSEDCHATMESSAGES','CHATMESSAGES').map do |id|
|
574
|
+
chatMessage id
|
575
|
+
end
|
524
576
|
end
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
577
|
+
|
578
|
+
def searchUsersWaitingMyAuthorization
|
579
|
+
search('USERSWAITINGMYAUTHORIZATION','USERS').map do |handle|
|
580
|
+
user handle
|
581
|
+
end
|
530
582
|
end
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
583
|
+
|
584
|
+
def searchGroups type=''
|
585
|
+
search('GROUPS','GROUPS',type).map do |id|
|
586
|
+
group id
|
587
|
+
end
|
536
588
|
end
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
589
|
+
|
590
|
+
def searchFileTransfers
|
591
|
+
search('FILETRANSFERS').map do |id|
|
592
|
+
fileTransfer id
|
593
|
+
end
|
542
594
|
end
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
595
|
+
|
596
|
+
def searchActiveFileTransfers
|
597
|
+
search('ACTIVEFILETRANSFERS','FILETRANSFERS').map do |id|
|
598
|
+
fileTransfer id
|
599
|
+
end
|
548
600
|
end
|
549
|
-
|
601
|
+
|
602
|
+
alias search_friends searchFriends
|
603
|
+
alias search_users searchUsers
|
604
|
+
alias search_calls searchCalls
|
605
|
+
alias search_active_calls searchActiveCalls
|
606
|
+
alias search_missed_calls searchMissedCalls
|
607
|
+
alias search_smss searchSMSs
|
608
|
+
alias search_missed_smss searchMissedSMSs
|
609
|
+
alias search_voice_mails searchVoiceMails
|
610
|
+
alias search_missed_voice_mails searchMissedVoiceMails
|
611
|
+
alias search_messages searchMessages
|
612
|
+
alias search_missed_messages searchMissedMessages
|
613
|
+
alias search_chats searchChats
|
614
|
+
alias search_active_chats searchActiveChats
|
615
|
+
alias search_missed_chats searchMissedChats
|
616
|
+
alias search_recent_chats searchRecentChats
|
617
|
+
alias search_book_marked_chats searchBookMarkedChats
|
618
|
+
alias search_chat_messages searchChatMessages
|
619
|
+
alias search_missed_chat_messages searchMissedChatMessages
|
620
|
+
alias search_users_waiting_my_authorization searchUsersWaitingMyAuthorization
|
621
|
+
alias search_groups searchGroups
|
622
|
+
alias search_file_transfers searchFileTransfers
|
623
|
+
alias search_active_file_transfers searchActiveFileTransfers
|
624
|
+
|
625
|
+
#History
|
550
626
|
|
551
|
-
|
552
|
-
|
553
|
-
|
627
|
+
def clearChatHistory() invoke('CLEAR CHATHISTORY') == 'CLEAR CHATHISTORY' ; end
|
628
|
+
|
629
|
+
def clearVoiceMailHistory() invoke('CLEAR VOICEMAILHISTORY') == 'CLEAR VOICEMAILHISTORY' ; end
|
630
|
+
|
631
|
+
def clearCallHistory(type, handle='')
|
632
|
+
invoke("CLEAR CALLHISTORY #{type} #{handle}") == "CLEAR CALLHISTORY #{type} #{handle}".rstrip
|
554
633
|
end
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
def self.clearChatHistory() invoke('CLEAR CHATHISTORY') == 'CLEAR CHATHISTORY' ; end
|
634
|
+
alias clear_chat_history clearChatHistory
|
635
|
+
alias clear_voice_mail_history clearVoiceMailHistory
|
636
|
+
alias clear_call_history clearCallHistory
|
560
637
|
|
561
|
-
|
562
|
-
|
563
|
-
def self.clearCallHistory(type, handle='')
|
564
|
-
invoke("CLEAR CALLHISTORY #{type} #{handle}") == "CLEAR CALLHISTORY #{type} #{handle}".rstrip
|
638
|
+
def_parser :call_history_changed, 'CALLHISTORYCHANGED'
|
639
|
+
def_parser :im_history_changed, 'IMHISTORYCHANGED'
|
565
640
|
end
|
566
|
-
|
567
|
-
notice :CallHistoryChanged, 'CALLHISTORYCHANGED'
|
568
|
-
notice :IMHistoryChanged, 'IMHISTORYCHANGED'
|
569
|
-
|
570
|
-
#private :notified, :open, :search
|
571
|
-
#obs
|
572
|
-
|
573
|
-
#def openApplication appName
|
574
|
-
# return A2A.new(appName,self)
|
575
|
-
#end
|
576
|
-
|
577
|
-
#def openExtendApplication appName
|
578
|
-
# return A2AEx.new(appName,self)
|
579
|
-
#end
|
580
641
|
end
|