Hei Vieras. Muista myös tilata maksullinen palvelumme

Kirjoittaja Aihe: Aloittelijoiden ongelmat ja kysymykset  (Luettu 9292 kertaa)

Poissa tuokar

  • Tulokas
  • *
  • Viestejä: 40
    • Profiili
Aloittelijoiden ongelmat ja kysymykset
« : 05.02.14 - klo:14:18 »
Tässä langassa aloittelevat Sailfish-kehittäjät voivat kysellä ja kertoa ohjelmakehityksessä vastaan tulevista ongelmista. Toivottavasti täältä löytyisi aina joku kokeneempi ja asiantuntevampi auttamaan.

Aloitin nyt itsekin ensimmäisen ohjelman kirjoittamisen ja heti tuli ongelmia vastaan, käytössä Windows 7 -käyttöjärjestelmä. Eilen, kun yritin ajaa ohjelmaa emulaattorilla, tuli aina varoitus "File `Makefile' has modification time 44 s in the future". Tänään se varoittaa "Clock skew detected. Your build may be incomplete." Näistä johtuen tekemäni muutokset eivät tule voimaan kuin vasta koko ohjelman uudelleenkäynnistyksen jälkeen. Emulaattorin kello näyttäisi tosiaan olevan minuutin verran jäljessä. Yritin etsiä tähän ratkaisua, mutta aikavyöhykkeen vaihdot yms., joita neuvottiin tekemään, eivät ole auttaneet. Onkos muilla ollut tällaista ongelmaa ja miten on ratkennut?

Poissa Acce

  • Tulokas
  • *
  • Viestejä: 8
    • Profiili
Vs: Aloittelijoiden ongelmat ja kysymykset
« Vastaus #1 : 07.02.14 - klo:21:27 »
Aloitin nyt itsekin ensimmäisen ohjelman kirjoittamisen ja heti tuli ongelmia vastaan, käytössä Windows 7 -käyttöjärjestelmä. Eilen, kun yritin ajaa ohjelmaa emulaattorilla, tuli aina varoitus "File `Makefile' has modification time 44 s in the future". Tänään se varoittaa "Clock skew detected. Your build may be incomplete." Näistä johtuen tekemäni muutokset eivät tule voimaan kuin vasta koko ohjelman uudelleenkäynnistyksen jälkeen. Emulaattorin kello näyttäisi tosiaan olevan minuutin verran jäljessä. Yritin etsiä tähän ratkaisua, mutta aikavyöhykkeen vaihdot yms., joita neuvottiin tekemään, eivät ole auttaneet. Onkos muilla ollut tällaista ongelmaa ja miten on ratkennut?
Mullakin valitti joskus tota, mutta en kyllä havainnut että muutokset ei ois tulleet voimaan. voit koittaa kirjautua MerSDK:hon roottina ja asettaa ajan manuaalisesti
Koodia: [Valitse]
date +%T -s "10:13:13" tyyliin samaksi kuin järjestelmän aika. Josko tuo auttaisi (Huom. normaalisti ei kannata ruveta manuaalisesti kelloa tuolla komennolla asettamaan, voi mennä taustaprosessit tms. sekaisin. Tässä kuitenkin virtuaalikone, joten vaikka jotain sattuisi niin ne on helppo korjata)

JollaSuomi Foorumi

Vs: Aloittelijoiden ongelmat ja kysymykset
« Vastaus #1 : 07.02.14 - klo:21:27 »

Poissa tuokar

  • Tulokas
  • *
  • Viestejä: 40
    • Profiili
Vs: Aloittelijoiden ongelmat ja kysymykset
« Vastaus #2 : 12.02.14 - klo:02:59 »
Enpä ehtiny tuota testailemaan, ku vaihdoin käyttiksen jo Linuxiin. Kyllä ny on toiminu komeesti ilman ongelmia (ainaki tähän asti).

Koodaamisessa taas on tullu paljon pulmia vastaan, aloittelija kun olen... Onneksi lähes kaikkeen on löytyny ratkaisu, netistä ja Jollan esimerkkikoodeista. Yhden pulman kanssa kuitenkin painiskelen, johon ei ratkaisua tunnu löytyvän. Nimittäin TextFieldin EnterKey, miten sen saisi aktivoitua vasta, kun syötetty arvo on validi? Esimerkkikoodi seuraavassa, ongelma punaisella.

TextField {
                id: numInput
                width: parent.width
                inputMethodHints: Qt.ImhFormattedNumbersOnly
                label: "Enter a number"
                placeholderText: label
                validator: DoubleValidator { bottom: 1; top: 100; decimals: 1; }
                EnterKey.enabled: validator
                EnterKey.onClicked: parent.focus = true
            }

Poissa Junnu

  • Jäsen
  • **
  • Viestejä: 78
    • Profiili
Vs: Aloittelijoiden ongelmat ja kysymykset
« Vastaus #3 : 12.02.14 - klo:07:09 »
Hei, kiva nähdä etten ole ainut aloiteleva säätäjä :)

Toimisko tämmöinen:

Koodia: [Valitse]
EnterKey.enabled: text.length > 0
Tai sitten, jotain tämmöistä voisi kans koittaa. Tämä menee jo ihan arvalla ja voi olla ettei toimi alkuunkaan:

Koodia: [Valitse]
onTextChanged: {
           if (parseFloat(text) < 100 && parseFloat(text) > 0) numInput.EnterKey.enabled=true
            else numInput.EnterKey.enabled=false
        }
« Viimeksi muokattu: 12.02.14 - klo:08:55 kirjoittanut Junnu »

Poissa tuokar

  • Tulokas
  • *
  • Viestejä: 40
    • Profiili
Vs: Aloittelijoiden ongelmat ja kysymykset
« Vastaus #4 : 12.02.14 - klo:14:45 »
Kyllähän tuo jälkimmäinenki toimi hienosti, kiitosta vaan!! :D

Poissa tuokar

  • Tulokas
  • *
  • Viestejä: 40
    • Profiili
Vs: Aloittelijoiden ongelmat ja kysymykset
« Vastaus #5 : 14.02.14 - klo:08:17 »
Uus pulma... Mikähän ny mättää ku kuvan lisääminen ei onnistu? Polkua kirjoittaessa ohjelma ehdottaa tiettyä kuvaa tietystä kansiosta, niin kaiken järjen mukaan pitäis kyl näkyä...

Koodi on tähän tyyliin:
Koodia: [Valitse]
Image {
    source: "../../../pic.png"
    }

Poissa Junnu

  • Jäsen
  • **
  • Viestejä: 78
    • Profiili
Vs: Aloittelijoiden ongelmat ja kysymykset
« Vastaus #6 : 20.02.14 - klo:12:49 »
Mä oon tehnyt tuon niin niiden muutaman kerran osalta kun on kuvaa tarvinut lisätä että olen kuvan heittänyt samaan kansioon missä QML-file majailee. Väärinhän tuo on, mutta toimii. Pitääpäs tutkia tarkemmin miten tuo tehdään oikeammin kun seuraavan kerran tulee tilanne.

Onkos jollain käsitystä mistä saisi QML:ssä kaiveltua puhelimen kieliasetuksen käyttöön?

Edit: Vastaan itse itselleni: Qt.locale().name.substring(0,2)   8)
« Viimeksi muokattu: 20.02.14 - klo:14:11 kirjoittanut Junnu »

Poissa tuokar

  • Tulokas
  • *
  • Viestejä: 40
    • Profiili
Vs: Aloittelijoiden ongelmat ja kysymykset
« Vastaus #7 : 03.03.14 - klo:15:03 »
Jees, kuva tuli tosiaan tuolla tavalla näkyviin, mutta miten tuo nyt sitten tehdään oikeammin? ;D Vai toimiiko se noin myös julkaistussa ohjelmassa?

Poissa Junnu

  • Jäsen
  • **
  • Viestejä: 78
    • Profiili
Vs: Aloittelijoiden ongelmat ja kysymykset
« Vastaus #8 : 04.03.14 - klo:22:57 »
Tuo kuvan lisäys onnistuu myös niin että laittaa poluksi esim ../images/kuva.png
 se kuva vaan pitää muistaa lisätä osaksi projektia. Hiiren oikeaa siinä puunäkymässä ja "Add existing files..".
Itse laitoin nyt tarvittavat kuvat qml/images kansioon ja kyllä se kaubbaan kelpasi.

Poissa Junnu

  • Jäsen
  • **
  • Viestejä: 78
    • Profiili
Vs: Aloittelijoiden ongelmat ja kysymykset
« Vastaus #9 : 30.03.14 - klo:10:36 »
Olisko jollain viisaammalla vinkkiä miksi Page.onStatusChanged ei toimi kuten olettaa saattaisi...

Eli perusajatuksena vaikka näin:

Koodia: [Valitse]
Page {
   onStausChanged: console.log("Status " + status);
}

Niin tuo triggeröityy kyllä muissa tilanteissa paitsi silloin kun kyseisen ohjelman pienentää ja/tai klikkaa ohjelman takaisin isoksi sieltä coverista. Enkä oikeen muutakaan "actionia" saa tuossa tilanteessa tapahtumaan. Ideoita?

Poissa Penguin

  • Täysjäsen
  • ***
  • Viestejä: 164
    • Profiili
Vs: Aloittelijoiden ongelmat ja kysymykset
« Vastaus #10 : 31.03.14 - klo:20:42 »
Page ei saa signaalia mistään onko sovellus aktiivinen vai taustalla. ApplicationWindow sen sijaan saa. Katso esimerkkiä esim. Radio Switcherin koodista miten onApplicationActiveChanged toimii.

Lyhyesti esimerkkikoodina:
Koodia: [Valitse]
ApplicationWindow {
    id: myApp
    onApplicationActiveChanged: {
        console.log("App Window Active: ", myApp.applicationActive);
   }
}

Toki tietty muuallakin sovelluksessa on käytettävissä edellisen esimerkin mukainen property myApp.applicationActive, jonka boolean arvo kertoo onko sovellus aktiivinen vai ei.

PageStatus on tarkoitettu käytettäväksi niihin tilanteisiin, kun pitää tunnistaa siirtyminen sivujen välillä, yleensä page stack'ssä ja jokin toiminto pitää lopettaa siihen kun sivun tila muuttuu tai se voidaan aloittaa vasta kun sivu on tietyssä tilassa, yleensä aktiivisena. PageStatus tuntee arvot:
  • Inactive
  • Activating
  • Active
  • Deactivating
« Viimeksi muokattu: 31.03.14 - klo:20:47 kirjoittanut Penguin »
Copy tarjoaa 20 Gt maksutonta pilvitallennusta - Ohje: rekisteröidy tästä -> vahvista sähköpostiosoitteesi -> asenna Copy-client ja sinulla on 20 Gt tallennustilaa pilvessä.

Poissa Junnu

  • Jäsen
  • **
  • Viestejä: 78
    • Profiili
Vs: Aloittelijoiden ongelmat ja kysymykset
« Vastaus #11 : 01.04.14 - klo:05:16 »
Kiitos tästä mutta tämä ei vielä ihan ratkaisuut ongelmaani. Koitampa kuvailla hieman tarkemmin tarpeeni.. :)

- Ohjelmassa on cover action jolla noudetaan erinäisiä tietoja tietokantaan
- Kun kyseinen cover action suoritetaan tiedot tallennetaan tietokantaan
- FirstPage.qml:ssä on listview jonne pitäisi päivittyä tietokannasta tuoreimmat tiedot joko kun coverista suoritetaan päivitys tai kun käyttäjä klikkaa coveria avatakseen ohjelman

Tietysti jollain timerilla tuolla FistPage.qml:ssä tuon voisi saada jotenkin tapahtumaan, mutta täytyy olla fiksumpikin tapa?

Edit: Yes, onnistuihan se!

Eli tämmöisen kun lisäsi tuonne "FistPage.qml" tiedostoon niin johan alkoi lista päivittymään toivotulla tavalla.

Koodia: [Valitse]
Connections {
      target: application
      onApplicationActiveChanged: {
          if (application.applicationActive) refreshlist();
      }
}
« Viimeksi muokattu: 01.04.14 - klo:07:36 kirjoittanut Junnu »

Poissa Penguin

  • Täysjäsen
  • ***
  • Viestejä: 164
    • Profiili
Vs: Aloittelijoiden ongelmat ja kysymykset
« Vastaus #12 : 02.04.14 - klo:05:31 »
Käyttäisin tuossa aina sitä id:tä joka ApplicationWindow:lle on määritelty ihan selkeyden vuoksi, tosin niin kauan kun sovelluksella on vain yksi ikkuna ei tästä tule mitään ongelmaa, olettaen että id:tä application ei ole ko. kontekstissa uudelleenmääritelty.
Copy tarjoaa 20 Gt maksutonta pilvitallennusta - Ohje: rekisteröidy tästä -> vahvista sähköpostiosoitteesi -> asenna Copy-client ja sinulla on 20 Gt tallennustilaa pilvessä.

Poissa Junnu

  • Jäsen
  • **
  • Viestejä: 78
    • Profiili
Vs: Aloittelijoiden ongelmat ja kysymykset
« Vastaus #13 : 02.04.14 - klo:05:46 »
Käyttäisin tuossa aina sitä id:tä joka ApplicationWindow:lle on määritelty ihan selkeyden vuoksi, tosin niin kauan kun sovelluksella on vain yksi ikkuna ei tästä tule mitään ongelmaa, olettaen että id:tä application ei ole ko. kontekstissa uudelleenmääritelty.

Joo kyllä mä siinä käytin todellisuudessa ihan sitä oikeaa application window:n id:tä. Tänne vaan laitoin jotain geneeristä liibalaabaa, en edes tiedä miksi :D

Poissa Penguin

  • Täysjäsen
  • ***
  • Viestejä: 164
    • Profiili
Vs: Aloittelijoiden ongelmat ja kysymykset
« Vastaus #14 : 02.04.14 - klo:05:59 »
Ok. Siksi vaan mainitsin, kun id application on myös määritelty ja saattaisi jopa toimia tuossa kohtaa, en tosin testannut.
Copy tarjoaa 20 Gt maksutonta pilvitallennusta - Ohje: rekisteröidy tästä -> vahvista sähköpostiosoitteesi -> asenna Copy-client ja sinulla on 20 Gt tallennustilaa pilvessä.

JollaSuomi Foorumi

Vs: Aloittelijoiden ongelmat ja kysymykset
« Vastaus #14 : 02.04.14 - klo:05:59 »