PDA

Ver la versión completa : SAMM A2 codigo fuente



Fernandodks
15/12/2010, 14:59:04
como ya dije estas son las pruebas que hacia en mi w995 este elf que edita y modifica el menu de un A2, necesita parche para funcionar
no esta terminado el elf, por eso lo dejo aqui si alguien quiere continuar y terminarlo o algo adelante.
NOTA: le borre algunas cosas que no podia poner y esta echo en una revision muy vieja de lib_clara asi que lo mas probable es que tenga errores al compilar.
Si tienen algunda duda que yo pueda y quiera aclarar lo are.

#include "..\\include\Lib_Clara.h"
#include "..\\include\Dir.h"





typedef struct
{
BOOK bk;
void (*func)(GUI *gui);
void (*func2)(GUI_ONEOFMANY* gui, LIST* lst, int unk);
void (*func3) (bool b);
bool isselected;
GUI *gui;
GUI_ONEOFMANY* gui_skin;
int PositionSkin;
int numofskins;


}SAMMA2;

void (*oldRedraw)(DISP_OBJ *,int r1,int r2,int r3);
void myRedraw(DISP_OBJ* D_O, int p, int b, int c);


//=======================BOOK =========================
DISP_OBJ * DispObj_Menu;
char ListSkinBuff[1000];

SAMMA2 * SAMMBook;


//=========================Menu Items===================



//===========================

int TerminateElf(void * ,BOOK* book)
{
FreeBook(book);
return(1);
}

typedef struct
{
BOOK * book;
}MSG;

int girate()
{
BOOK *bk= Display_GetTopBook(0);

int i=BookObj_GetDisplayOrientation( bk);

BookObj_SetDisplayOrientation( bk,i==0? 1 : 0);


return 0;
}


int NewKey(int key, int r1 , int mode)
{

if (key==0x30 )
{

// girate();
// CreateList_of_Skins();
FSTAT _fstat;
if (fstat(L"/Card/Other/Zbin/config/Altec",L"Skin.skn",&_fstat) ==0 && _fstat.fsize>0)
{
debug_printf( " \n SAMM: si hay archivo aquiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii " );
}

}


return 0;
}





void OnBackSkin(BOOK * bk, GUI *)
{
GUIObject_Destroy((GUI*)SAMMBook->gui_skin);
BookObj_ReturnPage(bk ,ACCEPT_EVENT);
}







void CreateConfigMenuSkin(BOOK *bk)
{
SAMMBook->gui_skin=CreateOneOfMany(bk);

GUIObject_SetTitleText(SAMMBook->gui_skin,STR("Skins"));
debug_printf( " \n SAMM: se title skins \n ");
OneOfMany_SetItemCount(SAMMBook->gui_skin , SAMMBook->numofskins);
debug_printf( " \n SAMM: setitem count %d \n ",SAMMBook->numofskins);
// OneOfMany_SetonMessage(SAMMBook->gui_skin, MessageOFM);
OneOfMany_SetChecked(SAMMBook->gui_skin, SAMMBook->PositionSkin);
debug_printf( " \n SAMM: set checked position \n ");
GUIObject_SetStyle(SAMMBook->gui_skin, 9);
debug_printf( " \n SAMM: setstyle \n " );
GUIObject_SoftKeys_SetAction(SAMMBook->gui_skin,ACTION_BACK, OnBackSkin);
debug_printf( " \n SAMM: setaction 1 \n ");
GUIObject_SoftKeys_SetAction(SAMMBook->gui_skin,ACTION_LONG_BACK, OnBackSkin);
debug_printf( " \n SAMM: setaction2 \n ");
// GUIObject_Softkey_SetAction(SAMMBook->gui_skin,ACTION_SELECT1,SelectSkin);


// oldOnKey2=(void*)DISP_OBJ_GetOnKey(SAMMBook->gui_skin->DISP_OBJ);
//DISP_DESC_SetOnKey( DISP_OBJ_GetDESC (SAMMBook->gui_skin->DISP_OBJ), (DISP_OBJ_ONKEY_METHOD)myOnKey2 );
//int str_id;
//textidname2id(L"DB_SET_THEME_TXT",-1,&str_id);
//GUIObject_Softkey_SetText(SAMMBook->gui_skin,ACTION_SELECT1,STR("Reconfig"));
GUIObject_Show((GUI*)SAMMBook->gui_skin);
debug_printf( " \n SAMM: show gui \n ");
}


static int OnConfigSkin(void *data, BOOK *bk)
{
/
return 1;
}






const PAGE_MSG Config_Skin_main[] @ "DYN_PAGE" =
{
PAGE_ENTER_EVENT_TAG, OnConfigSkin,
NIL_EVENT_TAG, NULL
};
const PAGE_DESC Config_Skin = {"Config_Sking_Page",0,Config_Skin_main};


void Config (BOOK * bk, GUI *) {}

void skin( BOOK* bk, GUI* )
{

BookObj_GotoPage(bk,&Config_Skin);


}


void funcion(GUI *gui)
{

//if(gui)MessageBox(EMPTY_SID,STR("el gui si es obtenido"), NOIMAGE, 1, 5000,0);
GUIObject_SoftKeys_SetAction( gui, 4, skin );
GUIObject_SoftKeys_SetText(gui, 4,STR("Skin") );
GUIObject_SoftKeys_SetEnable( gui, 4, true);


GUIObject_SoftKeys_SetAction( gui, 5, Config );
GUIObject_SoftKeys_SetText(gui, 5,STR("config") );
GUIObject_SoftKeys_SetEnable( gui, 5, true);

GUIObject_SoftKeys_SetAction( gui, 6, Config );
GUIObject_SoftKeys_SetText(gui, 6,STR("bcfg") );
GUIObject_SoftKeys_SetEnable( gui,6 , true);

GUIObject_SoftKeys_SetItemAsSubItem( gui,5,6 );
GUIObject_SoftKeys_SetItemAsSubItem( gui,5,4 );




debug_printf( " \n SAMM: get gui menu \n ");

DispObj_Menu=GUIObject_GetDispObject ( gui);
oldRedraw=DispObject_GetOnRedraw(DispObj_Menu);
DISP_DESC_SetOnRedraw(DispObject_GetDESC(DispObj_M enu),(DISP_OBJ_ONREDRAW_METHOD)myRedraw);

//DISP_DESC_SetOnRedraw(DispObject_GetDESC((DispObj_ Menu),(DISP_OBJ_ONREDRAW_METHOD )myRedraw);

}


void myRedraw(DISP_OBJ* D_O, int p, int b, int c)
{
oldRedraw(D_O, p, b, c);

GC* GC_DISP = get_DisplayGC();

GC_SetPenColor( GC_DISP , clBlue );
GC_DrawLine( GC_DISP,50,100 ,240, 110 );







}


void createlayoutmenu(GUI_ONEOFMANY* gui, LIST* lst, int unk)
{



debug_printf( " \n SAMM: createlayoutmenu getgui \n ");
}


int ShowAuthorInfo(void *mess ,BOOK* book)
{
MSG * msg = (MSG*)mess;
MessageBox(EMPTY_SID,STR("SAMMA2 \n (c) FeRnAnDoDkS"), NOIMAGE, 1, 5000,msg->book);
return(1);
}

const PAGE_MSG SS_PageEvents[]@ "DYN_PAGE" ={
ELF_TERMINATE_EVENT , TerminateElf,
ELF_SHOW_INFO_EVENT , ShowAuthorInfo,
0,0
};

PAGE_DESC base_page ={"SS_BasePage",0,SS_PageEvents};



void elf_exit(void)
{
kill_data(&ELF_BEGIN, (void(*)(void*))mfree_adr());
}


void onCloseSSBook(BOOK * book)
{
if (book)
{
ModifyKeyHook(NewKey,0);
SUBPROC(elf_exit);
}
}


void getstate(bool b)
{


SAMMBook->isselected =b;


}


SAMMA2 * CreateSSBook()
{
SAMMBook= new SAMMA2;
memset(SAMMBook,0,sizeof(SAMMA2));
CreateBook(&SAMMBook->bk,onCloseSSBook,&base_page,"SAMMA2",-1,0);
SAMMBook->gui=0;
SAMMBook->func=funcion;
SAMMBook->func2=createlayoutmenu;
SAMMBook->numofskins=0;
SAMMBook->func3=getstate;
SAMMBook->isselected =false;
debug_printf( "\n set pointer and create book\n" );
return(SAMMBook);
}
// áå*åì çíà÷åíèÿ èç èíè-ôàéëà

int isSAMM(BOOK * book)
{
if(!strcmp(book->xbook->name,"SAMMA2")) return true;
else return(0);
}


int main (void)
{
if (FindBook(isSAMM))
{
MessageBox(0x6fFFFFFF,STR("SAMMA2 already running"),0, 1 ,5000,0);
SUBPROC(elf_exit);

}
else
{

CreateSSBook();





ModifyKeyHook(NewKey,1);


}

return(0);
}