/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/



#ifndef _PAD_COMMANDDLG_HXX_
#define _PAD_COMMANDDLG_HXX_

#include <vcl/dialog.hxx>
#include <tools/config.hxx>
#ifndef _SV_BUTTON_HXX
#include <vcl/button.hxx>
#endif
#include <vcl/fixed.hxx>
#include <vcl/group.hxx>
#include <vcl/combobox.hxx>
#include <vcl/lstbox.hxx>
#include <vcl/field.hxx>
#include <vcl/tabpage.hxx>

#include <list>

namespace padmin {

class RTSDialog;

class CommandStore
{
	static void getStoredCommands( const char* pGroup, ::std::list< String >& rCommands );
	static void getSystemPrintCommands( ::std::list< String >& rCommands );
	static void getSystemPdfCommands( ::std::list< String >& rCommands );
	static void setCommands( const char* pGroup, const ::std::list< String >& rCommands, const ::std::list< String >& rSysCommands );
	
public:
	static void getPrintCommands( ::std::list< String >& rCommands );
	static void getFaxCommands( ::std::list< String >& rCommands );
	static void getPdfCommands( ::std::list< String >& rCommands );
	
	static void setPrintCommands( const ::std::list< String >& rCommands );
	static void setFaxCommands( const ::std::list< String >& rCommands );
	static void setPdfCommands( const ::std::list< String >& rCommands );
};
	
class RTSCommandPage : public TabPage
{
private:
	RTSDialog*						m_pParent;
	
	ComboBox     					m_aCommandsCB;
    CheckBox                        m_aExternalCB;
    FixedText                       m_aQuickFT;
    ComboBox                        m_aQuickCB;
	FixedLine     					m_aCommandTitle;
	FixedText    					m_aPrinterName;
	FixedText    					m_aConnectedTo;
	FixedLine     					m_aPrinterFL;
		
	FixedText						m_aConfigureText;
	ListBox							m_aConfigureBox;
	sal_uInt16							m_nPrinterEntry;
	sal_uInt16							m_nFaxEntry;
	sal_uInt16							m_nPdfEntry;
	FixedText						m_aPdfDirectoryText;
	PushButton						m_aPdfDirectoryButton;
	Edit							m_aPdfDirectoryEdit;
	CheckBox						m_aFaxSwallowBox;
		
	PushButton						m_aHelpButton;
	PushButton						m_aRemovePB;

	::std::list< String >			m_aPrinterCommands;
	::std::list< String >			m_aFaxCommands;
	::std::list< String >			m_aPdfCommands;
		
	String							m_aFaxHelp;
	String							m_aPrinterHelp;
	String							m_aPdfHelp;

	bool							m_bWasFax;
	bool							m_bWasPdf;
    bool                            m_bWasExternalDialog;
		
	DECL_LINK( DoubleClickHdl, ComboBox* );
	DECL_LINK( ClickBtnHdl, Button* );
	DECL_LINK( SelectHdl, Control* );
	DECL_LINK( ModifyHdl, Edit* );
		
	void ConnectCommand();
	void UpdateCommands();
		
public:
	RTSCommandPage( RTSDialog* );
	~RTSCommandPage();

	void save();
};

} // namespace

#endif