You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Essential types<br />
Controls<br />
Text display and input<br />
Pages, views and containers<br />
Animations<br />
Menus<br />
Dialogs<br />
Application covers<br />
Sailfish-sovelluksen perustoiminnot muun muassa sovellusikkunalle,<br />
sivupinolle, tunnelmien huomioimiseen ja leikepöydän käytölle.<br />
Käyttöliittymän painikkeita, valitsimia, kytkimiä yms.<br />
Tekstin esittämiseen ja syöttämiseen tarkoitetut komponentit.<br />
Sisältää komponentit sivujen esittämistä varten sekä eräitä muita käyttöliittymän<br />
rakenteita, kuten lista- ja ruudukkonäkymät.<br />
Animaatiot erilaisille käyttöliittymän tapahtumille.<br />
Alas- ja ylösvetovalikoiden komponentit sekä pikavalikkotoiminto.<br />
Valitsimet väreille, ajalle ja päivämäärälle sekä yleinen kyselysivu.<br />
Sovelluskansien käsittelyyn tarvittavat komponentit.<br />
Taulukko 2. Sailfish Silica 1.0 -kirjaston kategoriat.<br />
löytyvät kuitenkin helposti Qt:n oppaista.<br />
Kannattaa varmistaa, että käytössä on<br />
opas vähintään Qt:n versiolle 5.1, sillä<br />
internetin hakukoneet antavat osumia<br />
myös versiolle 4.8.<br />
Silica-kirjasto sisältää komponentteja<br />
ja ominaisuuksia sivupinon hallintaan,<br />
valikoiden tekemiseen, käyttöjärjestelmän<br />
tunnelmien huomioimiseen<br />
ja sovelluskannen käsittelyyn. Mukana<br />
on tietenkin myös erilaisia vipuja, painikkeita<br />
ja syötekomponentteja. Näitä<br />
tarvitsemme esimerkkisovelluksessamme.<br />
Lisäksi kirjasto tarjoaa rajapintoja<br />
Sailfish-järjestelmään, esimerkiksi leikepöydän<br />
käyttöön ja tiedostojärjestelmän<br />
standardikansioihin. Taulukkoon 2 on<br />
koottu Sailfish Silica 1.0 -kirjaston eri<br />
osa-alueet.<br />
Tämän artikkelin esimerkkisovelluksen<br />
Silica-komponentit esitellään sitä<br />
mukaa, kun ne tulevat vastaan. Silican<br />
omat komponentit mainitaan erikseen,<br />
mutta muut ovat tavallisia QML:n komponentteja.<br />
Silicaan voi tutustua myös Qt<br />
Creatorin Welcome-välilehdellä olevasta<br />
kohdasta Examples, josta voi ladata esimerkkiprojektin<br />
nimeltä ”Sailfish Silica<br />
Component Gallery”. Projektissa esitellään<br />
komponenttien käyttöä ja myös niiden<br />
ulkoasu on nähtävissä.<br />
Rope dice – kun<br />
nopat jäivät kotiin<br />
Kuva 2. Sovelluksen sivurakenne ja pääsivun<br />
sisältö.<br />
Lautapelien ystävän ja pöytäroolipelaajan<br />
vakiovarusteisiin kuuluu tietysti<br />
noppasetti. Mutta entä jos nopat pääsevät<br />
unohtumaan? Pelitapahtuma ei<br />
välttämättä mene pilalle, jos on osannut<br />
ohjelmoida puhelimeensa nopanheittosovelluksen.<br />
Älypuhelinhan on sentään<br />
kaikilla aina (?) mukana. Rakennamme<br />
yksinkertaisen mutta käytännöllisen nopanheittosovelluksen<br />
Sailfishille. Samalla<br />
sovellus esittelee Sailfish- ja QML-ohjelmoinnin<br />
perusasioita.<br />
Sovellukseen tulevat omat painikkeensa<br />
nopille 4, 6, 8, 10, 12 ja 20, koska<br />
niitä tarvitaan usein. Lisäksi käyttäjä<br />
voi syöttää yhdelle nopalle sivumäärän<br />
ja heittää sitä, koska toisinaan tarvitaan<br />
myös esimerkiksi 100-sivuista noppaa.<br />
Joskus on hyödyllistä heittää useita noppia<br />
samanaikaisesti, joten myös noppien<br />
lukumäärän tulee olla valittavissa.<br />
Sovellukseen tarvitaan pääsivu, joka<br />
avautuu ensimmäisenä ja jossa varsinaiset<br />
nopanheittotoiminnot ovat. Lisäksi<br />
luodaan infosivu, jossa kerrotaan tekijöiden<br />
nimet ja muuta tietoa sovelluksesta.<br />
Pääsivulta siirrytään infosivulle alasvetovalikon<br />
avulla. Käyttöliittymän rakenne<br />
on havainnollistettu kuvassa 2.<br />
Siirrytään pikku hiljaa koodin pariin.<br />
Emme julkaise kaikkia esimerkkisovelluksen<br />
tiedostoja lehden sivuilla vaan<br />
ainoastaan tärkeimmät osat. Koko ohjelman<br />
voi ladata Skrollin sivuilta osoitteesta<br />
http://skrolli.fi/2014.2/. Avaa projektin<br />
.pro-tiedosto Qt Creatorissa ja valitse<br />
kohdealustoiksi ”i486” ja ”armv7hl”.<br />
Näin sovellus saadaan käännettyä sekä<br />
Sailfish-emulaattorille että oikealle laitteelle.<br />
Noppasovelluksen kansioiden rakenne<br />
näkyy kuvassa 3 ja osien merkitykset<br />
on selitetty taulukossa 3. Rakenne perustuu<br />
hyvin pitkälle Sailfish-kehitysympäristön<br />
luomaan projektipohjaan, joten<br />
se edustanee aika tyypillistä Sailfishin<br />
QML-sovellusta.<br />
Lehden sivuilla olevissa ohjelmalistauksissa<br />
on eräissä kohdissa kolme<br />
pistettä (…). Merkintä tarkoittaa, että<br />
kohdasta on jätetty pois selitettävän toiminnallisuuden<br />
kannalta epäoleellista<br />
koodia. Nämä kohdat täydennetään kyllä<br />
artikkelin myöhemmissä listauksissa.<br />
Ohjelman runko<br />
Listauksessa 1 on sovelluksen pääosa,<br />
joka nivoo muut osat yhteen. Alkuriveillä<br />
on tuotu Qt Quickin peruskomponenttikirjasto<br />
ja Sailfish Silica -kirjasto. Lisäksi<br />
on tuotu qml-hakemiston alihakemistot<br />
pages ja cover. Hakemiston tuominen<br />
antaa käyttöön kaikki hakemiston qmltiedostoissa<br />
määritellyt komponentit.<br />
Sovelluksen käyttöliittymän rakennus<br />
alkaa siitä, että määritetään Application-<br />
Window-komponentti eli sovellusikkuna.<br />
harbour-ropedice.pro<br />
src-kansio<br />
harbour-ropedice.cpp<br />
qml-kansio<br />
CoverPage.qml<br />
InfoPage.qml<br />
MainPage.qml<br />
harbour-ropedice.qml<br />
rpm-kansio<br />
Qt:n projektitiedosto, joka muistuttaa Makefilea.<br />
Kansio C++-lähdekoodille.<br />
Automaattisesti luotu QML:n latauskoodi.<br />
Kansio QML-lähdekoodille.<br />
Sovelluskannen määrittelytiedosto.<br />
Infosivu, joka kertoo muun muassa sovelluksen tekijöistä.<br />
Sovelluksen pääsivu, jossa nopanheittotoiminnot ovat.<br />
QML-tiedosto, jossa asetetaan käytettävä aloitussivu ja sovelluskansi.<br />
RPM-paketin luomiseen tarvittavat tiedostot.<br />
Kuva 3. Sailfish-projektin kansiorakenne.<br />
harbour-ropedice.desktop<br />
Tiedostossa muun muassa määritellään, miten sovellus käynnistetään ja<br />
mitä kuvaketta sovellus käyttää.<br />
Taulukko 3. Sailfish-projektin kansiot, tiedostot ja niiden merkitys.<br />
42 2014.2