forked from KolibriOS/kolibrios
Pixie 2.8: fix play button while playing, delete from the list, bugfixes
git-svn-id: svn://kolibrios.org@7196 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
d391816c81
commit
d6c5005f96
@ -15,7 +15,7 @@ void OpenDirectory(dword folder_path)
|
|||||||
{
|
{
|
||||||
notify("'Error opening folder' -E");
|
notify("'Error opening folder' -E");
|
||||||
}
|
}
|
||||||
|
debugval("sizeof(files_mas)", sizeof(files_mas));
|
||||||
for (j=0; j<filesnum; j++)
|
for (j=0; j<filesnum; j++)
|
||||||
{
|
{
|
||||||
strcpy(#temp_filename, j*304 + buf+72);
|
strcpy(#temp_filename, j*304 + buf+72);
|
||||||
@ -26,7 +26,8 @@ void OpenDirectory(dword folder_path)
|
|||||||
{
|
{
|
||||||
cur = list.count;
|
cur = list.count;
|
||||||
files_mas[cur]=j;
|
files_mas[cur]=j;
|
||||||
list.count++;
|
list.count++;
|
||||||
|
if (list.count>=sizeof(files_mas)*sizeof(int)) break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SortByName(0, list.count-1);
|
SortByName(0, list.count-1);
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
#include "../lib/gui.h"
|
#include "../lib/gui.h"
|
||||||
#include "../lib/random.h"
|
#include "../lib/random.h"
|
||||||
#include "../lib/kfont.h"
|
#include "../lib/kfont.h"
|
||||||
#include "../lib/collection.h"
|
|
||||||
|
|
||||||
#include "../lib/obj/libio.h"
|
#include "../lib/obj/libio.h"
|
||||||
#include "../lib/obj/libimg.h"
|
#include "../lib/obj/libimg.h"
|
||||||
@ -32,7 +31,7 @@
|
|||||||
char default_dir[] = "/rd/1";
|
char default_dir[] = "/rd/1";
|
||||||
od_filter filter2 = { 15, "MP3\0WAV\0XM\0\0" };
|
od_filter filter2 = { 15, "MP3\0WAV\0XM\0\0" };
|
||||||
|
|
||||||
#define ABOUT_MESSAGE "Pixie Player v2.7
|
#define ABOUT_MESSAGE "Pixie Player v2.8
|
||||||
|
|
||||||
A tiny music folder player.
|
A tiny music folder player.
|
||||||
Supports MP3, WAV, XM audio file formats.
|
Supports MP3, WAV, XM audio file formats.
|
||||||
@ -43,6 +42,7 @@ Play/Stop: Space or P key
|
|||||||
Start playing selected file: Enter
|
Start playing selected file: Enter
|
||||||
Goto next/previous track: Ctrl + Left/Right
|
Goto next/previous track: Ctrl + Left/Right
|
||||||
Change sound volume: Left/Right key
|
Change sound volume: Left/Right key
|
||||||
|
Remove from the list: Delete
|
||||||
Repeat: R
|
Repeat: R
|
||||||
Shuffle: S
|
Shuffle: S
|
||||||
Mute: M
|
Mute: M
|
||||||
@ -95,8 +95,6 @@ enum {
|
|||||||
PLAYBACK_MODE_PLAYING
|
PLAYBACK_MODE_PLAYING
|
||||||
};
|
};
|
||||||
|
|
||||||
collection music_col;
|
|
||||||
|
|
||||||
#define LAST_FOLDER_EXISTS 1
|
#define LAST_FOLDER_EXISTS 1
|
||||||
|
|
||||||
//===================================================//
|
//===================================================//
|
||||||
@ -183,6 +181,7 @@ void main()
|
|||||||
if (key_scancode==SCAN_CODE_RIGHT) RunProgram("/sys/@VOLUME", "+");
|
if (key_scancode==SCAN_CODE_RIGHT) RunProgram("/sys/@VOLUME", "+");
|
||||||
if (key_scancode==SCAN_CODE_LEFT) RunProgram("/sys/@VOLUME", "-");
|
if (key_scancode==SCAN_CODE_LEFT) RunProgram("/sys/@VOLUME", "-");
|
||||||
if (key_scancode==SCAN_CODE_ENTER) EventStartPlayingSelectedItem();
|
if (key_scancode==SCAN_CODE_ENTER) EventStartPlayingSelectedItem();
|
||||||
|
if (key_scancode==SCAN_CODE_DEL) EventDeleteItem();
|
||||||
if (key_scancode==SCAN_CODE_KEY_P)||(key_scancode==SCAN_CODE_SPACE) EventPlayAndPause();
|
if (key_scancode==SCAN_CODE_KEY_P)||(key_scancode==SCAN_CODE_SPACE) EventPlayAndPause();
|
||||||
if (list.ProcessKey(key_scancode)) DrawPlayList();
|
if (list.ProcessKey(key_scancode)) DrawPlayList();
|
||||||
break;
|
break;
|
||||||
@ -209,6 +208,7 @@ void DrawPlayList()
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int yyy;
|
int yyy;
|
||||||
|
int kfont_width;
|
||||||
char temp_filename[4096];
|
char temp_filename[4096];
|
||||||
dword text_color, bg_color;
|
dword text_color, bg_color;
|
||||||
for (i=0; i<list.visible; i++;)
|
for (i=0; i<list.visible; i++;)
|
||||||
@ -240,8 +240,9 @@ void DrawPlayList()
|
|||||||
text_color = theme.color_list_active_text;
|
text_color = theme.color_list_active_text;
|
||||||
}
|
}
|
||||||
DrawBar(list.x, yyy, list.w, list.item_h, bg_color);
|
DrawBar(list.x, yyy, list.w, list.item_h, bg_color);
|
||||||
kfont.WriteIntoWindow(6, yyy+list.text_y, bg_color,
|
kfont_width = kfont.WriteIntoWindow(6, yyy+list.text_y, bg_color,
|
||||||
text_color, list.font_type, #temp_filename);
|
text_color, list.font_type, #temp_filename);
|
||||||
|
if (kfont_width>skin.w-15) DrawBar(skin.w-1, yyy, 1, list.item_h, theme.color_list_border);
|
||||||
}
|
}
|
||||||
DrawBar(list.x,list.visible * list.item_h + list.y, list.w,
|
DrawBar(list.x,list.visible * list.item_h + list.y, list.w,
|
||||||
-list.visible * list.item_h + list.h, theme.color_list_bg);
|
-list.visible * list.item_h + list.h, theme.color_list_bg);
|
||||||
@ -260,19 +261,9 @@ void draw_window() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dword GetSongTitle()
|
|
||||||
{
|
|
||||||
char cur_y_playing_title[245];
|
|
||||||
strcpy(#cur_y_playing_title, #current_filename);
|
|
||||||
cur_y_playing_title[strrchr(#cur_y_playing_title, '.')-1] = '\0';
|
|
||||||
//if (strlen(#cur_y_playing_title) > 36) strcpy(#cur_y_playing_title + 34, "...");
|
|
||||||
return #cur_y_playing_title;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DrawTopPanel()
|
void DrawTopPanel()
|
||||||
{
|
{
|
||||||
|
int kfont_width;
|
||||||
int button_y;
|
int button_y;
|
||||||
//Mode depended
|
//Mode depended
|
||||||
if (window_mode == WINDOW_MODE_NORMAL)
|
if (window_mode == WINDOW_MODE_NORMAL)
|
||||||
@ -288,8 +279,9 @@ void DrawTopPanel()
|
|||||||
|
|
||||||
if (!work_folder) DrawPixieTitle("Pixie");
|
if (!work_folder) DrawPixieTitle("Pixie");
|
||||||
else DrawPixieTitle(#work_folder + strrchr(#work_folder, '/'));
|
else DrawPixieTitle(#work_folder + strrchr(#work_folder, '/'));
|
||||||
kfont.WriteIntoWindow(8, 24, theme.color_top_panel_bg,
|
kfont_width = kfont.WriteIntoWindow(8, 24, theme.color_top_panel_bg,
|
||||||
theme.color_top_panel_song_name, list.font_type, GetSongTitle());
|
theme.color_top_panel_song_name, list.font_type, #current_filename);
|
||||||
|
if (kfont_width>skin.w-15) DrawBar(skin.w-1, 24, 1, list.item_h, theme.color_list_border);
|
||||||
//Playing control buttons
|
//Playing control buttons
|
||||||
DefineHiddenButton(7, button_y, 38, 20, BUTTON_PLAYBACK_PREV);
|
DefineHiddenButton(7, button_y, 38, 20, BUTTON_PLAYBACK_PREV);
|
||||||
DefineHiddenButton(47, button_y, 38, 20, BUTTON_PLAYBACK_PLAY_PAUSE);
|
DefineHiddenButton(47, button_y, 38, 20, BUTTON_PLAYBACK_PLAY_PAUSE);
|
||||||
@ -308,6 +300,8 @@ void DrawTopPanel()
|
|||||||
{
|
{
|
||||||
button_y = 7;
|
button_y = 7;
|
||||||
img_draw stdcall(skin.image, 0, 0, WIN_W_SMALL, WIN_H_SMALL, skin.w-1, 0);
|
img_draw stdcall(skin.image, 0, 0, WIN_W_SMALL, WIN_H_SMALL, skin.w-1, 0);
|
||||||
|
if (playback_mode != PLAYBACK_MODE_STOPED)
|
||||||
|
img_draw stdcall(skin.image, 46, button_y-1, 27, 19, skin.w+83, WIN_H_SMALL+1);
|
||||||
DefineHiddenButton(0, 0, WIN_W_SMALL, WIN_H_SMALL, 99 + BT_NOFRAME);
|
DefineHiddenButton(0, 0, WIN_W_SMALL, WIN_H_SMALL, 99 + BT_NOFRAME);
|
||||||
//Playing control buttons
|
//Playing control buttons
|
||||||
DefineHiddenButton(20, button_y, 24, 16, BUTTON_PLAYBACK_PREV);
|
DefineHiddenButton(20, button_y, 24, 16, BUTTON_PLAYBACK_PREV);
|
||||||
@ -369,15 +363,15 @@ void EventOpenFolder(dword _open_path)
|
|||||||
{
|
{
|
||||||
list.w -= scroll1.size_x;
|
list.w -= scroll1.size_x;
|
||||||
}
|
}
|
||||||
MoveSize(OLD, OLD, OLD, skin.h + list.h);
|
if (window_mode==WINDOW_MODE_NORMAL) MoveSize(OLD, OLD, OLD, skin.h + list.h);
|
||||||
list.KeyHome();
|
list.KeyHome();
|
||||||
current_playing_file_n=0;
|
current_playing_file_n=0;
|
||||||
EventStopPlayingMp3();
|
EventStopPlaying();
|
||||||
if (_open_path) EventStartPlayingMp3();
|
if (_open_path) EventStartPlaying();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void EventStopPlayingMp3()
|
void EventStopPlaying()
|
||||||
{
|
{
|
||||||
if (player_run_id) player_run_id = KillProcess(player_run_id);
|
if (player_run_id) player_run_id = KillProcess(player_run_id);
|
||||||
if (notify_run_id) notify_run_id = KillProcess(notify_run_id);
|
if (notify_run_id) notify_run_id = KillProcess(notify_run_id);
|
||||||
@ -387,12 +381,12 @@ void EventStopPlayingMp3()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void EventStartPlayingMp3()
|
void EventStartPlaying()
|
||||||
{
|
{
|
||||||
word i;
|
word i;
|
||||||
char item_path[4096];
|
char item_path[4096];
|
||||||
char notify_message[512];
|
char notify_message[512];
|
||||||
EventStopPlayingMp3();
|
EventStopPlaying();
|
||||||
if (current_playing_file_n >= list.count) {
|
if (current_playing_file_n >= list.count) {
|
||||||
current_playing_file_n = list.count-1;
|
current_playing_file_n = list.count-1;
|
||||||
return;
|
return;
|
||||||
@ -404,11 +398,12 @@ void EventStartPlayingMp3()
|
|||||||
playback_mode = PLAYBACK_MODE_PLAYING;
|
playback_mode = PLAYBACK_MODE_PLAYING;
|
||||||
strlcpy(#current_filename, Getcur_yItemName(), sizeof(current_filename));
|
strlcpy(#current_filename, Getcur_yItemName(), sizeof(current_filename));
|
||||||
sprintf(#item_path,"-h %s/%s",#work_folder,#current_filename);
|
sprintf(#item_path,"-h %s/%s",#work_folder,#current_filename);
|
||||||
|
current_filename[strrchr(#current_filename, '.')-1] = '\0';
|
||||||
DrawPlayList();
|
DrawPlayList();
|
||||||
DrawTopPanel();
|
DrawTopPanel();
|
||||||
player_run_id = RunProgram("/sys/media/ac97snd", #item_path);
|
player_run_id = RunProgram("/sys/media/ac97snd", #item_path);
|
||||||
sprintf(#notify_message,"'Now playing:\n%s' -St",#current_filename);
|
sprintf(#notify_message,"'Now playing:\n%s' -St",#current_filename);
|
||||||
if (!repeat)
|
if (!repeat) && (window_mode==WINDOW_MODE_SMALL)
|
||||||
{
|
{
|
||||||
for (i=2; i<strlen(#notify_message)-6; i++)
|
for (i=2; i<strlen(#notify_message)-6; i++)
|
||||||
{
|
{
|
||||||
@ -425,12 +420,12 @@ void EventPlayAndPause()
|
|||||||
if (playback_mode == PLAYBACK_MODE_PLAYING)
|
if (playback_mode == PLAYBACK_MODE_PLAYING)
|
||||||
{
|
{
|
||||||
playback_mode = PLAYBACK_MODE_STOPED;
|
playback_mode = PLAYBACK_MODE_STOPED;
|
||||||
EventStopPlayingMp3();
|
EventStopPlaying();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
playback_mode = PLAYBACK_MODE_PLAYING;
|
playback_mode = PLAYBACK_MODE_PLAYING;
|
||||||
EventStartPlayingMp3();
|
EventStartPlaying();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -457,7 +452,7 @@ void EventChangeWindowMode()
|
|||||||
|
|
||||||
void EventExitApp()
|
void EventExitApp()
|
||||||
{
|
{
|
||||||
EventStopPlayingMp3();
|
EventStopPlaying();
|
||||||
SaveIniConfig();
|
SaveIniConfig();
|
||||||
ExitProcess();
|
ExitProcess();
|
||||||
}
|
}
|
||||||
@ -466,20 +461,20 @@ void EventPlaybackPrevious()
|
|||||||
{
|
{
|
||||||
if (shuffle) current_playing_file_n = random(list.count);
|
if (shuffle) current_playing_file_n = random(list.count);
|
||||||
else current_playing_file_n--;
|
else current_playing_file_n--;
|
||||||
EventStartPlayingMp3();
|
EventStartPlaying();
|
||||||
}
|
}
|
||||||
|
|
||||||
void EventPlaybackNext()
|
void EventPlaybackNext()
|
||||||
{
|
{
|
||||||
if (shuffle) current_playing_file_n = random(list.count);
|
if (shuffle) current_playing_file_n = random(list.count);
|
||||||
else current_playing_file_n++;
|
else current_playing_file_n++;
|
||||||
EventStartPlayingMp3();
|
EventStartPlaying();
|
||||||
}
|
}
|
||||||
|
|
||||||
void EventStartPlayingSelectedItem()
|
void EventStartPlayingSelectedItem()
|
||||||
{
|
{
|
||||||
current_playing_file_n=list.cur_y;
|
current_playing_file_n=list.cur_y;
|
||||||
EventStartPlayingMp3();
|
EventStartPlaying();
|
||||||
}
|
}
|
||||||
|
|
||||||
void EventFileDialogOpen()
|
void EventFileDialogOpen()
|
||||||
@ -492,7 +487,7 @@ void EventCheckSongFinished()
|
|||||||
{
|
{
|
||||||
if (playback_mode == PLAYBACK_MODE_PLAYING)
|
if (playback_mode == PLAYBACK_MODE_PLAYING)
|
||||||
&& (!GetProcessSlot(player_run_id)) {
|
&& (!GetProcessSlot(player_run_id)) {
|
||||||
if (repeat) EventStartPlayingMp3();
|
if (repeat) EventStartPlaying();
|
||||||
else EventPlaybackNext();
|
else EventPlaybackNext();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -509,6 +504,24 @@ void EventShuffleClick()
|
|||||||
DrawTopPanel();
|
DrawTopPanel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventDeleteItem()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
if (list.cur_y == current_playing_file_n) EventStopPlaying();
|
||||||
|
for (i=list.cur_y; i<list.count; i++) files_mas[i] = files_mas[i+1];
|
||||||
|
list.count--;
|
||||||
|
if (i + list.first <= current_playing_file_n) current_playing_file_n--;
|
||||||
|
list.CheckDoesValuesOkey();
|
||||||
|
if (list.count <= list.visible)
|
||||||
|
{
|
||||||
|
list.h = list.count * list.item_h;
|
||||||
|
list.visible = list.count;
|
||||||
|
list.w -= 1;
|
||||||
|
if (window_mode==WINDOW_MODE_NORMAL) MoveSize(OLD, OLD, OLD, skin.h + list.h);
|
||||||
|
}
|
||||||
|
else DrawPlayList();
|
||||||
|
}
|
||||||
|
|
||||||
void EventShowAbout()
|
void EventShowAbout()
|
||||||
{
|
{
|
||||||
proc_info pop_up;
|
proc_info pop_up;
|
||||||
@ -522,7 +535,7 @@ void EventShowAbout()
|
|||||||
if (key_scancode == SCAN_CODE_ESC) ExitProcess();
|
if (key_scancode == SCAN_CODE_ESC) ExitProcess();
|
||||||
break;
|
break;
|
||||||
case evReDraw:
|
case evReDraw:
|
||||||
DefineDragableWindow(150, 200, 400, 327);
|
DefineDragableWindow(150, 200, 400, 346);
|
||||||
GetProcessInfo(#pop_up, SelfInfo);
|
GetProcessInfo(#pop_up, SelfInfo);
|
||||||
DrawBar(0, 0, pop_up.width, pop_up.height, theme.color_top_panel_bg);
|
DrawBar(0, 0, pop_up.width, pop_up.height, theme.color_top_panel_bg);
|
||||||
DrawRectangle(0, 0, pop_up.width, pop_up.height, theme.color_list_border);
|
DrawRectangle(0, 0, pop_up.width, pop_up.height, theme.color_list_border);
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.4 KiB |
Loading…
Reference in New Issue
Block a user