123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- #include "main.h"
- #include "MoreItems.h"
- static const wchar_t g_noentry[] = L"No Entry";
- wchar_t *strFile;
- size_t cbFile;
- wchar_t *strTitle;
- size_t cbTitle;
- char *strCurtain;
- size_t cbCurtain;
- int length;
- int index;
- unsigned long starttime; // Start time in MS (0, begin of file)
- unsigned long endtime; // End time in MS (0, end of file)
- moreitems *Next; // Next Item in linked list
- moreitems::moreitems()
- : strFile(0), cbFile(0), strTitle(0), cbTitle(0),
- strCurtain(0), cbCurtain(0), length(0), index(0),
- starttime(0), endtime(0), Next(0)
- {
- }
- moreitems::~moreitems()
- {
- // recursive, find the _tail and remove it, work back to _head
- delete Next; Next = NULL;
- delete[] strFile; strFile=NULL;
- delete[] strTitle;
- delete[] strCurtain;
- }
- const wchar_t *moreitems::GetHiddenFilename(int index)
- {
- if (this->index == index)
- return strFile;
- if (Next == NULL)
- return g_noentry;
- return Next->GetHiddenFilename(index);
- }
- int moreitems::SetRange(int index, unsigned long start, unsigned long end)
- {
- if (this->index == index)
- {
- this->starttime = start;
- this->endtime = end;
- return 1;
- }
- if (Next == NULL)
- return 0;
- return Next->SetRange(index,start,end);
- }
- unsigned long moreitems::GetStart(int index)
- {
- if (this->index == index)
- {
- return this->starttime;
- }
- if (Next == NULL)
- return 0;
- return Next->GetStart(index);
- }
- unsigned long moreitems::GetEnd(int index)
- {
- if (this->index == index)
- {
- return this->endtime;
- }
- if (Next == NULL)
- return 0;
- return Next->GetEnd(index);
- }
- int moreitems::AddHiddenItem(const wchar_t *filename, const wchar_t *title, int length, int index, char *curtain)
- {
- // Linked list _head
- moreitems *additem = this;
- if (additem && index == 1)
- {
- // List empty
- // Use placeholder
- }
- else
- {
- // Found items, walk to the end
- while (additem && additem->Next) additem = additem->Next;
- if (additem)
- {
- additem->Next = new moreitems;
- additem = additem->Next;
- }
- }
- if (additem)
- {
- additem->cbFile = lstrlenW(filename) + 1;
- additem->strFile = new wchar_t[additem->cbFile];
- StringCchCopyW(additem->strFile , additem->cbFile, filename);
- additem->cbTitle = (int)lstrlenW(title) + 1;
- additem->strTitle = new wchar_t[additem->cbFile];
- StringCchCopyW(additem->strTitle, additem->cbTitle, title);
- if (curtain && *curtain)
- {
- additem->cbCurtain = (int)strlen(curtain) + 1;
- additem->strCurtain = new char[additem->cbCurtain];
- StringCchCopyA(additem->strCurtain, additem->cbCurtain, curtain);
- }
- else
- {
- additem->cbCurtain = 0;
- additem->strCurtain = NULL;
- }
- additem->length = length;
- additem->index = index;
- return 1;
- }
- return 0;
- }
- const char *moreitems::GetHiddenCurtain(int index)
- {
- moreitems *where = this;
- while ( where )
- {
- if ( where->index == index && where->cbCurtain ) return where->strCurtain;
- where = where->Next;
- }
- return NULL;
- }
|