tgios 0.0.29 → 0.0.30

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
- NDgwMjVjYThlM2M3YzExYTRjNGE0NTMxMDVmNDBkNjRlNjcxMmY3Nw==
4
+ MTAzMDBiY2EyMjc5ZTI5ZDVkNzgwMWRlNDE5MTU1YzgwNGQ4ZDE1Mg==
5
5
  data.tar.gz: !binary |-
6
- NDliZjc4NTNiYWFjM2VkMWQ5YWZiNTBhMjJlNzE3OGI5MDcwMTg0Ng==
6
+ N2EyODYxMjJkMDAyYmU4ZjJhNjYwZjE5YWJmYzI3NTg0YWExOGY3MA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZTk3ODVmNTZjZDg4NDYzMTdiOTZhYjJlMTUxMTkzOTA2NjIxM2M4NDFjYjc0
10
- ODdkYTE2YmY1ZWMwMjkyODViYzYyYzBmYjRkYzU4ZmE2ZWEyZjg1NTQzM2Ex
11
- M2QzZWJjYTQ4ZjA4MjE5OTVlMjg0NjY0YTlkZTg0NjNiOGU1NzQ=
9
+ YzBlNGViMDMwMTY5NzRiM2JjYjNjZjY5NDYxYzllZWI3ZjZmMzM3NWMxZjRh
10
+ ZGE0MTNlNDI2YWUyOWY1MjNlNzk0NDJlNzQxNjI2NWVmNmFkOTcyODRlZDgy
11
+ ZjBkOGM0MGI0NjNkODgyZDFkNGE0OTliNWJlMGIwMmNmYTgwNDE=
12
12
  data.tar.gz: !binary |-
13
- MTg5OWFjZDIyNGQ4NzgwYTQzZjRkOTUxM2E1ZWZmYmE4ODE5OWJiODQyMGRm
14
- MDU2ZTJkMzJjYzRhZDgxZjI4ODE3NmMwYjRmNDY5NjdmOTJiMzZlNGRiMmVl
15
- OTcwZjgxNWNkNTViOTkzNTI3ZTYwMzljYmQwYmMyOTk0ZDcwNzI=
13
+ MDVhMGU3ZDVjMGM3NTI3OWZhNzQ5ODNmZDdlM2IzNDgxOGU2N2ZhZmUyZWI4
14
+ N2YzNDBkY2IxMWIxMjAwZjQ2ZGRlOTZkNzhiNzgwMjRjMjAwODhlZjMwNWFm
15
+ MjdmNTIwZTBlN2MzNDZmODc4ZDI5YTY3YWIyZDYzMzJjNDU2M2M=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tgios (0.0.28)
4
+ tgios (0.0.30)
5
5
  awesome_print_motion
6
6
  motion-layout
7
7
  plastic_cup (>= 0.1.1)
@@ -16,18 +16,18 @@ module Tgios
16
16
  end
17
17
 
18
18
  def show_animated
19
+ new_frame = self.frame
20
+ new_frame.origin.y = self.superview.frame.size.height - self.bounds.size.height
19
21
  @show_notification ||= NSNotification.notificationWithName(
20
22
  UIKeyboardWillShowNotification,
21
23
  object: self,
22
- userInfo:{UIKeyboardFrameEndUserInfoKey=> NSValue.valueWithCGRect(self.frame),
24
+ userInfo:{UIKeyboardFrameEndUserInfoKey=> NSValue.valueWithCGRect(self.superview.convertRect(new_frame, toView: nil)),
23
25
  UIKeyboardAnimationCurveUserInfoKey=> UIViewAnimationOptionCurveEaseInOut,
24
26
  UIKeyboardAnimationDurationUserInfoKey=> DURATION})
25
27
  UIView.animateWithDuration(DURATION, animations: ->{
26
28
  NSNotificationCenter.defaultCenter.postNotification(@show_notification)
27
29
  self.alpha = 1.0
28
- frame = self.frame
29
- frame.origin.y = self.superview.frame.size.height - self.bounds.size.height
30
- self.frame = frame
30
+ self.frame = new_frame
31
31
  })
32
32
  @is_shown = true
33
33
  end
@@ -21,7 +21,7 @@ module Tgios
21
21
  },
22
22
  clipsToBounds: true}.merge(options))
23
23
  CommonUIUtility.get_image(item) do |image|
24
- image_view.image = image
24
+ image_view.image = image unless image.nil?
25
25
  end
26
26
  image_views << image_view
27
27
  end
@@ -2,7 +2,7 @@ module Tgios
2
2
  class SearchController < ExtendedUIViewController
3
3
  include ExtendedUITableView
4
4
  Events=[:record_selected, :search, :after_layout, :load_more]
5
- attr_accessor :table_list_binding_options, :pop_after_selected, :hide_keyboard, :field_name
5
+ attr_accessor :table_list_binding_options, :pop_after_selected, :hide_keyboard, :field_name, :instant_search
6
6
 
7
7
  def on(event_name, &block)
8
8
  raise ArgumentError.new("Event not found, valid events are: [#{Events.join(', ')}]") unless Events.include?(event_name)
@@ -42,12 +42,19 @@ module Tgios
42
42
 
43
43
  def searchBarSearchButtonClicked(searchBar)
44
44
  searchBar.resignFirstResponder
45
+ call_search(searchBar.text, true)
46
+ end
47
+
48
+ def searchBar(searchBar, textDidChange: searchText)
49
+ call_search(searchText) if @instant_search
50
+ end
45
51
 
52
+ def call_search(text, select_one=false)
46
53
  unless @events.nil? || @events[:search].nil?
47
- @events[:search].call(searchBar.text) do |success, result|
54
+ @events[:search].call(text) do |success, result|
48
55
  if success
49
56
  @result=result
50
- if @result.count == 1
57
+ if @result.count == 1 && select_one
51
58
  select_record(@result.first)
52
59
  else
53
60
  @search_result_table_binding.reload(@result) unless @search_result_table_binding.nil?
@@ -26,7 +26,8 @@ module Tgios
26
26
  end
27
27
 
28
28
  def pickerView(pickerView, titleForRow: row, forComponent: component)
29
- @list[row][@display_field]
29
+ record = @list[row]
30
+ record.is_a?(Hash) ? record[@display_field] : record.send(@display_field)
30
31
  end
31
32
 
32
33
  def pickerView(pickerView, didSelectRow:row, inComponent:component)
@@ -122,12 +122,13 @@ module Tgios
122
122
  field_set = field_set_at_index_path(index_path)
123
123
  real_fs = field_set
124
124
  real_fs = real_fs[:child_field] unless real_fs[:child_index].nil?
125
- if real_fs[:delete] == true
125
+ if real_fs[:delete] == true # TODO: change :delete to :delete_row after trim-ios changed
126
126
  unless @events[:delete_row].nil?
127
127
  @events[:delete_row].call(field_set, @models[index_path.section].send(field_set[:name]), {tableView: tableView, commitEditingStyle: editingStyle, forRowAtIndexPath:index_path}) do |success|
128
128
  tableView.deleteRowsAtIndexPaths([index_path], withRowAnimation: UITableViewRowAnimationFade) if success
129
129
  end
130
130
  end
131
+ elsif real_fs[:delete_section] == true
131
132
  unless @events[:delete_section].nil?
132
133
  @events[:delete_section].call(field_set, @models[index_path.section], {tableView: tableView, commitEditingStyle:editingStyle, forRowAtIndexPath:index_path}) do |success|
133
134
  tableView.deleteSections(NSIndexSet.indexSetWithIndex(index_path.section), withRowAnimation: UITableViewRowAnimationFade) if success
@@ -139,8 +140,15 @@ module Tgios
139
140
 
140
141
  def tableView(tableView, canEditRowAtIndexPath: index_path)
141
142
  field_set = field_set_at_index_path(index_path)
142
- field_set = field_set[:child_field] unless field_set[:child_index].nil?
143
- return field_set[:delete] == true
143
+ unless field_set.nil?
144
+ can_edit = @events[:can_edit].call(field_set, index_path) unless @events[:can_edit].nil?
145
+ if can_edit.nil?
146
+ field_set = field_set[:child_field] unless field_set[:child_index].nil?
147
+ can_edit = field_set[:delete] == true || field_set[:delete_section] == true
148
+ end
149
+ end
150
+ can_edit = false if can_edit.nil?
151
+ can_edit
144
152
  end
145
153
 
146
154
  def tableView(tableView, heightForRowAtIndexPath: index_path)
@@ -63,13 +63,15 @@ module Tgios
63
63
  end
64
64
 
65
65
  def shrink_table_view(note)
66
- # TODO: don't shrink when table frame bottom is above the keyboard
67
66
  @shrinking = true
68
67
  rect = note[UIKeyboardFrameEndUserInfoKey].CGRectValue
68
+ table_rect= @table.superview.convertRect(@table.frame, toView:nil)
69
+ intersect = CGRectIntersection(rect, table_rect)
70
+ expand_height = intersect.present? ? intersect.size.height : 0
69
71
  if @expanding
70
- @shrink_height = rect.size.height
72
+ @shrink_height = expand_height
71
73
  else
72
- set_content_inset_bottom(rect.size.height)
74
+ set_content_inset_bottom(expand_height)
73
75
  end
74
76
  end
75
77
 
@@ -104,7 +106,7 @@ module Tgios
104
106
  end
105
107
 
106
108
  def scroll_to_index_path(index_path)
107
- @table.scrollToRowAtIndexPath(index_path, atScrollPosition: UITableViewScrollPositionBottom, animated: true)
109
+ @table.scrollToRowAtIndexPath(index_path, atScrollPosition: UITableViewScrollPositionMiddle, animated: true)
108
110
  @index_path_to_scroll = nil
109
111
  end
110
112
 
@@ -27,7 +27,11 @@ module Tgios
27
27
  }) unless Base.get_style_sheet(:decimal_button)
28
28
 
29
29
  @field_name=field_name
30
- @options=options
30
+ @options=options.dup
31
+ %w(precision keyboard ignore_number_addon type auto_correct auto_capitalize reduce_font_size field_style).each do |k|
32
+ instance_variable_set("@#{k}", @options.delete(k.to_sym))
33
+ end
34
+
31
35
  @events={}
32
36
  @ui_field=WeakRef.new(ui_field)
33
37
  @model=WeakRef.new(model)
@@ -43,7 +47,7 @@ module Tgios
43
47
  @ui_field.text= if val.respond_to?(:round)
44
48
  default_precision = 0
45
49
  default_precision = 6 unless val.is_a?(Integer)
46
- val.round((@options[:precision] || default_precision)).to_s
50
+ val.round((@precision || default_precision)).to_s
47
51
  else
48
52
  val.to_s
49
53
  end
@@ -122,16 +126,16 @@ module Tgios
122
126
  end
123
127
 
124
128
  def is_decimal?
125
- @options[:keyboard] == :decimal && is_number_pad?
129
+ @keyboard == :decimal && is_number_pad?
126
130
  end
127
131
 
128
132
  def add_decimal_button
129
- if is_decimal? && @ui_field.delegate == self && !@options[:ignore_number_addon]
133
+ if is_decimal? && @ui_field.delegate == self && !@ignore_number_addon
130
134
  temp_window = (UIApplication.sharedApplication.windows[1] || UIApplication.sharedApplication.windows[0])
131
135
  temp_window.subviews.each do |keyboard|
132
136
  if keyboard.description.hasPrefix('<UIPeripheralHost')
133
137
  if @decimal_button.nil?
134
- @decimal_button = PlasticCup::Base.style(UIButton.custom, :decimal_button)
138
+ @decimal_button = Base.style(UIButton.custom, :decimal_button)
135
139
  @decimal_button.addTarget(self, action: 'decimal_tapped', forControlEvents: UIControlEventTouchUpInside)
136
140
  end
137
141
  keyboard.addSubview(@decimal_button)
@@ -180,12 +184,13 @@ module Tgios
180
184
  ####
181
185
 
182
186
  def update_ui_field_style
183
- @ui_field.secureTextEntry=@options[:type]==:password
184
- @ui_field.autocorrectionType = get_auto_correct_type(@options[:auto_correct])
185
- @ui_field.autocapitalizationType = get_auto_capitalize_type(@options[:auto_capitalize])
186
- @ui_field.keyboardType = get_keyboard_type(@options[:keyboard])
187
- @ui_field.enabled = @options[:type] != :label
188
- @ui_field.adjustsFontSizeToFitWidth = @options[:reduce_font_size]
187
+ Base.style(@ui_field, @field_style) if @field_style.present?
188
+ @ui_field.secureTextEntry=@type==:password
189
+ @ui_field.autocorrectionType = get_auto_correct_type(@auto_correct)
190
+ @ui_field.autocapitalizationType = get_auto_capitalize_type(@auto_capitalize)
191
+ @ui_field.keyboardType = get_keyboard_type(@keyboard)
192
+ @ui_field.enabled = @type != :label
193
+ @ui_field.adjustsFontSizeToFitWidth = @reduce_font_size
189
194
 
190
195
  if @model.respond_to?(:has_error?) && @model.has_error?(@field_name)
191
196
  @ui_field.leftViewMode = UITextFieldViewModeAlways
@@ -197,15 +202,15 @@ module Tgios
197
202
  textAlignment: :center.uialignment,
198
203
  text: '!',
199
204
  tag: 888}
200
- error_label = PlasticCup::Base.style(UILabel.new, error_label_styles)
205
+ error_label = Base.style(UILabel.new, error_label_styles)
201
206
  @ui_field.leftView = error_label
202
207
  end
203
208
  else
204
209
  @ui_field.leftViewMode = UITextFieldViewModeNever
205
210
  end
206
211
 
207
- if is_number_pad? && !@options[:ignore_number_addon]
208
- text_toolbar = PlasticCup::Base.style(UIToolbar.new, frame: CGRectMake(0,0,320,44))
212
+ if is_number_pad? && !@ignore_number_addon
213
+ text_toolbar = Base.style(UIToolbar.new, frame: CGRectMake(0,0,320,44))
209
214
  done_button = UIBarButtonItem.alloc.initWithBarButtonSystemItem(UIBarButtonSystemItemDone, target: self, action: 'textFieldShouldReturn:')
210
215
  text_toolbar.items=[
211
216
  UIBarButtonItem.flexible_space, done_button
data/lib/tgios/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Tgios
2
- VERSION = '0.0.29'
2
+ VERSION = '0.0.30'
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.29
4
+ version: 0.0.30
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-07-07 00:00:00.000000000 Z
12
+ date: 2014-08-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sugarcube