/* Network-Integrated Multimedia Middleware (NMM)
 * http://www.motama.com/nmm.html
 *
 * Copyright (C) 2006-2007
 * Motama GmbH, Saarbruecken, Germany
 * http://www.motama.com
 *
 * This file is part of NMM. 
 * 
 * NMM 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; only version 2 of the License.      
 * 
 * NMM 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 NMM; if not, write to the Free Software Foundation,    
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 */

#ifndef NMM_INxtvepgPluginImpl_HPP
#define NMM_INxtvepgPluginImpl_HPP

#include "nmm/nmm_prefix.hpp"

#include "nmm/comm/NMMObject.hpp"
#include "INxtvepgPlugin.hpp"


#include "visibility.hpp"

namespace NMM
{
  /**
   * Interface to set parameters for NxtvepgPlugin
   */

  class DLLEXPORT INxtvepgPluginImpl  : public virtual NMM::NMMObject { 
  public:
    INxtvepgPluginImpl() { addInterface(new INxtvepgPlugin(*this)); registerEvents(); };

    virtual ~INxtvepgPluginImpl() {};

  protected:
    /**
     * sets the remote host where the nxtvepg-daemon if different from localhost
     *@param loc location of nxtvepg-daemon
     */

    virtual void setLocation(const string& loc) = 0;
    /**
    * sets the remote port where the nxtvepg-daemon if different from localhost
    *@param nmm_int32 port
    */

    virtual void setPort(const nmm_int32& p) = 0;
    /**
     * adding a provider-string for XML-Dump
     */

    virtual void addProvider(const string& p) = 0;
    /**
     * returns the providers for XMLDump, that are selected
     */

    virtual list<string >  getProvider() = 0;
    /**
     * sets the path and name of the plugin-Configuration-File
     */

    virtual void setConfigFile(const string& file) = 0;
    /**
     *returns the path and name of Configuraaiton-File used
     */

    virtual string getConfigFile() = 0;
    /**
     * seting database-directory for nxtvepg-tool
     */

    virtual void setDBDir(const string& db) = 0;
    /**
     * get database-directory
     */

    virtual string getDBDir() = 0;
    /**
     * if the file contains data for differnet countris, specify, wich data should be evaluated
     *@param abreviation for locale, eg de for germany
     */

    virtual void setLocale(const string& l) = 0;
    /**
     * get the locale-string set
     *@return localstring
     */

    virtual string getLocale() = 0;
    /**
     * set the interval when a new grabb-command should be issued. The syntax of the string must be XY, where X=d|m|s Y=0-...
     * X=d means daily, the number specifies, after what amount of days the command should be re-launched
     *@param period
     */

    virtual void setPeriod(const string& p) = 0;
    /**
     * get the period set
     *@return period
     */

    virtual string getPeriod() = 0;
    /**
     * enbale/disable the use of tv_split, wich is contains in xmltv-tools-distribution
     */

    virtual void setUseTv_split(const nmm_bool& b) = 0;

    virtual nmm_bool getUseTv_split() = 0;


  private:
    void registerEvents();
  };

}

#include "nmm/nmm_suffix.hpp"

#endif
