tgios 0.0.34 → 0.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml 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