Ruby4Skype 0.2.3 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|