Enviar pesquisa
Carregar
Intro to QML / Declarative UI
•
Transferir como ODP, PDF
•
5 gostaram
•
2,537 visualizações
OpenBossa
Seguir
This talk will give a high level overview about Qml and Declarative UI support on Qt.
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 17
Baixar agora
Recomendados
Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7
Pasi Kellokoski
Qt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt Quick
ICS
Best Practices in Qt Quick/QML - Part 3
Best Practices in Qt Quick/QML - Part 3
ICS
Best Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part III
ICS
QVariant, QObject — Qt's not just for GUI development
QVariant, QObject — Qt's not just for GUI development
ICS
Hello, QML
Hello, QML
Jack Yang
Qt Internationalization
Qt Internationalization
ICS
Qt Qml
Qt Qml
Steven Song
Recomendados
Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7
Pasi Kellokoski
Qt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt Quick
ICS
Best Practices in Qt Quick/QML - Part 3
Best Practices in Qt Quick/QML - Part 3
ICS
Best Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part III
ICS
QVariant, QObject — Qt's not just for GUI development
QVariant, QObject — Qt's not just for GUI development
ICS
Hello, QML
Hello, QML
Jack Yang
Qt Internationalization
Qt Internationalization
ICS
Qt Qml
Qt Qml
Steven Song
Qt for Python
Qt for Python
ICS
Building the QML Run-time
Building the QML Run-time
Johan Thelin
Qt for beginners part 5 ask the experts
Qt for beginners part 5 ask the experts
ICS
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part I
ICS
Best Practices in Qt Quick/QML - Part 2
Best Practices in Qt Quick/QML - Part 2
Janel Heilbrunn
Serving QML applications over the network
Serving QML applications over the network
Jeremy Lainé
Qt for beginners part 1 overview and key concepts
Qt for beginners part 1 overview and key concepts
ICS
Basics of Model/View Qt programming
Basics of Model/View Qt programming
ICS
Lockless Producer Consumer Threads: Asynchronous Communications Made Easy
Lockless Producer Consumer Threads: Asynchronous Communications Made Easy
ICS
OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...
OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...
ICS
Qt for beginners part 4 doing more
Qt for beginners part 4 doing more
ICS
Cross Platform Qt
Cross Platform Qt
Johan Thelin
Fun with QML
Fun with QML
ICS
In-Depth Model/View with QML
In-Depth Model/View with QML
ICS
Qt Workshop
Qt Workshop
Johan Thelin
Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011
Johan Thelin
QtQuick Day 4
QtQuick Day 4
Timo Strömmer
So I Downloaded Qt, Now What?
So I Downloaded Qt, Now What?
Janel Heilbrunn
Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4
ICS
QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong?
ICS
Best Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part II
ICS
Fun with QML and JavaScript: Embedded Linux Conference 11th April 2011, Hotel...
Fun with QML and JavaScript: Embedded Linux Conference 11th April 2011, Hotel...
Raj Lal
Mais conteúdo relacionado
Mais procurados
Qt for Python
Qt for Python
ICS
Building the QML Run-time
Building the QML Run-time
Johan Thelin
Qt for beginners part 5 ask the experts
Qt for beginners part 5 ask the experts
ICS
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part I
ICS
Best Practices in Qt Quick/QML - Part 2
Best Practices in Qt Quick/QML - Part 2
Janel Heilbrunn
Serving QML applications over the network
Serving QML applications over the network
Jeremy Lainé
Qt for beginners part 1 overview and key concepts
Qt for beginners part 1 overview and key concepts
ICS
Basics of Model/View Qt programming
Basics of Model/View Qt programming
ICS
Lockless Producer Consumer Threads: Asynchronous Communications Made Easy
Lockless Producer Consumer Threads: Asynchronous Communications Made Easy
ICS
OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...
OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...
ICS
Qt for beginners part 4 doing more
Qt for beginners part 4 doing more
ICS
Cross Platform Qt
Cross Platform Qt
Johan Thelin
Fun with QML
Fun with QML
ICS
In-Depth Model/View with QML
In-Depth Model/View with QML
ICS
Qt Workshop
Qt Workshop
Johan Thelin
Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011
Johan Thelin
QtQuick Day 4
QtQuick Day 4
Timo Strömmer
So I Downloaded Qt, Now What?
So I Downloaded Qt, Now What?
Janel Heilbrunn
Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4
ICS
QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong?
ICS
Mais procurados
(20)
Qt for Python
Qt for Python
Building the QML Run-time
Building the QML Run-time
Qt for beginners part 5 ask the experts
Qt for beginners part 5 ask the experts
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part 2
Best Practices in Qt Quick/QML - Part 2
Serving QML applications over the network
Serving QML applications over the network
Qt for beginners part 1 overview and key concepts
Qt for beginners part 1 overview and key concepts
Basics of Model/View Qt programming
Basics of Model/View Qt programming
Lockless Producer Consumer Threads: Asynchronous Communications Made Easy
Lockless Producer Consumer Threads: Asynchronous Communications Made Easy
OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...
OpenGL Fixed Function to Shaders - Porting a fixed function application to “m...
Qt for beginners part 4 doing more
Qt for beginners part 4 doing more
Cross Platform Qt
Cross Platform Qt
Fun with QML
Fun with QML
In-Depth Model/View with QML
In-Depth Model/View with QML
Qt Workshop
Qt Workshop
Necessitas - Qt on Android - from FSCONS 2011
Necessitas - Qt on Android - from FSCONS 2011
QtQuick Day 4
QtQuick Day 4
So I Downloaded Qt, Now What?
So I Downloaded Qt, Now What?
Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4
QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong?
Destaque
Best Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part II
ICS
Fun with QML and JavaScript: Embedded Linux Conference 11th April 2011, Hotel...
Fun with QML and JavaScript: Embedded Linux Conference 11th April 2011, Hotel...
Raj Lal
Best Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IV
ICS
Test driving QML
Test driving QML
Artem Marchenko
QML demo for makerpro (1)
QML demo for makerpro (1)
diro fan
QtQuick Day 2
QtQuick Day 2
Timo Strömmer
QtQuick Day 3
QtQuick Day 3
Timo Strömmer
Angry Developer: Creating a Game in QML and JavaScript for MeeGo N9 @iRajLal
Angry Developer: Creating a Game in QML and JavaScript for MeeGo N9 @iRajLal
Raj Lal
Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...
Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...
Raj Lal
QtQuick Day 1
QtQuick Day 1
Timo Strömmer
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
ICS
Practical QML - Key Navigation, Dynamic Language and Theme Change
Practical QML - Key Navigation, Dynamic Language and Theme Change
Burkhard Stubert
Destaque
(12)
Best Practices in Qt Quick/QML - Part II
Best Practices in Qt Quick/QML - Part II
Fun with QML and JavaScript: Embedded Linux Conference 11th April 2011, Hotel...
Fun with QML and JavaScript: Embedded Linux Conference 11th April 2011, Hotel...
Best Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IV
Test driving QML
Test driving QML
QML demo for makerpro (1)
QML demo for makerpro (1)
QtQuick Day 2
QtQuick Day 2
QtQuick Day 3
QtQuick Day 3
Angry Developer: Creating a Game in QML and JavaScript for MeeGo N9 @iRajLal
Angry Developer: Creating a Game in QML and JavaScript for MeeGo N9 @iRajLal
Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...
Build Cutting edge Mobile Apps using QML and JavaScript for MeeGo N9: Linux F...
QtQuick Day 1
QtQuick Day 1
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
[Webinar] 10 Keys to Ensuring Success for Your Next Qt Project
Practical QML - Key Navigation, Dynamic Language and Theme Change
Practical QML - Key Navigation, Dynamic Language and Theme Change
Semelhante a Intro to QML / Declarative UI
Qt quick at Cybercom Developer Day 2010 by Alexis Menard 7.9.2010
Qt quick at Cybercom Developer Day 2010 by Alexis Menard 7.9.2010
CybercomChannel
ActiveTM - A Topic Maps - Object Mapper
ActiveTM - A Topic Maps - Object Mapper
tmra
Qt for S60
Qt for S60
Mark Wilcox
Ruby Meets Cocoa
Ruby Meets Cocoa
Robbert
Containers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific Trio
Jérôme Petazzoni
Introduction to software architecture
Introduction to software architecture
Marcus Ljungblad
Pragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWare
Michael Vorburger
Sergey Ilinsky Presentation Ample Sdk
Sergey Ilinsky Presentation Ample Sdk
Ajax Experience 2009
Qt
Qt
Anupam Kumar Srivastava
Few Tips for asp.net developers 2014 and beyond
Few Tips for asp.net developers 2014 and beyond
Sreejesh Madonandy
Real World Azure - Dev
Real World Azure - Dev
Clint Edmonson
Luca Filigheddu - Sviluppiamo in Cascades per Blackberry 10
Luca Filigheddu - Sviluppiamo in Cascades per Blackberry 10
Girl Geek Dinners Milano
Cloud Computing: IC4 Cloud On-Boarding Clinic, DCU
Cloud Computing: IC4 Cloud On-Boarding Clinic, DCU
kantanmt
Resilient microservices with Kubernetes - Mete Atamel
Resilient microservices with Kubernetes - Mete Atamel
ITCamp
Node.JS| Coffeescript Presentation
Node.JS| Coffeescript Presentation
Sam Frons
Xamarin workshop
Xamarin workshop
Nguyen Hieu
Demystifying Docker101
Demystifying Docker101
Ajeet Singh Raina
Demystifying Docker
Demystifying Docker
Cloud Native Bangalore
Smalltalk speaks dot net
Smalltalk speaks dot net
ESUG
Towards accelerated UIs with power of Qt5 - Project Cinnamon
Towards accelerated UIs with power of Qt5 - Project Cinnamon
setelani
Semelhante a Intro to QML / Declarative UI
(20)
Qt quick at Cybercom Developer Day 2010 by Alexis Menard 7.9.2010
Qt quick at Cybercom Developer Day 2010 by Alexis Menard 7.9.2010
ActiveTM - A Topic Maps - Object Mapper
ActiveTM - A Topic Maps - Object Mapper
Qt for S60
Qt for S60
Ruby Meets Cocoa
Ruby Meets Cocoa
Containers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific Trio
Introduction to software architecture
Introduction to software architecture
Pragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWare
Sergey Ilinsky Presentation Ample Sdk
Sergey Ilinsky Presentation Ample Sdk
Qt
Qt
Few Tips for asp.net developers 2014 and beyond
Few Tips for asp.net developers 2014 and beyond
Real World Azure - Dev
Real World Azure - Dev
Luca Filigheddu - Sviluppiamo in Cascades per Blackberry 10
Luca Filigheddu - Sviluppiamo in Cascades per Blackberry 10
Cloud Computing: IC4 Cloud On-Boarding Clinic, DCU
Cloud Computing: IC4 Cloud On-Boarding Clinic, DCU
Resilient microservices with Kubernetes - Mete Atamel
Resilient microservices with Kubernetes - Mete Atamel
Node.JS| Coffeescript Presentation
Node.JS| Coffeescript Presentation
Xamarin workshop
Xamarin workshop
Demystifying Docker101
Demystifying Docker101
Demystifying Docker
Demystifying Docker
Smalltalk speaks dot net
Smalltalk speaks dot net
Towards accelerated UIs with power of Qt5 - Project Cinnamon
Towards accelerated UIs with power of Qt5 - Project Cinnamon
Mais de OpenBossa
PySide
PySide
OpenBossa
Connecting Technology for Great Experiences - How does QML and Web fit together?
Connecting Technology for Great Experiences - How does QML and Web fit together?
OpenBossa
Qt Techday - João Pessoa
Qt Techday - João Pessoa
OpenBossa
Multi View Constructed Right
Multi View Constructed Right
OpenBossa
The Unusual Suspect: Layouts for sleeker KDE applications
The Unusual Suspect: Layouts for sleeker KDE applications
OpenBossa
The Unusual Suspect: Layouts for sleeker KDE applications
The Unusual Suspect: Layouts for sleeker KDE applications
OpenBossa
Qt
Qt
OpenBossa
O que há de novo no Plasma Netbook?
O que há de novo no Plasma Netbook?
OpenBossa
What's up about Plasma-MID?
What's up about Plasma-MID?
OpenBossa
KDE in Your Life from Desktop to Pocket
KDE in Your Life from Desktop to Pocket
OpenBossa
Brasil, Open Source e o Mundo dos Negócios
Brasil, Open Source e o Mundo dos Negócios
OpenBossa
Negócios e Open Source
Negócios e Open Source
OpenBossa
Mais de OpenBossa
(12)
PySide
PySide
Connecting Technology for Great Experiences - How does QML and Web fit together?
Connecting Technology for Great Experiences - How does QML and Web fit together?
Qt Techday - João Pessoa
Qt Techday - João Pessoa
Multi View Constructed Right
Multi View Constructed Right
The Unusual Suspect: Layouts for sleeker KDE applications
The Unusual Suspect: Layouts for sleeker KDE applications
The Unusual Suspect: Layouts for sleeker KDE applications
The Unusual Suspect: Layouts for sleeker KDE applications
Qt
Qt
O que há de novo no Plasma Netbook?
O que há de novo no Plasma Netbook?
What's up about Plasma-MID?
What's up about Plasma-MID?
KDE in Your Life from Desktop to Pocket
KDE in Your Life from Desktop to Pocket
Brasil, Open Source e o Mundo dos Negócios
Brasil, Open Source e o Mundo dos Negócios
Negócios e Open Source
Negócios e Open Source
Último
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Delhi Call girls
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Roshan Dwivedi
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
Paola De la Torre
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
V3cube
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Miguel Araújo
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
The Digital Insurer
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Safe Software
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
Principled Technologies
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
The Digital Insurer
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
Results
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Puma Security, LLC
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Drew Madelung
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
Pooja Nehwal
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
The Digital Insurer
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
Delhi Call girls
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Delhi Call girls
Último
(20)
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Intro to QML / Declarative UI
1.
Intro to QML
/ Declarative UI Caio Marcelo de Oliveira Filho CampKDE 2010 – San Diego
2.
3.
openBossa, FOSS stream
at INdT
4.
- Qt Kinetic
5.
- Qt WebKit
6.
- Plasma Netbook
7.
- S60 demos
8.
Currently working with
trolls on Widgets/QML
9.
One patch to
kwin! ;-)
10.
What is QML?
Describe trees of objects and properties Item { propertyA: 100 propertyB: 100 children: [ Item { propertyC: 100 }, Item { propertyC: 200 } ] }
11.
What is QML?
Describe trees of objects and properties Item { propertyA: 100 propertyB: 100 Item { propertyC: 100 } Item { propertyC: 200 } }
12.
What is QML?
Allows embedding ECMAScript code Item { propertyA: 100 propertyB: propertyA + 200 // here onSomeEvent: myFunction() // and here }
13.
Declarative UI using
QML Rectangle { id: page width: 500; height: 200 color: "lightgray" Text { id: helloText text: "Hello world!" font.pointSize: 24 font.bold: true y: 30 anchors.horizontalCenter: page.horizontalCenter } }
14.
15.
“ MouseRegion” object
for events
16.
Note: usually people
say just QML instead of “Declarative UI using QML”
17.
18.
Web: “QML is
a kind of HTML+CSS”
19.
Qt: “QML is
a kind of .ui file from QtDesigner”
20.
21.
- Canola, Weather
demo, many mobile apps
22.
- KDM concept
using QML
23.
(Small) applications entirely
in QML
24.
- Plasma applets
25.
- Logic in
ECMAScript (similar to webapps)
26.
27.
- Not just
images / colors / fonts
28.
- The entire
view!
29.
Opportunity for designers
30.
- Mockups directly
in QML
31.
- Work nearer
to developers
32.
33.
Usability designer (think
Celeste)
34.
“ Interaction designer”
= Flash mockups :)
35.
(anyone in KDE?)
36.
QML can help
the last one a lot
37.
38.
Good integration with
C++
39.
HTML5-like APIs, e.g.
local storage
40.
41.
Language to describe
UI of an app
42.
Tool for building
small applications
43.
- Assuming a
'qmlviewer' is similar to webapps
44.
45.
QML way: simple
primitives to build UI
46.
Ability to abstract
complex components
47.
Not end, just
changing how widgets are built!
48.
49.
Expected for Qt
4.7
50.
- Being developed
in qt.gitorious.org
51.
- Clone it,
hack it, give feedback! ;-)
52.
More information
53.
- labs.qt.nokia.com
54.
- #qt-labs @
freenode
55.
Thank you! :-)
56.
Caio Marcelo de
Oliveira Filho [email_address] http://cmarcelo.org/blog cmarcelo @ freenode irc
Baixar agora