Hello,

I have this code:

  control = new qx.ui.basic.Image(this.getIcon());
  control.addListener("loaded", this._onLoaded, this);
  control.addListener("loadingFailed", this._onLoadingFailed, this);

How can I access image width / height after image is loaded (in
"loaded" event handler)?

I tried to use control.getWidth()/getHeight(), but it's null. I looked
at the documentation for qx.ui.basic.Image and qx.html.Image, but it
didn't help me to create a working code.


----------------

BTW: I'm trying to create a gallery like widget where I can see the
thumbnails, but instead of zooming small images I want them small so I
need to center the image widget.

My dirty code for such thing is:

qx.Class.define("ux.core.FileTileView",
{
  extend : qx.ui.form.List,

  construct : function()
  {
    this.base(arguments);
    this.getChildrenContainer().setLayout(new qx.ui.layout.Flow());
  },

  members :
  {
    _applyOrientation: function(value)
    {
      this.getChildrenContainer().setAllowStretchY(false);
    }
  }
});

qx.Class.define("ux.core.FileTileItem",
{
  extend: qx.ui.form.ListItem,

  construct: function()
  {
    // Call superclass constructor.
    this.base(arguments);

    // Layout.
    this._setLayout(new qx.ui.layout.Canvas());

    this._iconCtrl = this.getChildControl("icon");
    this._labelCtrl = this.getChildControl("label");
  },

  destruct: function()
  {
  },

  members:
  {
    // Property.
    _applyGap : function(value)
    {
      // this._getLayout().setSpacing(value);
    },

    // Overridden.
    _createChildControlImpl : function(id)
    {
      var control;

      var w = 128;
      var h = 128;

      switch(id)
      {
        case "icon":
          control = new qx.ui.basic.Image(this.getIcon());
          control.addListener("loaded", this._onLoaded, this);
          control.addListener("loadingFailed", this._onLoadingFailed, this);
          control.setAnonymous(true);
          this._add(control, { left: 0, top: 0 });
          break;

        case "label":
          control = new qx.ui.basic.Label(this.getLabel());
          control.setAnonymous(true);
          control.setTextAlign("center");
          control.set({
            minWidth: w,
            maxWidth: w,
            width: w
          });
          this._add(control, { left: 0, top: h });
          break;
      }

      return control || this.base(arguments, id);
    },

    // Events
    _onLoaded: function(e)
    {
      var control = this._iconCtrl;

      var w = control.getWidth();
      var h = control.getHeight();

      // not works...
      this.debug(w);
      this.debug(h);

      if (w > 128) w = 128;
      if (h > 128) h = 128;

      control.setLayoutProperties({
        left: Math.floor((128 - w) / 2),
        top: Math.floor((128 - h) / 2)
      });
    },

    _onLoadingFailed: function(e)
    {
    }
  }
});

Thank you for ideas / Best regards
Petr

------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and, 
should the need arise, upgrade to a full multi-node Oracle RAC database 
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to