summaryrefslogtreecommitdiffstats
path: root/kmid/slman.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kmid/slman.cpp')
-rw-r--r--kmid/slman.cpp320
1 files changed, 0 insertions, 320 deletions
diff --git a/kmid/slman.cpp b/kmid/slman.cpp
deleted file mode 100644
index 39b10ca2..00000000
--- a/kmid/slman.cpp
+++ /dev/null
@@ -1,320 +0,0 @@
-/**************************************************************************
-
- slman.cc - SongList Manager, which holds a set of collections (SongLists)
- Copyright (C) 1997,98 Antonio Larrosa Jimenez
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
- Send comments and bug fixes to [email protected]
- or to Antonio Larrosa, Rio Arnoya, 10 5B, 29006 Malaga, Spain
-
-***************************************************************************/
-#include "slman.h"
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include "version.h"
-#include <klocale.h>
-
-SLManager::SLManager()
-{
- list=NULL;
- ntotal=0;
- tempsl=NULL;
- createTemporaryCollection();
-}
-
-SLManager::SLManager(SLManager &src)
-{
- list=NULL;
- ntotal=0;
- tempsl=NULL;
- SongListNode *srcSL=src.list;
- SongList *tmpSL;
- int i;
- while (srcSL!=NULL)
- {
- i=createCollection(srcSL->name);
- tmpSL=getCollection(i);
- if (tmpSL!=NULL)
- tmpSL->copy(*srcSL->SL);
- srcSL=srcSL->next;
- }
- if (src.tempsl!=NULL) tempsl=new SongList(*src.tempsl);
- else tempsl=NULL;
-}
-
-SLManager::~SLManager()
-{
- SongListNode *ptr;
- ptr=list;
- while (ptr!=NULL)
- {
- list=ptr->next;
- if (ptr->SL!=NULL) delete ptr->SL;
- if (ptr->name!=NULL) delete ptr->name;
- delete ptr;
- ptr=list;
- }
- if (tempsl!=NULL) delete tempsl;
- ntotal=0;
-}
-
-int SLManager::createCollection(const char *name)
-{
- SongListNode *ptr;
- if (nameUsed(name))
- {
- printf("Name '%s' is already used\n",name);
- return -1;
- }
- if (list==NULL)
- {
- list=new SongListNode;
- list->id=1;
- ntotal=1;
- ptr=list;
- }
- else
- {
- ptr=list;
- while (ptr->next!=NULL) ptr=ptr->next;
- ptr->next=new SongListNode;
- ptr=ptr->next;
-
- ptr->id= ++ntotal;
- }
- ptr->SL=new SongList;
- ptr->next=NULL;
- if (name!=NULL)
- {
- ptr->name=new char[strlen(name)+1];
- strcpy(ptr->name,name);
- }
- else
- {
- ptr->name=getNotUsedName();
- }
-return ptr->id;
-}
-
-char *SLManager::getNotUsedName(void)
-{
- char *trythis;
- trythis=new char[100];
- strcpy(trythis,"No Name");
- int tries=1;
- int success=0;
- while (!success)
- {
- if (nameUsed(trythis)) sprintf(trythis,"No Name - %d",++tries);
- else
- success=1;
- }
- return trythis;
-}
-
-int SLManager::nameUsed(const char *name)
-{
- /*
- SongListNode *ptr=list;
- int used=0;
- while ((!used)&&(ptr!=NULL))
- {
- if (strcmp(ptr->name,name)==0) used=1;
- ptr=ptr->next;
- };
- return used;
- */
- if (getCollection(name)==NULL) return 0;
- return 1;
-}
-
-void SLManager::deleteCollection(int id)
-{
- if (list==NULL) return;
- SongListNode *ptr=list;
- SongListNode *ptr2;
- if (id==1) list=list->next;
- else
- {
- ptr2=list;
- while ((ptr!=NULL)&&(ptr->id!=id))
- {
- ptr2=ptr;
- ptr=ptr->next;
- }
- if (ptr==NULL)
- {
- printf("Trying to delete a not used id\n");
- return;
- }
- ptr2->next=ptr->next;
- }
- ptr2=ptr->next;
- delete ptr->SL;
- delete ptr->name;
- delete ptr;
- regenerateid(ptr2,id);
-
-}
-
-void SLManager::regenerateid(SongListNode *sl,int id)
-{
- SongListNode *tmp=sl;
- int i=id;
- while (tmp!=NULL)
- {
- tmp->id=i++;
- tmp=tmp->next;
- }
- ntotal=i-1;
-}
-
-void SLManager::changeCollectionName(int id,const char *newname)
-{
- if (id<1) return;
- if (nameUsed(newname))
- {
- printf("Cannot change name, '%s' is already used\n",newname);
- return;
- }
- SongListNode *ptr=list;
- while ((ptr!=NULL)&&(ptr->id!=id)) ptr=ptr->next;
- if (ptr==NULL) return;
-
- delete ptr->name;
- ptr->name=new char[strlen(newname)+1];
- strcpy(ptr->name,newname);
-}
-
-SongList *SLManager::getCollection(int id)
-{
- if (id==0) return tempsl;
-
- SongListNode *ptr=list;
- while ((ptr!=NULL)&&(ptr->id!=id)) ptr=ptr->next;
-
- if (ptr==NULL) return NULL;
- return ptr->SL;
-}
-
-SongList *SLManager::getCollection(const char *name)
-{
- SongListNode *ptr=list;
- while ((ptr!=NULL)&&(strcmp(ptr->name,name)!=0)) ptr=ptr->next;
-
- if (ptr==NULL) return NULL;
- return ptr->SL;
-}
-
-const char *SLManager::getCollectionName(int id)
-{
- if (id==0) return I18N_NOOP("Temporary Collection");
- SongListNode *ptr=list;
- while ((ptr!=NULL)&&(ptr->id!=id)) ptr=ptr->next;
-
- if (ptr==NULL) return NULL;
- return ptr->name;
-}
-
-void SLManager::loadConfig(const char *filename)
-{
-#ifdef GENERAL_DEBUG_MESSAGES
- printf("Loading collections\n");
-#endif
- FILE *fh=fopen(filename,"rt");
- if (fh==NULL)
- {
- printf("Collections cannot be loaded\n(File %s doesn't exist or can't be opened)\n",filename);
- return;
- }
- char s[300];
- SongList *sl=NULL;
- int activeid=0;
- while (!feof(fh))
- {
- s[0] = 0;
- fgets(s,299,fh);
- if ((strlen(s)>0)&&(s[strlen(s)-1]==10)) s[strlen(s)-1]=0;
- switch (s[0])
- {
- case (0) : break;
- case (10) : break;
- case ('=') :
- {
- if (sl!=NULL) sl->setActiveSong(activeid);
- int id=createCollection(&s[1]);
- sl=getCollection(id);
- fgets(s,299,fh);
- activeid=atoi(s);
- }
- break;
- default :
- {
- if (sl!=NULL) sl->AddSong((const char *)s);
- }
- }
- }
- if (sl!=NULL) sl->setActiveSong(activeid);
-
- fclose(fh);
-}
-
-void SLManager::saveConfig(const char *filename)
-{
- SongListNode *ptr=list;
- FILE *fh=fopen(filename,"wt");
- if (fh==NULL)
- {
- printf("Collections couldn't be saved\n");
- return;
- }
- char s[FILENAME_MAX];
- SongList *sl;
- while (ptr!=NULL)
- {
- sprintf(s,"=%s\n",ptr->name);
- fputs(s,fh);
-
- sl=ptr->SL;
- sprintf(s,"%d\n",sl->getActiveSongID());
- fputs(s,fh);
-
- sl->iteratorStart();
- while (!sl->iteratorAtEnd())
- {
- sprintf(s,"%s\n",sl->getIteratorName());
- fputs(s,fh);
- sl->iteratorNext();
- }
- // ptr->SL->saveList(fh);
- fputs("\n",fh);
-
- ptr=ptr->next;
- }
- fclose(fh);
-
-}
-
-SongList *SLManager::createTemporaryCollection(void)
-{
- if (tempsl==NULL)
- tempsl=new SongList();
- else
- tempsl->clean();
-
- return tempsl;
-}