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;
}
Менеджер фоновых приложений. Облегчает выход из фона приложений.
Все приложения, использующие 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;
}