The checkbox problem was solved with:
af5abf92837255b6b60d30832a63d2a07cd7ae42

Here are some snippets I use for using the checkbox inside a List:

The model of the list is a qx.data.Array which contains several data beans 
"newGameModelObject" which has a property  "checked".

If you change the "checked" property, the list should automatically re-render 
because of the "changeBubble" event.
For firing the "changeBubble" event, the data bean has to include the mixin 
"MEventBubbling", and the property apply method has to be 
"_applyEventPropagation"

qx.Class.define("newGameModelObject",
{
  extend : qx.core.Object,
  include : [qx.data.marshal.MEventBubbling],

  properties :
  {
    checked :
    {
      check :"Boolean",
      init : false,
      apply : "_applyEventPropagation"
    }
  }
});


And here is the list's configureItem part I used:

 this.__list = new qx.ui.mobile.list.List({
        configureItem : function(item, data, row)
        {
          [...]

          var checkBox = new qx.ui.mobile.form.CheckBox(data.getChecked());
          checkBox.addListener("changeValue", function(evt){
            var item4change = self.__list.getModel().getItem(row);
            item4change.setChecked(evt.getData());
          });

          item.addToButtonContainer(checkBox);
        },

        createItemRenderer : function() {
          return new renderer.Button();
        }
      }
 );

You have to create the checkBox on configureItem and add it into the 
ButtonContainer.
Then you have to listen to "changeValue" event on it and change the checked 
state of the row item.
Now the model updates itself and triggers a re-rendering of the list >> the 
checkbox displays the new state.

Hope that helps to finally solve your problem.

Greetz Christopher









Am 31.01.2013 um 21:17 schrieb Ingo Bürk:

Oh… I just found out by accident that there is no instance for every item, all 
list items share the same renderer instance. Oh man, what a misunderstanding! I 
guess in that case I don't have a choice but to traverse the list for the 
<selectedIndex>-th checkbox.

On 01/31/2013 08:38 PM, Christopher Zündorf wrote:

You can manage that by modifying your "configureItem" method.

Here is the renderer I wrote and how to use it:

this.list = new qx.ui.mobile.list.List({
        configureItem : function(item, data, row)
        {

          item.setTitle("title");
          item.setSubtitle("subtitle");
          item.setSelectable(false);
          item.setShowArrow(false);

          var button = new qx.ui.mobile.form.Button("buttontext");
          button("tap",function() {
           console.log("works");
          },this);

          item.addToButtonContainer(button);
        },

        createItemRenderer : function() {
          return new mssa.renderer.Bills();
        }
      }
      );

qx.Class.define("renderer.Button",
{
  extend : qx.ui.mobile.list.renderer.Abstract,


 /*
  *****************************************************************************
     CONSTRUCTOR
  *****************************************************************************
  */

  construct : function(layout)
  {
    this.base(arguments, layout || new qx.ui.mobile.layout.HBox().set({
        alignY : "middle"
      }));
    this._init();
  },




 /*
  *****************************************************************************
     MEMBERS
  *****************************************************************************
  */

  members :
  {
    __image : null,
    __title : null,
    __subtitle : null,
    __rightContainer : null,
    __buttonContainer : null,


    /**
     * Returns the image widget which is used for this renderer.
     *
     * @return {qx.ui.mobile.basic.Image} The image widget
     */
    getImageWidget : function() {
      return this.__image;
    },


    /**
     * Returns the title widget which is used for this renderer.
     *
     * @return {qx.ui.mobile.basic.Label} The title widget
     */
    getTitleWidget : function() {
      return this.__title;
    },


    /**
     * Returns the subtitle widget which is used for this renderer.
     *
     * @return {qx.ui.mobile.basic.Label} The subtitle widget
     */
    getSubtitleWidget : function()
    {
      return this.__subtitle;
    },


    /**
     * Sets the source of the image widget.
     *
     * @param source {String} The source to set
     */
    setImage : function(source)
    {
      this.__image.setSource(source)
    },


    /**
     * Sets the value of the title widget.
     *
     * @param title {String} The value to set
     */
    setTitle : function(title)
    {
      this.__title.setValue(title);
    },


    /**
     * Sets the value of the subtitle widget.
     *
     * @param subtitle {String} The value to set
     */
    setSubtitle : function(subtitle)
    {
      this.__subtitle.setValue(subtitle);
    },


    /**
     * Sets the value of the subtitle widget.
     *
     * @param subtitle {String} The value to set
     */
    addToButtonContainer : function(widget)
    {
      this.__buttonContainer.add(widget);
    },


    /**
     * Inits the widgets for the renderer.
     *
     */
    _init : function()
    {
      this.__image = this._createImage();
      this.add(this.__image);

      this.__rightContainer = this._createRightContainer();
      this.add(this.__rightContainer, {flex:1});

      this.__buttonContainer = this._createButtonContainer();
      this.add(this.__buttonContainer,{flex:0});

      this.__title = this._createTitle();
      this.__rightContainer.add(this.__title);

      this.__subtitle = this._createSubtitle();
      this.__rightContainer.add(this.__subtitle);
    },


    /**
     * Creates and returns the right container composite. Override this to 
adapt the widget code.
     *
     * @return {qx.ui.mobile.container.Composite} the right container.
     */
    _createRightContainer : function() {
      return new qx.ui.mobile.container.Composite(new 
qx.ui.mobile.layout.VBox());
    },


    /**
     * Creates and returns the button container composite. Override this to 
adapt the widget code.
     *
     * @return {qx.ui.mobile.container.Composite} the right container.
     */
    _createButtonContainer : function() {
      return new qx.ui.mobile.container.Composite(new 
qx.ui.mobile.layout.HBox());
    },


    /**
     * Creates and returns the image widget. Override this to adapt the widget 
code.
     *
     * @return {qx.ui.mobile.basic.Image} the image widget.
     */
    _createImage : function() {
      var image = new qx.ui.mobile.basic.Image();
      image.setAnonymous(true);
      image.addCssClass("list-itemimage");
      return image;
    },


    /**
     * Creates and returns the title widget. Override this to adapt the widget 
code.
     *
     * @return {qx.ui.mobile.basic.Label} the title widget.
     */
    _createTitle : function() {
      var title = new qx.ui.mobile.basic.Label();
      title.setWrap(false);
      title.addCssClass("list-itemlabel");
      return title;
    },


    /**
     * Creates and returns the subtitle widget. Override this to adapt the 
widget code.
     *
     * @return {qx.ui.mobile.basic.Label} the subtitle widget.
     */
    _createSubtitle : function() {
      var subtitle = new qx.ui.mobile.basic.Label();
      subtitle.setWrap(false);
      subtitle.addCssClass("subtitle");
      return subtitle;
    },


    // overridden
    reset : function()
    {
      this.__image.setSource(null);
      this.__title.setValue("");
      this.__subtitle.setValue("");
      this.__buttonContainer.removeAll();
    }
  },

 /*
  *****************************************************************************
     DESTRUCTOR
  *****************************************************************************
  */

  destruct : function()
  {
    this._disposeObjects("__image", "__title", "__subtitle", 
"__rightContainer", "__buttonContainer");
  }
});


Am 31.01.2013 um 20:29 schrieb Ingo Bürk:

Hi Christopher,

using the css class sure is possible. However, while I'm able to control the 
HTML element of selected items, it won't allow me to actually control the list 
item (in this case the CheckBoxListItem instance), but I was wondering if 
there's a way to do that? It just feels "hacky" to filter for a css class, get 
the corresponding <li> element and then select the checkbox within that 
element. I'd rather control the qx instance.

Also I was wondering how you managed to add events to your buttons in the 
button list. If that's not a problem for the project you wrote it for, maybe 
you could share the implementation of that list? I sure could learn from it.

Thank your for all you help so far.

Kind Regards
Ingo


On 01/31/2013 01:52 PM, Christopher Zündorf wrote:

As a quick fix, you could use the "selected" state of the menu as a indicator, 
which list item is selected.

The css class

"item-selected"

on the list item could help you. You can take a part of the implementation of 
qx.ui.mobile.dialog.Menu for this purpose.

Greetz Christopher


Am 31.01.2013 um 10:28 schrieb Ingo Bürk:

Hi Christopher,

I'm aware that the native box is intended to be hidden. I just pointed out that 
it is at least there, but the replacement-box isn't. As for the container: I 
had already tried that and it didn't change anything. I should have mentioned 
that, sorry. Adding buttons, labels etc. instead of a checkbox works fine, by 
the way. Only checkboxes (and radio buttons) seem to have a problem.

Regards
Ingo

On 01/31/2013 10:23 AM, Christopher Zündorf wrote:

Hi again,

I have had a look at your example, and your problem.

First: the native checkbox input is intended to be hidden. In many browser the 
checkbox styling can not be changed, and that is why we have an overlay
for this checkbox with CSS pseudo elements.

You problem might be caused by the fact that your check box is not wrapped by a 
composite container. Without the container, the label and the sublabel takes 
the whole space of the list item entry.

I written a renderer for an application which display buttons inside a list 
item. The important methods are:

[...]
extend : qx.ui.mobile.list.renderer.Abstract,
[...]
 /**
     * Inits the widgets for the renderer.
     *
     */
    _init : function()
    {
      this.__image = this._createImage();
      this.add(this.__image);

      this.__rightContainer = this._createRightContainer();
      this.add(this.__rightContainer, {flex:1});

      this.__buttonContainer = this._createButtonContainer();
      this.add(this.__buttonContainer,{flex:0});

      this.__title = this._createTitle();
      this.__rightContainer.add(this.__title);

      this.__subtitle = this._createSubtitle();
      this.__rightContainer.add(this.__subtitle);
    },
[...]
 /**
     * Creates and returns the button container composite. Override this to 
adapt the widget code.
     *
     * @return {qx.ui.mobile.container.Composite} the right container.
     */
    _createButtonContainer : function() {
      return new qx.ui.mobile.container.Composite(new 
qx.ui.mobile.layout.HBox());
    },
[…]


Please try to wrap your checkbox by a composite, just like in the example. That 
might help solving your problem.

Greetz Christopher




Am 30.01.2013 um 20:24 schrieb Ingo Bürk:

http://www.airblader.de/qxCheckBoxList/index.html 
<http://www.airblader.de/qxCheckBoxList/index.html#><http://www.airblader.de/qxCheckBoxList/index.html#><http://www.airblader.de/qxCheckBoxList/index.html#><http://www.airblader.de/qxCheckBoxList/index.html#><http://www.airblader.de/qxCheckBoxList/index.html#><http://www.airblader.de/qxCheckBoxList/index.html#><http://www.airblader.de/qxCheckBoxList/index.html#><http://www.airblader.de/qxCheckBoxList/index.html#>






------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_jan



_______________________________________________
qooxdoo-devel mailing list
[email protected]<mailto:[email protected]><mailto:[email protected]><mailto:[email protected]><mailto:[email protected]><mailto:[email protected]><mailto:[email protected]><mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel


------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_jan_______________________________________________
qooxdoo-devel mailing list
[email protected]<mailto:[email protected]><mailto:[email protected]><mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel






------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_jan



_______________________________________________
qooxdoo-devel mailing list
[email protected]<mailto:[email protected]><mailto:[email protected]><mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel


------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_jan_______________________________________________
qooxdoo-devel mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel






------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_jan



_______________________________________________
qooxdoo-devel mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel


------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_jan_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_jan
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to