OSSP CVS Repository

ossp - ossp-pkg/as/as-gui/as_panel.cpp
Not logged in
[Honeypot]  [Browse]  [Directory]  [Home]  [Login
[Reports]  [Search]  [Ticket]  [Timeline
  [Raw

ossp-pkg/as/as-gui/as_panel.cpp
//
//  OSSP asgui - Accounting system graphical user interface
//  Copyright (c) 2002-2004 The OSSP Project (http://www.ossp.org/)
//  Copyright (c) 2002-2004 Ralf S. Engelschall <rse@engelschall.com>
//  Copyright (c) 2002-2004 Michael Schloh von Bennewitz <michael@schloh.com>
//  Copyright (c) 2002-2004 Cable & Wireless Telecommunications Services GmbH
//
//  This file is part of OSSP asgui, an accounting system graphical user
//  interface which can be found at http://www.ossp.org/pkg/tool/asgui/.
//
//  Permission to use, copy, modify, and distribute this software for
//  any purpose with or without fee is hereby granted, provided that
//  the above copyright notice and this permission notice appear in all
//  copies.
//
//  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
//  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
//  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
//  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
//  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
//  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
//  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
//  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
//  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
//  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
//  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
//  SUCH DAMAGE.
//
//  as_panel.cpp: ISO C++ implementation
//

#include <vector>

#include <qimage.h>

#include "as_panel.h"
#include "as_generic.h"
#include "as_const.h"

#include "as_gfx/revcolour.xpm"

//
// Constructs a Prefpanel as a child of 'pParent', with the 
// name 'kszName' and widget flags set to 'Flags'.
//
// The dialog will by default be modal, unless you set 'bModal' to
// false to construct a modeless dialog.
//
Prefpanel::Prefpanel(QWidget *pParent, const char *kszName, bool bModal, WFlags Flags)
    : QDialog(pParent, kszName, bModal, Flags)
{
    if (!kszName)
        this->setName("Prefpanel");

    this->setSizeGripEnabled(false);
    this->setSizePolicy(QSizePolicy((QSizePolicy::SizeType)5,
        (QSizePolicy::SizeType)5, 0, 0, this->sizePolicy().hasHeightForWidth()));

    // Initialize our button colours
    m_pLight = new QColor();
    m_pDark = new QColor();

    m_pVlayout = new QVBoxLayout(this, 11, 6, "Formlayout");
    m_pTabselect = new QTabWidget(this, "Tabselector");

    // Start of style chooser UI pieces
    m_pBoolpage = new QWidget(m_pTabselect, "Tabpage");
    m_pBoolayout = new QHBoxLayout(m_pBoolpage, 11, 6, "Genlayout"); 
    m_pBinlayout = new QVBoxLayout(0, 0, 6, "Binarylayout"); 
    m_pStylegroup = new QButtonGroup(m_pBoolpage, "Stylebuttongroup");
    m_pStylegroup->setColumnLayout(0, Qt::Vertical);
    m_pStylegroup->layout()->setSpacing(6);
    m_pStylegroup->layout()->setMargin(11);
    m_pStylegroup->setExclusive(true);

    m_pStylelay = new QVBoxLayout(m_pStylegroup->layout());
    m_pStylelay->setAlignment(Qt::AlignTop);

    // Block to handle a vector of radio buttons
    int nIter = 0;
    QStringList Styles = QStyleFactory::keys();
    std::vector<QRadioButton *> Stylevector(Styles.size());

    // Discover which interface styles are available, and
    // dynamically construct new radio buttons to represent them
    for (QStringList::Iterator Stylename = Styles.begin();
        Stylename != Styles.end(); Stylename++) {
        Stylevector[nIter] = new QRadioButton(m_pStylegroup, *Stylename + "_button");
        Stylevector[nIter]->setText(trUtf8(*Stylename, "Comment for " + *Stylename));
        Stylevector[nIter]->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding,
            Stylevector[nIter]->sizePolicy().hasHeightForWidth());
        QToolTip::add(Stylevector[nIter], trUtf8("The " + *Stylename + " style",
            "Comment for toolTip " + *Stylename));
        QWhatsThis::add(Stylevector[nIter], trUtf8("Click this button to enjoy the style of the "
            + *Stylename + " user interface", "Comment whatsThis for " + *Stylename));
        m_pStylelay->addWidget(Stylevector[nIter]);
        nIter++;
    }

    // Start of binary option UI pieces (like make backups, yes or no)
    m_pSwitchgroup = new QButtonGroup(m_pBoolpage, "Switchbuttongroup");
    m_pSwitchgroup->setColumnLayout(0, Qt::Vertical);
    m_pSwitchgroup->layout()->setSpacing(6);
    m_pSwitchgroup->layout()->setMargin(11);
    m_pSwitchgroup->setExclusive(false);
    m_pSwitchlay = new QVBoxLayout(m_pSwitchgroup->layout());
    m_pSwitchlay->setAlignment(Qt::AlignTop);

    // Optional file backups with hard coded extension .bak
    m_pBackupcheck = new QCheckBox(m_pSwitchgroup, "Backupbutton");
    m_pBackupcheck->setText(trUtf8("Make .bak file on save", "Comment for Backupcheck"));
    QToolTip::add(m_pBackupcheck, trUtf8("Make a .bak file when saving", "Comment for toolTip Backupcheck"));
    QWhatsThis::add(m_pBackupcheck, trUtf8("Check this box to enable automatic file backups when overwriting an existing file", "Comment whatsThis for Backupcheck"));
    m_pSwitchlay->addWidget(m_pBackupcheck);

    // Optional easy filename appending with hard coded extension .as
    m_pExtendcheck = new QCheckBox(m_pSwitchgroup, "Extensionbutton");
    m_pExtendcheck->setText(trUtf8("Append .as extension", "Comment for Extensioncheck"));
    QToolTip::add(m_pExtendcheck, trUtf8("Use the .as file extension", "Comment for toolTip Extensioncheck"));
    QWhatsThis::add(m_pExtendcheck, trUtf8("Check this box to automatically append '.as' to new filenames when saving", "Comment whatsThis for Extensioncheck"));
    m_pSwitchlay->addWidget(m_pExtendcheck);

    // Start of report option UI pieces (like detailed report listings)
    m_pReportgroup = new QButtonGroup(m_pBoolpage, "Reportbuttongroup");
    m_pReportgroup->setColumnLayout(0, Qt::Vertical);
    m_pReportgroup->layout()->setSpacing(6);
    m_pReportgroup->layout()->setMargin(11);
    m_pReportgroup->setExclusive(false);
    m_pReportlay = new QVBoxLayout(m_pReportgroup->layout());
    m_pReportlay->setAlignment(Qt::AlignTop);

    // Optional detailed report listings write all events in range
    m_pDetailcheck = new QCheckBox(m_pReportgroup, "Detailistbutton");
    m_pDetailcheck->setText(trUtf8("Detailed listing", "Comment for Detailcheck"));
    QToolTip::add(m_pDetailcheck, trUtf8("Write detailed event listings", "Comment for toolTip Detailcheck"));
    QWhatsThis::add(m_pDetailcheck, trUtf8("Check this box to enable writing of detailed event listings to the local report", "Comment whatsThis for Detailcheck"));
    m_pReportlay->addWidget(m_pDetailcheck);

    // Optional signature line in report footer
    m_pSigncheck = new QCheckBox(m_pReportgroup, "Signaturebutton");
    m_pSigncheck->setText(trUtf8("Signature line", "Comment for Signaturecheck"));
    QToolTip::add(m_pSigncheck, trUtf8("Append a signature line", "Comment for toolTip Signaturecheck"));
    QWhatsThis::add(m_pSigncheck, trUtf8("Check this box to write a signature line to the report footer", "Comment whatsThis for Signaturecheck"));
    m_pReportlay->addWidget(m_pSigncheck);
    m_pBoolayout->addWidget(m_pStylegroup);
    m_pBinlayout->addWidget(m_pReportgroup);
    m_pBinlayout->addWidget(m_pSwitchgroup);
    m_pBoolayout->addLayout(m_pBinlayout);
    m_pTabselect->insertTab(m_pBoolpage, "");

    // Start of paths page UI pieces
    m_pGeneralpage = new QWidget(m_pTabselect, "Generalpage");
    m_pGenlayout = new QHBoxLayout(m_pGeneralpage, 11, 6, "Genlayout");
    m_pGenbox = new QGroupBox(m_pGeneralpage, "Groupboxlayout");
    m_pGenbox->setColumnLayout(0, Qt::Vertical);
    m_pGenbox->layout()->setSpacing(6);
    m_pGenbox->layout()->setMargin(11);
    m_pGenboxlay = new QHBoxLayout(m_pGenbox->layout());
    m_pGenboxlay->setAlignment(Qt::AlignTop);

    // Start of path text entry preferences UI pieces
    m_pGeninner = new QGridLayout(0, 4, 2, 0, 16, "Innergrid");
    m_pAcctlabel = new QLabel(m_pGenbox, "Accfilelabel");
    m_pGeninner->addWidget(m_pAcctlabel, 0, 0);
    m_pAcctline = new QLineEdit(m_pGenbox, "Accountline");
    m_pGeninner->addWidget(m_pAcctline, 0, 1);
    m_pEventlabel = new QLabel(m_pGenbox, "Evntdirlabel");
    m_pGeninner->addWidget(m_pEventlabel, 1, 0);
    m_pEventline = new QLineEdit(m_pGenbox, "Eventline");
    m_pGeninner->addWidget(m_pEventline, 1, 1);
    m_pHomelabel = new QLabel(m_pGenbox, "Homelabel");
    m_pGeninner->addWidget(m_pHomelabel, 2, 0);
    m_pHomeline = new QLineEdit(m_pGenbox, "Homeline");
    m_pGeninner->addWidget(m_pHomeline, 2, 1);
    m_pUserlabel = new QLabel(m_pGenbox, "Userlabel");
    m_pGeninner->addWidget(m_pUserlabel, 3, 0);
    m_pUserline = new QLineEdit(m_pGenbox, "Userline");
    m_pGeninner->addWidget(m_pUserline, 3, 1);
    m_pGenboxlay->addLayout(m_pGeninner);

    m_pGenlayout->addWidget(m_pGenbox);
    m_pTabselect->insertTab(m_pGeneralpage, "");

    // Start of remote page UI pieces
    m_pRemotepage = new QWidget(m_pTabselect, "Remotepage");
    m_pRemlayout = new QHBoxLayout(m_pRemotepage, 11, 6, "Remlayout");
    m_pRembox = new QGroupBox(m_pRemotepage, "Remoteboxlayout");

    m_pRembox->setColumnLayout(0, Qt::Vertical);
    m_pRembox->layout()->setSpacing(6);
    m_pRembox->layout()->setMargin(11);
    m_pRemboxlay = new QHBoxLayout(m_pRembox->layout());
    m_pRemboxlay->setAlignment(Qt::AlignTop);

    // Start of RPC preferences UI pieces
    m_pReminner = new QGridLayout(0, 5, 2, 0, 12, "Innergrid");
    m_pCorbalabel = new QLabel(m_pRembox, "Corbalabel");
    m_pReminner->addWidget(m_pCorbalabel, 0, 0);
    m_pCorbaline = new QLineEdit(m_pRembox, "Corbaline");
    m_pReminner->addWidget(m_pCorbaline, 0, 1);
    m_pCorbacheck = new QCheckBox(m_pRembox, "Corbacheckbox");
    m_pReminner->addWidget(m_pCorbacheck, 1, 1);
    QSpacerItem *Spacey = new QSpacerItem(6, 12, QSizePolicy::Minimum, QSizePolicy::Minimum);
    m_pReminner->addItem(Spacey, 2, 0);
    m_pSoaplabel = new QLabel(m_pRembox, "Soaplabel");
    m_pReminner->addWidget(m_pSoaplabel, 3, 0);
    m_pSoapline = new QLineEdit(m_pRembox, "Soapline");
    m_pReminner->addWidget(m_pSoapline, 3, 1);
    m_pSoapcheck = new QCheckBox(m_pRembox, "Corbacheckbox");
    m_pReminner->addWidget(m_pSoapcheck, 4, 1);
    m_pRemboxlay->addLayout(m_pReminner);

    m_pRemlayout->addWidget(m_pRembox);
    m_pTabselect->insertTab(m_pRemotepage, "");

    // Start of color page UI pieces
    m_pColourpage = new QWidget(m_pTabselect, "Colourpage");
    m_pColourlayout = new QHBoxLayout(m_pColourpage, 11, 6, "Colourlayout");
    m_pShadebox = new QGroupBox(m_pColourpage, "Shadegroupbox");
    m_pShadebox->setColumnLayout(0, Qt::Horizontal);
    m_pShadebox->layout()->setSpacing(6);
    m_pShadebox->layout()->setMargin(11);
    m_pShadeboxlay = new QVBoxLayout(m_pShadebox->layout());
    m_pShadeboxlay->setAlignment(Qt::AlignTop);

    m_pShadelayout = new QGridLayout(0, 2, 2, 6, 16, "Shadelayout");
    m_pLightlab = new QLabel(m_pShadebox, "Lightlabel");
    m_pLightlab->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred, this->sizePolicy().hasHeightForWidth());
    m_pShadelayout->addWidget(m_pLightlab, 0, 0);
    m_pLightbutt = new QToolButton(m_pShadebox, "Lightbutton");
    m_pLightbutt->setFocusPolicy(QToolButton::TabFocus);
    m_pLightbutt->setCursor(QCursor(13));
    m_pShadelayout->addWidget(m_pLightbutt, 0, 1);

    m_pDarklab = new QLabel(m_pShadebox, "Darklabel");
    m_pDarklab->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred, this->sizePolicy().hasHeightForWidth());
    m_pShadelayout->addWidget(m_pDarklab, 1, 0);
    m_pDarkbutt = new QToolButton(m_pShadebox, "Darkbutton");
    m_pDarkbutt->setFocusPolicy(QToolButton::TabFocus);
    m_pDarkbutt->setCursor(QCursor(13));
    m_pShadelayout->addWidget(m_pDarkbutt, 1, 1);

    m_pRevertlab = new QLabel(m_pShadebox, "Revertlabel");
    m_pShadelayout->addWidget(m_pRevertlab, 2, 0);
    m_pRevertbutt = new QToolButton(m_pShadebox, "Revertbutton");
    m_pRevertbutt->setFocusPolicy(QToolButton::TabFocus);
//    m_pRevertbutt->setIconSet(QIconSet(QPixmap(s_kpcRevcolour_xpm)));
    m_pRevertbutt->setCursor(QCursor(13));
    m_pShadelayout->addWidget(m_pRevertbutt, 2, 1);

    m_pThemebox = new QGroupBox(m_pColourpage, "Themegroupbox");
    m_pThemebox->setColumnLayout(0, Qt::Vertical);
    m_pThemebox->layout()->setSpacing(6);
    m_pThemebox->layout()->setMargin(11);
    m_pThemeboxlay = new QVBoxLayout(m_pThemebox->layout());

    QLabel *pPlaceholder = new QLabel(m_pThemebox, "Placeholderlabel");
    pPlaceholder->setText(trUtf8("Reserved for future use", "Comment for Placeholderlabel"));
    m_pThemeboxlay->addWidget(pPlaceholder, 1, Qt::AlignCenter);

    m_pShadeboxlay->addLayout(m_pShadelayout);
    m_pColourlayout->addWidget(m_pShadebox);
    m_pColourlayout->addWidget(m_pThemebox);
    m_pTabselect->insertTab(m_pColourpage, "");

    connect(m_pLightbutt, SIGNAL(clicked(void)), SLOT(shadeLight(void)));
    connect(m_pDarkbutt, SIGNAL(clicked(void)), SLOT(shadeDark(void)));
    connect(m_pRevertbutt, SIGNAL(clicked(void)), SLOT(shadeRevert(void)));

    // Finally add the damn pages to the tab selector widget!
    m_pVlayout->addWidget(m_pTabselect);

    // Start of bottom buttons for aknowlegement and commital of changes
    m_pButtlay = new QHBoxLayout(0, 0, 12, "Buttonlayout");
    m_pOkaybutton = new QPushButton(this, "Okaybutton");
    m_pOkaybutton->setMinimumWidth(120);
    m_pOkaybutton->setPaletteBackgroundColor(QColor(202, 194, 182));
    m_pOkaybutton->setCursor(QCursor(13));
    m_pButtlay->addWidget(m_pOkaybutton);
    m_pApplybutton = new QPushButton(this, "Applybutton");
    m_pApplybutton->setMinimumWidth(120);
    m_pApplybutton->setPaletteBackgroundColor(QColor(198, 196, 186));
    m_pApplybutton->setCursor(QCursor(13));
    m_pButtlay->addWidget(m_pApplybutton);
//    QSpacerItem *Spacey = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
//    m_pButtlay->addItem(Spacey);
    m_pCancelbutton = new QPushButton(this, "Cancelbutton");
    m_pCancelbutton->setMinimumWidth(120);
    m_pCancelbutton->setPaletteBackgroundColor(QColor(198, 196, 186));
    m_pCancelbutton->setCursor(QCursor(13));
    m_pButtlay->addWidget(m_pCancelbutton);
    m_pCancelbutton->setDefault(true);
    m_pVlayout->addLayout(m_pButtlay);

    // Connect our signals to slots, accept() and reject() are Qt implicit
    connect(m_pOkaybutton, SIGNAL(clicked(void)), SLOT(accept(void)));
    connect(m_pApplybutton, SIGNAL(clicked(void)), SIGNAL(applied(void)));
    connect(m_pCancelbutton, SIGNAL(clicked(void)), SLOT(reject(void)));
    connect(m_pCorbacheck, SIGNAL(toggled(bool)), SLOT(enableCorba(bool)));
    connect(m_pSoapcheck, SIGNAL(toggled(bool)), SLOT(enableSoap(bool)));
    this->textChange();
    this->resize(QSize(400, 264).expandedTo(minimumSizeHint()));
}

//
// Sets the light shading colour for rows
//
void Prefpanel::shadeLight(void)
{
    QColorDialog::setCustomColor(0, this->getRevlight()->rgb());
    QColorDialog::setCustomColor(1, this->getRevdark()->rgb());
    QColorDialog::setCustomColor(2, this->getAltlight()->rgb());
    QColorDialog::setCustomColor(3, this->getAltdark()->rgb());
    QColor Colortemp = QColorDialog::getColor(*m_pLight);
    if (Colortemp.isValid()) {
        delete m_pLight;
        m_pLight = new QColor(Colortemp);
        m_pLightbutt->setPaletteBackgroundColor(*m_pLight);
    }
}

//
// Sets the dark shading colour for rows
//
void Prefpanel::shadeDark(void)
{
    QColorDialog::setCustomColor(0, m_pLight->rgb());
    QColorDialog::setCustomColor(1, m_pDark->rgb());
    QColor Colortemp = QColorDialog::getColor(*m_pDark);
    if (Colortemp.isValid()) {
        delete m_pDark;
        m_pDark = new QColor(Colortemp);
        m_pDarkbutt->setPaletteBackgroundColor(*m_pDark);
    }
}

//
// Reverts the shading colours to default values
//
void Prefpanel::shadeRevert(void)
{
    delete m_pLight;
    m_pLight = new QColor(*this->getRevlight());
    m_pLightbutt->setPaletteBackgroundColor(*m_pLight);
    delete m_pDark;
    m_pDark = new QColor(*this->getRevdark());
    m_pDarkbutt->setPaletteBackgroundColor(*m_pDark);
}

//
// Polish off ending changes after creating and before widget shows
//
void Prefpanel::polish(void)
{
    // Set our buttons now that user has probably set their colours
    m_pLightbutt->setPaletteBackgroundColor(*m_pLight);
    m_pDarkbutt->setPaletteBackgroundColor(*m_pDark);
}

//
// Sets the strings of the subwidgets using the current language
//
void Prefpanel::textChange(void)
{
    this->setCaption(trUtf8("AS Applicate Preferences", "Personal preferences are persistent across sessions"));

    m_pTabselect->changeTab(m_pBoolpage, trUtf8("General"));
    m_pTabselect->changeTab(m_pGeneralpage, trUtf8("Paths"));
    m_pTabselect->changeTab(m_pRemotepage, trUtf8("Hosts"));
    m_pTabselect->changeTab(m_pColourpage, trUtf8("Colour"));

    m_pOkaybutton->setText(trUtf8("Okay", "Comment for Okaybutton"));
    QToolTip::add(m_pOkaybutton, trUtf8("Applies and saves changes", "Comment for tooltip Okaybutton"));
    QWhatsThis::add(m_pOkaybutton, trUtf8("The okay button applies and saves changes", "Comment for whatsThis Okaybutton"));

    m_pApplybutton->setText(trUtf8("Apply", "Comment for Applybutton"));
    QToolTip::add(m_pApplybutton, trUtf8("Apply changes immediately", "Comment for toolTip Applybutton"));
    QWhatsThis::add(m_pApplybutton, trUtf8("The apply button applies changes immediately", "Comment for whatsThis Applybutton"));

    m_pCancelbutton->setText(trUtf8("Cancel", "Comment for Cancelbutton"));
    QToolTip::add(m_pCancelbutton, trUtf8("Cancel any changes", "Comment for toolTip Cancelbutton"));
    QWhatsThis::add(m_pCancelbutton, trUtf8("The cancel button cancels any changes", "Comment for whatsThis Cancelbutton"));

    m_pGenbox->setTitle(trUtf8("File and directory paths", "Comment for Genbox"));
    m_pAcctlabel->setText(trUtf8("Accounts path", "Comment for Acctlabel"));
    m_pEventlabel->setText(trUtf8("Events directory", "Comment for Eventlabel"));
    m_pUserlabel->setText(trUtf8("User name", "Comment for Userlabel"));
    m_pHomelabel->setText(trUtf8("Home directory", "Comment for Homelabel"));
    QToolTip::add(m_pAcctline, trUtf8("The accounts file pathname", "Comment for toolTip Acctline"));
    QToolTip::add(m_pEventline, trUtf8("The default events directory", "Comment for toolTip Eventline"));
    QToolTip::add(m_pUserline, trUtf8("The user name", "Comment for toolTip Userline"));
    QToolTip::add(m_pHomeline, trUtf8("The home directory", "Comment for toolTip Homeline"));

    m_pRembox->setTitle(trUtf8("Remote host names", "Comment for Rembox"));
    m_pCorbalabel->setText(trUtf8("CORBA host", "Comment for Corbalabel"));
    m_pSoaplabel->setText(trUtf8("SOAP host", "Comment for Soaplabel"));
    QToolTip::add(m_pCorbaline, trUtf8("The CORBA host name", "Comment for toolTip Corbaline"));
    QToolTip::add(m_pSoapline, trUtf8("The SOAP host name", "Comment for toolTip Soapline"));

    m_pCorbacheck->setText(trUtf8("Enable IIOP transmission", "Comment for Corbacheck"));
    QToolTip::add(m_pCorbacheck, trUtf8("Will enable transmission over IIOP", "Comment for toolTip Corbacheck"));
    QWhatsThis::add(m_pCorbacheck, trUtf8("Check this box to enable transmission to a IIOP host", "Comment whatsThis for Corbacheck"));

    m_pSoapcheck->setText(trUtf8("Enable SOAP transmission", "Comment for Soapcheck"));
    QToolTip::add(m_pSoapcheck, trUtf8("Will enable transmission over SOAP", "Comment for toolTip Soapcheck"));
    QWhatsThis::add(m_pSoapcheck, trUtf8("Check this box to enable transmission to a SOAP host", "Comment whatsThis for Soapcheck"));

    m_pShadebox->setTitle(trUtf8("Row shading", "Comment for Shadebox"));
    m_pThemebox->setTitle(trUtf8("Skin themes", "Comment for Themebox"));

    m_pLightlab->setText(trUtf8("Light", "Comment for Lightlabel"));
    m_pDarklab->setText(trUtf8("Dark", "Comment for Darklabel"));
    m_pRevertlab->setText(trUtf8("Revert", "Comment for Revertlabel"));
    QToolTip::add(m_pLightbutt, trUtf8("Light row shading colour", "Comment for tooltip Lightbutt"));
    QWhatsThis::add(m_pLightbutt, trUtf8("The Light button sets the light row shading colour.", "Comment for whatsThis Lightbutt"));
    QToolTip::add(m_pDarkbutt, trUtf8("Dark row shading colour", "Comment for tooltip Darkbutt"));
    QWhatsThis::add(m_pDarkbutt, trUtf8("The Dark button sets the light row shading colour.", "Comment for whatsThis Darkbutt"));

    m_pStylegroup->setTitle(trUtf8("Available styles", "Comment for Stylebuttons"));
    m_pReportgroup->setTitle(trUtf8("Report options", "Comment for Reportbox"));
    m_pSwitchgroup->setTitle(trUtf8("Other options", "Comment for Switchbox"));
}

CVSTrac 2.0.1