tgios 0.0.31 → 0.0.32

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
- YzIxYjJkYTlhNTdkYjI1OTY1NjQ2ZDM0ZGExZjk5MzJjYWE3MjdiMQ==
4
+ MTIyZTg3OTJiZWI1MWYzOTU3MWJjZjJlN2IwYmE4NmNjYTlhNGJjYQ==
5
5
  data.tar.gz: !binary |-
6
- M2Q0ODZjYjkzYzczN2ZkNDEwYjQ2ZWZmM2RmYTMyZmIzOTM5ZDk1YQ==
6
+ YzQ4ZjUzYzBiZjU5NGI1Y2QwNWIwMmJhNGIzM2JmN2NjMzg2YmQ2ZQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NGY4YTZkODE2Mzg3MDAyODIxOTY5OGEzZjQ0NzNiNjQ5NDhiNDkyZTkzMzQx
10
- MzcwZThhY2VkYmZhZGMxMGNlMjMxZmFmMGNjZGUyZDQ2NGZjNzZhZWQ5MWIx
11
- Y2JmYjdjZjM4YjVkM2VhNmFmM2FlMGE1NzlmMDhjZjg5Y2E3MTE=
9
+ NTUzNTQ4YmQ3NGQwYjMyNzU5ZDg5ZjZkZDRmMzI5NzYzZTY4ZTI1Y2UxMjQ3
10
+ Mjk4MDhkMTExODI2OTA4OWI2M2I3MjJjZmFiODJkNjE2Y2QyMzIzYjA5MDc0
11
+ OTc0YmE1MmExZjIxMTRmNDhjMTRmZmNjYjRmMTM2YzJlYWEzNDg=
12
12
  data.tar.gz: !binary |-
13
- MTM3NzQ4NzYyOTI1MjU0MmM1NzA2OWZhZGE1ODA4M2Y1M2I3YTMyYmJiZDUx
14
- NDYyYThlM2VkMWE5Y2JlNmE5MzU1OTJhNWYyZWFlZTQ4ZmVlM2IzNjA1Y2E2
15
- NTFkZDBmYjkxNWQyODgxMjdjYjZjYTAwOWIyYTc5NTBjY2QyYjM=
13
+ ZGI4NTM5Yzk1NjQyOWMyYjBkMWZiNjE3YTVjZTA1ZmI4MDZlMWI1Zjc5ZDE3
14
+ NmZmMTNkMmMwMGYzZWY3ZTc0OGRkODZkYWRlNWNjMmVhZjgxMmQ2YjYzMWJl
15
+ MjY1ZWYwNDMwYjgzMzE1ODRiN2E5YzZlN2ZjYzQ2ZDQ0YWIxODk=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tgios (0.0.31)
4
+ tgios (0.0.32)
5
5
  awesome_print_motion
6
6
  motion-layout
7
7
  plastic_cup (>= 0.1.1)
@@ -0,0 +1,154 @@
1
+ module Tgios
2
+ class ScanQrController < UIViewController
3
+ def viewDidLoad
4
+ super
5
+ self.view.backgroundColor = :dark_gray.uicolor
6
+ @load_view = Tgios::LoadingView.add_loading_view_to(self.view)
7
+ @load_view.start_loading
8
+ if Device.simulator?
9
+ self.performSelector('fake_scan', withObject: nil, afterDelay: 3)
10
+ else
11
+ self.performSelector('startScanning', withObject: nil, afterDelay: 0.5)
12
+ end
13
+
14
+ end
15
+
16
+ def startScanning
17
+ @load_view.stop_loading
18
+ setupCapture
19
+ end
20
+
21
+ def setupCapture
22
+ #NSLog "setCapture()"
23
+
24
+ @session = AVCaptureSession.alloc.init
25
+ @session.sessionPreset = AVCaptureSessionPresetHigh
26
+
27
+ @device = AVCaptureDevice.defaultDeviceWithMediaType AVMediaTypeVideo
28
+ @error = Pointer.new('@')
29
+ @input = AVCaptureDeviceInput.deviceInputWithDevice @device, error: @error
30
+
31
+ @previewLayer = AVCaptureVideoPreviewLayer.alloc.initWithSession(@session)
32
+ @previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
33
+ layerRect = self.view.layer.bounds
34
+ @previewLayer.bounds = layerRect
35
+ @previewLayer.setPosition(CGPointMake(CGRectGetMidX(layerRect), CGRectGetMidY(layerRect)))
36
+ self.view.layer.addSublayer(@previewLayer)
37
+
38
+ @queue = Dispatch::Queue.new('camQueue')
39
+ @output = AVCaptureMetadataOutput.alloc.init
40
+ @output.setMetadataObjectsDelegate self, queue: @queue.dispatch_object
41
+
42
+ @session.addInput @input
43
+ @session.addOutput @output
44
+ @output.metadataObjectTypes = [ AVMetadataObjectTypeQRCode ]
45
+
46
+ @isScanning = true
47
+
48
+ @session.startRunning
49
+ #NSLog "session running: #{@session.running?}"
50
+
51
+
52
+
53
+ camera_size = layerRect.size
54
+ sq_size = 240
55
+ sq_border = 20
56
+ line_length = 60
57
+ sq_x = (camera_size.width - sq_size) / 2
58
+ sq_y = (camera_size.height - sq_size) / 2
59
+ v_height = sq_size - sq_border * 2
60
+ border_color = :white.cgcolor(0.8)
61
+
62
+ square = Base.style(CALayer.layer, {frame: [[sq_x, sq_y],[sq_size, sq_size]]})
63
+
64
+ top_left = Base.style(CALayer.layer, frame: [[0, 0], [line_length, sq_border]], backgroundColor: border_color)
65
+ top_right = Base.style(CALayer.layer, frame: [[sq_size-line_length, 0], [line_length, sq_border]], backgroundColor: border_color)
66
+ left_top = Base.style(CALayer.layer, frame: [[0, sq_border], [sq_border, line_length - sq_border]], backgroundColor: border_color)
67
+ right_top = Base.style(CALayer.layer, frame: [[sq_size - sq_border, sq_border], [sq_border, line_length - sq_border]], backgroundColor: border_color)
68
+ left_bottom = Base.style(CALayer.layer, frame: [[0, sq_size - line_length], [sq_border, line_length - sq_border]], backgroundColor: border_color)
69
+ right_bottom = Base.style(CALayer.layer, frame: [[sq_size - sq_border, sq_size - line_length], [sq_border, line_length - sq_border]], backgroundColor: border_color)
70
+ bottom_left = Base.style(CALayer.layer, frame: [[0, sq_size - sq_border], [line_length, sq_border]], backgroundColor: border_color)
71
+ bottom_right = Base.style(CALayer.layer, frame: [[sq_size-line_length, sq_size - sq_border], [line_length, sq_border]], backgroundColor: border_color)
72
+
73
+ square.addSublayer top_left
74
+ square.addSublayer top_right
75
+ square.addSublayer left_top
76
+ square.addSublayer right_top
77
+ square.addSublayer left_bottom
78
+ square.addSublayer right_bottom
79
+ square.addSublayer bottom_left
80
+ square.addSublayer bottom_right
81
+
82
+ self.view.layer.addSublayer square
83
+
84
+ true
85
+ end
86
+
87
+ def captureOutput(captureOutput, didOutputMetadataObjects: metadataObjects, fromConnection: connection)
88
+
89
+ metadataObject = metadataObjects[0]
90
+
91
+ if !@scanned && metadataObject.present? && metadataObject.type == AVMetadataObjectTypeQRCode
92
+ @scanned = true
93
+ #NSLog "#{metadataObjects[0].stringValue}"
94
+
95
+
96
+ self.performSelectorOnMainThread('openQRCode:', withObject: metadataObject.stringValue, waitUntilDone: false)
97
+ end
98
+ end
99
+
100
+ def openQRCode(result)
101
+ #NSLog "openQRCode()"
102
+
103
+ stop_scanning
104
+
105
+ @events[:result_scanned].call(result)
106
+ self.dismissViewControllerAnimated(true, completion: nil)
107
+ end
108
+
109
+ def stop_scanning
110
+
111
+ NSObject.cancelPreviousPerformRequestsWithTarget(self)
112
+
113
+ if @isScanning
114
+ @isScanning = false
115
+
116
+ @session.stopRunning
117
+ #NSLog "session running: #{@session.running?}"
118
+
119
+ @previewLayer.removeFromSuperlayer
120
+ @previewLayer = nil
121
+
122
+ @session = nil
123
+ end
124
+ self.navigationItem.leftBarButtonItem = nil
125
+ end
126
+
127
+ def fake_scan
128
+ @load_view.stop_loading
129
+ @isScanning = false
130
+ @events[:fake_result].call do |result|
131
+ fake_result = result
132
+ end unless @events[:fake_result].nil?
133
+ fake_result ||= "#{rand(100)+1}"
134
+ openQRCode(fake_result)
135
+ end
136
+
137
+ def on(event, &block)
138
+ @events[event] = block.weak!
139
+ self
140
+ end
141
+
142
+ def init
143
+ super
144
+ @events={}
145
+ self
146
+ end
147
+
148
+ def dealloc
149
+ ap "#{self.class.name} dealloc"
150
+ super
151
+ end
152
+
153
+ end
154
+ end
@@ -28,7 +28,7 @@ module Tgios
28
28
 
29
29
  @field_name=field_name
30
30
  @options=options.dup
31
- %w(precision keyboard ignore_number_addon type auto_correct auto_capitalize reduce_font_size field_style).each do |k|
31
+ %w(precision keyboard ignore_number_addon type auto_correct auto_capitalize reduce_font_size max_length field_style).each do |k|
32
32
  instance_variable_set("@#{k}", @options.delete(k.to_sym))
33
33
  end
34
34
 
@@ -117,6 +117,17 @@ module Tgios
117
117
  end
118
118
  end
119
119
 
120
+
121
+ def textField(textField, shouldChangeCharactersInRange:range, replacementString:string)
122
+ unless @max_length.is_a?(Numeric)
123
+ return true
124
+ end
125
+
126
+ new_length = textField.text.length - range.length + string.length
127
+
128
+ return new_length <= @max_length || string.include?("\n")
129
+ end
130
+
120
131
  def keyboardDidShow(note)
121
132
  add_decimal_button if @ui_field.isFirstResponder
122
133
  end
data/lib/tgios/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Tgios
2
- VERSION = '0.0.31'
2
+ VERSION = '0.0.32'
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.31
4
+ version: 0.0.32
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-08-22 00:00:00.000000000 Z
12
+ date: 2014-09-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sugarcube
@@ -100,6 +100,7 @@ files:
100
100
  - lib/tgios/photo_controller.rb
101
101
  - lib/tgios/photo_scroll_view.rb
102
102
  - lib/tgios/photo_upload.rb
103
+ - lib/tgios/scan_qr_controller.rb
103
104
  - lib/tgios/search_controller.rb
104
105
  - lib/tgios/ui_button_binding.rb
105
106
  - lib/tgios/ui_collection_view_binding.rb