motofan logo
4 страниц V « < 2 3 4        
> 

Управление на рабочем столе, HomeScreenTools

DmT
сообщение 27.12.2008, 10:09 Закрепленное сообщение!


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 174
Регистрация: 31.3.2007
Из: Екатеринбург
Пользователь №: 129 181

Рейтинг: 669



Существует проблема: при двух и более эльфах, которые требуют управление с рабочего стола, и при приходе ивента клавиши вызывают APP_ConsumeEv - получается черти что.
Поэтому вот нам менеджер эльфов рабочего стола - HomeScreenTools.
Информация для разработчиков:
Первое что нужно сделать - добавить себе в SDK в ивенты:
Код
#define NEW_DESKTOP_APP_EV 0xFFD0
#define DEL_DESKTOP_APP_EV 0xFFD1
#define DESKAPP_GET_FOCUS_EV 0xFFD2

Далее, если эльф использует управление на рабочем столе он должен регистрироваться, дерегистрироваться и ловить ивент сообщающий о выбранном регионе.
А теперь по порядку.
Для регистрации вызываем
Код
UINT32 RegRegionOnDesktop( EVENT_STACK_T *ev_st, APPLICATION_T *app )
{
    DESKAPP_DATA_T Iam;

    Iam.y = высота_на_которой_расположены_контрлы;
    strcpy(Iam.app_name, app_name); // вместо app_name можно использовать что угодно, лишь бы повторения небыло.
    AFW_CreateInternalQueuedEvAux(NEW_DESKTOP_APP_EV, FBF_LEAVE, sizeof(DESKAPP_DATA_T), &Iam);

    return RESULT_OK;
}

Структура данных:
Код
typedef struct
{
    char app_name[APP_NAME_LEN];
    INT16 y;
} DESKAPP_DATA_T;

При выходе вызываем:
Код
UINT32 UnRegRegion( EVENT_STACK_T *ev_st, APPLICATION_T *app )
{
    AFW_CreateInternalQueuedEvAux(DEL_DESKTOP_APP_EV, FBF_LEAVE, sizeof(app_name), (char*)app_name);

    return RESULT_OK;
}

Кроме того, надо ловить ивент DESKAPP_GET_FOCUS_EV и обрабатывать его функцией:
Код
UINT32 OnGetFocus( EVENT_STACK_T *ev_st, APPLICATION_T *app )
{
    EVENT_T     *event;

    event = AFW_GetEv(ev_st);
    if(namecmp(((DESKAPP_DATA_T*)event->attachment)->app_name, app_name)) IsActive = TRUE;
    else IsActive = FALSE;  // для мониторинга активности/неактивности
    
    // Если используется графика(что желательно) тут стоит обновить интерфейс, с учетом активности/неактивности

    return RESULT_OK;
}

Ну и обрабатывать клавиатуру надо только если IsActive == true
Для пользователей:
Если есть нужда - пропишите HomeScreenTools в авторан.

Скачать с исходниками:
Прикрепленный файл hst.zip   ( 12.2 килобайт ) Кол-во скачиваний: 297


Сообщение отредактировал DmT - 6.1.2009, 13:26
Прикрепленный файл hst.zip   ( 12.2 килобайт ) Кол-во скачиваний: 297
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
CrayZor
сообщение 3.2.2009, 21:10


Мастер
****

Группа: Пользователи
Сообщений: 166
Регистрация: 22.3.2008
Пользователь №: 167 295
Модель телефона: E398, ROKR E1, X2, G100
Прошивка: In development

Рейтинг: 54



Цитата(PUSYA @ 3.2.2009, 19:30) *

Это две абсолютно разные вещи. HST - менеджер, а ToolBar - надстройка над ним. Из-за дурацкого устройства отдельных компонентов p2k платформы проекты переписываются практически с 0. Да поможет нам Бог.

PS Если не поняли, скачать ещё нельзя.
-Очень умно Toolbar это вообще отдельный проект, а Home Screen Tools это эльф отвечающий за ловлю ивентов на рабочем столе телефона, чтоб путаницы небыло.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Управление на рабочем столе, HomeScreenTools · Эльфы, их разработка и портирование · Forum
 

4 страниц V « < 2 3 4
Закрытая темаСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 16.5.2024, 13:02

Форум живёт: