IRC-Galleria

Tiedot

Luokittelu
Tietokoneet ja Internet
Perustettu
22.9.2008
Tilastot
Käyntejä: 3 154
Koko
22 jäsentä
Tyttöjä: 1 (5 %)
Poikia: 21 (95 %)
Keski-ikä
35,3 vuotta
Otos: 13 jäsentä
Tyttöjen keski-ikä: 30,3 vuotta
Poikien keski-ikä: 35,7 vuotta
Ylläpitäjä
Jonezi

Jäsenet (22)

Carlos_ManuelJaQQeriStugenaattoriHaprogjymynalleEzzySumeejusutusHypokondriaHaitarIJahako_RäsäwolverianBrenkkuuudzeherbie
« Uudemmat - Vanhemmat »
Eilen lähti tilaukseen Jimm's PC-Storesta. Hintaa vain 99 euroa ja postikulut 0e. Kuulemma hyvä hinta/laatusuhde. Riittänee omaan käyttöön: e-kirjoihin, uutisten lukemiseen, kenties shakin pelailuun jne.

Asus 7" MeMO Pad ME172V, VIA WM8950, 1GB, 16GB, Wi-Fi, Android 4.1
20120614T020754.jpg

Valkoinen Samsung Galaxy S 3.

http://www.samsung.com/fi/consumer/mobile/mobilephones/smartphones/GT-I9300RWDNEE

Olisin kyllä halunnut mieluummin HTC One X:n. Mutta se olisi ollut liian kallis ja DNA ei tarjoa siitä mitään puhelin-liittymä-tarjousta verkkokaupassaan. Siksi oli pakko alistua(mä en olisi halunnut mitään Samsungia enää ikinä elämässäni sen mun huonon Samsungin digikameran takia) äidin ehdotukseen. En ole tosin vielä nähnyt sitä täällä kotona, kun se on kai äidin hallussa. X) Eli loogisesti ajateltuna varmaankin otan sen huomenna käyttöön. Ehkä. Riippuu siitä, tarvitsenko sen käyttöönottoon tietokonetta. Koska tällä koululäppärillä mä en todellakaan aio tehdä mitään siihen kännykkään liittyviä juttuja ja hallintaa(lukuunottamatta Android-ohjelmointikurssilla niiden mun ohjelmoimien sovellusten testausta ;) ). Ne jutut mä hoidan sillä mun omalla läppärillä ja se on edelleenkin piilotettuna multa by vanhemmat. -.- Sama koskee sitä mun iPod Touchia. HUOH...

Niin ja sain ton uuden kännykän, koska isi ja äiti oli ajatellut ostaa mulle jonkun Android-kännykän synttärilahjaksi, kun olen Android-kännykkää jo jonkin aikaa halunnut(Android-kännykän ja iPod Touchin yhdistelmällä mä saisin aika neutraalin aseman tossa Android vs. iOS -sodassa ja voisin testailla eri juttuja molemmissa alustoissa).

miksuhQML -ohjelmointiesimerkkiLuonut: miksuhTorstai 31.01.2013 20:44

Edellisen blogipostaukseni jälkeen olen saanit joitakin privaattiviestejä, joissa on kyselty kuinka helppoa on tehdä sovelluksia Symbianille, MeeGolle ja Jollan tuleville Sailfish -älypuhelimille. Lisäksi koodiesimerkkejä on toivottu nyös No hyvä on. Annan tässä ja seuraavissa blogikirjoituksissani muutaman esimerkin.

Jolla ei ole vielä julkaissut sovelluskehitysympäristöä, joten keskityn esimerkeissä Symbianiin ja MeeGoon joista itselläni on runsaasti kokemusta. Symbian- ja MeeGo -sovelluksille on edelleen runsaasti kysyntää, joten aihe on edelleen ajankohtainen. Kannattaa kuitenkin huomata, että Jollan ja Blackberryn tuleville älypuhelimille voi niillekin kehittää QML -sovelluksia. Lisäksi Qt:n nykyinen omistaja, Digia, aikoo tuoda Qt:n ja QML:n virallisesti myös Androidille ja iPhonelle.

Uutta ohjelmointikieltä opeteltaessa on syytä lähteä liikkeelle aivan perusesimerkeistä. Sen takia tällä kertaa esimerkkinä on perinteinen HelloWorld -sovellus :-) Kirjoitan myöhemmin blogiartikkelin, jossa annan monipuolisemman tosielämän esimerkin, jossa esittelen mm. verkkoayhteyttä, listanäkymän käyttöä, XML -muotoisen datan käsittelyä ja GPS-paikannusta. Mutta aloitetaan nyt yksinkertaisella Hello Worldilla. Annan sovelluksesta kolme eri koodiesimerkkiä, joista ensimmäinen on kaikkein yksinkertaisin, ja kolmas kehittynein, sekä lähinnä oikeaa tosielämän sovellusta

Esimerkit on tehty Qt:n QML-kielellä.


*** Esimerkki 1 ***

Ensimmäinen versio Hello World -sovelluksesta on kaikkein yksinkertaisin. Sovellus käyttää ainoastaan QML -kielen peruskomponentteja. Sovellus ei käytä mitään alustakohtaisia komponentteja, joten koodi toimii sellaisenaan nin Symbianissa kuin MeeGossakin.

Lähdekooditiedosto - main.qml

import QtQuick 1.1

Rectangle {
Text {
anchors.centerIn: parent
text: "Hello world!"
}

MouseArea {
anchors.fill: parent
onClicked: Qt.quit()
}
}

Yllä oleva esimerkki on täysin toimiva QML-sovellus. Sovellus näyttää "Hello world!" -tekstin keskitettynä keskelle puhelimen näyttöä. Käyttöliittymä mukautuu automaattisesti puhelimen kääntämiseen pysty- tai vaaka-asentoon, joten teksti on aina keskellä näyttöä riippumatta näytön resoluutiosta ja koosta. Sovellus voidaan sulkea koskettamalla sormella puhelimen näyttöä.

Sovellus näyttää tältä:




QML -sovellusten pääohjelma kirjoitetaan yleensä main.qml -lähdekooditiedostoon. Tässä tapauksessa koko ohjelmakoodi on main.qml -tiedostossa.

Ohjelmalistauksessa oleva import -rivi on pakollinen jokaisessa QML -lähdekooditiedpstossa, eli QML -dokumentissa. Kyseinen rivi ottaa käyttöön QML -kielen peruskomponentit. Rivin lopussa oleva luku on Qt Quick -versionumero, joka pitää aina määritellä. Symbianissa ja MeeGossa QtQuick versio on nykyään 1.1. Kun versionumeroksi on kirjoitettu 1.1 se tarkoittaa, että ohjelmakoodi vaatii toimiakseen Qt Quick version 1.1 tai sitä uudemman version.

Jokainen QML -lähdekooditiedosto, eli QML -dokumentti, määrittelee yhden QML -komponentin. QML -komponentti voidaan rinnastaa Java ja C++ kielten luokkiin. Yllä olevassa esimerkissä on käytetty kolmea uudelleenkäytettävää QML -komponenttia: Rectangle, Text ja MouseArea. Tässä artikkelissa myöhemmin esitetyssä esimerkissä 3 luodaan ohjelmoijan määrittelemä komponentti MainPage, joka on määritelty QML -dokumentissa MainPage.qml. Komponentin nimi ja lähdekooditiedoston nimi ovat aina toisiaan vastaavat, esim. MainPage.qml -lähdekooditiedosto määrittelee komponentin MainPage.

Komponentti Rectangle on ns. juurikomponentti, josta enemmän myöhrmmin tässä artikkelissa. Kuten edellä sanoin QML-sovelluksen pääohjelma kirjoitetaan yleensä main.qml -lähdekooditiedostoon. main.qml lähdekooditiedostossa määritelty juurikomponentti toimii sovelluksen pääohjelmakomponenttina, sekä käyttöliittymän "ikkunana", jonka sisällä sovelluksen käyttöliittymä näytetään.

Eli sovelluksen "ikkunana" on komponentti Rectangle. Rectangle on yksi QML:n peruskomponenteista, se on graafinen komponentti, joka näyttää ruudulla suorakaiteen. Rectanglella, kuten kaikilla QML-komponenteilla, on useita ominaisuuksia (property), joihin komponenttin toimintaan ja ulkoasuun voidaan vaikuttaa. Esimerkissä komponentin Rectangle sisällä on määritelty komponentti Text, joka määrittelee, että ruudun keskellä näytetää teksti "Hello world!". Sovelluksen kolmas komponentti on MouseArea, joka reagoi puhelimen näytön kosketukseen, kun näyttöä kosketaan sovellus suljetaan.

*** Esimerkki 2 ***

Toinen versio Hello World -sovelluksesta on pohjimmiltaan vastaava kuin edellä esitetty versio. Erona on se, että nyt sovellus on toteutettu käyttäen Symbianille suunniteltuja käyttöliittymäkomponentteja, jotka noudattavat Symbianin käyttöliittymätyyliä.

Lähdekooditiedosto - main.qml

import QtQuick 1.1
import com.nokia.symbian 1.1

Window {
Label {
anchors.centerIn: parent
text: "Hello world!"
}

MouseArea {
anchors.fill: parent
onClicked: Qt.quit()
}
}

Sovellus näyttää tältä:




*** Esimerkki 3 ***

Kolmas ja viimeinen versio Hello World -sovelluksesta on kaikkein lähinnä oikeaa tosielämän sovellusta. Edelliset kaksi esimerkkiä toimivat perusesimerkkeinä, mutta niistä puutui useita tosielämän sovelluksille yhteisiä piirteitä.

Aiempien esimerkkien kohdalla sovelluskoodi voitiin kirjoittaa yhteen lähdekooditiedostoon nimeltä main.qml. Käytännössä oikeita sovelluksia kehitettäessä on järkevää pilkkoa sovelus pienempiin loogisiin uudelleen käytettäviin osiin. Siksi tässä esimerkissä ohjelmakoodi on jaettu kahteen eri tiedostoon nimiltään: main.qml ja MainPage.qml. main.qml sisältää itse sovelluksen päärungon, MainPage.qml sisältää sovelluksen päänäkymään liittyvän koodin. Sovelluksessa voi olla useita eri näkymiä, jotka kukin voidaan määritellä omassa lähdekooditiedostossaan. Tässä tapauksessa näkymiä on vain yksi.

Lähdekooditiedosto - main.qml

import QtQuick 1.1
import com.nokia.symbian 1.1

PageStackWindow {
id: window

showStatusBar: true
showToolBar: true

initialPage: MainPage { tools: toolBarLayout }

ToolBarLayout {
id: toolBarLayout

ToolButton {
flat: true
iconSource: "toolbar-back"
onClicked: Qt.quit()
}
}
}

Lähdekooditiedosto - MainPage.qml

import QtQuick 1.1
import com.nokia.symbian 1.1

Page {
Label {
anchors.centerIn: parent
text: "Hello world!"
}
}

Sovellus näyttää tältä:



Yllä oleva kolmas versio Hello World - sovelluksesta näyttää "Hello wor!d!" -tekstin puhelimen näytön keskellä samaan tapaan kuin aiemmat esimerkit. Lisäksi viimeisimmän esimerkin sovellus näyttää puhelimen näytön yläreunassa Symbianin tilapalkin (StatusBar) ja näytön alareunassa Symbianin työkalupalkin (ToolBar). Sovellus lisää työkalupalkkiin yhden nappulan (ToolButton), jota koskettamalla sovellus voidaan sulkea.

msin.qml -lähdekooditiedostossa määritellään, että sovellus näyttää tilapalkin ja työkalupalkin. Sovelluksen aloitusnäkymäksi asetetaan MainPage.qml -lähdekooditiedostossa määritelty näkymä (MainPage QML-komponentti). Samalla määritellään mitä nappuloita työkalupalkissa näkyy kun MainPage -näkymä on näkyvissä ruudulla. Tässä esimerkissä työkalupalkin napit määritellään main.qml -lähdekooditiedostossa. Ne voitaisiin yhtä hyvin määritellä MainPage.qml -lähdekooditiedostossa. Niin tehdäänkin usein sillon kun kehitettävässä sovelluksessa on useampi kuin yksi näkymä. Jokaisella näkymällä voi olla omat työkalupalkin napit, jotka näytetään näkymän ollessa ruudulla näkyvissä. Kpska tässä sovelluksessa on vain yksi näkymä, riittää että työkalupalkin napit määritellään main.qml lähdekooditiedostossa.

Jokaisessa QML -lähdekooditiedostossa on yksi ja vain yksi ns. juurikomponentti. Esimerkin 1 tapauksessa juurikomponentti on Rectangöe. Esimerkissä 2, juurikomponentti on Window. Esimerkin 3 lähdekooditiedostossa main.qml juurikomponentti on PageStackWindow ja MainPage.qml -lähdekooditiedostossa juurikomponentti on Page.

Kyse on olio-ohjelmoinnista tutusta periytymisestä. Olio-ohjelmointikieliä, kuten C++ ja Java, käytettäessä voidaan määritellä uusia luokkia periyttämällä uusi luokka jostakin toisesta jo olemassa olevasta luokasta. QML:n juurikomponentin tapauksessa on kyse samasta asiasta. Esimerkiksi esimerkin 3 QML -komponentti MainPage on peritty komponentista Page. Komponentti MainPage siis laajentaa komponentin Page -toiminnallisuutta.

Esimerkissä 2 juurikomponenttina oli komponentti Window, esimerkissä 3 puolestaan lähdekooditiedoston main.qml juurikomponenttina on PageStackWindow. On ohjelmoijan makuasia kumpaa komponenttia sovelluksessaan käyttää. PageStackWindow on kuitenkin monipuolisempi kuin Window ja sisältää monia helpottavia ominaisuuksia, jotka vähentävät koodinkirjoitustarvetta. PageStackWindow on peritty komponentista Window, joten se sisältää kaikki samat toiminnot kuin Window ja sen lisäksi joukon toimintoja, jotka puuttuvat komponentista Window.

QML ei ole tarkoitettu vain käyttöliittymien rakentamiseen. Sovelluksen voi tehdä kokonaan QML kielellä. Niin haluttaessa sovellus voidaan tehdä myös niin, että osa siitä on toteutettu QML -kielellä ja osa C++:lla. QML -kieltä voidaan myös laajentaa uusilla QML-komponenteilla, jotka on tehty C++:lla, tällöin C++:lla tehtyä komponenttia voidaan kätyttää QML -sovelluksessa aivan samoin kuin mitä tahansa QML -komponenttia.

HaprogWin !Luonut: HaprogTiistai 20.04.2010 01:53

Haha!

Puhelinvalmistaja HTC järjesti Twitterissä kilpailun Compaq iPAQ 3600 sarjan taskutietokoneen julkaisun 10v-päivän kunniaksi. Ne halus ihmisten valokuvia tollasen iPAQ 3600 laitteen kans ja valitsi niistä 10, joille ne lahjottaa uuden HTC Legend puhelimen.

Mulla sattu sit laatikossa olemaan tollane yläasteaikana ostettu iPAQ 3630, otin itestäni sen kans pari valokuvaa, laitoin ne nettiin ja mut valittiin yhdeksi voittajaksi! Voitin siis juuri uuden 500€ arvosen puhelimen. :D

http://twitter.com/Haprog
http://www.haprogszone.net/IMG_5724s_e1.jpg
http://www.haprogszone.net/IMG_5725s_e1.jpg
http://www.haprogszone.net/IMG_5728s_e1.jpg

Kiitos @sts jonka ansiosta sain tietää kyseisestä kilpailusta! :P
« Uudemmat - Vanhemmat »