Rev 9445 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6920 | leency | 1 | #define MEMSIZE 4096 * 50 |
2 | |||
3 | //===================================================// |
||
4 | // // |
||
5 | // LIB // |
||
6 | // // |
||
7 | //===================================================// |
||
8 | |||
7219 | leency | 9 | #include "../lib/fs.h" |
6920 | leency | 10 | #include "../lib/list_box.h" |
11 | #include "../lib/gui.h" |
||
7183 | leency | 12 | #include "../lib/random.h" |
7182 | leency | 13 | #include "../lib/kfont.h" |
6920 | leency | 14 | |
7049 | leency | 15 | #include "../lib/obj/libimg.h" |
6920 | leency | 16 | #include "../lib/obj/libini.h" |
7182 | leency | 17 | #include "../lib/obj/proc_lib.h" |
18 | #include "../lib/obj/box_lib.h" |
||
6920 | leency | 19 | |
20 | #include "../lib/patterns/simple_open_dialog.h" |
||
21 | |||
22 | //===================================================// |
||
23 | // // |
||
24 | // DATA // |
||
25 | // // |
||
26 | //===================================================// |
||
27 | |||
28 | //simple open dialog data |
||
9585 | vitalkrilo | 29 | char default_dir[] = "/sys"; |
7189 | leency | 30 | od_filter filter2 = { 15, "MP3\0WAV\0XM\0\0" }; |
6920 | leency | 31 | |
7628 | leency | 32 | #define ABOUT_MESSAGE " v2.94 Final |
7189 | leency | 33 | |
7628 | leency | 34 | A tiny music folder player. |
35 | Supports MP3, WAV, XM audio file formats. |
||
6920 | leency | 36 | |
7229 | leency | 37 | Hot keys: |
7628 | leency | 38 | Open file: O key |
39 | Play/Stop: Space or P key |
||
40 | Start playing selected file: Enter |
||
41 | Goto next/previous track: Ctrl + Left/Right |
||
42 | Change sound volume: Left/Right key |
||
43 | Remove from the list: Delete |
||
44 | Permanently delete file: Shift + Delete |
||
45 | Show file info: I |
||
46 | Repeat: R |
||
47 | Shuffle: S |
||
48 | Mute: M |
||
6920 | leency | 49 | |
7189 | leency | 50 | kolibri-n.org & aspero.pro" |
6920 | leency | 51 | |
7189 | leency | 52 | scroll_bar scroll1 = { 5,200,398,44,0,2,115,15,0,0xeeeeee,0xBBBbbb,0xeeeeee, |
53 | 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1}; |
||
54 | |||
6920 | leency | 55 | proc_info Form; |
56 | llist list; |
||
57 | |||
58 | char pixie_ini_path[4096]; |
||
59 | char work_folder[4096]; |
||
60 | char current_filename[256]; |
||
61 | |||
62 | enum { |
||
63 | BUTTON_WINDOW_CLOSE = 1, |
||
64 | BUTTON_WINDOW_MINIMIZE, |
||
65 | BUTTON_WINDOW_REDUCE, |
||
66 | BUTTON_PLAYBACK_PLAY_PAUSE = 10, |
||
67 | BUTTON_PLAYBACK_PREV, |
||
68 | BUTTON_PLAYBACK_NEXT, |
||
7183 | leency | 69 | BUTTON_REPEAT, |
70 | BUTTON_SHUFFLE, |
||
6920 | leency | 71 | BUTTON_OPEN_DIALOG, |
72 | BUTTON_SHOW_VOLUME |
||
73 | }; |
||
74 | |||
75 | int player_run_id; |
||
76 | int notify_run_id; |
||
77 | |||
7742 | leency | 78 | bool repeat=false; |
79 | bool shuffle=false; |
||
7183 | leency | 80 | |
6920 | leency | 81 | int current_playing_file_n=0; |
82 | |||
83 | word win_x_normal, win_y_normal; |
||
84 | word win_x_small, win_y_small; |
||
85 | |||
86 | byte window_mode; |
||
87 | enum { |
||
88 | WINDOW_MODE_NORMAL, |
||
89 | WINDOW_MODE_SMALL |
||
90 | }; |
||
91 | |||
92 | byte playback_mode; |
||
93 | enum { |
||
94 | PLAYBACK_MODE_STOPED, |
||
95 | PLAYBACK_MODE_PLAYING |
||
96 | }; |
||
97 | |||
7995 | leency | 98 | libimg_image skin; |
99 | |||
7192 | leency | 100 | #define LAST_FOLDER_EXISTS 1 |
101 | |||
6920 | leency | 102 | //===================================================// |
103 | // // |
||
104 | // CODE // |
||
105 | // // |
||
106 | //===================================================// |
||
107 | |||
108 | #include "get_files_list.h" |
||
109 | #include "settings.h" |
||
110 | |||
111 | void LoadLibraries() |
||
112 | { |
||
113 | load_dll(boxlib, #box_lib_init,0); |
||
114 | load_dll(libimg, #libimg_init,1); |
||
115 | load_dll(libini, #lib_init,1); |
||
116 | load_dll(Proc_lib, #OpenDialog_init,0); |
||
7182 | leency | 117 | OpenDialog_init stdcall (#o_dialog); |
6920 | leency | 118 | } |
119 | |||
120 | void main() |
||
121 | { |
||
7183 | leency | 122 | list.SetFont(8, 16, 13); |
6920 | leency | 123 | LoadLibraries(); |
124 | LoadIniConfig(); |
||
7348 | leency | 125 | if (!param) { |
126 | notify("'Pixie Player\nPress O key to open MP3/WAV/XM file' -St"); |
||
127 | if (work_folder) param=LAST_FOLDER_EXISTS; |
||
128 | } |
||
7182 | leency | 129 | kfont.init(DEFAULT_FONT); |
7995 | leency | 130 | @SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER); |
131 | loop() switch(@WaitEventTimeout(10)) |
||
6920 | leency | 132 | { |
133 | case evMouse: |
||
134 | mouse.get(); |
||
135 | scrollbar_v_mouse (#scroll1); |
||
136 | if (list.first != scroll1.position) |
||
137 | { |
||
138 | list.first = scroll1.position; |
||
139 | DrawPlayList(); |
||
140 | break; |
||
141 | } |
||
142 | if (list.MouseOver(mouse.x, mouse.y)) |
||
143 | { |
||
144 | if (mouse.vert) && (list.MouseScroll(mouse.vert)) DrawPlayList(); |
||
145 | if (mouse.dblclick) EventStartPlayingSelectedItem(); |
||
7189 | leency | 146 | if (mouse.down) && (mouse.key&MOUSE_LEFT) |
147 | && (list.ProcessMouse(mouse.x, mouse.y)) DrawPlayList(); |
||
6920 | leency | 148 | } |
7189 | leency | 149 | if(mouse.key&MOUSE_LEFT) && (mouse.x<14) |
150 | && (window_mode == WINDOW_MODE_SMALL) EventDragWindow(); |
||
7628 | leency | 151 | if (mouse.down) && (mouse.y>skin_height) && (mouse.key&MOUSE_RIGHT) EventShowAbout(); |
6920 | leency | 152 | break; |
153 | case evButton: |
||
7995 | leency | 154 | switch(@GetButtonID()) { |
6920 | leency | 155 | case BUTTON_WINDOW_CLOSE: EventExitApp(); break; |
156 | case BUTTON_WINDOW_MINIMIZE: MinimizeWindow(); break; |
||
157 | case BUTTON_WINDOW_REDUCE: EventChangeWindowMode(); break; |
||
158 | case BUTTON_PLAYBACK_PREV: EventPlaybackPrevious(); break; |
||
159 | case BUTTON_PLAYBACK_NEXT: EventPlaybackNext(); break; |
||
160 | case BUTTON_PLAYBACK_PLAY_PAUSE: EventPlayAndPause(); break; |
||
7183 | leency | 161 | case BUTTON_REPEAT: EventRepeatClick(); break; |
7192 | leency | 162 | case BUTTON_SHUFFLE: EventShuffleClick(); break; |
6920 | leency | 163 | case BUTTON_OPEN_DIALOG: EventFileDialogOpen(); break; |
164 | case BUTTON_SHOW_VOLUME: RunProgram("/sys/@VOLUME", NULL); break; |
||
165 | } |
||
166 | break; |
||
167 | case evKey: |
||
168 | GetKeys(); |
||
169 | if (key_modifier&KEY_LCTRL) || (key_modifier&KEY_RCTRL) { |
||
170 | if (key_scancode==SCAN_CODE_LEFT) EventPlaybackPrevious(); |
||
171 | if (key_scancode==SCAN_CODE_RIGHT) EventPlaybackNext(); |
||
172 | break; |
||
7347 | leency | 173 | } |
174 | if (key_modifier&KEY_LSHIFT) || (key_modifier&KEY_RSHIFT) { |
||
175 | if (key_scancode==SCAN_CODE_DEL) EventPermanentlyDeleteFile(); |
||
176 | break; |
||
177 | } |
||
6920 | leency | 178 | if (key_scancode==SCAN_CODE_KEY_O) EventFileDialogOpen(); |
179 | if (key_scancode==SCAN_CODE_KEY_M) RunProgram("/sys/@VOLUME", "m"); |
||
7192 | leency | 180 | if (key_scancode==SCAN_CODE_KEY_R) EventRepeatClick(); |
181 | if (key_scancode==SCAN_CODE_KEY_S) EventShuffleClick(); |
||
7429 | leency | 182 | if (key_scancode==SCAN_CODE_KEY_I) EventShowTagInfo(); |
6920 | leency | 183 | if (key_scancode==SCAN_CODE_RIGHT) RunProgram("/sys/@VOLUME", "+"); |
184 | if (key_scancode==SCAN_CODE_LEFT) RunProgram("/sys/@VOLUME", "-"); |
||
185 | if (key_scancode==SCAN_CODE_ENTER) EventStartPlayingSelectedItem(); |
||
7347 | leency | 186 | if (key_scancode==SCAN_CODE_DEL) EventRemoveItemFromList(); |
7189 | leency | 187 | if (key_scancode==SCAN_CODE_KEY_P)||(key_scancode==SCAN_CODE_SPACE) EventPlayAndPause(); |
7229 | leency | 188 | if (key_scancode==SCAN_CODE_F1) EventShowAbout(); |
6920 | leency | 189 | if (list.ProcessKey(key_scancode)) DrawPlayList(); |
190 | break; |
||
191 | case evReDraw: |
||
7189 | leency | 192 | if (window_mode == WINDOW_MODE_NORMAL) |
193 | DefineDragableWindow(win_x_normal, win_y_normal, skin.w - 1, skin.h + list.h-1); |
||
194 | if (window_mode == WINDOW_MODE_SMALL) |
||
195 | DefineDragableWindow(win_x_small, win_y_small, WIN_W_SMALL, WIN_H_SMALL); |
||
6920 | leency | 196 | draw_window(); |
197 | if (param[0]) { |
||
7192 | leency | 198 | if (param==LAST_FOLDER_EXISTS) EventOpenFolder(NULL); |
199 | else EventOpenFolder(#param); |
||
6920 | leency | 200 | param[0] = NULL; |
7348 | leency | 201 | } |
6920 | leency | 202 | break; |
203 | default: |
||
204 | EventCheckSongFinished(); |
||
7995 | leency | 205 | } |
6920 | leency | 206 | } |
207 | |||
208 | |||
209 | void DrawPlayList() |
||
210 | { |
||
211 | int i; |
||
212 | int yyy; |
||
7196 | leency | 213 | int kfont_width; |
6920 | leency | 214 | char temp_filename[4096]; |
7182 | leency | 215 | dword text_color, bg_color; |