• Shortcuts : 'n' next unread feed - 'p' previous unread feed • Styles : 1 2

» Publishers, Monetize your RSS feeds with FeedShow:  More infos  (Show/Hide Ads)


Date: Friday, 15 Aug 2014 11:56

This week, we have been busy in the mobile part of the framework, as you might have already read in our separate blog post about the new waypoint feature. This is a handy new feature you might want to try in the playground for yourself. This also enables you to implement a commonly used pattern called pull to refresh.

We have also been busy in refactoring the picker widget, but more details on that will be covered in a blog post coming next week.

For a complete list of all tasks accomplished during the last working week, see this bugzilla query.

Author: "Martin Wittemann" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 14 Aug 2014 15:16

We enhanced the qx.Mobile pageEnd logic and added a scroll waypoint feature. It makes it possible to execute code whenever you scroll to a pre-defined offset. This is very useful if you want to trigger an animation/action when the user scrolls to specified vertical/horizontal point. This feature is also necessary if you want to implement infinite scrolling.

The waypoint feature can be used like this:

var scrollContainer = page._getScrollContainer();
scrollContainer.setWaypointsY(["0%","50%","100%",200,".waypoint"]);

You can add percentage-based waypoints by adding a string like "20%" or just add numbers for applying pixel-based offsets. Additionally you can determine waypoints through a CSS selector query.

Whenever a waypoint triggers, a qx.event.type.Data fires on the scroll container:

scrollContainer.addListener("waypoint", function(evt) {
  console.log("Waypoint reached:" + evt.getData());
}, this);

The payload of the waypoint event looks like this:

{
"offset": 0,
"input": "10%",
"index": 0,
"element" : 0
}
  • offset contains the scroll offset in pixel.
  • input is the waypoint condition you passed through the array and which triggered this event.
  • index identifies this waypoint relative to its position inside the waypoint array you have passed.
  • element contains the element index found through your selector. e.g. you have five elements with ‘.waypoint’ class inside your scroll container, and user scrolls to the fifth element with this identifier, then element would be 4. This value is only relevant for waypoint rules based upon a selector. For numbers and percentage-based rules it is always null.

Have a look at this feature at the qx.Mobile List demo or check out the demo source code.

Author: "Christopher Zündorf" Tags: "Uncategorized"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 08 Aug 2014 08:34

As last week, most of the core team is on vacation so we had a quiet week here in the office.

Still, the development in the grunt based toolchain continued and we could finish the variant optimization which is a good step towards replacing the existing python-based generator.

Another piece of work worth mentioning is the reduced code size of the environment class. This is really helpful if you want to use qx.Website with a minimal code size. The Environment class had a size of 13kb (minimized), not including all the feature check classes we offer and we managed to get the code size down to 5kb (minimized) offering the exact same feature set as before.

We also put some effort in improving the data binding layer. This included a dispose fix for objects and a new helper which lets you remove all bindings between two objects. This might also help on disposing objects.

For a list of all tasks accomplished during the last working week and more details on the mentioned topics, use this bugzilla query.

Author: "Martin Wittemann" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 01 Aug 2014 09:44

As mentioned last week, we want to keep you informed what’s happening during the week within the framework development. As it is vacation time over here in Germany, some of the core team members are out of office so not too much happened this week.

Nevertheless, we worked on improving the mobile list by adding two cool new features. The first is the possibility to add waypoints that correspond to the lists scroll position. Once such a waypoints is scrolled into view, an event will be fired which gives you a chance to run custom code as easy as possible. Take a look at the list demo in the MobileShowcase to see it in action.
Another cool new feature can be discovered in the same demo but only on an iOS device. Check it out and you will see the sticky headers of the list.

For a list of all tasks accomplished during the last working week, use this bugzilla query.

Author: "Martin Wittemann" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 25 Jul 2014 14:42

As you surely recall we used to post “The week in qooxdoo” activity reports at the end of each week. We didn’t keep up with that tradition recently, as we mostly focused on various tasks in or around the framework as well as exciting new features. Many of those results went right into the latest releases, such as qooxdoo 4.0

This time we cover all the issues that where resolved in the recent weeks. So here you get several links that group those fixes into smaller chunks: May, June, July up to now.

C U next week.

Author: "Andreas Ecker" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Wednesday, 09 Jul 2014 09:19

A new and important maintenance release of the framework is available.

qooxdoo 4.0.1 ships with about 20 bugfixes over the previous qooxdoo 4.0 release.

Some of the fixes finalize the event layer for input device independence that we introduced with qooxdoo 4.0, e.g.:

  • Tap event now works properly in IE 10/11 on Windows 7 (see blog post)
  • Fixed additive selection mode
  • Fixed drag & drop on the Table widget

Given the many improvements of qooxdoo 4.x, we recommend you take the latest release into production and upgrade your apps to qooxdoo 4.0.1.

As a patch release qooxdoo 4.0.1 is fully backwards-compatible with the previous version. Nothing needs to be changed in your existing apps if they are already based on qooxdoo 4.0. When upgrading from an older version you can migrate directly to 4.0.1.

Download qooxdoo 4.0.1. Check out the detailed release notes and the manual.

Many thanks from the core developers to the community, particularly for reporting issues and your help in improving the framework.

Author: "Martin Wittemann" Tags: "Announcements, Release, Uncategorized"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 27 Jun 2014 12:23

As several users have reported, the qx.ui.form.Button widget in qooxdoo 4.0 does not fire an execute event if the user clicks on the button’s label or icon (as opposed to the button’s background). This only affects Internet Explorer 10 and 11 on Windows 7 (not Windows 8).

The bug report describes the problem in greater detail but the root cause is that on Windows 7, IE will also redirect pointer events if mouse event capturing is activated. We have been in contact with Microsoft representatives and filed a report on Microsoft’s IE feedback site for this issue.

Since this is a serious bug, you are currently advised to hold off on deploying your applications for the qooxdoo 4.0 release. Fortunately, we have already committed a workaround for the problem and are currently planning a bugfix release qooxdoo 4.0.1 that should be available very soon.

Until then, you can link any applications that have already been upgraded to qooxdoo 4.0 against the maintenance branch or apply a patch from the commit to your local release SDK files.

Author: "Daniel Wagner" Tags: "Development, Internet Explorer"
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 05 Jun 2014 16:04

We are happy to announce a new release of the framework, qooxdoo 4.0.

Many thanks go to the entire community for making this happen: the team of core developers, 1&1 as the supporting company, all contributors and users who brought in their suggestions and improvements.

qooxdoo 3.5

A major highlight of the current release covers all three GUI toolkits (website, mobile and desktop). Your qooxdoo-based app can now work with all kind of input devices. This is an awesome feature in this ever-growing multi-device world:

Input Device Independent Events

qooxdoo’s three widget sets (for desktop, mobile and website) used to have specific relations to the typical input devices, i.e. mouse for desktop or website, and touch for mobile. So using one type of app with an input device it wasn’t meant for initially, wasn’t ideal. For that reason, we had already added emulation layers for mouse on touch devices and for touch on PC-like devices. But transforming one event model into another is error-prone and just doesn’t feel natural.

Luckily, there already is a W3C spec, named Pointer Events, which tackles this problem. The main idea of this spec is to offer a unified event model, independent of the input device. In a nutshell, the spec defines how to map mouse, touch and pen input to pointer events.

That’s exactly what we did for all three GUI toolkits: Create pointer events in all browsers that don’t support them natively. That meant adding event handlers for the website and desktop / mobile layer, connecting those events to the widgets and changing every widget to listen to pointer events instead of mouse / touch events. While that’s what you could do with your own app as well, there is no need to use pointer events if you (think you) don’t need them. Mouse and touch events are still supported just as they were before the change.

We did not stop with the fundamental pointer events, however. Features we call “gestures” were also introduced on top of pointer events. This includes simple interactions like tap (as an alternative to click), but also some multi-pointer gestures such as rotate, well-known from touch devices. Check out the following sample using qx.Website:

q("#target").on("tap", function() {
    console.log("tap");
});

Using the same gesture in qx.Desktop / qx.Mobile is just as easy:

target.addListener("tap", function() {
    console.log("tap");
});

We also changed the drag & drop implementation for qx.Desktop, which now supports touch devices as well. The final thing we had to change was scrolling, because touch devices usually don’t have scroll bars or a mouse wheel. That’s where the new roll event comes in handy. This is an abstraction gesture for both mouse wheel and touch scrolling, also available in all three GUI domains. Here is a sample of a simple scroller for qx.Website:

q("#target").on("roll", function(e) {
    this[0].scrollTop = this[0].scrollTop + e.delta.y;
});

If you’re interested in the details behind the topic of input device independence, check out the first blog post about pointer event support or the manual pages about pointer and gesture events.

See the following sections on our work in other parts of the framework, like Grunt-based tooling:

Grunt Tooling

Continuing with advancing the JS toolchain, we started reimplementing the source job as a Grunt task. Along with that we introduced several npm packages (dependency, library, locale, resource and translation), which provide the underlying functionality. Of course, those packages are properly covered with unit tests and JSDoc comments. As a consequence of that modularization, the Grunt task itself is only a small wrapper orchestrating the aforementioned packages. The source job is the first building block for creating qooxdoo apps with Node.js (i.e. JavaScript code) only. We did not replace the Python-based default source job with the JavaScript-based variant, so you can still continue to use the existing, integrated toolchain.

Website

In addition to the huge new feature of pointer events, the development and enhancement of the website API viewer continued with many practical enhancements such as searchable polyfill methods or flagging of optional parameters. We also took some time to finish and polish the website widgets, which allowed us to remove their former experimental state.

Mobile

The list is one of the most important widgets in the whole mobile GUI toolkit. We added two new features to the list with this release. One is a grouping feature, which you might know from mobile apps such as the typical contacts app. The second new feature is called “swipe to delete” and is a handy feature to delete list items. You can see both features in the mobile showcase, which also demonstrates some of the many improvements made to qx.Mobile.

Contrib

We improved the process of finding new contribs with introducing a new contrib catalog website. It represents user-provided contributions available in a searchable and sortable way. The data used for the catalog website comes from the contrib-catalog repository, which provides all the metadata aggregated already. The new infrastructure is a starting point for a better community-driven exchange of solutions and code, thus your support to further improve it and to enhance it with your contributions is very welcome.

Migration

Introducing pointer events was a huge effort, of course, that included a lot of changes to the framework code. Fortunately, you might not or only slightly be affected with your own app code, related to a few public API changes. On the other hand, if you extend qooxdoo classes and created custom widgets based on some protected API, some changes might break your code. Make sure to run the migration job, read and follow the migration hints in the release notes, and you will end up with a future-embracing version of your app.

Check it out!

qooxdoo 4.0 is available for download. Check out the detailed release notes and the manual. Watch the code repository on GitHub.

The qooxdoo 4.0 release comes with many substantial improvements and exciting new features. In fact over 300 bugfixes and enhancements made it into the release.

Thanks

Many thanks from the core developers to the community of contributors and users. Please help to spread the news, get people excited about the latest releases, and show them how to deploy qooxdoo as a truly universal JavaScript framework.

Enjoy! :)

Icons taken from icons8.

Author: "Martin Wittemann" Tags: "Announcements, Release"
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 05 Jun 2014 15:54

A new maintenance release of the framework is available.

qooxdoo 3.5.1 ships with around 90 bugfixes over the previous qooxdoo 3.5 release.

As a patch release qooxdoo 3.5.1 is fully backwards-compatible to the previous version. Nothing needs to be changed in your existing apps if they are already based on qooxdoo 3.5. When upgrading from an older version you can migrate directly to 3.5.1.

Download qooxdoo 3.5.1, checkout the detailed release notes and the manual.

Many thanks from the core developers to the community, particularly for reporting issues and your help in improving the framework.

Author: "Andreas Ecker" Tags: "Announcements, Release"
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 22 May 2014 12:05

Ideas for a website which makes browsing and discovering contribs easier existed early on, when we started thinking about what the contrib catalog might look like finally.

With the contrib catalog in place for some time, we now have the possibility to use all this metadata (the content from the Manifest.json files) for something better than the old dusty wiki page of all available conrtributions.

So, without further ado: Have a look at the new qooxdoo contrib catalog website.

We had several goals with the new catalog website in mind:

  • Ease the process of finding a contrib:
    You can now search and sort contribs. Most parts of the manifest files are indexed, so searching for an author, a specific qooxdoo version or just all the descriptions is possible.
  • Ease the process of maintaining a contrib:
    We don’t oblige you anymore to create a wiki account, a SourceForge account and maybe also a bugzilla component. The only thing we need from you is a Manifest.json, present in the catalog, with some obvious information included (author, homepage, contrib archive for download …).
  • Better self representation as a contrib author:
    You are now able to represent your contrib much more individually. You can freely decide where you want to write your source code (e.g. GitHub or Bitbucket etc) and where to host your demos. And you don’t have to learn our wiki syntax anymore. Nowadays you just place a Markdown or reStructuredText file in the root of your project and sites like GitHub render them on your project page.

The contrib catalog website is updated regularly, so if your GitHub pull request for the catalog is accepted your new or updated content soon appears on the website.

If you’re a contrib author, please have a look at your contribs, i.e. please check if the information used from the Manifest.json files is still valid and up to date. Don’t hesitate to create a pull request.

As always we are happy to get feedback from you, especially from the contrib authors.

Author: "Richard Sternagel" Tags: "Announcements, Contrib"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 09 May 2014 14:53

Hi, we have been busy with quite a number of topics recently, often related to or around input-device independence, aka pointer event layer. As we are also working towards an upcoming qooxdoo 4.0 release, here is a longer list of framework tasks accomplished recently.

If you use the qooxdoo master version in your projects, please feel free to let us know about any issues you encounter, thanks.

Author: "Andreas Ecker" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 11 Apr 2014 15:04

Welcome. For a list of tasks accomplished during the last working week, use this bugzilla query.

Have a great weekend.

Author: "Andreas Ecker" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 04 Apr 2014 14:36

Welcome to a weekly status update.

Progress in pointer Branch

We’ve made good progress in the pointer branch and are very excited about the result. If you are curious, now it’s time for you to get started! Thanks in advance for your support.

Check out the pointer branch and build your app with it. If you have any error, make sure to read the preliminary release notes for qooxdoo 4.0, which holds more information on what API changed. Don’t worry about the long list of API changes. Only a few changes are to the public API (in the list the terms in bold). Your app would be affected if it uses this public API; you would have to adjust the terms in your code.

The majority of changes is to protected API, i.e. it could only affect you if you derived from framework classes (e.g. for creating custom widgets). Usually the renaming is straightforward, e.g. “Mouse” into “Pointer”, or “Click” into “Tap”. Of course, the qooxdoo migration job is going to list all (possible) names in your code that should be renamed.

Anyway, your existing and future qooxdoo apps will benefit from the input-device independence. The event API should also be quite consistent in terms of naming, so it’d be some pleasure to work with. Take the chance to get your feedback included before we merge the branch into master. The earlier the better, particularly well ahead before we ship the next release. Depending on your feedback and our own ongoing testing, we plan to merge the branch into master within a week’s span.

Bugfixes

For a complete list of tasks accomplished during the last working week, use this bugzilla query.

Have a nice weekend.

Author: "Andreas Ecker" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 28 Mar 2014 14:24

Work continued with a strong focus on Pointer Events, which we blogged about recently for status and details. It is going to provide excellent event support independent of the input device. Great foundation for your universal, multi-platform qooxdoo apps.

For a complete list of tasks accomplished during the last two working weeks, use this bugzilla query.

C U.

Author: "Andreas Ecker" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Thursday, 20 Mar 2014 15:03

During recent weeks, pointer events have been the dominating topic in the framework team, as we already teasered in the weekly blog post some weeks ago. With this post, we want to give you a deeper insight into this topic.

The Challenge

qooxdoo features three GUI toolkits: desktop, mobile and website. Connected to these domains are the main input devices: mouse for desktop / website and touch for mobile. In detail, this means that desktop / website widgets register mouse event listeners and mobile widgets register touch event listeners. So using one type of app with another input device is at best not optimal. For that reason, we already added emulation layers for mouse on touch devices and touch on PCs. But transforming one event model to another is error prone and simply doesn’t feel natural. Another way to get the optimal user experience would be to listen to both types of event for each widget, but making that change takes a lot of effort without providing an ideal solution.

Pointer to the rescue

Luckily, some clever guys at Microsoft already recognized this issue and came up with a W3C spec named Pointer Events, which tackles this problem. The main idea of this spec is to offer a unified event, independent of the input device. In an ideal world, we would simply use these events and everyone would be happy. But every web developer knows that we don’t live in an ideal world and we have to support browsers that don’t implement the spec. In fact, it’s only IE10+ which already has support for native pointer events.

Pointer Spec in a nutshell

In a nutshell, the spec is based on mouse events and maps all input devices to pointer events. It extends the mouse event type with additional information like the id of the pointer for multi pointer devices. So as a developer familiar with mouse events, you will feel comfortable with pointer events as well because most of the events are equal at first sight, like pointerdown, pointermove or pointerover. For more details, take a look at the spec.

What we already did

Having pointer events in mind, the task was clear: offer pointer events for our GUI toolkits. That means adding event handlers for the website and desktop / mobile layer, bringing these events to the widgets and changing every widget so it listens to pointer events instead of mouse / touch events. After that, change every app we ship with the SDK to use pointer events as well. If we slow down a bit and take a step back, the most important things to consider here are the event layers which fire the pointer events. So here is a listing of the newly added pointer events:

  • pointerover
  • pointerout
  • pointermove
  • pointerdown
  • pointerup
  • pointercancel

If you have the spec in mind, you will see that this list does not contain all events it mentions. But these are the most important events we need for widgets so we kept the list as small as possible. This is one of the reasons we don’t like to call this implementation a polyfill, even if in most areas it’s well-aligned with the spec and is quite broad in scope.
All the events mentioned above have one thing in common: They are atomic. The click event for example is not atomic because it is generated by a sequence of other events. But click is also closely connected to the mouse so to achieve our goal, we needed something input device independent here as well.

Gestures on top

But click is not the only combined event we know. Think of tap, swipe, or rotate in the mobile world. So we introduced another set of new events which can be grouped as gestures:

  • tap
  • longtap
  • swipe
  • rotate
  • pinch
  • track

All these events should work with either mouse or touch. Of course, for rotate and pinch, you need more than one pointer, which is not possible using a mouse.

What’s still missing

There are still some challenges left for us to tackle. One obvious thing is scrolling as there is no mouse wheel or scroll bar on mobile devices. Most of the algorithms relying on hover events are to be refactored e.g. Drag & Drop, quick selection for lists and tooltips. Last but not least, we need to add some manual pages explaining why, how and when to use use these events.

Give it a try

While we continue to complete this event layer, we would like to invite you to take a look at the changes so far. Check out our demo apps we built based on the pointer branch and let us know what you think.

Author: "Martin Wittemann" Tags: "Development, Feature Highlight, Mobile, ..."
Comments Send by mail Print  Save  Delicious 
Date: Monday, 17 Mar 2014 10:07

As we have been working on larger topics recently, such as input device independence via pointer events or embracing JS tooling via GruntJS, there hasn’t been much feedback in the form of weekly blog posts. We’ll get back to you with more details once we are to feature the upcoming milestones and achievements.

In the meantime, here’s a list of tasks accomplished during the last two working weeks, straight from bugzilla, with many others currently in progress. C U.

Author: "Andreas Ecker" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 28 Feb 2014 16:30

Welcome to the weekly status update.

Bugzilla cleanup

As most of you know, the qooxdoo project has quite a long history, and so has its bugzilla and many of the issues in it. As we have been moving to a more agile development process we have set out for exciting advancements this year. Thus we plan to better handle and clean up the existing bugzilla issues. We want to have and provide a clear view on what’s important and be even more transparent to you what will probably be fixed and what most likely not.

In a first step we are going to move those open issues to RESOLVED – LATER, whose last comment is older than a year. BTW, we plan on doing such maintenance steps periodically. There will be other steps to handle the large number of issues (including many that are rather outdated or unlikely enhancements). We just wanted to inform you about upcoming bug updates. If we move or modify a bug of yours during this process, and you’re still interested in it, feel free to comment or reopen. Just give us feedback why you still think this is important. Thanks for your support.

HtmlArea now a contrib

We accomplished bug #7918 this week, which was about moving the HtmlArea components into a separate repository and adding it to the regular contrib catalog. If you happen to use the framework from its Git master and you use the HtmlArea, make sure you update your code to include component as the contrib.

Bugfixes

For a complete list of tasks accomplished during the last working week, use this bugzilla query.

Bye.

Author: "Andreas Ecker" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 21 Feb 2014 15:01

We’ve been busy working on various issues, some of them mentioned in the last weekly status updates. For or a complete list of tasks accomplished during the recent working week, use this bugzilla query.

Author: "Andreas Ecker" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 14 Feb 2014 15:50

Welcome to a weekly wrap-up of dev activities.

Pointing out Pointers

We started one of the next big advancements of the framework: Introduction of input device independent events. In the end qooxdoo apps – be it desktop, mobile or website – are supposed to work fine independent of the actual input device (mouse, finger, etc.).

We’ve added a meta bug with some dependent bugs, which hold some more details on that topic and its implementation process. All the development will be done in a feature branch named “pointer”. Before we merge the feature over to master, we will let you know.

Mobile Improvements

Check out the recent blog post on Mobile: Back navigation, Console. It contains some handy new features when creating mobile apps.

Bugfixes

For a complete list of tasks accomplished during the last working week, use this bugzilla query.

Bye.

Author: "Andreas Ecker" Tags: "Activity Reports"
Comments Send by mail Print  Save  Delicious 
Date: Friday, 14 Feb 2014 15:49

Here are some improvements for mobile apps.

Back navigation in Routing

We enhanced qx.application.Routing by adding a back() method.

It navigates the application to the last known path(s), including all hash states. The logic inside the back() method detects route cycles and removes them automatically from routing history.

Example: Lets say you navigate from one page to another (denoted as >> below). If you then call back() it will take you back to the previous page in the original page flow, not just to the previous page of the chronological page history:

Page A >> Page B >> Page C >> Page B >> routing.back() >> Page A

This is the typical behavior users expect from an actual mobile app. Of course, you can still implement whatever page flow and history support you need. But the new feature is a huge help when creating a working page flow in your mobile apps. For a real life example that already includes the new back navigation feature, have a look at the qx.Mobile Showcase source code.

Console in Mobile Apps

Debugging on mobile devices may be difficult, because you don’t have access to a regular JavaScript console. Therefore, one often had to use remote debugging tools like WeInRe or Adobe Shadow.

Now the mobile framework contains a built-in console. Originally it was meant to provide a console for legacy browsers (you might recall pressing “F7″ in qx.Desktop apps). This built-in, basic console is now also available on mobile devices. For writing messages to it, please use qx.log.Logger.

If you trigger a longtap event on the navigation bar, the qx.log.appender.Console will appear on screen. Check this feature out, at the Mobile Showcase.

Stay tuned for more advancements in developing mobile apps for all kind of devices.

Author: "Christopher Zündorf" Tags: "Development, Mobile"
Comments Send by mail Print  Save  Delicious 
Next page
» You can also retrieve older items : Read
» © All content and copyrights belong to their respective authors.«
» © FeedShow - Online RSS Feeds Reader