<div dir="ltr">On Mon, Aug 19, 2013 at 2:05 AM, David Edmundson <span dir="ltr"><<a href="mailto:david@davidedmundson.co.uk" target="_blank">david@davidedmundson.co.uk</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>After discussions with a few people, I decided for an experiment to port PlasmaComponents Button to use QtQuickControls [1] internally but use the styles API [2] to make it look like the original PlasmaComponents button.</div>


<div><br></div><div>This is pushed in the plasma-frameworks branch davidedmundson/controls</div><div><br></div><div>Advantages:</div><div> - considerably simpler code. We don't have to do our own mousearea and key handling. It's all done for us. I reduced Button.qml to about 1/2 the original size</div>


<div> - consistent API with the configuration controls and other QML users</div><div> - more code sharing is better</div><div> - we get some features for "free". For buttons we get action support, exclusiveGroups, tooltips</div>


<div><br></div><div>Downsides:</div><div> - Source breakage</div><div>Although the API is very very similar, there are some differences.</div><div>For just button; icon -> iconName/iconSource, no font property</div><div>


We /could/ bodge it with alias's. For other components this may be more difficult</div><div> - More work.<br></div><div>As a rough guide I ported Button in about 1 hour. It's not a perfect 1-1 port, but it's 90% there.</div>


<div><br></div><div>The approach I took was to make the PlasmaComponents.Button subclass the QtQuickControls.Button and then set a style on it rather than make a full plasma style for all QtQuickControls. This should allow us to make plasma extensions to the API as well as keep most source compatibility as well as keep the workload realistic.</div>


<div><br></div><div>Effectively the code for the new Button.qml is simply:</div><div><br></div><div>QtControls.Button</div><div>{</div><div>    style: QtControlsStyle.ButtonStyle {</div><div>        background: PlasmaCore.SvgItem {</div>


<div>                imagePath: "widgets/button"</div><div>        }</div><div>    }</div><div>}</div><div><br></div><div>but with a few more animations and hints to match the original.</div><div><br></div><div>


Do we think it is worth porting all the items which can use controls to do so?<br></div><div><br></div><div>I think given the current API changes it makes sense to use this opportunity to make this change. I believe we will get better more stable code for it. I can do most the changes.</div>


<div><br></div><div>Thoughts?</div><div><br></div><div>David Edmundson</div><div><br></div><div>[1] <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtquickcontrols/qmlmodule-qtquick-controls1-qtquick-controls-1-0.html" target="_blank">http://doc-snapshot.qt-project.org/qt5-stable/qtquickcontrols/qmlmodule-qtquick-controls1-qtquick-controls-1-0.html</a></div>


<div>[2] <a href="http://doc-snapshot.qt-project.org/qt5-stable/qtquickcontrolsstyles/qmlmodule-qtquick-controls-styles1-qtquick-controls-styles-1-0.html" target="_blank">http://doc-snapshot.qt-project.org/qt5-stable/qtquickcontrolsstyles/qmlmodule-qtquick-controls-styles1-qtquick-controls-styles-1-0.html</a></div>


</div>
<br>_______________________________________________<br>
Plasma-devel mailing list<br>
<a href="mailto:Plasma-devel@kde.org">Plasma-devel@kde.org</a><br>
<a href="https://mail.kde.org/mailman/listinfo/plasma-devel" target="_blank">https://mail.kde.org/mailman/listinfo/plasma-devel</a><br>
<br></blockquote></div><br></div><div class="gmail_extra">Hi David!</div><div class="gmail_extra">I'm so happy to see you working on this! Actually to be honest, I think it's not really something up to discussion, Qt Controls is something we want Plasma to be part of. The question is if it should be the official way to write applets and stuff, but I'd rather look into it the other way around.</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">For applications, we want to be able to write them in Qt Controls. For instance, I'd really like to see Muon Discover working properly on PA, or at least sharing most of the code base with the desktop version and Qt Controls is the (only?) way to go for this. Furthermore, we'll want Ubuntu apps to integrate with us. We want to support Qt Controls.</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">I'd say that whether it's the official API for writing plasmoids, will be seen in the future, but it already is the official API for writing applications in Qt Quick that can target more than 1 operating system or even 1 Look&Feel.</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">Cheers!</div><div class="gmail_extra">Aleix</div><div class="gmail_extra"><br></div></div>