// This sourcefile is created by Peter Jodda / peter@jodda.de
// It is under the Peter Jodda license:
// Everyboy may use it on his own risk. This header must stay in the file!
// If you expand this file, please contact me, that I can integrate the
// enhancemants in the original file.
//

#include <stdio.h>
#include <string.h>

#include "thumbnail.h"

//-----------------------------------------------------------------------------


Thumbnail::Thumbnail()
{
   name       = NULL;
   bild       = NULL;
   selektiert = false;
}


//-----------------------------------------------------------------------------


Thumbnail::~Thumbnail()
{
   if(name != NULL)
   {
      delete name;
      name =NULL;
   }
   if(bild != NULL)
   {
      delete bild;
      bild = NULL;
   }
}

//-----------------------------------------------------------------------------


void Thumbnail::setzeNamen(char *neuerName)
{
   int laenge;
   
   if(name != NULL)
      delete name;
   name = NULL;
   
   laenge = strlen(neuerName) +1;
   
   name = new char[laenge];
   strcpy(name,neuerName);

}

//-----------------------------------------------------------------------------


void Thumbnail::setzeBild(QImage *einBild)
{
   // eventuell altes loeschen
   if( bild != NULL)
      delete bild;
      
   bild = einBild;

}


//=============================================================================

ThumbnailListe::ThumbnailListe()
{
   liste        = NULL;
   anzahl       = 0;
   platzInListe = 0;
}

//-----------------------------------------------------------------------------


ThumbnailListe::~ThumbnailListe()
{
   // hier noch vorhandene thumbnails loeschen
   loescheAlle();   
   
   // liste selber loeschen
   if(liste != NULL)
   {
       delete liste;
       liste = NULL;
   }
}

//-----------------------------------------------------------------------------


void ThumbnailListe::add( Thumbnail *neu)
{
   if(neu ==NULL)
      return;
   if( (anzahl+1) > platzInListe)
   {
      // liste muss erweitert werden
      Thumbnail  ** neueListe;
      int        neuerPlatz;
      int        i;
   
      
      neuerPlatz = platzInListe*2 + 10;
      
      neueListe = new (Thumbnail *)[neuerPlatz];
      
      if(neueListe ==NULL)
         return;

      // die alten umkopieren
      for(i=0;i<platzInListe;i++)
      {
         neueListe[i] = liste[i];
      }
      if(liste != NULL)
         delete liste;

      // neue liste einsetzen
      liste = neueListe;
      platzInListe = neuerPlatz;
      
   }
   
   // thumbnail einsetzen
   liste[anzahl] = neu;
   anzahl += 1;   
   
   
}

//-----------------------------------------------------------------------------

void ThumbnailListe::loescheAlle( )
{
   int i;
   // hier noch vorhandene thumbnails loeschen
   for(i=0;i<anzahl;i++)
   {
      delete liste[i];
      liste[i] = NULL;
   }
   anzahl = 0;
      
}

//-----------------------------------------------------------------------------


int ThumbnailListe::anzahlBilder( )
{
   return anzahl;
}

//-----------------------------------------------------------------------------


Thumbnail * ThumbnailListe::gibBild(int nummer )
{
   if( nummer<0 || (nummer >= anzahl) )
      return NULL;

   return liste[nummer];
}


//-----------------------------------------------------------------------------


void ThumbnailListe:: holSelektiertListe(int *selektiertAnzahl,int **selektiertListe)
{
   int i;
   int anzahlGewaehlt;
   int *sliste;

   anzahlGewaehlt = 0;

   // schauen, wieviel gewaehlt sind
   for(i=0; i<anzahl; i++)
   {
       if( liste[i]->selektiert == true)
          anzahlGewaehlt += 1;
   }
   
   if(anzahlGewaehlt == 0)
   {
      // keiner gewaehlt
      *selektiertAnzahl = 0;
      *selektiertListe  = NULL;
      
      return;
   }  

      
   *selektiertListe = sliste
                    = new int[anzahlGewaehlt];
   *selektiertAnzahl = anzahlGewaehlt;
   if( sliste ==NULL )
      return;
 
   anzahlGewaehlt=0;
   
   for(i=0; i<anzahl; i++)
   {
      if( liste[i]->selektiert == true)
      {
          sliste[anzahlGewaehlt] = i;
          anzahlGewaehlt += 1;
      }
   }

}
