You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdewebdev/kommander/widgets/aboutdialog.cpp

296 lines
7.2 KiB

//
// C++ Implementation: aboutdialog
//
// Description:
//
//
// Author: Andras Mantia <amantia@kdewebdev.org>, (C) 2008
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include <qfile.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 <qtextstream.h>
enum Functions {
FirstFunction = 159,
Initialize,
AddAuthor,
AddTranslator,
SetDescription,
SetHomepage,
SetBugAddress,
SetLicense,
Version,
LastFunction
};
AboutDialog::AboutDialog(QWidget *parent, const char *name)
: QLabel(parent, name), KommanderWidget(this)
{
QStringList states;
states << "default";
setStates(states);
setDisplayStates(states);
if (KommanderWidget::inEditor)
{
setPixmap(KGlobal::iconLoader()->loadIcon("kommander", KIcon::NoGroup, KIcon::SizeMedium));
setFrameStyle(QFrame::Box | QFrame::Plain);
setLineWidth(1);
setFixedSize(pixmap()->size());
}
else
setHidden(true);
m_aboutData = 0L;
KommanderPlugin::setDefaultGroup(Group::DCOP);
KommanderPlugin::registerFunction(Initialize, "initialize(QString widget, QString appName, QString icon, QString version, QString 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(QString widget, QString author, QString task, QString email, QString webAddress)",
i18n("Add an author. Only the author name is required."), 2, 5);
KommanderPlugin::registerFunction(AddTranslator, "addTranslator(QString widget, QString author, QString email)",
i18n("Add a translator. Only the name is required."), 2, 3);
KommanderPlugin::registerFunction(SetDescription, "setDescription(QString widget, QString description)",
i18n("Set a short description text."), 2);
KommanderPlugin::registerFunction(SetHomepage, "setHomepage(QString widget, QString homepage)",
i18n("Set a homepage address."), 2);
KommanderPlugin::registerFunction(SetBugAddress, "setBugAddress(QString widget, QString address)",
i18n("Set an email address, where bugs can be reported."), 2);
KommanderPlugin::registerFunction(SetLicense, "setLicense(QString widget, QString 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(QString widget)",
i18n("Returns the set version string."), 1);
}
AboutDialog::~AboutDialog()
{
delete m_aboutData;
m_aboutData = 0L;
}
QString AboutDialog::currentState() const
{
return QString("default");
}
bool AboutDialog::isKommanderWidget() const
{
return true;
}
QStringList AboutDialog::associatedText() const
{
return KommanderWidget::associatedText();
}
void AboutDialog::setAssociatedText(const QStringList& a_at)
{
KommanderWidget::setAssociatedText(a_at);
}
bool AboutDialog::isFunctionSupported(int f)
{
return (f > FirstFunction && f < LastFunction) || f == DCOP::execute;
}
void AboutDialog::initialize(const QString& appName, const QString &icon, const QString& version, const QString& 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 QString& author, const QString &task, const QString& email, const QString &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 QString& author, const QString& email)
{
if (!m_aboutData)
return;
m_authors.append(author);
m_emails.append(email);
m_aboutData->setTranslator(author, email);
}
void AboutDialog::setDescription(const QString& description)
{
if (!m_aboutData)
return;
m_description = description;
m_aboutData->setShortDescription(m_description);
}
void AboutDialog::setHomepage(const QString &homepage)
{
if (!m_aboutData)
return;
m_homepage = homepage;
m_aboutData->setHomepage(m_homepage);
}
void AboutDialog::setBugAddress(const QString &bugAddress)
{
if (!m_aboutData)
return;
m_bugaddress = bugAddress;
m_aboutData->setBugAddress(m_bugaddress);
}
void AboutDialog::setLicense(const QString &key)
{
if (!m_aboutData)
return;
QString license = key.upper();
QString 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() && !QFile::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 QString& a_text)
{
KommanderWidget::setPopulationText(a_text);
}
QString 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();
}
}
QString AboutDialog::handleDCOP(int function, const QStringList& 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 QString();
}
#include "aboutdialog.moc"