//11.03.12 - start! #define MEMSIZE 0xFE800 #include "..\lib\kolibri.h" #include "..\lib\mem.h" #include "..\lib\file_system.h" #include "..\lib\strings.h" #include "..\lib\list_box.h" #include "..\lib\figures.h" #define WINDOW_HEADER "Appearance" #define PANEL_H 30 #define SKINS_STANDART_PATH "/sys/skins/" #define WALP_STANDART_PATH "/sys/wallpapers/" llist list[2]; int active; enum { SKINS, WALLPAPERS }; char folder_path[4096]; char cur_file_path[4096]; char temp_filename[4096]; int files_mas[100]; dword buf; int cur; system_colors sc; proc_info Form; #include "other.h" //ADD PaNEL //skins direktory, configurate, delete from list, delete from disk, make default void Open_Dir() { int j, filesnum; list[active].count = 0; free(buf); if (GetDir(#buf, #filesnum, #folder_path, DIRS_ONLYREAL)!=0) return; for (j=0; jsc.work) { DrawBar(0, i*list[active].line_h+list[active].y, list[active].w, list[active].line_h, sc.work_button); WriteText(11,i*list[active].line_h+list[active].text_y+list[active].y,0x80,sc.work_button_text, #temp_filename); } else { DrawBar(0, i*list[active].line_h+list[active].y, list[active].w, list[active].line_h, sc.grab_button); WriteText(11,i*list[active].line_h+list[active].text_y+list[active].y,0x80,sc.grab_button_text, #temp_filename); } } else { DrawBar(0,i*list[active].line_h+list[active].y,list[active].w, list[active].line_h, 0xFFFfff); WriteText(11,i*list[active].line_h+list[active].text_y+list[active].y,0x80,0, #temp_filename); } } DrawBar(0,list[active].visible*list[active].line_h+list[active].y, list[active].w, -list[active].visible*list[active].line_h+ list[active].h, 0xFFFfff); } void GetFiles(int set_active) { active = set_active; if (active==SKINS) { strcpy(#folder_path, SKINS_STANDART_PATH); Open_Dir(); if (!list[active].count) notify("No skins were found"); } if (active==WALLPAPERS) { strcpy(#folder_path, WALP_STANDART_PATH); Open_Dir(); if (!list[active].count) notify("No wallpapers were found"); } } void Apply() { if (active==SKINS) { strcpy(#cur_file_path, #folder_path); cur = list[active].current; strcat(#cur_file_path, files_mas[cur]*304 + buf+72); SetSystemSkin(#cur_file_path); } if (active==WALLPAPERS) { strcpy(#cur_file_path, "\\S__"); strcat(#cur_file_path, #folder_path); cur = list[active].current; strcat(#cur_file_path, files_mas[cur]*304 + buf+72); RunProgram("/sys/media/kiv", #cur_file_path); Draw_List(); } } OpenFile() { if (active==SKINS) RunProgram("/sys/desktop", #cur_file_path); if (active==WALLPAPERS) RunProgram("/sys/media/kiv", #cur_file_path); } void main() { int id, key, mouse_clicked; mouse mm; mem_Init(); if (param) strcpy(#folder_path, #param); list[SKINS].current = list[WALLPAPERS].current = 0; list[SKINS].first = list[WALLPAPERS].first = 0; GetFiles(WALLPAPERS); list[active].SetSizes(0, 230, 350, 400-PANEL_H, 40, 18); SetEventMask(0x27); loop() { switch(WaitEvent()) { case evMouse: mm.get(); if (mm.vert) && (list[active].MouseScroll(mm.vert)) Draw_List(); /* if (mouse_clicked) { if (!mm.lkm) && (list[active].ProcessMouse(mm.x, mm.y)) Apply(); mouse_clicked=0; } if (mm.lkm) && (list[active].MouseOver(mm.x, mm.y)) mouse_clicked=1; */ EAX = active; if (mm.lkm) { if (active==SKINS) && (list[SKINS].ProcessMouse(mm.x, mm.y)) Apply(); if if (active==WALLPAPERS) && (list[WALLPAPERS].ProcessMouse(mm.x, mm.y)) Apply(); } break; case evButton: id=GetButtonID(); if (id==1) ExitProcess(); if (id==2) TabClick(SKINS); if (id==3) TabClick(WALLPAPERS); break; case evKey: key = GetKey(); if (active==SKINS) && (list[SKINS].ProcessKey(key)) Apply(); if (active==WALLPAPERS) && (list[WALLPAPERS].ProcessKey(key)) Apply(); IF (key==013) OpenFile(); if (key==9) //Tab { if (active==SKINS) TabClick(WALLPAPERS); else TabClick(SKINS); } IF (key==182) //Del { DeleteFile(#cur_file_path); Open_Dir(); Apply(); } break; case evReDraw: sc.get(); DefineAndDrawWindow(30,80,list[active].w+9,list[active].h+4+GetSkinHeight(),0x73,0xE4DFE1,WINDOW_HEADER); GetProcessInfo(#Form, SelfInfo); IF (Form.status_window>=2) break; DrawTabs(); Draw_List(); } } } void DrawTabs() { dword col_bg, col_text; DrawBar(0,0, Form.cwidth, PANEL_H-1, sc.work); if (active==SKINS) {col_bg=sc.work_button; col_text=sc.work_button_text;} else {col_bg=sc.work; col_text=sc.work_text;} DrawRectangle(10-1,7-1, 65+2, 21+2, sc.work_graph); DrawCaptButton(10,7, 65, 21, 2, col_bg, col_text, "Skins"); //вокруг рисовать пмятоуг if (active==WALLPAPERS) {col_bg=sc.work_button; col_text=sc.work_button_text;} else {col_bg=sc.work; col_text=sc.work_text;} DrawRectangle(90-1,7-1, 95+2, 21+2, sc.work_graph); DrawCaptButton(90,7, 95, 21, 3, col_bg, col_text, "Wallpappers"); DrawBar(0,PANEL_H-2, Form.cwidth, 1, sc.work_graph); DrawBar(0,PANEL_H-1, Form.cwidth, 1, 0xEEEeee); } void TabClick(int N) { GetFiles(N); DrawTabs(); Draw_List(); } stop: