Na konferenci openmobility jsem měl workshop na téma QML. Konference je sice dávno pryč, ale až teď jsem si udělal trošku času o ní něco napsat.
Je příbližně měsíc a půl po konferenci a na serveru openmobility se mezitím neobjevil ani jeden článek. A není divu. Všichni konferencí vyčerpali svůj volný čas na nějakou dobu dopředu. A ti ostatní už mezitím stihli další dvě konference (třeba LinuxWochen ve Vídni nebo LinuxTag v Berlíně).
Pár lidí v minulém článku se ptali po záznamech, tak vězte, že letos žádný záznam nebude. Minulé ročníky jsem se o to staral ja, když jsem se na to ptal letos, tak jsem se před konferencí dozvěděl, že by to snad měl udělat někdo z Prahy. Přímo na místě jsem se dozvěděl, že záznamy z technických důvodů nebudou. A protože jsem měl vlastních starostí dost, tak jsem tuhle drobnost neřešil. Udělal jsem nějaké fotky, ale nemám je moc protříděné. Souhlasil jsem s tím, aby je kluci z LinuxExpressu zveřejnili ve svém článku, takže si je můžete prohlídnout tam..
Dlouho jsem taky přemýšlel nad tématem, o kterém jsem měl mluvit. Rozhodl jsem se udělat programovací workshop a na místě předvést, co všechno se za 30 minut dá stihnout. Cestou do Prahy jsme v autě diskutovali o tom jaká aplikace by to měla být. Původně jsem chtěl udělat countdown a na jeho konci přepnout profil vyzvánění. S odstupem času můžu říct, že můj původní nápad bych asi nestihl ani kdybych měl hodinový blok. Navíc jsem se někde U Křížu dozvěděl, že tohle už je hotové a odladěné k dokonalosti (a taky to stojí 30,-).
Nakonec jsem se rozhodl vytvořit jednoduchý program k vylosování výherců upomínkových předmětů. Nikdo nemůže říct, že by slosování bylo zfixlované, protože všichni viděli program, který losuje. Programování před obecenstvem je jako vždy velká výzva a je tam velké riziko, že se něco nepodaří a něco nebude fungovat. Při přemýšlení jak programovat mi navíc docela přestalo jít mluvení v angličtině. Naštěstí jsem měl trpělivé publikum, které mi chybu pomohlo najít.
import QtQuick 1.1 import com.nokia.meego 1.0Page { tools: commonTools XmlListModel { // toto je komponenta, která stáhne XML soubor a XPathem z něj vytvoří "ListModel" id: xmlModel source: "./survey.xml" // tady může být přímo URL kde se nacházejí data query: "/data/answer" // čast XPath dotazu, která říka co se opakuje tady jsem měl chybu XmlRole { name: "name"; query: "name/string()" } // jednotlivé opakující se položky XmlRole { name: "from"; query: "from/string()" } XmlRole { name: "email"; query: "email/string()" } } ListView { // zobrazuje je už stejně jako ListModel // zajistuje aby se položky zobrazili pod sebe anchors.fill: parent model: xmlModel // jaký model se má zobrazit delegate: Rectangle { // jak má vypadat jedna položka anchors.left: parent.left; anchors.right: parent.right; height: 60 Label { anchors.centerIn: parent; text: model.name } } } Button { // tlačítko pro výběr jedné položky ze seznamu id: chooseButton anchors.bottom: parent.bottom; anchors.horizontalCenter: parent.horizontalCenter text: "choose one" onClicked: { // toto je demonstrace toho jak ošetřit nějakou událost var idofWinner = parseInt(Math.random()*xmlModel.count) winnerName = xmlModel.get(idofWinner).name; } // toto je demostrace toho, že když se změní property, tak se přepočítají i všechny ostatní věci enabled: (xmlModel.status == XmlListModel.Ready) }Rectangle { // tady zobrazíme tu náhodně vybranou položku anchors.bottom: chooseButton.top; anchors.left: parent.left anchors.right: parent.right height: 50 Label { text: winnerName anchors.centerIn: parent; } } // a tímhle jsem si zajistil, že nevyhraju (-; property string winnerName: "Jozef Mlich" onWinnerNameChanged: { console.log("winner name is " +winnerName) } }
enabled: (xmlModel.status == XmlListModel.Ready)
Jak už jsem se zmínil, tak konference vyčerpala naši zásobu novinek a článků o nich. Moje průměrná doba vydání článku je teď měsíc (tedy jenom čas od napsání do vydání). Právě se podařilo dovydat a dokorigovat můj článek o qr kódech. Do budoucna se můžete těšit na články o programování na Nokii N900 a Symbian Belle. Mimo to bych taky něco rád napsal o Bluetechnix iMX 51, který jsem dostal na Linux Wochen ve Vídni.