From 64e8265b0ea2c4c5aa4654439d837190a273b2d1 Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Tue, 24 Feb 2015 20:47:16 +0000 Subject: [PATCH] Pixie Player v1.0 upload git-svn-id: svn://kolibrios.org@5465 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/cmm/lib/kolibri.h | 19 + programs/cmm/lib/list_box.h | 8 +- programs/cmm/pixie/Tupfile.lua | 6 + programs/cmm/pixie/check_default_player.h | 52 +++ programs/cmm/pixie/compile_en.bat | 10 + programs/cmm/pixie/get_files_list.h | 56 +++ programs/cmm/pixie/minimp3 | Bin 0 -> 23595 bytes programs/cmm/pixie/pixie.c | 401 ++++++++++++++++++++++ programs/cmm/pixie/pixie.ini | 4 + programs/cmm/pixie/pixie_dark.png | Bin 0 -> 2017 bytes programs/cmm/pixie/pixie_light.png | Bin 0 -> 2585 bytes programs/cmm/pixie/settings.h | 79 +++++ 12 files changed, 631 insertions(+), 4 deletions(-) create mode 100644 programs/cmm/pixie/Tupfile.lua create mode 100644 programs/cmm/pixie/check_default_player.h create mode 100644 programs/cmm/pixie/compile_en.bat create mode 100644 programs/cmm/pixie/get_files_list.h create mode 100644 programs/cmm/pixie/minimp3 create mode 100644 programs/cmm/pixie/pixie.c create mode 100644 programs/cmm/pixie/pixie.ini create mode 100644 programs/cmm/pixie/pixie_dark.png create mode 100644 programs/cmm/pixie/pixie_light.png create mode 100644 programs/cmm/pixie/settings.h diff --git a/programs/cmm/lib/kolibri.h b/programs/cmm/lib/kolibri.h index 74eb3ad164..5843bf1a15 100644 --- a/programs/cmm/lib/kolibri.h +++ b/programs/cmm/lib/kolibri.h @@ -32,6 +32,25 @@ char program_path[4096]; #define BT_HIDE 0x40000000 #define BT_NOFRAME 0x20000000 +//ASCII KEYS +#define ASCII_KEY_BS 008 +#define ASCII_KEY_TAB 009 +#define ASCII_KEY_ENTER 013 +#define ASCII_KEY_ESC 027 +#define ASCII_KEY_DEL 182 +#define ASCII_KEY_INS 185 +#define ASCII_KEY_SPACE 032 + +#define ASCII_KEY_LEFT 176 +#define ASCII_KEY_RIGHT 179 +#define ASCII_KEY_DOWN 177 +#define ASCII_KEY_UP 178 +#define ASCII_KEY_HOME 180 +#define ASCII_KEY_END 181 +#define ASCII_KEY_PGDN 183 +#define ASCII_KEY_PGUP 184 + + //------------------------------------------------------------------------- struct mouse diff --git a/programs/cmm/lib/list_box.h b/programs/cmm/lib/list_box.h index 462fbb1e17..9277446643 100644 --- a/programs/cmm/lib/list_box.h +++ b/programs/cmm/lib/list_box.h @@ -97,10 +97,10 @@ int llist::ProcessKey(dword key) { switch(key) { - case 177: return KeyDown(); - case 178: return KeyUp(); - case 180: return KeyHome(); - case 181: return KeyEnd(); + case ASCII_KEY_DOWN: return KeyDown(); + case ASCII_KEY_UP: return KeyUp(); + case ASCII_KEY_HOME: return KeyHome(); + case ASCII_KEY_END: return KeyEnd(); } return 0; } diff --git a/programs/cmm/pixie/Tupfile.lua b/programs/cmm/pixie/Tupfile.lua new file mode 100644 index 0000000000..30782d51dc --- /dev/null +++ b/programs/cmm/pixie/Tupfile.lua @@ -0,0 +1,6 @@ +if tup.getconfig("NO_CMM") ~= "" then return end +if tup.getconfig("LANG") == "ru" +then C_LANG = "LANG_RUS" +else C_LANG = "LANG_ENG" -- this includes default case without config +end +tup.rule("pixie.c", "c-- /D=AUTOBUILD /D=$(C_LANG) %f" .. tup.getconfig("KPACK_CMD"), "pixie.com") diff --git a/programs/cmm/pixie/check_default_player.h b/programs/cmm/pixie/check_default_player.h new file mode 100644 index 0000000000..f7ae7e9cbf --- /dev/null +++ b/programs/cmm/pixie/check_default_player.h @@ -0,0 +1,52 @@ +char open_assoc_ini_path[] = "/sys/settings/assoc.ini"; +word program_path_len; + + +void CheckDefaultForTheFirstStart() +{ + ini_get_int stdcall (#open_assoc_ini_path, "Pixie", "icon", -1); + if (EAX!=-1) return; + + CreateThread(#ShowPopUp,#menu_stak+4092); +} + + +void ShowPopUp() +{ + byte button_id, key; + proc_info pop_up; + + ini_set_int stdcall (#open_assoc_ini_path, "Pixie", "icon", 65); + program_path_len = strlen(#program_path); + ini_set_str stdcall (#open_assoc_ini_path, "Pixie", "exec", #program_path, program_path_len); + + loop() switch(WaitEvent()) + { + case evButton: + button_id = GetButtonID(); + if (button_id==10) SetDefaultPlayer(); + if (button_id==11) ExitProcess(); + break; + case evKey: + key = GetKey(); + if (key==ASCII_KEY_ENTER) SetDefaultPlayer(); + if (key==ASCII_KEY_ESC) ExitProcess(); + break; + case evReDraw: + DefineAndDrawWindow(150, 200, 220, 90, 0x01,0,0,0); + GetProcessInfo(#pop_up, SelfInfo); + DrawBar(0, 0, pop_up.width, pop_up.height, theme.color_list_bg); + DrawRectangle(0, 0, pop_up.width, pop_up.height, theme.color_list_border); + WriteText(10, 20, 0x80, theme.color_list_text, "Pixie is not a default MP3 player."); + WriteText(10, 32, 0x80, theme.color_list_text, "Make it default?"); + DrawCaptButton(10, pop_up.height - 30, 80, 20, 10, theme.color_list_active_bg, theme.color_list_active_text, "Yes"); + DrawCaptButton(pop_up.width-10-80, pop_up.height - 30, 80, 20, 11, theme.color_list_active_bg, theme.color_list_active_text, "No"); + } +} + +void SetDefaultPlayer() +{ + ini_set_str stdcall (#open_assoc_ini_path, "Assoc", "mp3", "$Pixie", 6); + ini_set_str stdcall ("/sys/File namagers/KFAR.ini", "Associations", "mp3", #program_path, program_path_len); + ExitProcess(); +} \ No newline at end of file diff --git a/programs/cmm/pixie/compile_en.bat b/programs/cmm/pixie/compile_en.bat new file mode 100644 index 0000000000..1423d35710 --- /dev/null +++ b/programs/cmm/pixie/compile_en.bat @@ -0,0 +1,10 @@ +@del lang.h-- +@echo #define LANG_ENG 1 >lang.h-- + +C-- pixie.c +@del pixie +@kpack pixie.com +@rename pixie.com pixie +@del warning.txt +@del lang.h-- +@pause \ No newline at end of file diff --git a/programs/cmm/pixie/get_files_list.h b/programs/cmm/pixie/get_files_list.h new file mode 100644 index 0000000000..011688dcd8 --- /dev/null +++ b/programs/cmm/pixie/get_files_list.h @@ -0,0 +1,56 @@ +char temp_filename[4096], + work_folder[4096], + current_filename[256]; +int files_mas[2000]; +dword buf; + + +void OpenDirectory(dword folder_path) +{ + int cur; + dword j, filesnum, end_pointer; + + list.count = 0; + //free(buf); + if (GetDir(#buf, #filesnum, folder_path, DIRS_ONLYREAL)==0) + if (filesnum==0) + { + notify("'Error opening folder' -E"); + } + + for (j=0; j= b) return; + for (j = a; j <= b; j++) + if (strcmp(files_mas[j]*304 + buf+72, files_mas[b]*304 + buf+72)<=0) { files_mas[i] >< files_mas[j]; i++;} + SortByName(a, i-2); + SortByName(i, b); +} + +void SetOpenedFileFirst() +{ + int i; + dword opened_filename = #param + strrchr(#param, '/'); + for (i=0; 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 scroll1.position) + { + list.first = scroll1.position; + DrawPlayList(); + break; + } + m.get(); + + if (m.vert) if (list.MouseScroll(m.vert)) + { + DrawPlayList(); + } + + if (mouse_clicked) + { + if (!m.lkm) && (list.ProcessMouse(m.x, m.y)) StartPlayingMp3(); + mouse_clicked=0; + } + if (m.lkm) && (list.MouseOver(m.x, m.y)) mouse_clicked=1; + //drag window - emulate windows header + if (window_mode == WINDOW_MODE_SMALL) && (m.lkm) && (m.y < skin.h) && (m.x < 13) + { + do { + drag_mouse.get(); + if (drag_mouse.x!=m.x) || (drag_mouse.y!=m.y) + { + MoveSize(Form.left + drag_mouse.x - m.x, Form.top + drag_mouse.y - m.y, OLD, OLD); + DrawWindow(); + } + pause(2); + } while (drag_mouse.lkm); + } + if (m.pkm) && (m.y > skin.h) + notify("'Pixies Player v1.01\nChange sound volume: Left/Right key\nChange skin: F1/F2\nMute: M key' -St\n"); + break; + + case evButton: + id=GetButtonID(); + switch(id) { + case BUTTON_WINDOW_CLOSE: + StopPlayingMp3(); + SaveIniConfig(); + ExitProcess(); + break; + case BUTTON_WINDOW_MINIMIZE: + MinimizeWindow(); + break; + case BUTTON_WINDOW_REDUCE: + if (window_mode == WINDOW_MODE_NORMAL) + { + window_mode = WINDOW_MODE_SMALL; + MoveSize(OLD, OLD, 99, skin.h - 1); + MoveSize(OLD, GetClientHeight() - skin.h + 1, OLD, OLD); + MoveSize(2000, OLD, OLD, OLD); + } + else + { + window_mode = WINDOW_MODE_NORMAL; + MoveSize(30,80,skin.w -1 ,skin.h + list.h); + } + break; + case BUTTON_PLAYBACK_PREV: + if (list.KeyUp()) StartPlayingMp3(); + break; + case BUTTON_PLAYBACK_NEXT: + if (list.KeyDown()) StartPlayingMp3(); + break; + case BUTTON_PLAYBACK_PLAY_PAUSE: + if (playback_mode == PLAYBACK_MODE_PLAYING) + { + playback_mode = PLAYBACK_MODE_STOPED; + DrawInactivePlayButton(); + StopPlayingMp3(); + } + else + { + playback_mode = PLAYBACK_MODE_PLAYING; + StartPlayingMp3(); + } + break; + } + break; + + case evKey: + key = GetKey(); + if (key==50) SetColorThemeLight(); + if (key==51) SetColorThemeDark(); + if (key==ASCII_KEY_LEFT) RunProgram("@VOLUME", "-"); + if (key==ASCII_KEY_RIGHT) RunProgram("@VOLUME", "+"); + if (key=='m') RunProgram("@VOLUME", "m"); + if (key==ASCII_KEY_ENTER) StartPlayingMp3(); + if (key=='p') || (key==ASCII_KEY_SPACE) + { + if (playback_mode == PLAYBACK_MODE_PLAYING) StopPlayingMp3(); + else StartPlayingMp3(); + } + if (list.ProcessKey(key)) DrawPlayList(); + break; + + case evReDraw: + if (window_mode == WINDOW_MODE_NORMAL) DefineAndDrawWindow(win_x, win_y, skin.w - 1, skin.h + list.h, 0x01,0,0,0); + if (window_mode == WINDOW_MODE_SMALL) DefineAndDrawWindow(win_x, win_y, 99, skin.h - 1, 0x01,0,0,0); + DrawWindow(); + break; + + default: + if (playback_mode == PLAYBACK_MODE_PLAYING) && (GetProcessSlot(player_run_id)==0) + { + if (current_playing_file_n < list.count) + { + //пиздец тут быдлокод пошёл + id = list.current; + current_playing_file_n++; + list.current = current_playing_file_n; + StartPlayingMp3(); + list.current = id; + DrawPlayList(); + } + else + { + StopPlayingMp3(); + DrawWindow(); + } + } + } + } +} + + +void DrawPlayList() +{ + int i; + int yyy; + + for (i=0; i47) strcpy(#temp_filename+44, "..."); + + yyy = i*list.line_h+list.y; + + //this is selected file + if (list.current - list.first == i) + { + if (i>=list.count) continue; + DrawBar(list.x, yyy, list.w, list.line_h, theme.color_list_active_bg); + WriteText(12,yyy+list.text_y,0x80, theme.color_list_active_text, #temp_filename); + } + //this is not selected file + else + { + if (i>=list.count) continue; + DrawBar(list.x,yyy,list.w, list.line_h, theme.color_list_bg); + WriteText(12,yyy+list.text_y,0x80, theme.color_list_text, #temp_filename); + } + //this is current playing file + if (i + list.first == current_playing_file_n) && (playback_mode == PLAYBACK_MODE_PLAYING) + { + WriteText(3, yyy+list.text_y,0x80, theme.color_list_active_pointer, "\x10"); + WriteText(12,yyy+list.text_y,0x80, theme.color_list_active_text, #temp_filename); + } + } + DrawBar(list.x,list.visible * list.line_h + list.y, list.w, -list.visible * list.line_h + list.h, theme.color_list_bg); + DrawScroller(); +} + + +void StopPlayingMp3() +{ + if (player_run_id) player_run_id = KillProcess(player_run_id); + if (notify_run_id) notify_run_id = KillProcess(notify_run_id); + playback_mode = PLAYBACK_MODE_STOPED; +} + + +void StartPlayingMp3() +{ + word i; + char item_path[4096], notify_message[512]; + dword item_path_end_pointer; + StopPlayingMp3(); + + if (list.current > list.count) + { + list.current = list.count; + return; + } + if (!list.count) + { + notify_run_id = notify("'Pixie Player\nStopped, no file specified' -St"); + return; + } + + current_playing_file_n = list.current; + + playback_mode = PLAYBACK_MODE_PLAYING; + + strlcpy(#current_filename, GetCurrentItemName(), sizeof(current_filename)); + strcpy(#item_path, "\""); + strcat(#item_path, #work_folder); + strcat(#item_path, "/"); + strcat(#item_path, #current_filename); + strcat(#item_path, "\""); + + DrawPlayList(); + DrawTopPanel(); + + item_path_end_pointer = #item_path+strlen(#item_path); + if (strcmpi(item_path_end_pointer-4,".mp3")!=0) player_run_id = RunProgram(abspath("minimp3"), #item_path); + strcpy(#notify_message, "'Now playing:\n"); + strcat(#notify_message, #current_filename); + for (i=2; i=2) return; + if (window_mode == WINDOW_MODE_NORMAL) + { + DrawListBorder(0, skin.h-1, skin.w-1, list.h+1, theme.color_list_border); + DrawPlayList(); + } +} + + +void DrawTopPanel() +{ + char current_playing_title[245]; + img_draw stdcall(skin.image, 0, 0, Form.width - 14, skin.h, 0, 0); + img_draw stdcall(skin.image, Form.width - 14, 0, 15, skin.h, skin.w - 15, 0); + if (playback_mode == PLAYBACK_MODE_STOPED) DrawInactivePlayButton(); + //Playing control buttons + DefineButton(13, 1, 21, 21, BUTTON_PLAYBACK_PLAY_PAUSE + BT_HIDE, 0); + DefineButton(36, 1, 21, 21, BUTTON_PLAYBACK_PREV + BT_HIDE, 0); + DefineButton(60, 1, 21, 21, BUTTON_PLAYBACK_NEXT + BT_HIDE, 0); + //Window control buttons + DefineButton(Form.width - 14, 1, 11, 11, BUTTON_WINDOW_CLOSE + BT_HIDE, 0); + DefineButton(Form.width - 14, 12, 12, 11, BUTTON_WINDOW_REDUCE + BT_HIDE, 0); + //Mode depended + if (window_mode == WINDOW_MODE_NORMAL) + { + DefineButton(Form.width - 26, 1, 12, 11, BUTTON_WINDOW_MINIMIZE + BT_HIDE, 0); + strcpy(#current_playing_title, #current_filename); + current_playing_title[strlen(#current_playing_title)-4] = '\0'; + if (strlen(#current_playing_title) > 29) strcpy(#current_playing_title + 26, "..."); + WriteText(90, 9, 0x80, theme.color_top_panel_text, #current_playing_title); + } + else + { + DefineButton(0, 0, 12, skin.h, 99 + BT_HIDE + BT_NOFRAME, 0); + } +} + + +void DrawScroller() +{ + scroll1.max_area = list.count; + scroll1.cur_area = list.visible; + scroll1.position = list.first; + + scroll1.all_redraw = 0; + scroll1.start_x = skin.w - scroll1.size_x - 1; + scroll1.start_y = list.y-1; + scroll1.size_y = list.h+2; + + if (list.count > list.visible) scrollbar_v_draw(#scroll1); +} + +void DrawListBorder(dword x,y,w,h,color1) +{ + DrawBar(x,y+h,w,1,color1); + DrawBar(x,y,1,h,color1); + DrawBar(x+w,y,1,h+1,color1); +} + + +stop: + +char menu_stak[4096]; \ No newline at end of file diff --git a/programs/cmm/pixie/pixie.ini b/programs/cmm/pixie/pixie.ini new file mode 100644 index 0000000000..23f794ce9a --- /dev/null +++ b/programs/cmm/pixie/pixie.ini @@ -0,0 +1,4 @@ +[Config] +current_theme=0 +window_mode=0 +last_folder= \ No newline at end of file diff --git a/programs/cmm/pixie/pixie_dark.png b/programs/cmm/pixie/pixie_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..cecf4e35b3fd3f1626b53d36a5957cb8e4fddf77 GIT binary patch literal 2017 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 literal 0 HcmV?d00001 diff --git a/programs/cmm/pixie/settings.h b/programs/cmm/pixie/settings.h new file mode 100644 index 0000000000..f59cf14eda --- /dev/null +++ b/programs/cmm/pixie/settings.h @@ -0,0 +1,79 @@ +void LoadIniConfig() +{ + debugln(#pixie_ini_path); + ini_get_int stdcall (#pixie_ini_path, "Config", "current_theme", THEME_DARK); + current_theme = EAX; + if (current_theme == THEME_DARK) SetColorThemeDark(); else SetColorThemeLight(); + + ini_get_int stdcall (#pixie_ini_path, "Config", "window_mode", WINDOW_MODE_NORMAL); + window_mode = EAX; + + ini_get_int stdcall (#pixie_ini_path, "Config", "win_x", 100); + win_x = EAX; + + ini_get_int stdcall (#pixie_ini_path, "Config", "win_y", 90); + win_y = EAX; + + ini_get_str stdcall (#pixie_ini_path, "Config", "last_folder", #work_folder, sizeof(work_folder), 0); +} + +void SaveIniConfig() +{ + debugln(#pixie_ini_path); + ini_set_int stdcall (#pixie_ini_path, "Config", "current_theme", current_theme); + ini_set_int stdcall (#pixie_ini_path, "Config", "window_mode", window_mode); + ini_set_int stdcall (#pixie_ini_path, "Config", "win_x", Form.left); + ini_set_int stdcall (#pixie_ini_path, "Config", "win_y", Form.top); + ini_set_str stdcall (#pixie_ini_path, "Config", "last_folder", #work_folder, strlen(#work_folder)); +} + +struct struct_pixie_colors { + dword color_top_panel_text, + color_list_bg, + color_list_text, + color_list_active_bg, + color_list_active_text, + color_list_active_pointer, + color_list_scroller, + color_list_border; +} theme; + + +void SetColorThemeDark() +{ + current_theme = THEME_DARK; + Libimg_LoadImage(#skin, abspath("pixie_dark.png")); + skin.w = 300; + theme.color_top_panel_text = 0xFCFFBE; + theme.color_list_bg = 0x313031; + theme.color_list_text = 0xADAEAD; + theme.color_list_active_bg = 0x434343; + theme.color_list_active_text = 0xADAEAD; + theme.color_list_active_pointer = 0xD6D6D6; + theme.color_list_scroller = 0xBBBbbb; + theme.color_list_border = 0x121212; + scroll1.bckg_col = theme.color_list_bg; + scroll1.frnt_col = theme.color_list_border; + scroll1.line_col = theme.color_list_border; + DrawWindow(); +} + + +void SetColorThemeLight() +{ + current_theme = THEME_LIGHT; + Libimg_LoadImage(#skin, abspath("pixie_light.png")); + skin.w = 300; + theme.color_top_panel_text = 0x85663F; + theme.color_list_bg = 0xE2E2E2; + theme.color_list_text = 0x595959; + theme.color_list_active_bg = 0xFAF3AF; + theme.color_list_active_text = 0x85663F; + theme.color_list_active_pointer = 0x85663F; + theme.color_list_scroller = 0xBBBbbb; + theme.color_list_border = 0x736D65; + scroll1.bckg_col = theme.color_list_bg; + scroll1.frnt_col = theme.color_list_border; + scroll1.line_col = theme.color_list_border; + DrawWindow(); +} \ No newline at end of file