//
// C++ Implementation: aboutdialog
//
// Description:
//
//
// Author: Andras Mantia <amantia@kdewebdev.org>, (C) 2008
//
// Copyright: See COPYING file that comes with this distribution
//
//
# include <tqfile.h>
# include "aboutdialog.h"
# include "kommanderplugin.h"
# include "specials.h"
# include <kaboutdata.h>
# include <kaboutapplication.h>
# include <kiconloader.h>
# include <klocale.h>
# include <kstandarddirs.h>
# include <tqtextstream.h>
enum Functions {
FirstFunction = 159 ,
Initialize ,
AddAuthor ,
AddTranslator ,
SetDescription ,
SetHomepage ,
SetBugAddress ,
SetLicense ,
Version ,
LastFunction
} ;
AboutDialog : : AboutDialog ( TQWidget * tqparent , const char * name )
: TQLabel ( tqparent , name ) , KommanderWidget ( TQT_TQOBJECT ( this ) )
{
TQStringList states ;
states < < " default " ;
setStates ( states ) ;
setDisplayStates ( states ) ;
if ( KommanderWidget : : inEditor )
{
setPixmap ( KGlobal : : iconLoader ( ) - > loadIcon ( " kommander " , KIcon : : NoGroup , KIcon : : SizeMedium ) ) ;
setFrameStyle ( TQFrame : : Box | TQFrame : : Plain ) ;
setLineWidth ( 1 ) ;
setFixedSize ( pixmap ( ) - > size ( ) ) ;
}
else
setHidden ( true ) ;
m_aboutData = 0L ;
KommanderPlugin : : setDefaultGroup ( Group : : DCOP ) ;
KommanderPlugin : : registerFunction ( Initialize , " initialize(TQString widget, TQString appName, TQString icon, TQString version, TQString copyright) " ,
i18n ( " Sets information about the application. This is the first method that must me called, any addition to the dialog done before initialization will be ignored. " ) , 5 ) ;
KommanderPlugin : : registerFunction ( AddAuthor , " addAuthor(TQString widget, TQString author, TQString task, TQString email, TQString webAddress) " ,
i18n ( " Add an author. Only the author name is required. " ) , 2 , 5 ) ;
KommanderPlugin : : registerFunction ( AddTranslator , " addTranslator(TQString widget, TQString author, TQString email) " ,
i18n ( " Add a translator. Only the name is required. " ) , 2 , 3 ) ;
KommanderPlugin : : registerFunction ( SetDescription , " setDescription(TQString widget, TQString description) " ,
i18n ( " Set a short description text. " ) , 2 ) ;
KommanderPlugin : : registerFunction ( SetHomepage , " setHomepage(TQString widget, TQString homepage) " ,
i18n ( " Set a homepage address. " ) , 2 ) ;
KommanderPlugin : : registerFunction ( SetBugAddress , " setBugAddress(TQString widget, TQString address) " ,
i18n ( " Set an email address, where bugs can be reported. " ) , 2 ) ;
KommanderPlugin : : registerFunction ( SetLicense , " setLicense(TQString widget, TQString license) " ,
i18n ( " Sets license information of the application. The parameter can be one of the license keys - GPL_V2, LGPL_V2, BSD, ARTISTIC -, or a freely specified text. " ) , 2 ) ;
KommanderPlugin : : registerFunction ( Version , " version(TQString widget) " ,
i18n ( " Returns the set version string. " ) , 1 ) ;
}
AboutDialog : : ~ AboutDialog ( )
{
delete m_aboutData ;
m_aboutData = 0L ;
}
TQString AboutDialog : : currentState ( ) const
{
return TQString ( " default " ) ;
}
bool AboutDialog : : isKommanderWidget ( ) const
{
return true ;
}
TQStringList AboutDialog : : associatedText ( ) const
{
return KommanderWidget : : associatedText ( ) ;
}
void AboutDialog : : setAssociatedText ( const TQStringList & a_at )
{
KommanderWidget : : setAssociatedText ( a_at ) ;
}
bool AboutDialog : : isFunctionSupported ( int f )
{
return ( f > FirstFunction & & f < LastFunction ) | | f = = DCOP : : execute ;
}
void AboutDialog : : initialize ( const TQString & appName , const TQString & icon , const TQString & version , const TQString & copyright )
{
delete m_aboutData ;
m_authors . clear ( ) ;
m_emails . clear ( ) ;
m_tasks . clear ( ) ;
m_addresses . clear ( ) ;
m_description = " " ;
m_homepage = " " ;
m_bugaddress = " " ;
m_version = version ;
m_appName = appName ;
m_icon = icon ;
m_copyright = copyright ;
m_aboutData = new KAboutData ( m_appName , m_appName , m_version ) ;
m_aboutData - > setCopyrightStatement ( m_copyright ) ;
if ( ! m_icon . isEmpty ( ) )
m_aboutData - > setProgramLogo ( KGlobal : : iconLoader ( ) - > loadIcon ( m_icon , KIcon : : NoGroup , KIcon : : SizeMedium ) . convertToImage ( ) ) ;
}
void AboutDialog : : addAuthor ( const TQString & author , const TQString & task , const TQString & email , const TQString & webAddress )
{
if ( ! m_aboutData )
return ;
m_authors . append ( author ) ;
m_emails . append ( email ) ;
m_tasks . append ( task ) ;
m_addresses . append ( webAddress ) ;
m_aboutData - > addAuthor ( author , task , email , webAddress ) ;
}
void AboutDialog : : addTranslator ( const TQString & author , const TQString & email )
{
if ( ! m_aboutData )
return ;
m_authors . append ( author ) ;
m_emails . append ( email ) ;
m_aboutData - > setTranslator ( author , email ) ;
}
void AboutDialog : : setDescription ( const TQString & description )
{
if ( ! m_aboutData )
return ;
m_description = description ;
m_aboutData - > setShortDescription ( m_description ) ;
}
void AboutDialog : : setHomepage ( const TQString & homepage )
{
if ( ! m_aboutData )
return ;
m_homepage = homepage ;
m_aboutData - > setHomepage ( m_homepage ) ;
}
void AboutDialog : : setBugAddress ( const TQString & bugAddress )
{
if ( ! m_aboutData )
return ;
m_bugaddress = bugAddress ;
m_aboutData - > setBugAddress ( m_bugaddress ) ;
}
void AboutDialog : : setLicense ( const TQString & key )
{
if ( ! m_aboutData )
return ;
TQString license = key . upper ( ) ;
TQString file ;
if ( key = = " GPL_V2 " )
{
file = locate ( " data " , " LICENSES/GPL_V2 " ) ;
} else
if ( key = = " LGPL_V2 " )
{
file = locate ( " data " , " LICENSES/LGPL_V2 " ) ;
} else
if ( key = = " BSD " )
{
file = locate ( " data " , " LICENSES/BSD " ) ;
} else
if ( key = = " ARTISTIC " )
{
file = locate ( " data " , " LICENSES/ARTISTIC " ) ;
}
if ( file . isEmpty ( ) & & ! TQFile : : exists ( key ) )
{
if ( ! key . isEmpty ( ) )
m_license = key ;
m_aboutData - > setLicenseText ( m_license ) ;
}
else
{
if ( file . isEmpty ( ) )
{
if ( ! key . isEmpty ( ) )
file = key ;
}
m_aboutData - > setLicenseTextFile ( file ) ;
}
}
void AboutDialog : : setPopulationText ( const TQString & a_text )
{
KommanderWidget : : setPopulationText ( a_text ) ;
}
TQString AboutDialog : : populationText ( ) const
{
return KommanderWidget : : populationText ( ) ;
}
void AboutDialog : : populate ( )
{
setAssociatedText ( KommanderWidget : : evalAssociatedText ( populationText ( ) ) ) ;
}
void AboutDialog : : execute ( )
{
if ( m_aboutData )
{
KAboutApplication dialog ( m_aboutData , this ) ;
dialog . exec ( ) ;
}
}
TQString AboutDialog : : handleDCOP ( int function , const TQStringList & args )
{
switch ( function ) {
case Initialize :
{
initialize ( args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] ) ;
break ;
}
case SetLicense :
{
setLicense ( args [ 0 ] ) ;
break ;
}
case AddAuthor :
{
addAuthor ( args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] ) ;
break ;
}
case AddTranslator :
{
addTranslator ( args [ 0 ] , args [ 1 ] ) ;
break ;
}
case SetDescription :
{
setDescription ( args [ 0 ] ) ;
break ;
}
case SetHomepage :
{
setHomepage ( args [ 0 ] ) ;
break ;
}
case SetBugAddress :
{
setBugAddress ( args [ 0 ] ) ;
break ;
}
case Version :
{
if ( m_aboutData )
return m_aboutData - > version ( ) ;
break ;
}
case DCOP : : execute :
{
if ( m_aboutData )
{
KAboutApplication dialog ( m_aboutData , this ) ;
dialog . exec ( ) ;
}
break ;
}
default :
return KommanderWidget : : handleDCOP ( function , args ) ;
}
return TQString ( ) ;
}
# include "aboutdialog.moc"