tgios 0.0.34 → 0.0.35

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZGQxNmQ5YzAxNDM2MTUxYWRhYTc5ZmQ0YjIyYjVhZjgxYzljNDUyZA==
4
+ OGNhNjk1M2E4OTdlMDEyYWJhNzYyNjkyN2NjYWM0NTllNzY2OTA5MQ==
5
5
  data.tar.gz: !binary |-
6
- MjViMzE5MmQ0ZmI4N2Q2MzU5NTc3ZTA3OWUwY2JiZWZmMWVmODJkMA==
6
+ ZmNlMGM0OGJhYzE3ZmYyMWViMjI3NGJiYmZjOTg1OTk5ZDAzMDdmYw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ODM3OTgyMTdjZGIzMDkxZjg0NWI4MWQzYjc4MTI1MzdhNjk2ZTE1ODEwYWVh
10
- OTY3MmY3ZDMwNjZiZTk2N2NlNzMwYWU2YjJlZTFmMGVlMmUzMWZiZmQ2NGVh
11
- YzY1MDFiZDgwODU5NmI3YjFiMWE5MTM0ODRiNmRlYzU4NmExZWM=
9
+ ZTY3YzY3MWRkMjlkMmM5MzFmNGMzNGU2ODNiYmU3ODVlMTM5NDI3NDQ4MjVm
10
+ ZjBiNjg2MGM2MTUzZDNmZjEyMWMyM2E4OWUzYjljMDI3N2RiZmFjOWE1YjQ3
11
+ NzFjNmZlOTMxMGFmOTMzZmVkNzVlNjEzOGQ2ZmJlOWM2ODIxYjU=
12
12
  data.tar.gz: !binary |-
13
- ZDE1YjNjMGI4ZjA0NjViOTViYjQwN2VlMGRkM2Q3NjNkN2EzZTNhZmU1ZWQ3
14
- YjA0ZDU3OTZlNTEwN2E0OWIwMzRmYWQ3YzNhMGVlMGQyNGVjZGRiYjE4ZTQ1
15
- NTUzOTc1NGVkZTg1MDAyZjVjOTk0NDkzMzgyZGQ4Yzc2OTI4MDI=
13
+ YTFmMDFjYjUxY2M1NjM2YTEyMDI0ODQwZDA3MWY4OTUxNzFhMjgzZjFkOTlm
14
+ N2E5NWMyNzY0MWQ1Mzk4Y2YyYWNhMTFjZTU1YmVhOGMzNWMyNzA0ZjhkZTM2
15
+ OTk5N2FhMDNhYjhiZjFmYTU4Y2ZiMjQxNDQ5NTdiYmI2YjQyYTM=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tgios (0.0.34)
4
+ tgios (0.0.35)
5
5
  awesome_print_motion
6
6
  motion-layout
7
7
  plastic_cup (>= 0.1.1)
@@ -11,7 +11,7 @@ module Tgios
11
11
  end
12
12
 
13
13
  class BeaconManager < BindingBase
14
- attr_accessor :rssi, :current_beacon
14
+ attr_accessor :range_method, :range_limit, :tolerance, :current_beacon, :background
15
15
 
16
16
  BeaconFoundKey = 'Tgios::BeaconManager::BeaconFound'
17
17
  EnterRegionKey = 'Tgios::BeaconManager::EnterRegion'
@@ -25,14 +25,15 @@ module Tgios
25
25
  @default
26
26
  end
27
27
 
28
- def initialize(uuid, rssi=-70, background=false, tolerance=5)
28
+ def initialize(uuid, range_limit=-70, background=false, tolerance=5, range_method=:rssi)
29
29
  @events = {}
30
30
  @previous_beacons = []
31
31
  @background = background
32
32
  @tolerance = (tolerance || 5)
33
33
 
34
34
  @uuid = NSUUID.alloc.initWithUUIDString(uuid)
35
- @rssi = rssi
35
+ @range_method = range_method
36
+ @range_limit = range_limit
36
37
 
37
38
  @region = CLBeaconRegion.alloc.initWithProximityUUID(@uuid, identifier: uuid.split('-').first)
38
39
  @region.notifyOnEntry = true
@@ -75,18 +76,25 @@ module Tgios
75
76
  end
76
77
 
77
78
  def locationManager(manager, didRangeBeacons: beacons, inRegion: region)
78
- if has_event(:beacons_found)
79
- @events[:beacons_found].call(beacons.select{|b| b.proximity != CLProximityUnknown && b.rssi >= @rssi}, beacons)
79
+ beacons = beacons.sort_by{|b| b.try(@range_method)}
80
+ beacons = beacons.reverse if @range_method == :rssi
81
+ known_beacons = beacons.select{|b| b.proximity != CLProximityUnknown}
82
+ unknown_beacons = beacons - known_beacons
83
+ beacon = nil
84
+ beacons_in_range = known_beacons.select{|b| @range_method == :accuracy ? b.try(@range_method) <= @range_limit : b.try(@range_method) >= @range_limit}
85
+ beacon = beacons_in_range.first if beacons_in_range.present?
86
+
87
+ NSLog("beacons_in_range: ")
88
+ beacons_in_range.each_with_index do |bir, i|
89
+ NSLog("##{i}: major: #{bir.major}, minor: #{bir.minor}, accuracy: #{bir.accuracy}, rssi: #{bir.rssi}")
80
90
  end
91
+ push_beacon(beacon) # nil value will signify null beacon
81
92
 
82
- known_beacons = beacons.select{|b| b.proximity != CLProximityUnknown}.sort_by{|b| b.rssi}
83
- if known_beacons.present?
84
- beacon = known_beacons.last if known_beacons.last.rssi >= @rssi
85
- beacon ||= known_beacons.last if known_beacons.length == 1 && known_beacons.last.rssi >= @rssi - 1
93
+ if has_event(:beacons_found)
94
+ # use known_beacons + unknown_beacons to make sure closest range comes to the top
95
+ @events[:beacons_found].call(beacons_in_range, known_beacons + unknown_beacons, @current_beacon)
86
96
  end
87
97
 
88
- push_beacon(beacon)
89
-
90
98
  if has_event(:beacon_found)
91
99
  @events[:beacon_found].call(@current_beacon)
92
100
  end
@@ -107,8 +115,8 @@ module Tgios
107
115
  def request_authorization(manager)
108
116
  if manager.respond_to?(:requestAlwaysAuthorization)
109
117
  status = CLLocationManager.authorizationStatus
110
- if status == KCLAuthorizationStatusAuthorizedWhenInUse || status == KCLAuthorizationStatusDenied
111
- title = (status == kCLAuthorizationStatusDenied) ? "Location services are off" : "Background location is not enabled"
118
+ if status != KCLAuthorizationStatusAuthorizedAlways
119
+ title = (status == KCLAuthorizationStatusDenied) ? "Location services are off" : "Background location is not enabled"
112
120
  message = "To use background location you must turn on 'Always' in the Location Services Settings"
113
121
 
114
122
  UIAlertView.alert(title, message: message)
@@ -189,4 +197,4 @@ module Tgios
189
197
  super
190
198
  end
191
199
  end
192
- end
200
+ end
@@ -29,8 +29,12 @@ module Tgios
29
29
  end
30
30
 
31
31
  def list=(new_list)
32
+ set_list(new_list)
33
+ end
34
+
35
+ def set_list(new_list, options={})
32
36
  if new_list.is_a?(Array)
33
- @image_views = self.class.new_image_views(new_list)
37
+ @image_views = self.class.new_image_views(new_list, options)
34
38
  reload(@image_views)
35
39
  end
36
40
  end
@@ -16,7 +16,7 @@ module Tgios
16
16
  @label = Base.style(UILabel.new,
17
17
  frame: self.bounds,
18
18
  font: lambda {UIFont.systemFontOfSize(22)},
19
- textAlignment: :center.uialignment,
19
+ textAlignment: :center.nstextalignment,
20
20
  backgroundColor: :clear.uicolor,
21
21
  textColor: :white.uicolor)
22
22
  @label.sizeToFit
@@ -1,7 +1,6 @@
1
1
  module Tgios
2
2
  class PhotoScrollView < UIScrollView
3
- attr_accessor :image
4
- MAX_SCALE = 4.0
3
+ attr_accessor :image, :max_scale, :content_type, :min_content_type
5
4
 
6
5
  def init
7
6
  if super
@@ -11,6 +10,11 @@ module Tgios
11
10
  self.decelerationRate = UIScrollViewDecelerationRateFast
12
11
  self.delegate = self
13
12
  self.backgroundColor = :clear.uicolor
13
+ @max_scale = 4.0
14
+ @content_type = @min_content_type = :horizontal # :horizontal, :vertical, :fit, :fill
15
+
16
+ @image_view = PlasticCup::Base.style(UIImageView.new, contentMode: UIViewContentModeScaleAspectFit)
17
+ self.addSubview(@image_view)
14
18
  end
15
19
  self
16
20
  end
@@ -26,25 +30,25 @@ module Tgios
26
30
  def image=(image)
27
31
  super
28
32
  if image.is_a?(UIImage)
29
- frame = self.frame
30
- page_rect = CGRectMake(0, 0, image.size.width, image.size.height)
31
33
 
32
- img_scale = frame.size.width / page_rect.size.width
33
- fit_scale = frame.size.height / page_rect.size.height
34
- fit_scale = img_scale if img_scale < fit_scale
34
+ fit_scale = get_scale(@content_type, image)
35
35
 
36
- page_rect.size = CGSizeMake(page_rect.size.width * img_scale, page_rect.size.height * img_scale)
36
+ image_view_size = CGSizeMake(image.size.width * fit_scale, image.size.height * fit_scale)
37
37
 
38
- @image_view = PlasticCup::Base.style(UIImageView.new,
39
- image: image,
40
- frame: page_rect,
41
- contentMode: UIViewContentModeScaleAspectFit)
42
- self.addSubview(@image_view)
38
+ #reset content
39
+ self.contentOffset = CGPointZero
40
+ self.zoomScale = 1.0
41
+
42
+ @image_view.image= image
43
+ @image_view.frame = [[0,0], [image_view_size.width, image_view_size.height]]
43
44
 
44
- self.zoomScale = 0.995 if page_rect.size.height > frame.size.height
45
+ #center image
46
+ self.contentOffset = CGPointMake((image_view_size.width - frame.size.width)/2.0, (image_view_size.height - frame.size.height)/2.0)
47
+
48
+ self.zoomScale = 0.995
49
+ self.maximumZoomScale = @max_scale / fit_scale
50
+ self.minimumZoomScale = get_scale(@min_content_type, image) / fit_scale
45
51
 
46
- self.maximumZoomScale = MAX_SCALE / img_scale
47
- self.minimumZoomScale = fit_scale / img_scale
48
52
  end
49
53
  end
50
54
 
@@ -64,6 +68,23 @@ module Tgios
64
68
 
65
69
  end
66
70
 
71
+ def get_scale(type, image)
72
+ horizontal_scale = frame.size.width / image.size.width
73
+ vertical_scale = frame.size.height / image.size.height
74
+ case type
75
+ when :horizontal
76
+ horizontal_scale
77
+ when :vertical
78
+ vertical_scale
79
+ when :fit
80
+ [horizontal_scale, vertical_scale].min
81
+ when :fill
82
+ [horizontal_scale, vertical_scale].max
83
+ else
84
+ horizontal_scale
85
+ end
86
+ end
87
+
67
88
  def viewForZoomingInScrollView(scrollView)
68
89
  @image_view
69
90
  end
@@ -2,6 +2,8 @@ module Tgios
2
2
  class UICollectionViewBinding < BindingBase
3
3
  include PlasticCup
4
4
 
5
+ attr_accessor :current_page
6
+
5
7
  def initialize(*args)
6
8
  super
7
9
  @events={}
@@ -43,12 +45,23 @@ module Tgios
43
45
 
44
46
  def scrollViewDidEndDecelerating(scrollView)
45
47
  page = (scrollView.contentOffset.x / scrollView.frame.size.width).round
46
- if page != @page
47
- @page = page
48
+ if page != @current_page
49
+ @current_page = page
48
50
  @events[:page_changed].call(page) unless @events[:page_changed].nil?
49
51
  end
50
52
  end
51
53
 
54
+ def scrollViewDidScroll(scroll_view)
55
+ @events[:view_did_scroll].call(scroll_view) if @events[:view_did_scroll]
56
+ end
57
+
58
+ def go_to_page(page, animated=false)
59
+ frame = @collection_view.bounds
60
+ frame.origin.x = frame.size.width * page
61
+ @collection_view.scrollRectToVisible(frame, animated: animated)
62
+ @events[:page_changed].call(page) unless @events[:page_changed].nil?
63
+ end
64
+
52
65
  def view_at(index_path)
53
66
  @views[index_path.row]
54
67
  end
@@ -8,10 +8,11 @@ module Tgios
8
8
  @events[event_name]=block.weak!
9
9
  end
10
10
 
11
- def bind(picker_view, list: list, display_field: display_field)
11
+ def bind(picker_view, options={})
12
+ @options = options
12
13
  @picker_view=WeakRef.new(picker_view)
13
- @list=WeakRef.new(list)
14
- @display_field=display_field
14
+ @list=WeakRef.new(options[:list])
15
+ @display_field=options[:display_field]
15
16
  @picker_view.dataSource=self
16
17
  @picker_view.delegate=self
17
18
  end
@@ -26,14 +27,24 @@ module Tgios
26
27
  end
27
28
 
28
29
  def pickerView(pickerView, titleForRow: row, forComponent: component)
29
- record = @list[row]
30
- record.is_a?(Hash) ? record[@display_field] : record.send(@display_field)
30
+ get_display_text(row)
31
+ end
32
+
33
+ def pickerView(pickerView, attributedTitleForRow:row, forComponent:component)
34
+ if @options[:text_color]
35
+ NSAttributedString.alloc.initWithString(get_display_text(row), attributes:{NSForegroundColorAttributeName => @options[:text_color]})
36
+ end
31
37
  end
32
38
 
33
39
  def pickerView(pickerView, didSelectRow:row, inComponent:component)
34
40
  @events[:row_selected].call(row, selected_record) unless @events[:row_selected].nil?
35
41
  end
36
42
 
43
+ def get_display_text(row)
44
+ record = @list[row]
45
+ record.is_a?(Hash) ? record[@display_field] : record.send(@display_field)
46
+ end
47
+
37
48
  def selected_record
38
49
  @list[@picker_view.selectedRowInComponent(0)]
39
50
  end
@@ -15,7 +15,7 @@ module Tgios
15
15
  extends: :decimal_button_common,
16
16
  frame: [[0, 163 + 44], [105, 54]],
17
17
  highlighted_background_image: Tgios::CommonUIUtility.imageFromColor(UIColor.colorWithRed(0.324, green: 0.352, blue: 0.402, alpha: 1)),
18
- titleColor: :darkgray.uicolor,
18
+ titleColor: :dark_gray.uicolor,
19
19
  highlighted_title_color: :white.uicolor
20
20
  }, :ios6) unless Base.get_style_sheet(:decimal_button)
21
21
 
@@ -210,7 +210,7 @@ module Tgios
210
210
  textColor: :red.uicolor,
211
211
  backgroundColor: :clear.uicolor,
212
212
  font: 'GillSans-Bold'.uifont(25),
213
- textAlignment: :center.uialignment,
213
+ textAlignment: :center.nstextalignment,
214
214
  text: '!',
215
215
  tag: 888}
216
216
  error_label = Base.style(UILabel.new, error_label_styles)
data/lib/tgios/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Tgios
2
- VERSION = '0.0.34'
2
+ VERSION = '0.0.35'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tgios
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.34
4
+ version: 0.0.35
5
5
  platform: ruby
6
6
  authors:
7
7
  - April Tsang
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-11-25 00:00:00.000000000 Z
12
+ date: 2015-01-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sugarcube