Журнал LinuxFormat - перейти на главную

LXF92:Закодируй Greenфон

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая: == Закодируй Greenфон == ''Для разработки вашего первого мобильного приложения не надо ни быть крутым хаке...)
 
м (викификация)
 
Строка 2: Строка 2:
 
''Для разработки вашего первого мобильного приложения не надо ни быть крутым хакером, ни даже иметь сам Greenphone, пишет '''Грэм Моррисон'''.''
 
''Для разработки вашего первого мобильного приложения не надо ни быть крутым хакером, ни даже иметь сам Greenphone, пишет '''Грэм Моррисон'''.''
  
Trolltech Greenphone – открытая платформа, и инструменты
+
Trolltech Greenphone — открытая платформа, и инструменты
 
для разработки под нее доступны по лицензии GPL. А значит,
 
для разработки под нее доступны по лицензии GPL. А значит,
еще никогда не было так просто создать собственное приложение для мобильного телефона – до того просто, что нам
+
еще никогда не было так просто создать собственное приложение для мобильного телефона — до того просто, что нам
 
хватит трех страниц, чтобы показать это. Наша программа будет всего-навсего пересчитывать сантиметры в дюймы, но ее так же легко можно
 
хватит трех страниц, чтобы показать это. Наша программа будет всего-навсего пересчитывать сантиметры в дюймы, но ее так же легко можно
 
употребить как конвертор валют или расширить любыми способами.
 
употребить как конвертор валют или расширить любыми способами.
Знакомство с С++ вам поможет, но если вы таковым не располагаете – вот отличный шанс научиться.
+
Знакомство с С++ вам поможет, но если вы таковым не располагаете — вот отличный шанс научиться.
  
 
Greenphone использует особую версию Trolletch Qtopia API, у которого много общего с Qt API, используемом для создания KDE-приложений. Community SDK от сообщества Greenphone (http://www.qtopia.net/modules/mydownloads/singlefile.php?lid=22), необходимый для разработки GPL-приложений для Greenphone, представляет собой образ CD.
 
Greenphone использует особую версию Trolletch Qtopia API, у которого много общего с Qt API, используемом для создания KDE-приложений. Community SDK от сообщества Greenphone (http://www.qtopia.net/modules/mydownloads/singlefile.php?lid=22), необходимый для разработки GPL-приложений для Greenphone, представляет собой образ CD.
Строка 14: Строка 14:
 
собственные библиотеки Trolltech, заголовочные файлы и приложения
 
собственные библиотеки Trolltech, заголовочные файлы и приложения
 
с графическим пользовательским интерфейсом. Так как это образ
 
с графическим пользовательским интерфейсом. Так как это образ
VMware, то вам не нужен Linux – VMware Player также доступен и под
+
VMware, то вам не нужен Linux — VMware Player также доступен и под
 
Windows. Но, что более важно, вам не нужен даже Greenphone: Trolltech
 
Windows. Но, что более важно, вам не нужен даже Greenphone: Trolltech
 
предоставляет собственный «Эмулятор Greenphone», и вы можете
 
предоставляет собственный «Эмулятор Greenphone», и вы можете
Строка 20: Строка 20:
  
 
=== Создание среды разработки ===
 
=== Создание среды разработки ===
Первый шаг – установка Community SDK со скачанного образа CD.
+
Первый шаг — установка Community SDK со скачанного образа CD.
 
После этого у вас появится каталог с файлами VMware, которые необходимо загрузить в виртуальную машину. После ее запуска вы увидите
 
После этого у вас появится каталог с файлами VMware, которые необходимо загрузить в виртуальную машину. После ее запуска вы увидите
 
зеленые тона экрана рабочего стола Trolltech KDE. На нем разбросано несколько иконок, и две из них используются для эмуляции среды Greenphone. Нажмите на иконке Runqvfb, затем на иконке Runqpe.
 
зеленые тона экрана рабочего стола Trolltech KDE. На нем разбросано несколько иконок, и две из них используются для эмуляции среды Greenphone. Нажмите на иконке Runqvfb, затем на иконке Runqpe.
Строка 26: Строка 26:
 
встроенный в графическое представление телефона. Вторая иконка
 
встроенный в графическое представление телефона. Вторая иконка
 
запустит ОС Qtopia внутри эмулируемой среды [строго говоря, Qtopia
 
запустит ОС Qtopia внутри эмулируемой среды [строго говоря, Qtopia
не является самостоятельной ОС – она базируется на Linux, прим.
+
не является самостоятельной ОС — она базируется на Linux, — прим.
 
ред.]. В результате вы увидите виртуальное представление Greenphone
 
ред.]. В результате вы увидите виртуальное представление Greenphone
 
на рабочем столе, которое ведет себя как настоящее, когда вы нажимаете на кнопки. (Любители повозиться с оборудованием могут подробнее узнать о Greenphone на сайте http://www.trolltech.com/products/Qtopia/greenphone или в обзоре [[LXF91:Greenphone|LXF91]].)
 
на рабочем столе, которое ведет себя как настоящее, когда вы нажимаете на кнопки. (Любители повозиться с оборудованием могут подробнее узнать о Greenphone на сайте http://www.trolltech.com/products/Qtopia/greenphone или в обзоре [[LXF91:Greenphone|LXF91]].)
Строка 36: Строка 36:
 
Help. Только об этих файлах и надо позаботиться при создании собственного приложения.
 
Help. Только об этих файлах и надо позаботиться при создании собственного приложения.
  
В командной строке наберите source /opt/Qtopia/SDK/scripts/develx86.sh , чтобы установить переменные окружения для нормальной компиляции примера. Затем потребуется команда qtopiamake, она подготовит исходные файлы примера для механизма сборки Qtopia. После
+
В командной строке наберите source /opt/Qtopia/SDK/scripts/develx86.sh, чтобы установить переменные окружения для нормальной компиляции примера. Затем потребуется команда qtopiamake, она подготовит исходные файлы примера для механизма сборки Qtopia. После
 
этого пробежитесь по знакомым командам make clean, make и make
 
этого пробежитесь по знакомым командам make clean, make и make
 
install, чтобы собрать и установить пример проекта. После этого необходимо попросить Greenphone обновить свой список приложений, так
 
install, чтобы собрать и установить пример проекта. После этого необходимо попросить Greenphone обновить свой список приложений, так
Строка 44: Строка 44:
 
его подключили. Просто перейдите в папку Приложения (Applications)
 
его подключили. Просто перейдите в папку Приложения (Applications)
 
в телефоне и выберите иконку Example (она выглядит как красный
 
в телефоне и выберите иконку Example (она выглядит как красный
знак вопроса на белом фоне). Запустится простое приложение, которое Trolltech включило в состав SDK – и вы сразу же обнаружите, что
+
знак вопроса на белом фоне). Запустится простое приложение, которое Trolltech включило в состав SDK — и вы сразу же обнаружите, что
 
оно не делает ничего. Абсолютно ничего. Все, что можно сделать, это
 
оно не делает ничего. Абсолютно ничего. Все, что можно сделать, это
нажать на Выход (Quit). Наша задача – заставить программу выполнять
+
нажать на Выход (Quit). Наша задача — заставить программу выполнять
 
полезную работу.
 
полезную работу.
  
Строка 52: Строка 52:
 
Прежде чем добавлять какую-либо функциональность, необходимо
 
Прежде чем добавлять какую-либо функциональность, необходимо
 
спроектировать пользовательский интерфейс. Как и для других KDE- и Qt-приложений, для этого есть инструмент Designer, и вы должны
 
спроектировать пользовательский интерфейс. Как и для других KDE- и Qt-приложений, для этого есть инструмент Designer, и вы должны
видеть его иконку на рабочем столе – она похожа на пару штангенциркулей. При первом запуске программа спросит, какой вид формы
+
видеть его иконку на рабочем столе — она похожа на пару штангенциркулей. При первом запуске программа спросит, какой вид формы
 
вы хотите спроектировать. Так как мы собираемся загрузить пользовательский интерфейс из каталога примеров Greenphone, то нажмите
 
вы хотите спроектировать. Так как мы собираемся загрузить пользовательский интерфейс из каталога примеров Greenphone, то нажмите
 
Закрыть (Close).
 
Закрыть (Close).
  
 
Если вы никогда не видели Designer, то, возможно, его интерфейс
 
Если вы никогда не видели Designer, то, возможно, его интерфейс
вас слегка отпугнёт. Панели разбросаны по всему экрану – он выглядит
+
вас слегка отпугнёт. Панели разбросаны по всему экрану — он выглядит
 
как Gimp на стероидах. Каждая панель заполнена опциями: небольшими окошками и выпадающими меню. Вам надо отыскать опцию Open
 
как Gimp на стероидах. Каждая панель заполнена опциями: небольшими окошками и выпадающими меню. Вам надо отыскать опцию Open
 
Form (Открыть форму) в меню File (Файл). Далее выберите Projects
 
Form (Открыть форму) в меню File (Файл). Далее выберите Projects
Строка 77: Строка 77:
  
 
Выделите исходный текст примера и нажмите Delete, чтобы удалить
 
Выделите исходный текст примера и нажмите Delete, чтобы удалить
его с формы – мы оставим только кнопку Quit. Можете расположить
+
его с формы — мы оставим только кнопку Quit. Можете расположить
 
компоненты по своему вкусу. Текст на трех метках изменим на Amount,
 
компоненты по своему вкусу. Текст на трех метках изменим на Amount,
 
From и To соответственно (щелкните правой кнопкой мыши и выберите Change text (Сменить текст)). Если вы хотите выровнять текст по
 
From и To соответственно (щелкните правой кнопкой мыши и выберите Change text (Сменить текст)). Если вы хотите выровнять текст по
Строка 89: Строка 89:
 
(щелкните правой кнопкой и выберите Edit items (Редактировать элементы)). Для начала добавьте inches и cm.
 
(щелкните правой кнопкой и выберите Edit items (Редактировать элементы)). Для начала добавьте inches и cm.
  
Добавив и отредактировав все необходимые компоненты, пробегитесь по руководству расположения компонентов на следующей странице, затем сохраните результаты, переписав оригинальные файлы. Если у вас не хватает прав это сделать, то откройте Konsole и наберите  
+
Добавив и отредактировав все необходимые компоненты, пробегитесь по руководству расположения компонентов на следующей странице, затем сохраните результаты, переписав оригинальные файлы. Если у вас не хватает прав это сделать, то откройте Konsole и наберите
 
<source lang="bash">sudo chmod -R 777 projects</source>
 
<source lang="bash">sudo chmod -R 777 projects</source>
  
Строка 115: Строка 115:
 
Это знаменитый механизм сигналов и слотов от Trolltech, и мы здесь сообщаем приложению, чтобы при нажатии на кнопку
 
Это знаменитый механизм сигналов и слотов от Trolltech, и мы здесь сообщаем приложению, чтобы при нажатии на кнопку
 
pushButton выполнялась функция conVert:
 
pushButton выполнялась функция conVert:
clicked – это сигнал, а conVert – это слот.
+
clicked — это сигнал, а conVert — это слот.
 
Необходимо добавить код для слота,
 
Необходимо добавить код для слота,
 
который будет выполнять преобразование, а для этого нужно подключить заголовочные файлы для каждого используемого компонента.
 
который будет выполнять преобразование, а для этого нужно подключить заголовочные файлы для каждого используемого компонента.
Строка 125: Строка 125:
 
#include <qcombobox.h>
 
#include <qcombobox.h>
 
</source>
 
</source>
Наконец, добавим функцию преобразования – припишем следующий код в
+
Наконец, добавим функцию преобразования — припишем следующий код в
 
конец файла example.cpp:
 
конец файла example.cpp:
 
<source lang="cpp-qt">
 
<source lang="cpp-qt">
Строка 145: Строка 145:
 
называется Example). Вкратце, мы делаем вот что: считываем значение
 
называется Example). Вкратце, мы делаем вот что: считываем значение
 
из поля ввода и преобразуем его в число, а потом проверяем значения в обоих выпадающих списках. Мы предполагаем, что первый вход
 
из поля ввода и преобразуем его в число, а потом проверяем значения в обоих выпадающих списках. Мы предполагаем, что первый вход
будет cm, а второй – inches. Если cm выбрано в качестве первой записи,
+
будет cm, а второй — inches. Если cm выбрано в качестве первой записи,
 
то выражение if проверит значение во втором Combo box. Если это ‘1’,
 
то выражение if проверит значение во втором Combo box. Если это ‘1’,
 
то это должно быть, дюймы, и мы производим преобразование величины, полученной из поля ввода. Наконец, мы посылаем это значение
 
то это должно быть, дюймы, и мы производим преобразование величины, полученной из поля ввода. Наконец, мы посылаем это значение
Строка 152: Строка 152:
 
Очевидно, надо еще немало потрудиться, прежде чем программа
 
Очевидно, надо еще немало потрудиться, прежде чем программа
 
станет действительно полезной, но она функционирует. И к тому же
 
станет действительно полезной, но она функционирует. И к тому же
занимает меньше десяти строк! Вот краткий список возможных нововведений. Добавьте другие возможности конвертации – дюймы в сантиметры, например, или метры в ярды. Потом проверьте корректность
+
занимает меньше десяти строк! Вот краткий список возможных нововведений. Добавьте другие возможности конвертации — дюймы в сантиметры, например, или метры в ярды. Потом проверьте корректность
 
ввода и отобразите ошибку, если введенное значение не есть число. Вы
 
ввода и отобразите ошибку, если введенное значение не есть число. Вы
 
даже можете добавить возможность сохранять наиболее популярные
 
даже можете добавить возможность сохранять наиболее популярные

Текущая версия на 17:19, 12 июля 2008

Содержание

[править] Закодируй Greenфон

Для разработки вашего первого мобильного приложения не надо ни быть крутым хакером, ни даже иметь сам Greenphone, пишет Грэм Моррисон.

Trolltech Greenphone — открытая платформа, и инструменты для разработки под нее доступны по лицензии GPL. А значит, еще никогда не было так просто создать собственное приложение для мобильного телефона — до того просто, что нам хватит трех страниц, чтобы показать это. Наша программа будет всего-навсего пересчитывать сантиметры в дюймы, но ее так же легко можно употребить как конвертор валют или расширить любыми способами. Знакомство с С++ вам поможет, но если вы таковым не располагаете — вот отличный шанс научиться.

Greenphone использует особую версию Trolletch Qtopia API, у которого много общего с Qt API, используемом для создания KDE-приложений. Community SDK от сообщества Greenphone (http://www.qtopia.net/modules/mydownloads/singlefile.php?lid=22), необходимый для разработки GPL-приложений для Greenphone, представляет собой образ CD. Он построен на основе VMware для использования вместе со свободно распространяемым VMware Player. Это предустановленный дистрибутив Linux, включающий набор инструментов разработчика GNU, а также собственные библиотеки Trolltech, заголовочные файлы и приложения с графическим пользовательским интерфейсом. Так как это образ VMware, то вам не нужен Linux — VMware Player также доступен и под Windows. Но, что более важно, вам не нужен даже Greenphone: Trolltech предоставляет собственный «Эмулятор Greenphone», и вы можете играть с виртуальным телефоном, не боясь повредить оборудование.

[править] Создание среды разработки

Первый шаг — установка Community SDK со скачанного образа CD. После этого у вас появится каталог с файлами VMware, которые необходимо загрузить в виртуальную машину. После ее запуска вы увидите зеленые тона экрана рабочего стола Trolltech KDE. На нем разбросано несколько иконок, и две из них используются для эмуляции среды Greenphone. Нажмите на иконке Runqvfb, затем на иконке Runqpe. Первая иконка запустит виртуальный фрейм-буфер для Greenphone, встроенный в графическое представление телефона. Вторая иконка запустит ОС Qtopia внутри эмулируемой среды [строго говоря, Qtopia не является самостоятельной ОС — она базируется на Linux, — прим. ред.]. В результате вы увидите виртуальное представление Greenphone на рабочем столе, которое ведет себя как настоящее, когда вы нажимаете на кнопки. (Любители повозиться с оборудованием могут подробнее узнать о Greenphone на сайте http://www.trolltech.com/products/Qtopia/greenphone или в обзоре LXF91.)

Виртуальная машина включает каркас для простого приложения Greenphone. Вы можете обнаружить его, нажав на иконку Konsole для открытия командной строки и набрав cd projects/application для перехода в каталог, содержащий исходный код. Просмотрев содержимое каталога, вы увидите исходный код (example.h и example.cpp), пользовательский интерфейс (examplebase.h) и документацию в каталоге Help. Только об этих файлах и надо позаботиться при создании собственного приложения.

В командной строке наберите source /opt/Qtopia/SDK/scripts/develx86.sh, чтобы установить переменные окружения для нормальной компиляции примера. Затем потребуется команда qtopiamake, она подготовит исходные файлы примера для механизма сборки Qtopia. После этого пробежитесь по знакомым командам make clean, make и make install, чтобы собрать и установить пример проекта. После этого необходимо попросить Greenphone обновить свой список приложений, так что наберите gph -rescan.

Теперь вы готовы запустить полученное приложение, как с помощью виртуального Greenphone, так и настоящего оборудования, если вы его подключили. Просто перейдите в папку Приложения (Applications) в телефоне и выберите иконку Example (она выглядит как красный знак вопроса на белом фоне). Запустится простое приложение, которое Trolltech включило в состав SDK — и вы сразу же обнаружите, что оно не делает ничего. Абсолютно ничего. Все, что можно сделать, это нажать на Выход (Quit). Наша задача — заставить программу выполнять полезную работу.

[править] Проектируем пользовательский интерфейс

Прежде чем добавлять какую-либо функциональность, необходимо спроектировать пользовательский интерфейс. Как и для других KDE- и Qt-приложений, для этого есть инструмент Designer, и вы должны видеть его иконку на рабочем столе — она похожа на пару штангенциркулей. При первом запуске программа спросит, какой вид формы вы хотите спроектировать. Так как мы собираемся загрузить пользовательский интерфейс из каталога примеров Greenphone, то нажмите Закрыть (Close).

Если вы никогда не видели Designer, то, возможно, его интерфейс вас слегка отпугнёт. Панели разбросаны по всему экрану — он выглядит как Gimp на стероидах. Каждая панель заполнена опциями: небольшими окошками и выпадающими меню. Вам надо отыскать опцию Open Form (Открыть форму) в меню File (Файл). Далее выберите Projects (Проекты) > Application (Приложение), и откройте затаившийся там файл examplebase.ui. Теперь вы должны узреть интерфейс нашего пустого приложения для Greenphone.

Сейчас нам необходимо создать интерфейс пользователя для программы-конвертера. Нажмите на текст внутри окна, затем щелкните правой кнопкой и выберите Break Layout (Разбить компоновку) из меню Form (Форма). Таким образом мы разблокируем компоненты внутри окна и сможем передвигать их и добавлять новые. Нам понадобятся одно поле ввода, которое будет принимать входную величину, и два выпадающих меню для выбора входного и выходного формата. Также потребуется поле вывода для отображения конечного результата и кнопка для осуществления преобразования.

Чтобы добавить эти компоненты, перетащите их из панели компонентов, расположенной слева на экране. Из раздела Display Widgets нам понадобятся четыре метки и один LCD Number для вывода результата. Из раздела Input Widgets выберите два Combo Box и один компонент Line Edit для ввода значения. Наконец, нам нужна кнопка Push Button из списка Buttons.

Выделите исходный текст примера и нажмите Delete, чтобы удалить его с формы — мы оставим только кнопку Quit. Можете расположить компоненты по своему вкусу. Текст на трех метках изменим на Amount, From и To соответственно (щелкните правой кнопкой мыши и выберите Change text (Сменить текст)). Если вы хотите выровнять текст по центру, то выберите свой компонент и свойство alignment из Property Editor (Редактор Свойств) и измените горизонтальное выравнивание на AlignHCenter.

Последнюю метку можно использовать как заголовок для приложения. Размер шрифта для этого компонента может быть выбран из списка шрифтов в редакторе свойств. Вам также потребуется изменить текст на Push Button, и добавить пункты преобразования в Combo Box’ы (щелкните правой кнопкой и выберите Edit items (Редактировать элементы)). Для начала добавьте inches и cm.

Добавив и отредактировав все необходимые компоненты, пробегитесь по руководству расположения компонентов на следующей странице, затем сохраните результаты, переписав оригинальные файлы. Если у вас не хватает прав это сделать, то откройте Konsole и наберите

sudo chmod -R 777 projects


[править] Пишем код

Пользовательский интерфейс спроектирован; время добавлять функции, чтобы конвертор обрел законченную форму. Мы можем это сделать, добавив одну функцию в наш пример. Откройте файл example.h и добавьте ‘void conVert();’ сразу под методом ‘void goodbye();’ в разделе ‘private slots’. Именно эта функция будет выполняться, когда вы нажмёте на кнопку Convert (Преобразовать) в приложении.

Далее, откройте файл example.cpp и добавьте следующий код сразу за строкой, начинающейся с ‘connect’:

connect (pushButton,SIGNAL(clicked()),this,SLOT(conVert()));

Это знаменитый механизм сигналов и слотов от Trolltech, и мы здесь сообщаем приложению, чтобы при нажатии на кнопку pushButton выполнялась функция conVert: clicked — это сигнал, а conVert — это слот. Необходимо добавить код для слота, который будет выполнять преобразование, а для этого нужно подключить заголовочные файлы для каждого используемого компонента. Добавьте в начало файла следующий код:

#include <qstring.h>
#include <qlineedit.h>
#include <qlcdnumber.h>
#include <qcombobox.h>

Наконец, добавим функцию преобразования — припишем следующий код в конец файла example.cpp:

void Example::conVert()
{
 QString amount_str = lineEdit->text();
 float amount = amount_str.toFloat();
 switch (comboBox->currentIndex()){
  case 0:
   if (comboBox_2->currentIndex()) == 1)
   amount = amount * 0.3937;
   break;
 }
 lcdNumber->display(amount);
}

Наберите make, make install и gph -rescan, чтобы установить вашу новую программу, и запустите ее из списка приложений (она все еще называется Example). Вкратце, мы делаем вот что: считываем значение из поля ввода и преобразуем его в число, а потом проверяем значения в обоих выпадающих списках. Мы предполагаем, что первый вход будет cm, а второй — inches. Если cm выбрано в качестве первой записи, то выражение if проверит значение во втором Combo box. Если это ‘1’, то это должно быть, дюймы, и мы производим преобразование величины, полученной из поля ввода. Наконец, мы посылаем это значение на LCD-дисплей приложения.

Очевидно, надо еще немало потрудиться, прежде чем программа станет действительно полезной, но она функционирует. И к тому же занимает меньше десяти строк! Вот краткий список возможных нововведений. Добавьте другие возможности конвертации — дюймы в сантиметры, например, или метры в ярды. Потом проверьте корректность ввода и отобразите ошибку, если введенное значение не есть число. Вы даже можете добавить возможность сохранять наиболее популярные преобразования.

Если вы закончите этот проект, мы будем рады увидеть результаты. Пошлите нам ваш исходный код (letters@linuxformat.ru), и мы положим его на наш DVD.

Персональные инструменты
купить
подписаться
Яндекс.Метрика