motofan logo
       
> 

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

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


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

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

Рейтинг: 680



Существует проблема: при двух и более эльфах, которые требуют управление с рабочего стола, и при приходе ивента клавиши вызывают 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 килобайт ) Кол-во скачиваний: 303


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


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255
Модель телефона: E398, Milestone 2
Прошивка: 49R w/ElfPack2


Настроение:
^^,



Рейтинг: 1224



Цитата(DmT @ Сегодня, 13:09)

при приходе ивента клавиши вызывают APP_ConsumeEv
*

Ага, хотя и не должны этого делать! Может, лучше вместо того, чтобы такой огород городить просто ткнуть носом горе-разработчиков, кто такие нехорошие вещи делает?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 27.12.2008, 13:53


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

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

Рейтинг: 680



Andy51,
Ну и что ты предлагаешь? Если все равно нужны контролы на хомскрине
Точно знаю что ToolBar и Tunes "дерутся" за рабочий стол.

Сообщение отредактировал DmT - 27.12.2008, 13:56
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
om2804
сообщение 27.12.2008, 15:43


МотоКодер
******

Группа: Разработчики
Сообщений: 786
Регистрация: 14.8.2006
Из: Архангельск
Пользователь №: 95 055
Модель телефона: E398
Прошивка: DaR
Победитель конкурса 2008

Рейтинг: 1650



Andy51, а как быть без APP_ConsumeEv ?
На рабочем столе будут тогда вызываться приложения, назначенные на джой
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 27.12.2008, 16:37


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

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

Рейтинг: 680



om2804,
Ну ты то согласен поправить Tunes таким образом или есть идеи лучше?

Добавлено позже (27.12.2008, 21:48):
Ещё вот такой вопрос: Нужно ли встраивать функции рисования в менеджер?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
tim apple
сообщение 27.12.2008, 17:24


Мастер
****

Группа: Разработчики
Сообщений: 260
Регистрация: 13.7.2007
Из: РФ, Башкирия, Стерлитамак
Пользователь №: 141 375
Модель телефона: ---
Прошивка: ---

Рейтинг: 435



можно проще:
эльф с запросом о регистрации в HomeScreenTools передает пару ивентов (из своей базы ивентов).
HomeScreenTools сам знает, кто в фокусе и вызовет нужный ивент.
+ ивенты будут уникальны
+ проще =)

также можно передавать только один ивент и вызываться он будет с параметром.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
om2804
сообщение 27.12.2008, 20:57


МотоКодер
******

Группа: Разработчики
Сообщений: 786
Регистрация: 14.8.2006
Из: Архангельск
Пользователь №: 95 055
Модель телефона: E398
Прошивка: DaR
Победитель конкурса 2008

Рейтинг: 1650



Tunes переделаю конечно

Сообщение отредактировал om2804 - 27.12.2008, 21:15
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 28.12.2008, 3:15


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

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

Рейтинг: 680



om2804,
tim apple,
Andy51,
Теперь про графичские функции. Я думаю сделать надо, чтоб упростить создание, так называемых, аплетов. Ну например элементарно выводить строчку. Сейчас для этого нужно строить диалог, затем его как то акуратно обрабатывать. При нескольких таких эльфах это сильно глючит.
Предлагаю ввести единую канву(Canvas), которая обслуживается HomeScreenTools. А все остальные эльфы рисуют через API менеджера(на той же самой канве).

А вот ещё подумал.
Как лучше сделать:
уникальность ивентов клавиш касается только рабочего стола, или все события клавиатуры обрабатываются через HomeScreenTools?

Сообщение отредактировал DmT - 28.12.2008, 6:53
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Мачо
сообщение 28.12.2008, 8:45


Ветеран
*****

Группа: Легенды MotoFan.Ru
Сообщений: 456
Регистрация: 26.7.2004
Из: Киров
Пользователь №: 8 569
Модель телефона: Е398 (умер), E6
Прошивка: Dream A Reality 2.0
Финалист Конкурса 2010

Рейтинг: 1410



Про проблему тюнса и хоум скрина. А не проще приоритет хоум скрина уменьшить?
Если тюнс активен то эвенты до хс и не дойдут. Если нет то дойдут.

а ша у всех эльфов приоритет один вот и конфликты.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 28.12.2008, 11:28


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255
Модель телефона: E398, Milestone 2
Прошивка: 49R w/ElfPack2


Настроение:
^^,



Рейтинг: 1224



DmT, а кстати да! Мачо дело говорит - просто возьмём и сделаем вместо всей твоей навороченной системы фоновый "сервис", который будет работать на приоритете чуть выше айдла и по запросу делать consume определённых клавиш. Тогда клавиатура поделится сама собой между фоновыми эльфами, а тем просто достаточно будет указать какие клавиши они "отнимают" у айдла.

По поводу графики - в EP2 предусмотрена система для вывода графики напрямую через драйвер. Причём основана она на коллбеках, регистрирующихся на обновление участка экрана. Я полагаю, что такой способ вывода графики на раб.стол эффективнее, быстрее и менее глючен.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 30.12.2008, 6:46


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

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

Рейтинг: 680



Новый вариант:
Эльфы сами решают работать с клавиатурой или нет по состоянию активности.
при переключении создаются два ивента:
"потерял фокус"(в атаче он содержит идентификатор эльфа, который был активен до переключения) и
"получил фокус"(в атаче он содержит идентификатор эльфа, на который переключились).
Думаю это самый правильный и простой вариант, лишь бы разработчики не поленились его проработать.
PS Эльф должен регистрировать каждый отрисовывающийся регион экрана, который должен работать с клавиатурой.

И ещё, надо ли делать графические функции?(уже решите наконец)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 31.12.2008, 14:12


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Цитата(DmT @ Вчера, 12:46)

Эльф должен регистрировать каждый отрисовывающийся регион экрана, который должен работать с клавиатурой.
*


Выражайся понятнее smile.gif я так понял, эльф должен регистрировать каждый регион экрана, за который он отвечает, и все клавиши, которые он перехватывает в режиме ожидания?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 4.1.2009, 18:15


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

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

Рейтинг: 680



Готово. Смотрим спецификацию в первом посте.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Eduardu
сообщение 5.1.2009, 7:40


Новичок
*

Группа: Пользователи
Сообщений: 16
Регистрация: 2.12.2007
Из: Мичуринск city
Пользователь №: 155 699
Модель телефона: E 398
Прошивка: Dream reality v.1.1

Рейтинг: 0



Глупый вопрос назрел: это уже готовый эльф?! Скачал, поставил, ни че не происходит...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 5.1.2009, 7:40


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



Цитата
Эльф должен регистрировать каждый отрисовывающийся регион экрана, который должен работать с клавиатурой.

Идея хорошая...но главное, чтоб всё не закончилось тем, что на каждую клавишу и компонент свой отдельный эльф будет... unsure.gif

Добавлено позже (5.1.2009, 11:42):
Eduardu, визуально ничего и не произойдёт... это эльф для других эльфов...т.е. его запуск позволит работать тюнсу и тулбару на рабочем столе например))

Сообщение отредактировал Baat - 5.1.2009, 7:43
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
fkcoder
сообщение 5.1.2009, 8:18


Eve
******

Группа: Разработчики
Сообщений: 1 014
Регистрация: 31.1.2006
Из: Новокузнецк
Пользователь №: 68 287
Модель телефона: L9 ATRIX 4G iPhone SE E1

Рейтинг: 650



да, только тюнс никто не переписал и тулбара еще нет. Так что эльф этот пока что безполезен.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 5.1.2009, 8:20


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

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

Рейтинг: 680



Цитата(baat @ Сегодня, 12:40)

чтоб всё не закончилось тем, что на каждую клавишу и компонент свой отдельный эльф будет...
*


Зачем? ну контрол может использовать любые клавиши кроме вверх и вниз.
А если надо два контрола распложенных вертикально, то регистрируй иих оба, но с разными именами(вместо app_name подставь пару других строк, только чтоб повторений небыло)

Добавлено позже (5.1.2009, 13:24):
lavmen,
ну ом пообещал, что добавит поддержку.
тулбар я вчера поправил.
спецификацию выложил.
ждите...

Добавлено позже (5.1.2009, 13:26):
Eduardu,
ничего происхить и не должно. суть в том что этот эльф позволит переключаться межу другими эльфами, работающими на рабочем столе, как по Alt+Tab на компьютере.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 5.1.2009, 8:42


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



lavmen ты тулбар на сайте видешь? и я не вижу))) а он ЕСТЬ!!!
DmT, ты в тулбаре запуск явы сделал? и сворачивание... а то как-то неудобно... и ещё надо что-то с инвентами думать...которые за несколько действий отвечают... а то по метке одно, а в тулбаре другое... а так прикольно работет) аля нокия... я картинки новые рисую...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 5.1.2009, 13:16


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255
Модель телефона: E398, Milestone 2
Прошивка: 49R w/ElfPack2


Настроение:
^^,



Рейтинг: 1224



DmT, кстати в EP2 можно отправить ивент конкретному эльфу wink.gif Тоесть, другие приложения получать ивент не будут, и тогда не понадобится имя, а достаточно будет какогонить ID
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 5.1.2009, 13:34


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

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

Рейтинг: 680



Andy51,
Да пусть получают все. Когда эльф получает ивент и видит что там не его имя он себе ставит флаг что он не активен. Так удобнее.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 5.1.2009, 14:20


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255
Модель телефона: E398, Milestone 2
Прошивка: 49R w/ElfPack2


Настроение:
^^,



Рейтинг: 1224



DmT, это лишние действия. Пускай будет лучше ивент потери фокуса. Если у нас куча таких клиентских эльфов, и каждому надо поймать ивент, проверить свои имя/имена... Давай не будем расходовать вычислительные ресурсы понапрасну?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 5.1.2009, 14:30


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

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

Рейтинг: 680



Andy51,
Ну ладно, ладно. Соглашусь пожалуй.
Только когда ещё EP2 выйдет...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 6.1.2009, 9:36


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

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

Рейтинг: 680



Обновил менеджер. Прошу протестировать на предмет остановки часов на рабочем столе и в сс.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Serg398
сообщение 6.1.2009, 11:19


Интересующийся
**

Группа: Пользователи
Сообщений: 95
Регистрация: 25.6.2007
Из: Белгород
Пользователь №: 139 399
Модель телефона: E398
Прошивка: 79R + Elf's

Рейтинг: 7



DmT, на 79R не работает! Часы попрежнему идут! Либа 5.4
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 6.1.2009, 12:27


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

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

Рейтинг: 680



Serg398,
А что именно не работает?
Цитата(Serg398 @ Сегодня, 16:19)

Часы попрежнему идут!
*


???
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Serg398
сообщение 6.1.2009, 12:44


Интересующийся
**

Группа: Пользователи
Сообщений: 95
Регистрация: 25.6.2007
Из: Белгород
Пользователь №: 139 399
Модель телефона: E398
Прошивка: 79R + Elf's

Рейтинг: 7



Объясни подробнее что должно произойти? По твоим словам я понял должна произойти остановка часов!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
K-E-N-N-Y
сообщение 6.1.2009, 15:41


MotoCrazy^^
*****

Группа: Пользователи
Сообщений: 608
Регистрация: 9.4.2008
Из: Саратов
Пользователь №: 169 076
Модель телефона: Optimus P500
Прошивка: Android 2.2.1
Победитель конкурса 2008

Рейтинг: 533



Serg398, я думаю наоборот они не должны останавливаться
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
croccio
сообщение 24.1.2009, 16:30


Мастер
****

Группа: Пользователи
Сообщений: 254
Регистрация: 27.1.2008
Пользователь №: 161 521
Модель телефона: L7 Slvr, c350

Рейтинг: 11



how this elf work?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
RuslanchiK
сообщение 1.2.2009, 13:33


Мастер
****

Группа: Пользователи
Сообщений: 209
Регистрация: 4.11.2005
Из: Уфа
Пользователь №: 57 063
Модель телефона: E398, Zn5
Прошивка: E398-79R, Zn5-ZE0.9b


Настроение:
ИНЖЕНЕР!!!



Рейтинг: 44.5



DmT, так есть ли твой тулбар, он же HsT о котором все так твердят?
А то найти никак не могу(((
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
PUSYA
сообщение 3.2.2009, 19:30


Мотопусь
*****

Группа: Девушки в форме
Сообщений: 648
Регистрация: 19.6.2006
Из: Москва
Пользователь №: 88 367
Модель телефона: Moto G


Настроение:
Смерть - идеал свободы. Жизнь - рабство желаний.



Рейтинг: 1333



Цитата(RuslanchiK @ 1.2.2009, 18:33)

тулбар, он же HsT
*


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

PS Если не поняли, скачать ещё нельзя.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
CrayZor
сообщение 3.2.2009, 21:10


Мастер
****

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

Рейтинг: 70



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

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

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

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

 



Текстовая версия Сейчас: 12.6.2025, 22:00

Форум живёт: