ubuntu-touch-coreapps team mailing list archive
-
ubuntu-touch-coreapps team
-
Mailing list archive
-
Message #00247
Re: [Ubuntu-phone] [Core-Apps] Solution for offline image using pure qml
Hi Michael,
Could u please tell me where shall I report the bug ? in "Ubuntu SDK team"
or ... ?
:)
2013/3/29 Michael Hall <mhall119@xxxxxxxxxx>
> It should still be filed as a bug in Launchpad, since that's how we
> track things that need to be done, even feature requests.
>
> Michael Hall
> mhall119@xxxxxxxxxx
>
> On 03/28/2013 11:24 AM, Joey Chan wrote:
> > This isn't a bug of SDK, but a necessary plugin for development. Some
> > functions should be implemented with C++, and these functions can be
> > included in "Ubuntu.Component 0.x",
> >
> > for example:
> > import Ubuntu.Component.native 0.1 as UCore // all common
> > functions implemented in this plugin, should done by Canonical
> >
> > function saveImage ()
> > {
> > UCore.saveImage(url) ;
> > }
> >
> > function loadImage ()
> > {
> > return UCore.loadImage(url) ;
> > }
> >
> >
> >
> > 2013/3/28 Matthias Gehre <gehre.matthias@xxxxxxxxx
> > <mailto:gehre.matthias@xxxxxxxxx>>
> >
> > I guess we should fill a bug against ubuntu-sdk then?
> >
> >
> > 2013/3/28 Roman Shchekin <mrqtros@xxxxxxxxx <mailto:
> mrqtros@xxxxxxxxx>>
> >
> > I agree with Joey - this functionality should be implemented by
> > Canonical, because not only RSS Reader team need it.
> >
> >
> > 2013/3/28 Joey Chan <qqworini@xxxxxxxxx <mailto:
> qqworini@xxxxxxxxx>>
> >
> > Hi Matthias,
> >
> > Agree with your solution, and other solutions include
> > "homepath" or QnetworkManager are welcome. All these mean
> > that we can't store any images without C++, so I suggest
> > developers from Canonical could create some qml plugins for
> > functions which can't be implemented with pure qml.
> >
> > :)
> >
> >
> > 2013/3/28 Matthias Gehre <mgehre@xxxxxxxxxxxxxxxxxx
> > <mailto:mgehre@xxxxxxxxxxxxxxxxxx>>
> >
> > I "solved" this problem in whosthere by
> > subclassingQQuickImageProvider, but that needs some C++
> > code to be written.
> > See https://github.com/mgehre/whosthere/blob/master
> > imageprovider.h/cpp
> >
> >
> > 2013/3/28 Joey Chan <qqworini@xxxxxxxxx
> > <mailto:qqworini@xxxxxxxxx>>
> >
> > yep, a common plugin is necessary
> >
> >
> > 2013/3/28 <mrqtros@xxxxxxxxx <mailto:
> mrqtros@xxxxxxxxx>>
> >
> > Other teams need this ability too, so it is must
> > be included in sdk and used this way:
> >
> > // qml code
> >
> > Ubuntu.saveImageToLocalStorage(...)
> >
> > ...
> >
> > Ubuntu.loadImageFromLocalStorage(...)
> >
> >
> > Or something like that =)))
> >
> >
> > 27.03.13 13:39 Joey Chan написал(а):
> >
> > Hi Ladies and Gentlemen,
> >
> > I'm here to discuss about the "offline image
> > using pure qml", which means, If images are from
> > remote server, we developers need to download
> > them to local file system so that apps can load
> > images without Internet connections.
> >
> > solution 1 ( failed )
> >
> > this solution use xmlhttprequest to download the
> > whole image data, convert it to base64 string
> > then show it to "Image"
> >
> > source code:
> > var xhr = new XMLHttpRequest();
> > xhr.overrideMimeType('text/plain;
> > charset=x-user-defined'); // doesn't work in
> > qml but html
> > xhr.open("GET", "http://www.xxx.com/xxx.png");
> > xhr.onreadystatechange = function() {
> > if (xhr.readyState === 4) {
> > var blob = xhr.responseText ;
> > var blobarray = new Array ;
> > for (var i = 0, len =
> > blob.length; i < len; ++i) {
> >
> > blobarray.push(blob.charCodeAt(i) & 0xff );
> > }
> > // then use Image.source =
> > "data:image/png;base64," + blobarray.join("")
> > to show the image
> >
> > }
> > };
> > xhr.send();
> >
> > This snippet shows an old way to download binary
> > data using xmlhttprequest level 1, but not work
> > in qml ( overrideMimeType not supported ) .
> > Also, xmlhttprequest level 2 (support binary
> > data) not supported by qml 2.0
> >
> > Conclusion: it's better update the
> > xmlhttprequest to level 2
> >
> >
> > solution 2: (success but not perfect)
> >
> > This solution use qml2 canvas to load a remote
> > url then save it to local file system.
> >
> > source code:
> > property string url: "http://www.xxx.com/xxx.png
> "
> > Canvas {
> > id: mycanvas
> > y: 350
> > width: 200
> > height: 200
> >
> > Component.onCompleted:
> > {
> > mycanvas.loadImage(url);
> > }
> >
> > onImageLoaded:
> > {
> > console.log("onImageLoaded");
> > requestPaint();
> > }
> >
> > onPaint: {
> > var ctx = mycanvas.getContext("2d");
> >
> >
> > ctx.drawImage(url, 0, 0);
> > ctx.restore();
> >
> >
> > }
> > }
> >
> > MouseArea
> > {
> > anchors.fill: parent
> > onClicked:
> mycanvas.save("./aaa.png");
> > }
> >
> >
> > This solution can download every image, but, the
> > final function "save" can't support "homepath"
> > and "temppath", which means, we don't know where
> > we can put the downloaded images such as
> > "home"/.cache/coreapp/images/
> >
> > Conclusion: homepath is needed
> >
> >
> >
> > Feel free to prove I am wrong :P because I am
> > confusing about the offline mode of the RSS
> > reader Core App
> >
> > Have a nice day :)
> >
> >
> >
> > --
> > Mailing list:
> > https://launchpad.net/~ubuntu-touch-coreapps
> > <https://launchpad.net/%7Eubuntu-touch-coreapps>
> > Post to :
> > ubuntu-touch-coreapps@xxxxxxxxxxxxxxxxxxx
> > <mailto:ubuntu-touch-coreapps@xxxxxxxxxxxxxxxxxxx>
> > Unsubscribe :
> > https://launchpad.net/~ubuntu-touch-coreapps
> > <https://launchpad.net/%7Eubuntu-touch-coreapps>
> > More help : https://help.launchpad.net/ListHelp
> >
> >
> >
> >
> >
> > --
> > Mailing list: https://launchpad.net/~ubuntu-touch-coreapps
> > <https://launchpad.net/%7Eubuntu-touch-coreapps>
> > Post to : ubuntu-touch-coreapps@xxxxxxxxxxxxxxxxxxx
> > <mailto:ubuntu-touch-coreapps@xxxxxxxxxxxxxxxxxxx>
> > Unsubscribe : https://launchpad.net/~ubuntu-touch-coreapps
> > <https://launchpad.net/%7Eubuntu-touch-coreapps>
> > More help : https://help.launchpad.net/ListHelp
> >
> >
> >
> > --
> > Mailing list: https://launchpad.net/~ubuntu-touch-coreapps
> > <https://launchpad.net/%7Eubuntu-touch-coreapps>
> > Post to : ubuntu-touch-coreapps@xxxxxxxxxxxxxxxxxxx
> > <mailto:ubuntu-touch-coreapps@xxxxxxxxxxxxxxxxxxx>
> > Unsubscribe : https://launchpad.net/~ubuntu-touch-coreapps
> > <https://launchpad.net/%7Eubuntu-touch-coreapps>
> > More help : https://help.launchpad.net/ListHelp
> >
> >
> >
> >
>
> --
> Mailing list: https://launchpad.net/~ubuntu-touch-coreapps
> Post to : ubuntu-touch-coreapps@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~ubuntu-touch-coreapps
> More help : https://help.launchpad.net/ListHelp
>
References