- PVSM.RU - https://www.pvsm.ru -
В данной статье будет дано введение в разработку приложений для платформы MeeGo. Начиная с самых азов, установки и настройки вспомогательного программного обеспечения, и заканчивая отладкой и развертыванием приложения. Мы создадим простое приложение, выполняющее основные операции над числами (калькулятор), данное приложенное довольно простое и имеет множество способов реализации, а мы рассмотрим пример нестандартного решения представленный в книге [7].
MeeGo — открытая платформа, анонсирована корпорациями Intel и Nokia на мобильном конгрессе в Барселоне, которая станет гибридом мобильных систем Moblin (Mobile Linux) и Maemo. Первая версия (1.0) MeeGo появилась 26 мая 2010 года, а устройства на базе ОС — появятся до конца 2010 года.
MeeGo предназначена для работы на широком спектре устройств, включая смартфоны, планшеты и нетбуки. Это позволит создавать приложения, которые без адаптации будут работать сразу на нескольких видах устройств. Магазином приложений для MeeGo станет принадлежащий Nokia Ovi Store.
MeeGo — независимая операционная система, которая, однако, использует наработки таких проектов, как Maemo, Moblin, Fedora и Debian.
Система MeeGo является полностью открытой, её исходные коды опубликованы. Intel и Nokia заявили, что все компании-производители аппаратного обеспечения получат равный доступ к MeeGo.
MeeGo будет сосуществовать с платформой Symbian, которая сейчас используется для смартфонов. Новая ОС, возможно, будет устанавливаться в лидирующие модели мобильных телефонов. В частности, она может быть установлена на смартфон Nokia N900.
Первым шагом при знакомстве с данной платформой и особенно разработкой для нее необходимо установить вспомогательное программное обеспечение, а именно Qt 4.7 SDK, Qt Creator, MeeGo Touch Framework (MTF).
При сборке возникли ошибки в следующих местах:
../libmeegotouch/src/corelib/scene/msceneeventeater.cpp
39: setFlag(QGraphicsItem::ItemStopsClickFocusPropagation);
../libmeegotouch/src/corelib/widgets/mscenewindow.cpp
105: setFlag(QGraphicsItem::ItemStopsClickFocusPropagation);
121 : setFlag(QGraphicsItem::ItemStopsClickFocusPropagation);
../libmeegotouch/src/views/mlabelview_simplce.cpp
244: staticText.setTextOption(viewPrivate->textOptions);
370: staticText2.setTextOption(staticText.textOption());
Первая ошибка заключалось, в том, что свойство ItemStopsClickFocusPropagation не является членом класса QGraphicsItem и вторая похожая ошибка. Я просто закомментировал эти строки на время.
Процесс работы над расширением функционала и отлавливание ошибок не останавливается не на минуту, и соответственно в следующих версиях MTF все ошибки будут исправлены и добавлены новые.
За более подробной информацией по установке MeeGo Touch 1.1 обращаемся к ресурсу [1].
При выполнении последней команды произойдет запуск оболочки MeeGo-Handset. Исходя от смонтированного образа (Handset или Netbook) у вас запуститься тот или иной образ.
MeeGo Handset на Xephyr

Рис. 1. MeeGo-Handset UI
MeeGo Netbook на Xephyr

Рис. 2. MeeGo-Netbook UI
Давайте запустим наш калькулятор для платформы Maemo на MeeGo-Handset и MeeGo-Netbook (исходник ниже по ссылке).
Запушенный калькулятор на MeeGo-Netbook показан на Рис. 3.

Теперь давайте запустим калькулятор на MeeGo-Handset. Для запуска приложения необходимо проделать все те же самые шаги, что и для MeeGo-Netbook, но только запустить сборку MeeGo-Handset. Запушенный калькулятор на MeeGo-Handset показан на Рис. 4.

Рис. 4. MeeGo-Handset калькулятор
Как видно на Рис. 4, калькулятор выглядит не совсем, так как мы ожидали. Давайте разберемся, в чем же проблема. А проблема в то, что для MeeGo-Handset приложения разрабатываются с помощью специального набора инструментов, а именно MeeGo Touch Framework (MTF, libmeegotouch). Давайте посмотрим, как это делается.
MeeGo Touch (libmeegotouch) это инструмент разработки приложений для мобильных устройств с сенсорными экранами, основанный на Qt. Он входит в состав MeeGo Platform API. Предоставляет все необходимые строительные блоки для создания собственных приложений, которые следуют MeeGo Handset UX принципам. Инструмент построен на основе Qt Graphics View Framework.
В Qt Creator создаем проект “Empty Project”, добавляем файлы main.cpp, calculator.cpp и calculator.h калькулятора. В файле проекта необходимо указать следующие строки для установленного MeeGo Touch (MTF 1.0):
CONFIG += meegotouch
INCLUDEPATH += /usr/local/include/meegotouch
LIBS += /usr/local/lib/libmeegotouchcore.so
/usr/local/lib/libmeegotouchsettings.so
/usr/local/lib/libmeegotouchviews.so
/usr/local/lib/libmeegotouchextensions.so
После этого мы можем приступать к изменению программы для использования его на MeeGo.
main.cpp
#include <MApplication>
#include <MApplicationWindow>
#include <MApplicationPage>
#include "calculator.h"
int main(int argc, char **argv)
{
MApplication app(argc,argv);
MApplicationWindow window;
MApplicationPage page;
Calculator *calc = new Calculator();
page.setTitle("Calculator");
page.setCentralWidget(calc);
page.appear(&window);
window.show();
return app.exec();
}
Давайте посмотрим на изменения, которые затронули main.cpp:
За подробностями обращайтесь к документации по Platfrom API [4].
calculator.h
#include <QStack>
#include <MGridLayoutPolicy> // класс, отвечающий за сеточную компоновку
#include <MButton> // класс кнопки
#include <MLayout> // главный класс компоновки
#include <MTextEdit> // класс текстового поля
#include <QGraphicsWidget> // главный класс для всех виджетов сцены (поверхности)
class Calculator : public QGraphicsWidget
{
Q_OBJECT
public:
Calculator(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0);
MButton* createButton(const QString& str);
…
private:
MTextEdit *lcdDisplay;
QStack<QString> stack;
QString strDisplay;
…
};
Чтобы добавить виджет Calculator на страницу приложения с помощью метода setCentralWidget() его необходимо унаследовать от класса QGraphicsWidget. В MTF 1.1 функция установки центрального виджета страницы setCentralWidget() принимает в качестве устанавливаемого компонента MWidget.
calculator.cpp
#include "calculator.h"
Calculator::Calculator(QGraphicsItem *parent, Qt::WindowFlags wFlags) :
QGraphicsWidget(parent, wFlags)
{
lcdDisplay = new MTextEdit();
lcdDisplay->setReadOnly(true);
lcdDisplay->setMinimumSize(150, 50);
…
MLayout *layout = new MLayout;
MGridLayoutPolicy *ptopLayout = new MGridLayoutPolicy(layout);
ptopLayout->addItem(lcdDisplay, 0, 0, 1, 4);
ptopLayout->addItem(createButton("CE"), 1, 3);
for (int i = 0; i < 4; ++i)
for (int j = 0; j < 4; ++j)
ptopLayout->addItem(createButton(aButtons[i][j]), i + 2, j);
layout->setPolicy(ptopLayout);
setLayout(layout);
}
Это в основном главные изменения, которые коснулись приложения при переносе на MeeGo-Handset. Есть некоторые изменения связанные с отображением результата вычислений с помощью QLCDNumber, т.к данного класса в MTF 1.0 не оказалось, пришлось его заменить на MTextEdit.
Результат изменений представлен на Рис. 5.

Рис. 5. MeeGo-Handset калькулятор
Как видно из представленных изменений, перенос приложения для MeeGo-Handset не составляет особого труда. Со временем MTF будет только набирать функциональность и мощь, что даст разработчикам более широкий простор для маневра и более современных и качественных приложений.
MeeGo является совместной разработкой компаний Nokia и Intel, которая только начинает набирать обороты и завоевывать рынок. Данная платформа основана на Maemo и Moblin, и вобрала в себя все преимущества этих платформ и приобрела собственные.
Платформа развивается и будет широко использоваться в ближайшем будущем. Основной акцент смешается к платформе MeeGo, которая может использоваться на многом количестве устройств, начиная мобильными устройствами и заканчивая телевизорами.
P.S
Автор: h05t
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/9485
Ссылки в тексте:
[1] qt.nokia.com/downloads: http://qt.nokia.com/downloads
[2] repo.meego.com/MeeGo/sdk/host/repos/ubuntu/10.04/: http://repo.meego.com/MeeGo/sdk/host/repos/ubuntu/10.04/
[3] download3.meego.com/meego-handset-sdk-20101012-1.1.80.20101024.1603-sda.raw.tar.bz2: http://download3.meego.com/meego-handset-sdk-20101012-1.1.80.20101024.1603-sda.raw.tar.bz2
[4] download3.meego.com/meego-netbook-sdk-20101012-1.1.80.20101024.1603-sda.raw.tar.bz2: http://download3.meego.com/meego-netbook-sdk-20101012-1.1.80.20101024.1603-sda.raw.tar.bz2
[5] download3.meego.com/meego-sdk-chroot: http://download3.meego.com/meego-sdk-chroot
[6] wiki.meego.com/SDK/Docs/1.1/Getting_started_with_the_MeeGo_SDK_for_Linux.: http://wiki.meego.com/SDK/Docs/1.1/Getting_started_with_the_MeeGo_SDK_for_Linux.
[7] wiki.meego.com/MeeGo_SDK_with_Xephyr: http://wiki.meego.com/MeeGo_SDK_with_Xephyr
[8] apidocs.meego.com/1.1/platform/html/index.html: http://apidocs.meego.com/1.1/platform/html/index.html
[9] apidocs.meego.com/1.1/core/html/index.html: http://apidocs.meego.com/1.1/core/html/index.html
[10] repo.meego.com/MeeGo/builds/: http://repo.meego.com/MeeGo/builds/
[11] wiki.meego.com/SDK/Docs/1.1/Creating_Hello_World: http://wiki.meego.com/SDK/Docs/1.1/Creating_Hello_World
[12] blog.telaic.pl/?p=63: http://blog.telaic.pl/?p=63
[13] ru.wikipedia.org/wiki/MeeGo: http://ru.wikipedia.org/wiki/MeeGo
[14] Полный код: http://www.sharemania.ru/0106732
[15] Оригинальная статья: http://osll.fruct.org/wiki/doku.php?id=papers:maemo_meego_programming
Нажмите здесь для печати.