← Back to team overview

ubuntu-phone team mailing list archive

Re: Running QML functions in parallel thread

 

On Tuesday 16 April 2013 17:46:38 Николай Шатохин wrote:
> So, I must use Repeater in new qml file and loading it by Loader, am I
> right?

Not necessarily... It really would be helpful to know what you are trying to 
achieve in order to give better advice. As a rule of thumb, you should be able 
to write more than 90% of your application without the need to the work 
"function" (game logic excluded). But just for setting up the gui and 
switching between different views you shouldn't need javascript at all.

Repeater, Row, Loader etc are just examples. It really depends on your current 
use case which one is suited for you.

Br,
Michael


> 
> 2013/4/16 Rick Spencer <rick.spencer@xxxxxxxxxxxxx>
> 
> > I suppose you would use a loader for the Repeater. After you make your
> > repeater work for your first level, you can use QtCreator to wrap the
> > Repeater in a loader for you. Then I think for each level you would
> > destroy the whole Repeater and then use the loader to create a new one
> > with the new model for the next level.
> > 
> > At least that is the approach I would take starting out.
> > 
> > HTH
> > 
> > Cheers, Rick
> > 
> > On Tue, Apr 16, 2013 at 7:31 AM, Николай Шатохин <n.shatokhin@xxxxxxxxx>
> > 
> > wrote:
> > > When I create button I assign destroy signal to each. So, when I start
> > 
> > new
> > 
> > > game, I destroying buttons from old game and see old field in this
> > 
> > moment -
> > 
> > > destroing slow too. Is quickly removing possible? Can I destroy
> > > repeater?
> > > 
> > > 
> > > 2013/4/16 Николай Шатохин <n.shatokhin@xxxxxxxxx>
> > > 
> > >> Oh, I didn't know that. I'll try.
> > >> 
> > >> 
> > >> 2013/4/16 Rick Spencer <rick.spencer@xxxxxxxxxxxxx>
> > >> 
> > >>> Hi.
> > >>> 
> > >>> I'm not sure how your code flows overall, but if you are creating all
> > 
> > the
> > 
> > >>> buttons at once, you might consider using a Repeater instead of doing
> > 
> > it all
> > 
> > >>> in javascript.
> > >>> 
> > >>> It looks like you might have some kind of list that fires a
> > 
> > createButton
> > 
> > >>> signal. You could potentially use that list as a model for a Repeater
> > 
> > and
> > 
> > >>> build your buttons in the delegate of the Repeater.
> > >>> 
> > >>> Cheers, Rick
> > >>> 
> > >>> 
> > >>> 
> > >>> On Tue, Apr 16, 2013 at 5:11 AM, Николай Шатохин <
> > 
> > n.shatokhin@xxxxxxxxx>
> > 
> > >>> wrote:
> > >>>> This is my code that creates buttons field:
> > >>>> 
> > >>>> 
> > >>>> onCreateField:
> > >>>> {
> > >>>> 
> > >>>>     for(var i=0;i<fieldWidth;i++)
> > >>>>     {
> > >>>>     
> > >>>>         for(var j=0;j<fieldHeight;j++)
> > >>>>         {
> > >>>>         
> > >>>>             createButton(i, j);
> > >>>>         
> > >>>>         }
> > >>>>     
> > >>>>     }
> > >>>> 
> > >>>> }
> > >>>> 
> > >>>> function createButton(x, y)
> > >>>> {
> > >>>> 
> > >>>>     __buttonX = x;
> > >>>>     __buttonY = y;
> > >>>>     
> > >>>>     __component = Qt.createComponent("GameButton.qml");
> > >>>>     
> > >>>>     if(__component != null)
> > >>>>     
> > >>>>         continueButtonCreation();
> > >>>>     
> > >>>>     else
> > >>>>     
> > >>>>         __component.ready.connect(continueButtonCreation);
> > >>>> 
> > >>>> }
> > >>>> 
> > >>>> function continueButtonCreation()
> > >>>> {
> > >>>> 
> > >>>>     var button = __component.createObject(field, {"row": __buttonY,
> > >>>> 
> > >>>> "column": __buttonX});
> > >>>> 
> > >>>>      if (button == null) {
> > >>>>      
> > >>>>          // Error Handling
> > >>>>          console.log("Error creating object");
> > >>>>          
> > >>>>          return;
> > >>>>      
> > >>>>      }
> > >>>>      
> > >>>>      updateValveState.connect(button.stateUpdated);
> > >>>>      button.buttonClicked.connect(buttonClicked);
> > >>>>      
> > >>>>      field.clearField.connect(button.release);
> > >>>> 
> > >>>> }
> > >>>> 
> > >>>> 
> > >>>> fieldWidth = fieldHeight = 16;
> > >>>> 
> > >>>> 
> > >>>> 2013/4/16 Alex Tyler <alex.tyler@xxxxxxxxxx>
> > >>>> 
> > >>>>> Can we see some code? The only time Images hang for me in QML is
> > >>>>> when
> > >>>>> it's trying to load them synchronously. Try setting asynchronous to
> > 
> > true.
> > 
> > >>>>> Cheers,
> > >>>>> Alex
> > >>>>> 
> > >>>>> On Tue, Apr 16, 2013 at 10:20 AM, <mrqtros@xxxxxxxxx> wrote:
> > >>>>>> I thought Nick creates 1024 (16x16) buttons, lol =) And even did
> > >>>>>> not
> > >>>>>> thought - for what :D
> > >>>>>> 
> > >>>>>> Of course code is extremely bad, if buttons with size 16x16 pixels
> > >>>>>> creating slowly.
> > >>>>>> 
> > >>>>>> 
> > >>>>>> 16.04.13 12:09 Michael Zanetti написал(а):
> > >>>>>> 
> > >>>>>> On Tuesday 16 April 2013 01:01:28 Николай Шатохин wrote:
> > >>>>>> > Hello.
> > >>>>>> > 
> > >>>>>> > In my code I'm creating 16x16 buttons in cycle and this take few
> > >>>>>> > seconds.
> > >>>>>> > While function that creating buttons runs, app freezes. I want to
> > >>>>>> > show
> > >>>>>> > loading animation while this function runs. So, how to run this
> > >>>>>> > function in
> > >>>>>> > parallel thread to avoid freezing?
> > >>>>>> > 
> > >>>>>> > Best regards,
> > >>>>>> > Nick
> > >>>>>> 
> > >>>>>> Creating 16x16 buttons shouldn take a few seconds. Can you paste
> > >>>>>> the
> > >>>>>> code
> > >>>>>> (also the button itself). To me it seems the issue is somewhere
> > 
> > else,
> > 
> > >>>>>> e.g. in
> > >>>>>> the way you create the buttons or the buttens themselves are very
> > >>>>>> slow.
> > >>>>>> 
> > >>>>>> Br,
> > >>>>>> Michael
> > >>>>>> 
> > >>>>>> --
> > >>>>>> Mailing list: https://launchpad.net/~ubuntu-phone
> > >>>>>> Post to : ubuntu-phone@xxxxxxxxxxxxxxxxxxx
> > >>>>>> Unsubscribe : https://launchpad.net/~ubuntu-phone
> > >>>>>> More help : https://launchpad.net/~ubuntu-phone
> > >>>>>> 
> > >>>>>> 
> > >>>>>> 
> > >>>>>> --
> > >>>>>> Mailing list: https://launchpad.net/~ubuntu-phone
> > >>>>>> Post to     : ubuntu-phone@xxxxxxxxxxxxxxxxxxx
> > >>>>>> Unsubscribe : https://launchpad.net/~ubuntu-phone
> > >>>>>> More help   : https://help.launchpad.net/ListHelp
> > >>>> 
> > >>>> --
> > >>>> Mailing list: https://launchpad.net/~ubuntu-phone
> > >>>> Post to     : ubuntu-phone@xxxxxxxxxxxxxxxxxxx
> > >>>> Unsubscribe : https://launchpad.net/~ubuntu-phone
> > >>>> More help   : https://help.launchpad.net/ListHelp
> > >>> 
> > >>> --
> > >>> Mailing list: https://launchpad.net/~ubuntu-phone
> > >>> Post to     : ubuntu-phone@xxxxxxxxxxxxxxxxxxx
> > >>> Unsubscribe : https://launchpad.net/~ubuntu-phone
> > >>> More help   : https://help.launchpad.net/ListHelp
> > 
> > --
> > Mailing list: https://launchpad.net/~ubuntu-phone
> > Post to     : ubuntu-phone@xxxxxxxxxxxxxxxxxxx
> > Unsubscribe : https://launchpad.net/~ubuntu-phone
> > More help   : https://help.launchpad.net/ListHelp


Follow ups

References