rhodes 2.0.0.beta9 → 2.0.0.beta10
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/lib/extensions/fileutils/fileutils.rb +1591 -0
- data/lib/extensions/rhoxml/rexml/document.rb +6 -3
- data/lib/extensions/rhoxml/rexml/element.rb +21 -4
- data/lib/extensions/rhoxml/rexml/parsers/xpathparser.rb +1 -0
- data/lib/framework/rho/rho.rb +72 -46
- data/lib/framework/rho/rhoapplication.rb +2 -13
- data/lib/framework/rhodes.rb +1 -1
- data/lib/framework/rhom/rhom_model.rb +14 -16
- data/lib/framework/rhom/rhom_object_factory.rb +2 -2
- data/lib/rhodes.rb +1 -1
- data/platform/android/Rhodes/res/layout/directory_list.xml +1 -1
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Rhodes.java +33 -5
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Utils.java +12 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/Camera.java +9 -12
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/FileList.java +52 -72
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java +1 -5
- data/platform/android/build/androidcommon.rb +10 -11
- data/platform/iphone/Classes/GeoLocation/LocationController.m +13 -1
- data/platform/iphone/Classes/SimpleMainView.m +14 -2
- data/platform/shared/ruby/thread.c +2 -0
- data/platform/shared/rubyJVM/src/com/rho/net/AsyncHttp.java +1 -1
- data/platform/shared/rubyJVM/src/com/rho/sync/SyncEngine.java +2 -2
- data/platform/shared/rubyJVM/src/com/rho/sync/SyncSource.java +1 -0
- data/platform/shared/rubyJVM/src/com/xruby/runtime/builtin/ObjectFactory.java +6 -2
- data/platform/shared/rubyJVM/src/com/xruby/runtime/builtin/RubyMatchData.java +1 -1
- data/platform/shared/sync/SyncEngine.cpp +3 -2
- data/platform/shared/sync/SyncSource.cpp +1 -0
- data/res/build-tools/db/syncdb.schema +0 -1
- data/rhodes.gemspec +1 -1
- metadata +4 -3
@@ -492,13 +492,16 @@ module REXML
|
|
492
492
|
|
493
493
|
def value
|
494
494
|
#TODO:
|
495
|
-
|
496
|
-
|
495
|
+
return @unnormalized if @unnormalized
|
496
|
+
@unnormalized = Text::unnormalize( @string, doctype )
|
497
497
|
|
498
|
-
@
|
498
|
+
@unnormalized
|
499
499
|
end
|
500
500
|
|
501
501
|
#TODO optimize it - regular expressions is slow on BB
|
502
|
+
def Text::unnormalize( string, doctype=nil, filter=nil, illegal=nil )
|
503
|
+
string.to_s.gsub(/\&/, "&").gsub(/\"/, "\"").gsub(/\>/, ">").gsub(/\</, "<")
|
504
|
+
end
|
502
505
|
=begin
|
503
506
|
def Text::unnormalize( string, doctype=nil, filter=nil, illegal=nil )
|
504
507
|
string.gsub( /\r\n?/, "\n" ).gsub( REFERENCE ) {
|
@@ -77,8 +77,8 @@ module REXML
|
|
77
77
|
rv = "<#@expanded_name"
|
78
78
|
|
79
79
|
@attributes.each_attribute do |attr|
|
80
|
-
rv << " "
|
81
|
-
attr.write( rv, 0 )
|
80
|
+
rv << " " << attr
|
81
|
+
#attr.write( rv, 0 )
|
82
82
|
end
|
83
83
|
|
84
84
|
if children.size > 0
|
@@ -913,8 +913,7 @@ module REXML
|
|
913
913
|
# XPath.each(doc.root, 'child::node()', &block)
|
914
914
|
# #-> Yields <b/>, <c/>, <d/>, sean, <b/>, <c/>, <d/>
|
915
915
|
def each( xpath=nil, &block)
|
916
|
-
|
917
|
-
XPath::each( @element, xpath ) {|e| yield e if e.kind_of? Element }
|
916
|
+
XPath::each( @element, xpath ) {|e| yield e if e.kind_of?( Element) }
|
918
917
|
end
|
919
918
|
|
920
919
|
def collect( xpath=nil, &block )
|
@@ -983,5 +982,23 @@ module REXML
|
|
983
982
|
def initialize element
|
984
983
|
@element = element
|
985
984
|
end
|
985
|
+
|
986
|
+
# Iterates over the attributes of an Element. Yields actual Attribute
|
987
|
+
# nodes, not String values.
|
988
|
+
#
|
989
|
+
# doc = Document.new '<a x="1" y="2"/>'
|
990
|
+
# doc.root.attributes.each_attribute {|attr|
|
991
|
+
# p attr.expanded_name+" => "+attr.value
|
992
|
+
# }
|
993
|
+
def each_attribute # :yields: attribute
|
994
|
+
each_value do |val|
|
995
|
+
#if val.kind_of? Attribute
|
996
|
+
yield val
|
997
|
+
#else
|
998
|
+
# val.each_value { |atr| yield atr }
|
999
|
+
#end
|
1000
|
+
end
|
1001
|
+
end
|
1002
|
+
|
986
1003
|
end
|
987
1004
|
end
|
data/lib/framework/rho/rho.rb
CHANGED
@@ -39,6 +39,7 @@ module Rho
|
|
39
39
|
|
40
40
|
# Initialize application and sources
|
41
41
|
@@rho_framework = self
|
42
|
+
@db_partitions = {}
|
42
43
|
init_sources()
|
43
44
|
end
|
44
45
|
|
@@ -154,6 +155,21 @@ module Rho
|
|
154
155
|
end
|
155
156
|
end
|
156
157
|
|
158
|
+
def check_source_migration(app)
|
159
|
+
uniq_sources = Rho::RhoConfig::sources.values
|
160
|
+
uniq_sources.each do |source|
|
161
|
+
next unless source['migrate_version']
|
162
|
+
|
163
|
+
db = ::Rho::RHO.get_src_db(source['name'])
|
164
|
+
|
165
|
+
if !app.on_migrate_source(source['migrate_version'], source)
|
166
|
+
db.execute_batch_sql(source['schema']['sql'])
|
167
|
+
end
|
168
|
+
|
169
|
+
db.update_into_table('sources', {"schema_version"=>source['schema_version']},{"name"=>source['name']})
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
157
173
|
def load_server_sources(data)
|
158
174
|
puts "load_server_sources : #{data}"
|
159
175
|
|
@@ -183,23 +199,32 @@ module Rho
|
|
183
199
|
|
184
200
|
hashSrcs = Rhom::RhomSource::find_all_ashash
|
185
201
|
puts "hashSrcs : #{hashSrcs}"
|
202
|
+
Rho::RhoConfig::reset_max_config_srcid()
|
186
203
|
arSrc.each do |name, src|
|
187
204
|
oldSrc = hashSrcs[name]
|
188
205
|
puts "oldSrc: #{oldSrc}"
|
189
206
|
#update schema_version
|
190
207
|
src['schema_version'] = src['schema']['version'] if src['schema'] && src['schema']['version']
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
208
|
+
src['sync_type'] ||= 'incremental'
|
209
|
+
#if oldSrc
|
210
|
+
# oldVer = oldSrc.schema_version
|
211
|
+
# newVer = src['schema_version']
|
212
|
+
# if ( oldVer != newVer )
|
213
|
+
# get_app(APPNAME).on_migrate_source(oldSrc.schema_version, src)
|
214
|
+
# end
|
215
|
+
#end
|
216
|
+
|
217
|
+
Rho::RhoConfig::sources[name] = nil
|
218
|
+
@db_partitions.each_value do |db_part|
|
219
|
+
db_part.delete_from_table('sources', {"name"=>name})
|
197
220
|
end
|
198
221
|
|
199
222
|
Rho::RhoConfig::add_source(name, src)
|
200
223
|
end
|
201
224
|
|
202
225
|
init_sources()
|
226
|
+
|
227
|
+
check_source_migration(get_app(APPNAME))
|
203
228
|
rescue Exception => e
|
204
229
|
puts "Error load_server_sources: #{e}"
|
205
230
|
puts "Trace: #{e.backtrace}"
|
@@ -219,7 +244,6 @@ module Rho
|
|
219
244
|
def init_sources()
|
220
245
|
return unless defined? Rho::RhoConfig::sources
|
221
246
|
|
222
|
-
@db_partitions = {}
|
223
247
|
uniq_sources = Rho::RhoConfig::sources.values
|
224
248
|
puts 'init_sources: ' + uniq_sources.inspect
|
225
249
|
|
@@ -229,7 +253,7 @@ module Rho
|
|
229
253
|
|
230
254
|
uniq_sources.each do |source|
|
231
255
|
partition = source['partition']
|
232
|
-
@db_partitions[partition] = nil
|
256
|
+
@db_partitions[partition] = nil unless @db_partitions[partition]
|
233
257
|
|
234
258
|
if source['belongs_to']
|
235
259
|
source['belongs_to'].each do |attrib, src_name|
|
@@ -250,10 +274,11 @@ module Rho
|
|
250
274
|
end
|
251
275
|
|
252
276
|
#user partition should alwayse exist
|
253
|
-
@db_partitions['user'] = nil
|
277
|
+
@db_partitions['user'] = nil unless @db_partitions['user']
|
254
278
|
hash_migrate = {}
|
255
|
-
@db_partitions
|
256
|
-
|
279
|
+
puts "@db_partitions : #{@db_partitions}"
|
280
|
+
@db_partitions.each do |partition, db|
|
281
|
+
db = Rhom::RhomDbAdapter.new(Rho::RhoFSConnector::get_db_fullpathname(partition), partition) unless db
|
257
282
|
db.start_transaction
|
258
283
|
begin
|
259
284
|
init_db_sources(db, uniq_sources, partition,hash_migrate)
|
@@ -269,35 +294,32 @@ module Rho
|
|
269
294
|
::Rho::RHO.init_schema_sources(hash_migrate)
|
270
295
|
end
|
271
296
|
|
272
|
-
def self.processIndexes(
|
297
|
+
def self.processIndexes(index_param, src_name, is_unique)
|
273
298
|
|
274
|
-
return "" unless
|
299
|
+
return "" unless index_param
|
275
300
|
|
276
301
|
strUnique = 'UNIQUE' if is_unique
|
277
302
|
strRes = ""
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
303
|
+
if index_param.is_a?( String )
|
304
|
+
strRes = index_param
|
305
|
+
else
|
306
|
+
nInd = 0
|
307
|
+
|
308
|
+
index_param.each do |index_name, index_cols|
|
309
|
+
strCols = ""
|
310
|
+
if index_cols.is_a?(String)
|
311
|
+
index_cols = index_cols.split(',')
|
312
|
+
end
|
284
313
|
|
285
|
-
|
286
|
-
strCols
|
287
|
-
|
288
|
-
index_cols = index_cols.split(',')
|
289
|
-
end
|
290
|
-
|
291
|
-
index_cols.each do |col|
|
292
|
-
strCols += ',' if strCols.length() > 0
|
293
|
-
strCols += "\"#{col}\""
|
294
|
-
end
|
295
|
-
|
296
|
-
#strIndName = "rhoIndex" + (is_unique ? "U" : "" ) + "_#{nInd}"
|
297
|
-
strIndex = "CREATE #{strUnique} INDEX \"#{index_name}\" on #{src_name} (#{strCols});\r\n"
|
298
|
-
strRes += strIndex
|
299
|
-
nInd += 1
|
314
|
+
index_cols.each do |col|
|
315
|
+
strCols += ',' if strCols.length() > 0
|
316
|
+
strCols += "\"#{col}\""
|
300
317
|
end
|
318
|
+
|
319
|
+
#strIndName = "rhoIndex" + (is_unique ? "U" : "" ) + "_#{nInd}"
|
320
|
+
strIndex = "CREATE #{strUnique} INDEX \"#{index_name}\" on #{src_name} (#{strCols});\r\n"
|
321
|
+
strRes += strIndex
|
322
|
+
nInd += 1
|
301
323
|
end
|
302
324
|
end
|
303
325
|
strRes
|
@@ -310,7 +332,7 @@ module Rho
|
|
310
332
|
uniq_sources.each do |source|
|
311
333
|
db = get_src_db(source['name'])
|
312
334
|
|
313
|
-
next unless source['schema']
|
335
|
+
next unless source['schema']
|
314
336
|
|
315
337
|
call_migrate = false
|
316
338
|
if db.table_exist?(source['name'])
|
@@ -354,9 +376,15 @@ module Rho
|
|
354
376
|
return source['str_blob_attribs'] if source['str_blob_attribs']
|
355
377
|
source['str_blob_attribs'] = ""
|
356
378
|
|
357
|
-
if source['schema']
|
379
|
+
if source['schema']
|
380
|
+
props = source['schema']['property']
|
381
|
+
else
|
382
|
+
props = source['property']
|
383
|
+
end
|
384
|
+
|
385
|
+
if props
|
358
386
|
str = ""
|
359
|
-
|
387
|
+
props.each do |name, ar_type|
|
360
388
|
if ar_type && ar_type.is_a?(String)
|
361
389
|
ar_type = ar_type.split(',')
|
362
390
|
end
|
@@ -389,11 +417,10 @@ module Rho
|
|
389
417
|
partition = source['partition']
|
390
418
|
sync_type = source['sync_type']
|
391
419
|
schema_version = source['schema_version']
|
392
|
-
model_type = source['model_type']
|
393
420
|
associations = source['str_associations']
|
394
421
|
blob_attribs = process_blob_attribs(source, db)
|
395
422
|
|
396
|
-
attribs = db.select_from_table('sources','sync_priority,source_id,partition, sync_type, schema_version, associations, blob_attribs
|
423
|
+
attribs = db.select_from_table('sources','sync_priority,source_id,partition, sync_type, schema_version, associations, blob_attribs', {'name'=>name})
|
397
424
|
|
398
425
|
if attribs && attribs.size > 0
|
399
426
|
if attribs[0]['sync_priority'].to_i != sync_priority.to_i
|
@@ -418,11 +445,7 @@ module Rho
|
|
418
445
|
if attribs[0]['blob_attribs'] != blob_attribs
|
419
446
|
db.update_into_table('sources', {"blob_attribs"=>blob_attribs},{"name"=>name})
|
420
447
|
end
|
421
|
-
|
422
|
-
if attribs[0]['model_type'] != model_type
|
423
|
-
db.update_into_table('sources', {"model_type"=>model_type},{"name"=>name})
|
424
|
-
end
|
425
|
-
|
448
|
+
|
426
449
|
if !source['source_id']
|
427
450
|
source['source_id'] = attribs[0]['source_id'].to_i
|
428
451
|
Rho::RhoConfig::sources[name]['source_id'] = attribs[0]['source_id'].to_i
|
@@ -438,8 +461,7 @@ module Rho
|
|
438
461
|
|
439
462
|
db.insert_into_table('sources',
|
440
463
|
{"source_id"=>source['source_id'],"name"=>name, "sync_priority"=>sync_priority, "sync_type"=>sync_type, "partition"=>partition,
|
441
|
-
"schema_version"=>source['schema_version'], 'associations'=>associations, 'blob_attribs'=>blob_attribs
|
442
|
-
"model_type"=>model_type })
|
464
|
+
"schema_version"=>source['schema_version'], 'associations'=>associations, 'blob_attribs'=>blob_attribs })
|
443
465
|
|
444
466
|
end
|
445
467
|
|
@@ -653,6 +675,10 @@ module Rho
|
|
653
675
|
def max_config_srcid
|
654
676
|
@@max_config_srcid
|
655
677
|
end
|
678
|
+
|
679
|
+
def reset_max_config_srcid
|
680
|
+
@@max_config_srcid = 1
|
681
|
+
end
|
656
682
|
|
657
683
|
def show_log
|
658
684
|
RhoConf.show_log
|
@@ -36,18 +36,7 @@ module Rho
|
|
36
36
|
NativeBar.create(NOBAR_TYPE, [])
|
37
37
|
end
|
38
38
|
|
39
|
-
|
40
|
-
uniq_sources.each do |source|
|
41
|
-
next unless source['migrate_version']
|
42
|
-
|
43
|
-
db = ::Rho::RHO.get_src_db(source['name'])
|
44
|
-
|
45
|
-
if !on_migrate_source(source['migrate_version'], source)
|
46
|
-
db.execute_batch_sql(source['schema']['sql'])
|
47
|
-
end
|
48
|
-
|
49
|
-
db.update_into_table('sources', {"schema_version"=>source['schema_version']},{"name"=>source['name']})
|
50
|
-
end
|
39
|
+
::Rho::RHO.get_instance().check_source_migration(self)
|
51
40
|
|
52
41
|
end
|
53
42
|
|
@@ -58,7 +47,7 @@ module Rho
|
|
58
47
|
#return true to run script creating table
|
59
48
|
def on_migrate_source(old_version, new_src)
|
60
49
|
puts "on_migrate_source; old_version :#{old_version}; new_src : #{new_src}"
|
61
|
-
if new_src['
|
50
|
+
if new_src['schema']
|
62
51
|
db = ::Rho::RHO.get_src_db(new_src['name'])
|
63
52
|
db.delete_table(new_src['name'])
|
64
53
|
|
data/lib/framework/rhodes.rb
CHANGED
@@ -16,21 +16,22 @@ module Rhom
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def fixed_schema?
|
19
|
-
BaseModel.model_params ||= {}
|
20
|
-
BaseModel.model_params["model_type"] = "property_bag" unless BaseModel.model_params["model_type"]
|
21
|
-
|
22
19
|
false
|
23
20
|
end
|
24
21
|
|
25
22
|
def property(name,type=:string,option=nil)
|
26
|
-
fixed_schema?()
|
23
|
+
if fixed_schema?()
|
27
24
|
|
28
|
-
|
25
|
+
BaseModel.model_params ||= {}
|
29
26
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
27
|
+
BaseModel.model_params['schema'] ||= {}
|
28
|
+
BaseModel.model_params['schema']['property'] ||= {}
|
29
|
+
BaseModel.model_params['schema']['property'][name.to_s] = [type,option]
|
30
|
+
else
|
31
|
+
BaseModel.model_params ||= {}
|
32
|
+
BaseModel.model_params['property'] ||= {}
|
33
|
+
BaseModel.model_params['property'][name.to_s] = [type,option]
|
34
|
+
end
|
34
35
|
|
35
36
|
end
|
36
37
|
|
@@ -63,18 +64,18 @@ module Rhom
|
|
63
64
|
return unless fixed_schema?
|
64
65
|
|
65
66
|
BaseModel.model_params['schema'] ||= {}
|
66
|
-
BaseModel.model_params['schema']['index'] ||=
|
67
|
+
BaseModel.model_params['schema']['index'] ||= {}
|
67
68
|
|
68
|
-
BaseModel.model_params['schema']['index']
|
69
|
+
BaseModel.model_params['schema']['index'][name.to_s] = cols
|
69
70
|
end
|
70
71
|
|
71
72
|
def unique_index(name,cols)
|
72
73
|
return unless fixed_schema?
|
73
74
|
|
74
75
|
BaseModel.model_params['schema'] ||= {}
|
75
|
-
BaseModel.model_params['schema']['unique_index'] ||=
|
76
|
+
BaseModel.model_params['schema']['unique_index'] ||= {}
|
76
77
|
|
77
|
-
BaseModel.model_params['schema']['unique_index']
|
78
|
+
BaseModel.model_params['schema']['unique_index'][name.to_s] = cols
|
78
79
|
end
|
79
80
|
|
80
81
|
end
|
@@ -87,9 +88,6 @@ module Rhom
|
|
87
88
|
end
|
88
89
|
|
89
90
|
def fixed_schema?
|
90
|
-
BaseModel.model_params ||= {}
|
91
|
-
BaseModel.model_params["model_type"] = "fixed_schema" unless BaseModel.model_params["model_type"]
|
92
|
-
|
93
91
|
true
|
94
92
|
end
|
95
93
|
|
@@ -119,7 +119,7 @@ module Rhom
|
|
119
119
|
end
|
120
120
|
|
121
121
|
def is_schema_source
|
122
|
-
Rho::RhoConfig.sources[get_source_name]['
|
122
|
+
!Rho::RhoConfig.sources[get_source_name]['schema'].nil?
|
123
123
|
end
|
124
124
|
def get_schema_table_name
|
125
125
|
get_source_name()
|
@@ -1059,7 +1059,7 @@ module Rhom
|
|
1059
1059
|
end
|
1060
1060
|
|
1061
1061
|
def is_inst_schema_source
|
1062
|
-
Rho::RhoConfig.sources[get_inst_source_name]['
|
1062
|
+
!Rho::RhoConfig.sources[get_inst_source_name]['schema'].nil?
|
1063
1063
|
end
|
1064
1064
|
def get_inst_schema_table_name
|
1065
1065
|
get_inst_source_name()
|
data/lib/rhodes.rb
CHANGED
@@ -21,7 +21,7 @@ android:text="Look In:"
|
|
21
21
|
<LinearLayout
|
22
22
|
android:id="@+id/buttonLayout"
|
23
23
|
android:layout_width="fill_parent"
|
24
|
-
android:layout_height="wrap_content">
|
24
|
+
android:layout_height="wrap_content" android:layout_weight="1">
|
25
25
|
|
26
26
|
<ImageView android:id="@+id/preview"
|
27
27
|
android:layout_width="120px"
|
@@ -168,6 +168,10 @@ public class Rhodes extends Activity {
|
|
168
168
|
return path;
|
169
169
|
}
|
170
170
|
|
171
|
+
public static String getBlobPath() {
|
172
|
+
return RhodesInstance.getInstance().getRootPath() + "db/db-files";
|
173
|
+
}
|
174
|
+
|
171
175
|
private RhoLogConf m_rhoLogConf = new RhoLogConf();
|
172
176
|
public RhoLogConf getLogConf() {
|
173
177
|
return m_rhoLogConf;
|
@@ -463,6 +467,8 @@ public class Rhodes extends Activity {
|
|
463
467
|
public void onCreate(Bundle savedInstanceState) {
|
464
468
|
super.onCreate(savedInstanceState);
|
465
469
|
|
470
|
+
Logger.T(TAG, "+++ onCreate");
|
471
|
+
|
466
472
|
Thread ct = Thread.currentThread();
|
467
473
|
ct.setPriority(Thread.MAX_PRIORITY);
|
468
474
|
uiThreadId = ct.getId();
|
@@ -537,29 +543,51 @@ public class Rhodes extends Activity {
|
|
537
543
|
});
|
538
544
|
init.start();
|
539
545
|
}
|
540
|
-
|
546
|
+
|
541
547
|
@Override
|
542
|
-
|
543
|
-
super.
|
548
|
+
protected void onRestart() {
|
549
|
+
super.onRestart();
|
550
|
+
Logger.T(TAG, "+++ onRestart");
|
544
551
|
}
|
545
552
|
|
546
553
|
@Override
|
547
|
-
protected void
|
548
|
-
super.
|
554
|
+
protected void onStart() {
|
555
|
+
super.onStart();
|
556
|
+
Logger.T(TAG, "+++ onStart");
|
549
557
|
}
|
550
558
|
|
551
559
|
@Override
|
552
560
|
protected void onResume() {
|
553
561
|
super.onResume();
|
562
|
+
Logger.T(TAG, "+++ onResume");
|
563
|
+
}
|
564
|
+
|
565
|
+
@Override
|
566
|
+
protected void onPause() {
|
567
|
+
Logger.T(TAG, "+++ onPause");
|
568
|
+
super.onPause();
|
554
569
|
}
|
555
570
|
|
571
|
+
@Override
|
572
|
+
protected void onStop() {
|
573
|
+
Logger.T(TAG, "+++ onStop");
|
574
|
+
super.onStop();
|
575
|
+
}
|
576
|
+
|
556
577
|
@Override
|
557
578
|
protected void onDestroy() {
|
579
|
+
Logger.T(TAG, "+++ onDestroy");
|
558
580
|
stopSelf();
|
559
581
|
|
560
582
|
super.onDestroy();
|
561
583
|
}
|
562
584
|
|
585
|
+
@Override
|
586
|
+
public void onConfigurationChanged(Configuration newConfig) {
|
587
|
+
Logger.T(TAG, "+++ onConfigurationChanged");
|
588
|
+
super.onConfigurationChanged(newConfig);
|
589
|
+
}
|
590
|
+
|
563
591
|
@Override
|
564
592
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
565
593
|
switch (keyCode) {
|