Definitely! I remember reading the blog post about the components for desktop, but completely forgot about it...<br><br><div class="gmail_quote">On Thu, Feb 2, 2012 at 15:19, BogDan <span dir="ltr"><<a href="mailto:bog_dan_ro@yahoo.com">bog_dan_ro@yahoo.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
Hi,<br>
<br>
    Excuse me if I'm wrong, but why we don't do the same technique as Nokia did with qml components for desktop ? They are using the application current QStyle plugin to paint all qml controls ! Is there any reason not to do the same thing ?<br>

<br>
Cheers,<br>
<span class="HOEnZb"><font color="#888888">BogDan.<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
><br>
><br>
>There is the possibility of encapsulating widgets in QGraphicItem (as QGraphicWidget), thus allowing them to be used in QML.<br>
><br>
>I don't know how these QGraphicWidget's handle QStyle, though....<br>
><br>
>- Chris -<br>
><br>
><br>
>On Thu, Feb 2, 2012 at 14:28, BogDan <<a href="mailto:bog_dan_ro@yahoo.com">bog_dan_ro@yahoo.com</a>> wrote:<br>
><br>
><br>
>><br>
>>Hi,<br>
>><br>
>><br>
>>Yes ! BorderImage seems to be exactly the same thing with NinePatch, thanks for the tip !<br>
>><br>
>><br>
>>   Anyway, as I said before I'd like to have a QStyle plugin which paints the classic widget also the qml ones, because it seems classic widgets are sill use by a lot of people !<br>
>><br>
>><br>
>>Cheers,<br>
>><br>
>>BogDan.<br>
>><br>
>><br>
>><br>
>>----- Original Message -----<br>
>>> From: Kate Alhola <<a href="mailto:kate.alhola@gmail.com">kate.alhola@gmail.com</a>><br>
>><br>
>>> Sent: Wednesday, February 1, 2012 10:59 PM<br>
>>> Subject: Re: Integrating Qt Quick components in Ministro<br>
>>><br>
>><br>
>>> Some quick look comments:<br>
>>><br>
>>> On Wed, Feb 1, 2012 at 9:20 PM, BogDan <<a href="mailto:bog_dan_ro@yahoo.com">bog_dan_ro@yahoo.com</a>> wrote:<br>
>>>>  Hello everyone,<br>
>>>><br>
>>>>    I have good news on this topic, I manage to check (a little bit)<br>
>>> Android's source code and to extract, the exact, android's look and<br>
>>> style informations for a few widgets (buttonStyle, editTextStyle,<br>
>>> radioButtonStyle, checkboxStyle, etc.) and store them into a .json file (check<br>
>>> the attachment). Because qt 4.x doesn't come with json support, IMHO we have<br>
>>> two options:<br>
>>>>    1 - to use this [1] qt json implementation.<br>
>>>>    2 - or to backport Qt 5.x json implementation (my favorite option,<br>
>>> because it seems more complex and complete than the first one).<br>
>>>><br>
>>>>    I need more time to finish the extraction class (which will be part of<br>
>>> the next Ministro release), so, if someone wants to step in and begin the Qt<br>
>>> implementation it will be very appreciated !<br>
>>>><br>
>>>>    To understand how android paints the widgets you have to check a simple<br>
>>> widget how it's painted. So let's check Button class [2], which extends<br>
>>> TextView class [3] which extends the View class [4].<br>
>>>><br>
>>>>  How it works:<br>
>>>>    - Button class only pass to its super class (TextView)  the style<br>
>>> attribute (com.android.internal.R.attr.buttonStyle)<br>
>>>>    - TextView class pass the same information to its super class (View) then<br>
>>> in its constructor (check "public TextView(Context context, AttributeSet<br>
>>> attrs, int defStyle)" ) extracts text informations<br>
>>> (e.g.TextAppearance_textColor,TextAppearance_textSize, TextAppearance_typeface,<br>
>>> etc.) which are used to draw the text (check onDraw (...)).<br>
>>>>    - View class in its constructor (check "public View(Context context,<br>
>>> AttributeSet attrs, int defStyle)") extracts a few informations e.g.<br>
>>> View_background, View_paddingLeft, etc. which are used to paint the basic parts<br>
>>> of the widget (e.g. the background).<br>
>>>><br>
>>>>    If you check the json file, you'll see that there are more than one<br>
>>> .png files used to paint the background, one for every view state (enabled,<br>
>>> disabled, pressed, etc.). Android split every .png file into nine pieces (it<br>
>>> uses nine patch technique [5], [6]) which are used to seamlessly resize the<br>
>>> widget. AFAIK there is no support for such a thing into Qt, so IMHO this is the<br>
>>> first thing which must be implemented.<br>
>>>><br>
>>><br>
>>> The nime patch looks exactly same than Qt BorderImage (<br>
>>> <a href="http://developer.qt.nokia.com/doc/qt-4.8/qml-borderimage.html" target="_blank">http://developer.qt.nokia.com/doc/qt-4.8/qml-borderimage.html</a> )<br>
>>><br>
>>><br>
>>> Also, system that uses different images for different states is<br>
>>> exactly same that is used on components<br>
>>> meegotouch-button-background-pressed.png<br>
>>> meegotouch-button-background.png<br>
>>> meegotouch-button-background-selected.png<br>
>>> ....<br>
>>> and this for all combinations, inverted, disabled ...<br>
>>><br>
>>> The problem then comes more than could we do some mapping of Android<br>
>>> and MeeGotouch states like<br>
>>> meegotouch-button-background -> buttonStyle_View-background_Enabled.png<br>
>>><br>
>>> MeeGocomponents uses mthemedaemon plugin that fetch images, so, if we<br>
>>> could make just mapping names<br>
>>> and json query, we could in theory get theme engine.<br>
>>><br>
>>> Symbian components uses svg images , meegocomponents borderimages .<br>
>>> There is very little<br>
>>> difference in component API's. Least what I have used, porting on apps<br>
>>> were mostly changing import statements<br>
>>> and change of some colors.<br>
>>><br>
>>> Kate<br>
>>><br>
>>>>  This weekend I hope to have enough time to create a wiki page which will<br>
>>> describe the content of the json file.<br>
>>>><br>
>>>>  Cheers,<br>
>>>>  BogDan.<br>
>>>><br>
>>>><br>
>>>>  [1] <a href="https://github.com/ereilin/qt-json" target="_blank">https://github.com/ereilin/qt-json</a><br>
>>>>  [2]<br>
>>> <a href="http://www.java2s.com/Open-Source/Android/android-core/platform-frameworks-base/android/widget/Button.java.htm" target="_blank">http://www.java2s.com/Open-Source/Android/android-core/platform-frameworks-base/android/widget/Button.java.htm</a><br>

>>>>  [3]<br>
>>> <a href="http://www.java2s.com/Open-Source/Android/android-core/platform-frameworks-base/android/widget/TextView.java.htm" target="_blank">http://www.java2s.com/Open-Source/Android/android-core/platform-frameworks-base/android/widget/TextView.java.htm</a><br>

>>>>  [4]<br>
>>> <a href="http://www.java2s.com/Open-Source/Android/android-core/platform-frameworks-base/android/view/View.java.htm" target="_blank">http://www.java2s.com/Open-Source/Android/android-core/platform-frameworks-base/android/view/View.java.htm</a><br>

>>>>  [5] <a href="http://developer.android.com/reference/android/graphics/NinePatch.html" target="_blank">http://developer.android.com/reference/android/graphics/NinePatch.html</a><br>
>>>><br>
>>>>  [6]<br>
>>> <a href="http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch" target="_blank">http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch</a><br>
>>>><br>
>>>><br>
>>>>><br>
>>>>>  Hi,<br>
>>>>><br>
>>>>>     Yes, sadly we have to get our hands  very dirty.<br>
>>>>>     First step is to identify all Qt components then we have to find<br>
>>>>>  Android's corresponding components, then we must extract the style<br>
>>> &<br>
>>>>>  look information to a central location (IMHO Ministro should do this<br>
>>> job), then<br>
>>>>>  any application which starts will peek this infos from that location<br>
>>> and use<br>
>>>>>  them to paint all controls.<br>
>>>>>     Second step is to check how Android paints the controls, here the<br>
>>> things will<br>
>>>>>  become dirty, we have to check<br>
>>>>>  "frameworks/base/core/java/android/widget/TextView.java" from<br>
>>> Android<br>
>>>>>  source code and it seems we have to use a lot of private data, I hope<br>
>>> the<br>
>>>>>  Android versions are not so different.<br>
>>>>>    Third step is to change Ministro in order to extract all the infos we<br>
>>> need to<br>
>>>>>  paint our controls.<br>
>>>>>     Fourth step is to create a QStyle plugin (which will be used by QML<br>
>>> as well)<br>
>>>>>  which loads the data extracted by Ministro and use it to paint the<br>
>>> controls. If<br>
>>>>>  the extract procedure is very fast (less than 10ms), I doubt it will be<br>
>>> that<br>
>>>>>  fast :),  we can skip the third step and extract the data directly in <br>
>>> QStyle.<br>
>>>>>     Fifth step, if everything works, we must get drunk !<br>
>>>>><br>
>>>>><br>
>>>>>  Cheers,<br>
>>>>>  BogDan.<br>
>>>>><br>
>>>>><br>
>>>>>><br>
>>>>>><br>
>>>>>>  While I don't agree on "almost all applications have the<br>
>>> same<br>
>>>>>  look" (as far as I can see, the only fully common UI element is<br>
>>> the<br>
>>>>>  menu/toolbar combo), I respect your choice.<br>
>>>>>><br>
>>>>>>  The first step would be to define what is the "Android<br>
>>> style". Is<br>
>>>>>  there some Google guidelines you plan to follow?<br>
>>>>>><br>
>>>>>>  Regards<br>
>>>>>>  - Chris -<br>
>>>>>><br>
>>>>>><br>
>>>>>>  On Tue, Jan 3, 2012 at 17:45, BogDan <<a href="mailto:bog_dan_ro@yahoo.com">bog_dan_ro@yahoo.com</a>><br>
>>> wrote:<br>
>>>>>><br>
>>>>>>  Hi,<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>    I think none of your examples are good to follow :) The<br>
>>> reason why<br>
>>>>>  meego doesn't use QtStyle to draw the widgets is because meego<br>
>>> doesn't<br>
>>>>>  have a "native" style. Symbian is even worst, open any two<br>
>>>>>  applications on symbian and you'll see that none of them have the<br>
>>> same look<br>
>>>>>  & style :) On Android is a different story, almost all applications<br>
>>> have the<br>
>>>>>  same look & style, so if we want to have a first class citizen<br>
>>> port, all Qt<br>
>>>>>  applications *MUST* look the same as any android application. I'm<br>
>>> choosing<br>
>>>>>  to make QStyle plugin because this way all Qt applications will benefit<br>
>>> from it,<br>
>>>>>  either they are made using old-fashion widgets or QML components.<br>
>>>>>>>  For me a good android style is a top priority, I don't<br>
>>> believe<br>
>>>>>  I'll have enough time to finish it till beta 1 but who knows ...:)<br>
>>> maybe if<br>
>>>>>  other people will join me we can split the work and we can have this<br>
>>> feature in<br>
>>>>>  time for beta1.<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>  Cheers,<br>
>>>>>>>  BogDan.<br>
>>>>>>><br>
>>>>>>><br>
>>>>>>><br>
>>>>>>>><br>
>>>>>>>>  and please note that the Qt quick components (either<br>
>>> symbian or<br>
>>>>>  meego) don't use Qt widget styles. All the components are drawn in<br>
>>> qml so<br>
>>>>>  the componenets would unfortunately not benefit from your work on a<br>
>>> widget<br>
>>>>>  style.<br>
>>>>>>>>>  - Chris -<br>
>>>>>>><br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>>  On Thu, Dec 22, 2011 at 21:53, BogDan<br>
>>> <<a href="mailto:bog_dan_ro@yahoo.com">bog_dan_ro@yahoo.com</a>><br>
>>>>>  wrote:<br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>>><br>
>>>>>>>>>  Hi Chris,<br>
>>>>>>>>><br>
>>>>>>>>>  Please accept my apologize for the slow reply.<br>
>>>>>>>>>  I think before we'll integrate the components into<br>
>>> Ministro,<br>
>>>>>  we must do a few things:<br>
>>>>>>>>>   - the components MUST use Android's style, next<br>
>>> year<br>
>>>>>  I'm planning to create a style plugin for<br>
>>>>>>>>><br>
>>>>>>>>>  widgets which should be used by Qt Quick Components for<br>
>>> Android.<br>
>>>>>>>>>   - wait until Nokia finishes to define the API for Qt<br>
>>> Quick<br>
>>>>>  components [1]. We can't afford to break the API after we release<br>
>>> it :)<br>
>>>>>>>>><br>
>>>>>>>>><br>
>>>>>>>>>  Cheers,<br>
>>>>>>>>>  BogDan.<br>
>>>>>>>>><br>
>>>>>>>>><br>
>>>>>>>>>  [1]<br>
>>> <a href="https://bugreports.qt.nokia.com/browse/QTCOMPONENTS-200" target="_blank">https://bugreports.qt.nokia.com/browse/QTCOMPONENTS-200</a><br>
>>>>>>>>><br>
>>>>>>>>><br>
>>>>>>>>>><br>
>>>>>>>>>>  Hi guys,<br>
>>>>>>>>>><br>
>>>>>>>>>>  What would the steps be to integrate the Qt quick<br>
>>> components<br>
>>>>>  for Android to Ministro as a package?<br>
>>>>>>>>>><br>
>>>>>>>>>>  - Chris -<br>
>>>>>>>>><br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>>><br>
>>>>>>><br>
>>>>>><br>
>>>>>><br>
>>>>>><br>
>>>>>  _______________________________________________<br>
>>>>>  Necessitas-devel mailing list<br>
>>>>>  <a href="mailto:Necessitas-devel@kde.org">Necessitas-devel@kde.org</a><br>
>>>>>  <a href="https://mail.kde.org/mailman/listinfo/necessitas-devel" target="_blank">https://mail.kde.org/mailman/listinfo/necessitas-devel</a><br>
>>>>><br>
>>><br>
>><br>
><br>
><br>
><br>
</div></div></blockquote></div><br>