/***************************************************************************
 *                                                                         *
 *   Copyright (C) 2005, 2006 by Kevin Gilbert                             *
 *   kev.gilbert@cdu.edu.au                                                *
 *                                                                         *
 *   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.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 *                                                                         *
 ***************************************************************************/

#include <tqbuttongroup.h>
#include <tqcheckbox.h>
#include <tqlayout.h>
#include <tqlineedit.h>
#include <tqpushbutton.h>

#include <tdeconfig.h>
#include <kdebug.h>
#include <tdeglobal.h>
#include <kiconloader.h>
#include <kinputdialog.h>
#include <tdelocale.h>
#include <tdemessagebox.h>

#include "knmap.h"
#include "loggingoptions.h"
#include "whatsthis.h"

//	constructor
//	===========

LoggingOptions::LoggingOptions( TQWidget* parent, const char* name )
: TQWidget( parent, name )
{	createLayout( );
}

//	createLayout
//	============

void LoggingOptions::createLayout( )
{	TQGridLayout* gridLayout      = new TQGridLayout( this );
	TDEIconLoader* iconLoader      = TDEGlobal::iconLoader( );
	TQIconSet     fileOpenIconSet = iconLoader->loadIconSet( "document-open",   TDEIcon::Small );

	m_baseFileNameButton   = new TQPushButton( fileOpenIconSet, NULL, this, "base file name button" );
	m_grepableLogButton    = new TQPushButton( fileOpenIconSet, NULL, this, "grepable log button"   );
	m_normalLogButton      = new TQPushButton( fileOpenIconSet, NULL, this, "normal log button"     );
	m_resumeButton         = new TQPushButton( fileOpenIconSet, NULL, this, "resume button"         );
	m_scriptKiddieButton   = new TQPushButton( fileOpenIconSet, NULL, this, "script kiddie button"  );
	m_stylesheetButton     = new TQPushButton( fileOpenIconSet, NULL, this, "stylesheet button"     );
	m_xmlLogButton         = new TQPushButton( fileOpenIconSet, NULL, this, "xml log button"        );

	m_appendOutputCheckBox = new TQCheckBox( i18n( "Append output (--append_output)"       ), this, "append output checkbox" );
	m_baseFileNameCheckBox = new TQCheckBox( i18n( "Base file name (-oA <name>) "          ), this, "base name checkbox"     );
	m_grepableLogCheckBox  = new TQCheckBox( i18n( "grep'able log file (-oG <file>) "      ), this, "grepable log checkbox"  );
	m_normalLogCheckBox    = new TQCheckBox( i18n( "Normal log file (-oN <file>) "         ), this, "normal log checkbox"    );
	m_noStylesheetCheckBox = new TQCheckBox( i18n( "No XSL stylesheet (--no_stylesheet)"   ), this, "no stylesheet checkbox" );
	m_resumeCheckBox       = new TQCheckBox( i18n( "Resume file (--resume <file>) "        ), this, "resume checkbox"        );
	m_scriptKiddieCheckBox = new TQCheckBox( i18n( "Script kiddie log file (-oS <file>) "  ), this, "script kiddie checkbox" );
	m_stylesheetCheckBox   = new TQCheckBox( i18n( "XSL stylesheet (--stylesheet <file>) " ), this, "stylesheet checkbox"    );
	m_xmlLogCheckBox       = new TQCheckBox( i18n( "XML log file (-oX <file>) "            ), this, "xml log checkbox"       );

	m_baseFileNameLineEdit = new TQLineEdit( this, "base file name line edit" );
	m_grepableLogLineEdit  = new TQLineEdit( this, "grepable log line edit"   );
	m_normalLogLineEdit    = new TQLineEdit( this, "normal log line edit"     );
	m_resumeLineEdit       = new TQLineEdit( this, "resume line edit"         );
	m_scriptKiddieLineEdit = new TQLineEdit( this, "script kiddie line edit"  );
	m_stylesheetLineEdit   = new TQLineEdit( this, "stylesheet line edit"     );
	m_xmlLogLineEdit       = new TQLineEdit( this, "xml log line edit"        );

	byte row = 1;
	gridLayout->addWidget( m_appendOutputCheckBox, row++, 1 );
	gridLayout->addWidget( m_noStylesheetCheckBox, row++, 1 );
	byte rowBlock1 = row;

	row = 1;
	gridLayout->addWidget( m_baseFileNameCheckBox, row,   3 );
	gridLayout->addWidget( m_baseFileNameLineEdit, row,   4 );
	gridLayout->addWidget( m_baseFileNameButton,   row++, 5 );

	gridLayout->addWidget( m_grepableLogCheckBox,  row,   3 );
	gridLayout->addWidget( m_grepableLogLineEdit,  row,   4 );
	gridLayout->addWidget( m_grepableLogButton,    row++, 5 );

	gridLayout->addWidget( m_normalLogCheckBox,    row,   3 );
	gridLayout->addWidget( m_normalLogLineEdit,    row,   4 );
	gridLayout->addWidget( m_normalLogButton,      row++, 5 );

	gridLayout->addWidget( m_resumeCheckBox,       row,   3 );
	gridLayout->addWidget( m_resumeLineEdit,       row,   4 );
	gridLayout->addWidget( m_resumeButton,         row++, 5 );

	gridLayout->addWidget( m_scriptKiddieCheckBox, row,   3 );
	gridLayout->addWidget( m_scriptKiddieLineEdit, row,   4 );
	gridLayout->addWidget( m_scriptKiddieButton,   row++, 5 );

	gridLayout->addWidget( m_xmlLogCheckBox,       row,   3 );
	gridLayout->addWidget( m_xmlLogLineEdit,       row,   4 );
	gridLayout->addWidget( m_xmlLogButton,         row++, 5 );

	gridLayout->addWidget( m_stylesheetCheckBox,   row,   3 );
	gridLayout->addWidget( m_stylesheetLineEdit,   row,   4 );
	gridLayout->addWidget( m_stylesheetButton,     row++, 5 );
	byte rowBlock2 = row;

	gridLayout->setColStretch( 0,  5 );
	gridLayout->setColStretch( 2,  5 );
	gridLayout->setColStretch( 4, 10 );
	gridLayout->setColStretch( 6,  5 );

	gridLayout->setRowStretch( 0, 10 );
	gridLayout->setRowStretch( _max_( rowBlock1, rowBlock2 ), 10 );
}

//	finaliseInitialisation
//	======================

void LoggingOptions::finaliseInitialisation( )
{	WhatsThis* whatsThis = new WhatsThis( this );

	connect( m_baseFileNameButton,   TQ_SIGNAL( clicked( )), TQ_SLOT( slotBaseFileNameButtonClicked( )));
	connect( m_baseFileNameCheckBox, TQ_SIGNAL( clicked( )), TQ_SLOT( slotBaseFileNameCheckBoxClicked( )));
	connect( m_grepableLogButton,    TQ_SIGNAL( clicked( )), TQ_SLOT( slotGrepableLogButtonClicked( )));
	connect( m_grepableLogCheckBox,  TQ_SIGNAL( clicked( )), TQ_SLOT( slotGrepableLogCheckBoxClicked( )));
	connect( m_normalLogButton,      TQ_SIGNAL( clicked( )), TQ_SLOT( slotNormalLogButtonClicked( )));
	connect( m_normalLogCheckBox,    TQ_SIGNAL( clicked( )), TQ_SLOT( slotNormalLogCheckBoxClicked( )));
	connect( m_noStylesheetCheckBox, TQ_SIGNAL( clicked( )), TQ_SLOT( slotNoStylesheetCheckBoxClicked( )));
	connect( m_resumeButton,         TQ_SIGNAL( clicked( )), TQ_SLOT( slotResumeButtonClicked( )));
	connect( m_resumeCheckBox,       TQ_SIGNAL( clicked( )), TQ_SLOT( slotResumeCheckBoxClicked( )));
	connect( m_scriptKiddieButton,   TQ_SIGNAL( clicked( )), TQ_SLOT( slotScriptKiddieButtonClicked( )));
	connect( m_scriptKiddieCheckBox, TQ_SIGNAL( clicked( )), TQ_SLOT( slotScriptKiddieCheckBoxClicked( )));
	connect( m_stylesheetButton,     TQ_SIGNAL( clicked( )), TQ_SLOT( slotStylesheetButtonClicked( )));
	connect( m_stylesheetCheckBox,   TQ_SIGNAL( clicked( )), TQ_SLOT( slotStylesheetCheckBoxClicked( )));
	connect( whatsThis,              TQ_SIGNAL( clicked( )), TQ_SLOT( slotWhatsThisClicked( )));
	connect( m_xmlLogButton,         TQ_SIGNAL( clicked( )), TQ_SLOT( slotXMLLogButtonClicked( )));
	connect( m_xmlLogCheckBox,       TQ_SIGNAL( clicked( )), TQ_SLOT( slotXMLLogCheckBoxClicked( )));

	connect( m_appendOutputCheckBox, TQ_SIGNAL( clicked( )),                    TQ_SIGNAL( optionsDirty( )));
	connect( m_baseFileNameCheckBox, TQ_SIGNAL( clicked( )),                    TQ_SIGNAL( optionsDirty( )));
	connect( m_baseFileNameLineEdit, TQ_SIGNAL( textChanged( const TQString& )), TQ_SIGNAL( optionsDirty( )));
	connect( m_grepableLogCheckBox,  TQ_SIGNAL( clicked( )),                    TQ_SIGNAL( optionsDirty( )));
	connect( m_grepableLogLineEdit,  TQ_SIGNAL( textChanged( const TQString& )), TQ_SIGNAL( optionsDirty( )));
	connect( m_normalLogCheckBox,    TQ_SIGNAL( clicked( )),                    TQ_SIGNAL( optionsDirty( )));
	connect( m_normalLogLineEdit,    TQ_SIGNAL( textChanged( const TQString& )), TQ_SIGNAL( optionsDirty( )));
	connect( m_resumeCheckBox,       TQ_SIGNAL( clicked( )),                    TQ_SIGNAL( optionsDirty( )));
	connect( m_resumeLineEdit,       TQ_SIGNAL( textChanged( const TQString& )), TQ_SIGNAL( optionsDirty( )));
	connect( m_scriptKiddieCheckBox, TQ_SIGNAL( clicked( )),                    TQ_SIGNAL( optionsDirty( )));
	connect( m_scriptKiddieLineEdit, TQ_SIGNAL( textChanged( const TQString& )), TQ_SIGNAL( optionsDirty( )));
	connect( m_stylesheetCheckBox,   TQ_SIGNAL( clicked( )),                    TQ_SIGNAL( optionsDirty( )));
	connect( m_stylesheetLineEdit,   TQ_SIGNAL( textChanged( const TQString& )), TQ_SIGNAL( optionsDirty( )));
	connect( m_xmlLogCheckBox,       TQ_SIGNAL( clicked( )),                    TQ_SIGNAL( optionsDirty( )));
	connect( m_xmlLogLineEdit,       TQ_SIGNAL( textChanged( const TQString& )), TQ_SIGNAL( optionsDirty( )));
}

//	getOptions
//	==========

bool LoggingOptions::getOptions( )
{	bool    baseFileNameState   = m_baseFileNameCheckBox->isChecked( );
	TQString baseFileNameValue   = m_baseFileNameLineEdit->text( );
	bool    grepableLogState    = m_grepableLogCheckBox->isChecked( );
	TQString grepableLogValue    = m_grepableLogLineEdit->text( );
	bool    normalLogState      = m_normalLogCheckBox->isChecked( );
	TQString normalLogValue      = m_normalLogLineEdit->text( );
	bool    resumeState         = m_resumeCheckBox->isChecked( );
	TQString resumeValue         = m_resumeLineEdit->text( );
	bool    scriptKiddieState   = m_scriptKiddieCheckBox->isChecked( );
	TQString scriptKiddieValue   = m_scriptKiddieLineEdit->text( );
	bool    stylesheetState     = m_stylesheetCheckBox->isChecked( );
	TQString stylesheetValue     = m_stylesheetLineEdit->text( );
	bool    xmlLogState         = m_xmlLogCheckBox->isChecked( );
	TQString xmlLogValue         = m_xmlLogLineEdit->text( );

	if( baseFileNameState && baseFileNameValue.isEmpty( ))
	{	KMessageBox::error( this, i18n( "Base file name not specified" ), i18n( "Base file name error" ));
		return false;
	}

	if( grepableLogState && grepableLogValue.isEmpty( ))
	{	KMessageBox::error( this, i18n( "grep'able log file name not specified" ), i18n( "grep'able log file name error" ));
		return false;
	}

	if( normalLogState && normalLogValue.isEmpty( ))
	{	KMessageBox::error( this, i18n( "Normal log file name not specified" ), i18n( "Normal log file name error" ));
		return false;
	}

	if( resumeState && scriptKiddieValue.isEmpty( ))
	{	KMessageBox::error( this, i18n( "Resume file name not specified" ), i18n( "Resume file name error" ));
		return false;
	}

	if( scriptKiddieState && scriptKiddieValue.isEmpty( ))
	{	KMessageBox::error( this, i18n( "Script kiddie log file name not specified" ), i18n( "Script kiddie log file name error" ));
		return false;
	}

	if( stylesheetState && stylesheetValue.isEmpty( ))
	{	KMessageBox::error( this, i18n( "XSL stylesheet file name not specified" ), i18n( "XSL stylesheet file name error" ));
		return false;
	}

	if( xmlLogState && xmlLogValue.isEmpty( ))
	{	KMessageBox::error( this, i18n( "XML log file name not specified" ), i18n( "XML log file name error" ));
		return false;
	}

	m_appendOutputState = m_appendOutputCheckBox->isChecked( );
	m_baseFileNameState = baseFileNameState;
	m_baseFileNameValue = baseFileNameValue;
	m_grepableLogState  = grepableLogState;
	m_grepableLogValue  = grepableLogValue;
	m_normalLogState    = normalLogState;
	m_normalLogValue    = normalLogValue;
	m_noStylesheetState = m_noStylesheetCheckBox->isChecked( );
	m_resumeValue       = resumeValue;
	m_scriptKiddieState = scriptKiddieState;
	m_scriptKiddieValue = scriptKiddieValue;
	m_stylesheetState   = stylesheetState;
	m_stylesheetValue   = stylesheetValue;
	m_xmlLogState       = xmlLogState;
	m_xmlLogValue       = xmlLogValue;

	return true;
}

//	readProfile
//	===========

void LoggingOptions::readProfile( TDEConfig* config )
{	m_appendOutputState = config->readBoolEntry( "appendOutputState"   );
	m_baseFileNameState = config->readBoolEntry( "baseFileNameState"   );
	m_baseFileNameValue = config->readEntry(     "baseFileNameValue"   );
	m_grepableLogState  = config->readBoolEntry( "grepableLogState"    );
	m_grepableLogValue  = config->readEntry(     "grepableLogValue"    );
	m_normalLogState    = config->readBoolEntry( "normalLogState"      );
	m_normalLogValue    = config->readEntry(     "normalLogValue"      );
	m_noStylesheetState = config->readBoolEntry( "noStylesheetState"   );
	m_resumeState       = config->readBoolEntry( "resumeState"         );
	m_resumeValue       = config->readEntry(     "resumeValue"         );
	m_scriptKiddieState = config->readBoolEntry( "scriptKiddieState"   );
	m_scriptKiddieValue = config->readEntry(     "scriptKiddieValue"   );
	m_stylesheetState   = config->readBoolEntry( "stylesheetState"     );
	m_stylesheetValue   = config->readEntry(     "stylesheetValue"     );
	m_xmlLogState       = config->readBoolEntry( "xmlLogState"         );
	m_xmlLogValue       = config->readEntry(     "xmlLogValue"         );
}

//	saveProfile
//	===========

void LoggingOptions::saveProfile( TDEConfig* config )
{	config->writeEntry( "appendOutputState", m_appendOutputState );
	config->writeEntry( "baseFileNameState", m_baseFileNameState );
	config->writeEntry( "baseFileNameValue", m_baseFileNameValue );
	config->writeEntry( "grepableLogState",  m_grepableLogState  );
	config->writeEntry( "grepableLogValue",  m_grepableLogValue  );
	config->writeEntry( "normalLogState",    m_normalLogState    );
	config->writeEntry( "normalLogValue",    m_normalLogValue    );
	config->writeEntry( "noStylesheetState", m_noStylesheetState );
	config->writeEntry( "resumeState",       m_resumeState       );
	config->writeEntry( "resumeValue",       m_resumeValue       );
	config->writeEntry( "scriptKiddieState", m_scriptKiddieState );
	config->writeEntry( "scriptKiddieValue", m_scriptKiddieValue );
	config->writeEntry( "stylesheetState",   m_stylesheetState   );
	config->writeEntry( "stylesheetValue",   m_stylesheetValue   );
	config->writeEntry( "xmlLogState",       m_xmlLogState       );
	config->writeEntry( "xmlLogValue",       m_xmlLogValue       );
}

//	setInitialValues
//	================

void LoggingOptions::setInitialValues( )
{	m_appendOutputCheckBox->setChecked( m_appendOutputState );
	m_baseFileNameCheckBox->setChecked( m_baseFileNameState );
	m_baseFileNameLineEdit->setText( m_baseFileNameValue );
	m_grepableLogCheckBox->setChecked( m_grepableLogState );
	m_grepableLogLineEdit->setText( m_grepableLogValue );
	m_normalLogCheckBox->setChecked( m_normalLogState );
	m_normalLogLineEdit->setText( m_normalLogValue );
	m_noStylesheetCheckBox->setChecked( m_noStylesheetState );
	m_resumeCheckBox->setChecked( m_resumeState );
	m_resumeLineEdit->setText( m_resumeValue );
	m_scriptKiddieCheckBox->setChecked( m_scriptKiddieState );
	m_scriptKiddieLineEdit->setText( m_scriptKiddieValue );
	m_stylesheetCheckBox->setChecked( m_stylesheetState );
	m_stylesheetLineEdit->setText( m_stylesheetValue );
	m_xmlLogCheckBox->setChecked( m_xmlLogState );
	m_xmlLogLineEdit->setText( m_xmlLogValue );

	slotBaseFileNameCheckBoxClicked( );
	slotGrepableLogCheckBoxClicked( );
	slotNormalLogCheckBoxClicked( );
	slotResumeCheckBoxClicked( );
	slotScriptKiddieCheckBoxClicked( );
	slotStylesheetCheckBoxClicked( );
	slotXMLLogCheckBoxClicked( );
}

//	slotBaseFileNameButtonClicked
//	=============================

void LoggingOptions::slotBaseFileNameButtonClicked( )
{	Knmap::getFilePath( "Base file name", m_baseFileNameValue, m_baseFileNameLineEdit, false );
}

//	slotBaseFileNameCheckBoxClicked
//	===============================

void LoggingOptions::slotBaseFileNameCheckBoxClicked( )
{	m_baseFileNameButton->setEnabled( m_baseFileNameCheckBox->isChecked( ));
	m_baseFileNameLineEdit->setEnabled( m_baseFileNameCheckBox->isChecked( ));
}

//	slotGrepableLogButtonClicked
//	============================

void LoggingOptions::slotGrepableLogButtonClicked( )
{	Knmap::getFilePath( "grep'able log file", m_grepableLogValue, m_grepableLogLineEdit, true );
}

//	slotGrepableLogCheckBoxClicked
//	==============================

void LoggingOptions::slotGrepableLogCheckBoxClicked( )
{	m_grepableLogButton->setEnabled( m_grepableLogCheckBox->isChecked( ));
	m_grepableLogLineEdit->setEnabled( m_grepableLogCheckBox->isChecked( ));
}

//	slotNormalLogButtonClicked
//	==========================

void LoggingOptions::slotNormalLogButtonClicked( )
{	Knmap::getFilePath( "Normal log file", m_normalLogValue, m_normalLogLineEdit, true );
}

//	slotNormalLogCheckBoxClicked
//	============================

void LoggingOptions::slotNormalLogCheckBoxClicked( )
{	m_normalLogButton->setEnabled( m_normalLogCheckBox->isChecked( ));
	m_normalLogLineEdit->setEnabled( m_normalLogCheckBox->isChecked( ));
}

//	slotNoStylesheetCheckBoxClicked
//	===============================

void LoggingOptions::slotNoStylesheetCheckBoxClicked( )
{	if( m_noStylesheetCheckBox->isChecked( ))
	{	m_stylesheetCheckBox->setChecked( false );
		slotStylesheetCheckBoxClicked( );
	}
}

//	slotResumeButtonClicked
//	=======================

void LoggingOptions::slotResumeButtonClicked( )
{	Knmap::getFilePath( "Resume file", m_resumeValue, m_resumeLineEdit, false );
}

//	slotResumeCheckBoxClicked
//	=========================

void LoggingOptions::slotResumeCheckBoxClicked( )
{	m_resumeButton->setEnabled( m_resumeCheckBox->isChecked( ));
	m_resumeLineEdit->setEnabled( m_resumeCheckBox->isChecked( ));
}

//	slotScriptKiddieButtonClicked
//	=============================

void LoggingOptions::slotScriptKiddieButtonClicked( )
{	Knmap::getFilePath( "Script kiddie log file", m_scriptKiddieValue, m_scriptKiddieLineEdit, true );
}

//	slotScriptKiddieCheckBoxClicked
//	===============================

void LoggingOptions::slotScriptKiddieCheckBoxClicked( )
{	m_scriptKiddieButton->setEnabled( m_scriptKiddieCheckBox->isChecked( ));
	m_scriptKiddieLineEdit->setEnabled( m_scriptKiddieCheckBox->isChecked( ));
}

//	slotStylesheetButtonClicked
//	===========================

void LoggingOptions::slotStylesheetButtonClicked( )
{	Knmap::getFilePath( "Stylesheet file", m_stylesheetValue, m_stylesheetLineEdit, false );
}

//	slotStylesheetCheckBoxClicked
//	=============================

void LoggingOptions::slotStylesheetCheckBoxClicked( )
{	m_stylesheetButton->setEnabled( m_stylesheetCheckBox->isChecked( ));
	m_stylesheetLineEdit->setEnabled( m_stylesheetCheckBox->isChecked( ));

	if( m_stylesheetCheckBox->isChecked( ))
		m_noStylesheetCheckBox->setChecked( false );
}

//	slotWhatsThisClicked
//	====================

void LoggingOptions::slotWhatsThisClicked( )
{		 if( m_appendOutputCheckBox->hasMouse( )) emit( displayHelp( "--append_output" ));
	else if( m_baseFileNameButton->hasMouse( ))   emit( displayHelp( "-oA"             ));
	else if( m_baseFileNameCheckBox->hasMouse( )) emit( displayHelp( "-oA"             ));
	else if( m_baseFileNameLineEdit->hasMouse( )) emit( displayHelp( "-oA"             ));
	else if( m_grepableLogButton->hasMouse( ))    emit( displayHelp( "-oG"             ));
	else if( m_grepableLogCheckBox->hasMouse( ))  emit( displayHelp( "-oG"             ));
	else if( m_grepableLogLineEdit->hasMouse( ))  emit( displayHelp( "-oG"             ));
	else if( m_normalLogButton->hasMouse( ))      emit( displayHelp( "-oN"             ));
	else if( m_normalLogCheckBox->hasMouse( ))    emit( displayHelp( "-oN"             ));
	else if( m_normalLogLineEdit->hasMouse( ))    emit( displayHelp( "-oN"             ));
	else if( m_noStylesheetCheckBox->hasMouse( )) emit( displayHelp( "--no_stylesheet" ));
	else if( m_resumeButton->hasMouse( ))         emit( displayHelp( "--resume"        ));
	else if( m_resumeCheckBox->hasMouse( ))       emit( displayHelp( "--resume"        ));
	else if( m_resumeLineEdit->hasMouse( ))       emit( displayHelp( "--resume"        ));
	else if( m_scriptKiddieButton->hasMouse( ))   emit( displayHelp( "-oS"             ));
	else if( m_scriptKiddieCheckBox->hasMouse( )) emit( displayHelp( "-oS"             ));
	else if( m_scriptKiddieLineEdit->hasMouse( )) emit( displayHelp( "-oS"             ));
	else if( m_stylesheetButton->hasMouse( ))     emit( displayHelp( "--stylesheet"    ));
	else if( m_stylesheetCheckBox->hasMouse( ))   emit( displayHelp( "--stylesheet"    ));
	else if( m_stylesheetLineEdit->hasMouse( ))   emit( displayHelp( "--stylesheet"    ));
	else if( m_xmlLogButton->hasMouse( ))         emit( displayHelp( "-oX"             ));
	else if( m_xmlLogCheckBox->hasMouse( ))       emit( displayHelp( "-oX"             ));
	else if( m_xmlLogLineEdit->hasMouse( ))       emit( displayHelp( "-oX"             ));
	else emit( displayUnknown( ));
}

//	slotXMLLogButtonClicked
//	=======================

void LoggingOptions::slotXMLLogButtonClicked( )
{	Knmap::getFilePath( "XML log file", m_xmlLogValue, m_xmlLogLineEdit, true );
}

//	slotXMLLogCheckBoxClicked
//	=========================

void LoggingOptions::slotXMLLogCheckBoxClicked( )
{	m_xmlLogButton->setEnabled( m_xmlLogCheckBox->isChecked( ));
	m_xmlLogLineEdit->setEnabled( m_xmlLogCheckBox->isChecked( ));
}

#include "loggingoptions.moc"
