Чем Писать Программы Для Meego

Чем Писать Программы Для Meego

MeeGo_3.png' alt='Чем Писать Программы Для Meego' title='Чем Писать Программы Для Meego' />Разработка приложений для Meego Harmattan Хабрахабр. Этот пост участвует в конкурсе. Писать мы будем редактор заметок с синхронизацией средствами Ubuntu One. Вся разработка будет вестись при помощи scratchboxа, он имеет некоторые преимущества в сравнении с madde, но работает исключительно в linux системах. Среди ключевых преимуществ хочется отметить то, что сборка производится в chrootе и в случае armel для эмуляции используется qemu. Сообщения с вопросами, ответы на которые уже есть в шапке темы, МиниFAQ по Терминалу на MeeGo, ответы на такие вопросы, а также. Программы MeeGo 1. MyMoves v021, Volume Setup Applet v012, CryptMee v050, TAO Translator v134, TextEditor v150. Условия максимально приближены к боевым. Это позволяет избежать дополнительной возни с настройкой кросскомпиляции. Дополнительным плюсом является наличие apt getа, способного установить все зависимости, необходимые для сборки, что несомненно понадобится при написании приложения сложнее, чем helloworld. Установка и настройка scratchboxа. Для того, чтобы установить scratchbox нужно скачать и запустить от рута этот скрипт и в дальнейшем следовать его указаниям. После установки необходимо перелогинится, чтобы пользователь был успешно добавлен в группу sbox. Нужный таргет можно выбрать с помощью sb. Остальное руководство по использованию scratchboxа можно найти здесь. Создание cmake проекта. В качестве сборщика я использую не привычный qmake, а более мощный cmake, который умеет искать зависимости, имеет кучу опций настройки и гораздо лучше подходит для кроссплатформенной разработки. В данной статье я не буду сильно углубляться в разбор системы сборки, поэтому для лучшего понимания рекомендую прочесть эту статью. Единственный минус в том, что cmake не умеет Symbian, поэтому об этой платформе пока можно забыть или же написать вручную специальный проект для сборки именно под эту платформу. Со всеми остальными cmake справляется с легкостью, поэтому в дальнейшем я планирую портировать это приложение на настольные системы и, возможно, на Андроид или даже на i. OS. Проект состоит из некоторого количества зависимых библиотек, которые подключены при помощи git submodule к основному репозиторию, для каждой из них написан свой cmake проект. Все они лежат в каталоге 3rdparty и подключены к основному проекту, поэтому сборка идт сразу с основными зависимостями, которых нет в репозиториях harmattanа. Список 3rdparty библиотек QOauth реализация протокола Oauth на Qt k. JSON Qml. Object. Model Класс, реализующий модель список обьектов. Помимо этого есть ещ внешние библиотеки, необходимые для сборки, но присутствующие в основных репах Harmattanа, к ним относится qca, давайте сразу е установим, а также установим cmake. Для систем с pgkconfigом, к которым относится и Harmattan вс просто и ясно, для систем, где его нет, будем искать в каталоге QTDIR. В случае, если cmake автоматически не нашел библиотеку, он предложит вручную задать переменные QCA2. Такой подход здорово облегчает жизнь на системах, в которых отсутствует менеджер пакетов. Теперь у нас определена переменная HARMATTAN, и можно писать подобные вещи ifHARMATTAN. В scratchboxе имеет смысл собирать уже более менее конечные версии. С плагин, реализующий Tomboy notes APIСам API я решил вынести в отдельный qml модуль, который будет доступен через директиву import. Сделано это для удобства создания множества различных реализаций GUI интерфейса. Самым сложным в процессе разработки оказалось реализовать авторизацию средствами OAuth, в процессе которой было перебрано несколько различных реализаций библиотек и на данный момент я остановился на QOauth, которая конечно не идеальна, но является вполне рабочей. Презентация На Тему Природа Хмао. На хабре есть статья с описанием этой библиотеки, поэтому сразу перейдем к решению насущных проблем. Перво наперво нам нужно получить тот самый вожделенный token. Дело это не хитрое, просто посылаем запрос на адрес и ждм, когда же нам прилетит запрос на basic авторизацию по https Ubuntu. One. Api Ubuntu. One. ApiQObject parent. QObjectparent. m. Начинаем программировать под MeeGo. Первым шагом при знакомстве с данной платформой и особенно разработкой для нее необходимо установить вспомогательное программное обеспечение, а именно Qt 4. SDK, Qt Creator, MeeGo Touch Framework MTF. Единственный минус в том, что cmake не умеет Symbian, поэтому об этой платформе пока можно забыть или же написать вручную специальный проект. В cmakeе есть переменные, которые позволяют определить платформу, на которой собирается та или иная программа, например. Opera Mobile Labs 12. Opera теперь и для MeeGo. Возможности Динамическое переформатирование вебстраницы для мобильных экранов Отправка ссылок и текста по email, SMS и MMS Text Wrap на рабочем столе Сохранение страниц для последующего просмотра. Удобно и не засоряет интерфейс лишними деталями. Тут то нам и понадобится библиотека k. В результате нам должен прийти ответ ok. Ubuntu. One. Api on. Confirm. Reply. Finished. Для совместимости с tomboy api сервер заметок требует авторизацию посредством веб браузера. Пока мне не удалось обойти эту проблему и, скрипя зубами, мне пришлось добавить в приложение webkit окошко, которое содержит кнопку разрешить данному пользователю доступ к заметкам. Этому webkit окошку мы даем указатель на наш QNetwork. Access. Manager и по успешному завершению авторизации он станет обладателем заветных cookies с данными, необходимыми для авторизации. Тут нам и пригодится QOauth. QNetwork. Reply buntu. One. Api getconst QUrl url. У каждой заметки свой guid, зная который можно с ней работать. Guid генерируетя на клиентской стороне, для этого в Qt есть соответствующие методы, находящиеся в классе QUuid, поэтому при конструировании новой заметки нужно сгенерировать для не уникальный идентификатор, по которому мы будем обращаться к ней в дальнейшем. Note NoteNotes otes. QObjectnotes. m. Ну и конечно реализуем свойства title и content class Note public QObject. Теперь в qml коде можно получать их численное значение и сравнивать между собой. Вс таки сравниваются числа, а не строки Для того, чтобы нашу реализацию api можно было использовать через import в qml мы должны в нашем модуле создать класс, унаследованный от QDeclarative. Extension. Plugin и реализовать в нем метод register. Types, который бы зарегистрировал все наши методы и классы. Qml. Binding register. Typesconst char ri. А откуда же бертся это самое uri А бертся оно из названия каталога, в котором лежит наш модуль. То есть Qt будет искать наш модуль в QML. Чтобы Qt нашла и заимпортила наш модуль нужно, чтобы в директории лежал правильно составленный файл qmldir, в котором перечислены бинарные плагины, qml и js файлы. Разработка qml интерфейса для Meego Harmattan. Основной большинства приложений на Meego является элемент Page. Stack. Window, который, как это не странно, являет собой стек страниц. Страницы добавляются в стек при помощи метода push, а извлекаются при помощи popа. Одна из страниц должна быть назначена как исходная. У каждой страницы может быть свой собственный тулбар. Можно же нескольким страницам назначать один и тот же. Qt. Quick 1. 1. import com. API. Page. Stack. Window. По сути представляет из себя обычный оранжевый прямоугольник с текстом. Tr. Обычно с помощью него у пользователя запрашивают какую либо информацию. Qt. Quick 1. 0. import com. Заодно можно увидеть способ реализации namespaceов в qmlе. На самом деле, теперь при обращении к этому свойству мы обращаемся к свойству login. Input. text. property alias password password. Input. text. content Column. Для этого common. Tools уже не очень подходит, нужны свои тулбарыTool. Bar. Layout. Если мы хотим чтобы у приложения был красивый сплеш, то можно использовать утилиту invoker. Execusrbininvoker splashusrshareappsqutimdeclarativemeegoqutim portrait. Разумеется, все картинки также необходимо не забыть установить иначе вместо красивого значка мы получим красный квадрат. Сборка deb пакета. Для сборки используется стандартный dpkg buildpackage и обычный debian, который для удобства называется debian. Секция control стандартная для debian пакетов и ее создание уже подробно было описано во многих статьях на Хабре. Рекомендую к прочтению эту серию статей. Содержимое control файла Source ubuntunotes. Section usernetwork. Priority extra. Maintainer Aleksey Sidorov lt gorthauer. Build Depends debhelper 5,locales,cmake, libgconf. Standards Version 3. Package ubuntunotes. Section usernetwork.

Чем Писать Программы Для Meego
© 2017