← Back to team overview

touch-packages team mailing list archive

[Bug 1494387] Re: CheckBox needs to track external properties

 

Christian, you are right. Overriding the trigger() function works for
me!

However, we do not have this documented, and if I am not an exception
here, many developers may run into this issue, so I keep the bug open,
but I will update its description to say that we need documentation.

** Description changed:

  Often a CheckBox/Switch is used to show the value of a property outside
  of the CheckBox. For example:
  
  Switch {
-     id: hiddenSwitch
-     checked: !header.exposed
-     onClicked: header.exposed = !header.exposed
+     id: hiddenSwitch
+     checked: !header.exposed
+     onClicked: header.exposed = !header.exposed
  }
  
  At first look, this code may seem fine, but clicking the switch will
  trigger checked = !checked, which breaks the binding, so if
  header.exposed updates because of events happening outside of the
  switch, the switch will be out-of-sync.
  
- Perhaps we need to add some properties to the CheckBox:
- 
- CheckBox {
-   property Object bindTarget
-   property string bindProperty
+ --- update 2015-09-11 (thanks Christian) ---
+ It appears to work like this:
+ Switch {
+     id: hiddenSwitch
+     checked: header.exposed
+     function trigger() { header.exposed = !header.exposed; }
  }
  
- and then the behavior of this:
- Switch {
-     id: exposedSwitch
-     bindTarget: header
-     bindProperty: "exposed"
- }
- 
- can do what we want: the switch shows the value of "exposed", and
- clicking the switch should update the "exposed" value (which in turn
- will update the state of the switch).
- 
- Note that in this case we could not track "!exposed", so if we need
- that, some more complicated solution is needed.
+ so DON'T use the onClicked or onTriggered signal as you would expect,
+ but override the trigger() function. We need to document this.

** Changed in: ubuntu-ui-toolkit (Ubuntu)
       Status: Incomplete => Confirmed

** Changed in: ubuntu-ui-toolkit (Ubuntu)
   Importance: Undecided => High

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to ubuntu-ui-toolkit in
Ubuntu.
https://bugs.launchpad.net/bugs/1494387

Title:
  CheckBox needs to track external properties

Status in ubuntu-ui-toolkit package in Ubuntu:
  Confirmed

Bug description:
  Often a CheckBox/Switch is used to show the value of a property
  outside of the CheckBox. For example:

  Switch {
      id: hiddenSwitch
      checked: !header.exposed
      onClicked: header.exposed = !header.exposed
  }

  At first look, this code may seem fine, but clicking the switch will
  trigger checked = !checked, which breaks the binding, so if
  header.exposed updates because of events happening outside of the
  switch, the switch will be out-of-sync.

  --- update 2015-09-11 (thanks Christian) ---
  It appears to work like this:
  Switch {
      id: hiddenSwitch
      checked: header.exposed
      function trigger() { header.exposed = !header.exposed; }
  }

  so DON'T use the onClicked or onTriggered signal as you would expect,
  but override the trigger() function. We need to document this.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ubuntu-ui-toolkit/+bug/1494387/+subscriptions


References