📄 playlist.cpp
字号:
#include "Playlist.h"
Playlist::Playlist()
{
this->current = -1;
this->itemCount = 0;
this->playlist = NULL;
}
Playlist::~Playlist()
{
this->Reset();
}
void Playlist::Reset()
{
playlist_node_t *node, *temp;
this->current = -1;
this->itemCount = 0;
if(this->playlist != NULL) {
node = playlist;
while(node->next != NULL) {
temp = node;
node = node->next;
free(temp);
}
free(node);
this->playlist = NULL;
}
}
void Playlist::AddItem(char *filename)
{
playlist_node_t *node;
playlist_node_t *iterator;
if(filename) {
node = (playlist_node_t *) new playlist_node_t;
node->item.filename = (char *) new char[strlen(filename)];
strcpy(node->item.filename, filename);
node->next = NULL;
if(this->itemCount == 0) {
this->playlist = node;
this->itemCount = 1;
this->current = 0;
}
else {
DWORD i;
iterator = this->playlist;
for(i=0; i<this->itemCount-1; i++) {
if(iterator->next != NULL)
iterator = iterator->next;
}
iterator->next = node;
this->itemCount++;
}
}
}
void Playlist::RemoveItemAt(DWORD i)
{
DWORD count;
playlist_node_t *node;
if(this->itemCount == 0)
return;
if(this->itemCount == 1) {
this->Reset();
}
else {
if( i>=1 && i<this->itemCount) {
if(i == 0) {
node = this->playlist;
this->playlist = this->playlist->next;
free(node);
this->itemCount--;
}
else {
node = this->playlist;
for(count = 0; count < i-1; count++) {
if(node->next != NULL)
node = node->next;
}
if(node->next->next == NULL) {
free(node->next);
node->next = NULL;
this->itemCount--;
}
else {
playlist_node_t *temp;
temp = node->next;
node->next = temp->next;
free(temp);
this->itemCount--;
}
}
}
}
}
void Playlist::NextItem()
{
if(this->current < this->itemCount - 1)
this->current++;
}
void Playlist::PreviousItem()
{
if(this->current > 0)
this->current--;
}
DWORD Playlist::GetItemCount()
{
return this->itemCount;
}
DWORD Playlist::GetCurrentPosition()
{
return this->current;
}
playlist_item_t *Playlist::GetCurrentItem()
{
if(current == -1 || this->itemCount <= 0) {
return NULL;
}
else {
playlist_node_t *node;
DWORD i;
node = playlist;
for(i=0; i < this->current; i++) {
node = node->next;
}
return &node->item;
}
}
playlist_item_t *Playlist::GetItemAt(DWORD pos)
{
if(current == -1 || this->itemCount <= 0) {
return NULL;
}
else {
playlist_node_t *node;
DWORD i;
node = playlist;
for(i=0; i < pos; i++) {
node = node->next;
}
return &node->item;
}
}
void Playlist::SetCurrentPosition(DWORD pos)
{
if(pos >= 0 && pos < this->itemCount) {
this->current = pos;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -