motofan logo
> 

BackgroundManager, менеджер приложений свёрнутых в фон

om2804
сообщение 31.12.2010, 12:22


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

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

Рейтинг: 1650



BackgroundManager скачать

Менеджер фоновых приложений. Облегчает выход из фона приложений.
Все приложения, использующие BgManager и находящиеля в фоне можно вызвать из фона через GUI (джой в центр). Первая версия поддерживает максимум 10 приложений (Но у нас пока больше и нет: MRA, mJabber, masya).Навигация по приложения осуществляется джоем влево или вправо.
Вызов GUI осуществляется нажатием * + Red.
Эльф не выгружается!
Может выводить иконки из папки зарегестрированного эльфа. (имя эльфа.gif)

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

Для работы с BgManager используем bgmanager_api.h скачать
Приложение должно ловить ивент BGMANAGER_EVENT_COMMAND (0xFF15) в любом состоянии

Код

static EVENT_HANDLER_ENTRY_T any_state_handlers[] =
{  
    { BGMANAGER_EVENT_COMMAND,    HandleBgManager },

    // Список всегда должен заканчиватся такой записью
    { STATE_HANDLERS_END,                                   NULL },
};


По нему мы узнаем, что наше приложение пытаются развернуть через BgManager

Код

UINT32 HandleBgManager( EVENT_STACK_T *ev_st,  void *app )
{
    BM_COMMAND_T attach;
    memcpy(&attach, (AFW_GetEv( ev_st ))->attachment, sizeof(BM_COMMAND_T));
    
    if (attach.command == BM_APP_SHOW)
    {
    APP_ConsumeEv( ev_st, app );
    appShow(ev_st, app); // разворачиваем (выходим из фона)
    }

    return RESULT_OK;
}


Первым делом нужно зарегестрировать свое приложение в BgManager.

Код

UINT32 Register( char* file_uri,  char* param,  UINT32 reserve )
{
    WCHAR   elf_uri[FILEURI_MAX_LEN+1];

    u_atou(file_uri, elf_uri);              
    BgManager_RegApp(app_name, elf_uri, false); // регистрируем приложение в BgManager
}


И удалить из списка BgManager при выходе из приложения

Код

/* Функция выхода из приложения */
UINT32 destroyApp( EVENT_STACK_T *ev_st,  void *app )
{
    UINT32  status, i;
    APPLICATION_T           *papp = (APPLICATION_T*) app;

    BgManager_UnregApp(app_name); // удаляем из списка BgManager

    APP_UtilUISDialogDelete(  &papp->dialog ); // удаляем созданный диалог
    /* Завершаем работу приложения */
    status = APP_Exit( ev_st, app, NULL );

    /* Выгружаем эльф */
    LdrUnloadELF(&Lib); // &Lib указывает на начало эльфа

    return status;
}


Так же необходимо при уходе в фон приложения сообщить об этом BgManager
Код

  UINT32 AppHide( APPLICATION_T * app )
{
    UINT32 status = AppChangeState(app, APP_STATE_BG, FALSE);
    BgManager_HideApp(app_name); // сообщить об уходе в фон BgManager
    return status;
}
Прикрепленный файл BackgroundManager.zip   ( 6.18 килобайт ) Кол-во скачиваний: 14
Прикрепленный файл BackgroundManager_EP1.zip   ( 24.66 килобайт ) Кол-во скачиваний: 12
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить

Сообщений в этой теме

BackgroundManager, менеджер приложений свёрнутых в фон · Эльфы, их разработка и портирование · Forum
 

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

 



Текстовая версия Сейчас: 14.7.2025, 4:17

Форум живёт: