// (c) 2005 Seb Ruiz <me@sebruiz.net>
// See COPYING file for licensing information.

#ifndef AMAROK_PODCASTSETTINGS_H
#define AMAROK_PODCASTSETTINGS_H

#include "kdialogbase.h"    //baseclass

#include <kurl.h>

#include <tqptrlist.h>

class PodcastChannel;
class PodcastEpisode;
class PodcastSettingsDialogBase;
class TQDomNode;
class TQDomElement;

enum MediaFetch{ STREAM=0, AUTOMATIC=1 };

class PodcastSettings
{
    public:
        PodcastSettings( const TQDomNode &channelSettings, const TQString &title );
        PodcastSettings( const PodcastSettings *parentSettings, const TQString &title );
        PodcastSettings( const TQString &title ); // standard settings
        PodcastSettings( const TQString &title, const TQString &save, const bool autoScan,
                         const int fetchType, const bool autotransfer, const bool purge, const int purgecount );

        const TQString &saveLocation() { return m_saveLocation; }
        const TQString &title() { return m_title; }
        bool    autoscan()         { return m_autoScan; }
        int     fetchType()        { return m_fetch; }
        bool    autoTransfer()     { return m_addToMediaDevice; }
        bool    hasPurge()         { return m_purge; }
        int     purgeCount()       { return m_purgeCount; }

        TQString m_title;    //the title of the podcast or category these settings belong to
        TQString m_saveLocation;
        bool    m_autoScan;
        int     m_fetch;
        bool    m_addToMediaDevice;
        bool    m_purge;
        int     m_purgeCount;
};


class PodcastSettingsDialog : public KDialogBase
{
    Q_OBJECT
  

    public:
        PodcastSettingsDialog( PodcastSettings *list, TQWidget* parent=0 );
        PodcastSettingsDialog( const TQPtrList<PodcastSettings> &list, const TQString &caption, TQWidget* parent=0 );

        bool    configure();
        PodcastSettings *getSettings() { return m_settings; }

    protected:
        bool    hasChanged();

    protected slots:
        void    checkModified();
        void    slotOk();
        void    slotUser1();

    private:
        void init();
        void setSettings( PodcastSettings *settings );
        TQString requesterSaveLocation();

        PodcastSettingsDialogBase *m_ps;
        TQPtrList<PodcastSettings> m_settingsList;
        PodcastSettings           *m_settings;
};

#endif /*AMAROK_PODCASTSETTINGS_H*/
