summaryrefslogtreecommitdiffstats
path: root/kcontrol/kdm/kdm-appear.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kcontrol/kdm/kdm-appear.cpp')
-rw-r--r--kcontrol/kdm/kdm-appear.cpp554
1 files changed, 0 insertions, 554 deletions
diff --git a/kcontrol/kdm/kdm-appear.cpp b/kcontrol/kdm/kdm-appear.cpp
deleted file mode 100644
index cdd5f2fc9..000000000
--- a/kcontrol/kdm/kdm-appear.cpp
+++ /dev/null
@@ -1,554 +0,0 @@
-/*
- This file is part of the KDE Display Manager Configuration package
- Copyright (C) 1997-1998 Thomas Tanghus ([email protected])
-
- 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 Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-
-#include <unistd.h>
-#include <sys/types.h>
-
-
-#include <tqbuttongroup.h>
-#include <tqlabel.h>
-#include <tqlayout.h>
-#include <tqradiobutton.h>
-#include <tqwhatsthis.h>
-#include <tqvalidator.h>
-#include <tqstylefactory.h>
-#include <tqcheckbox.h>
-#include <tqstyle.h>
-
-#include <klocale.h>
-#include <klineedit.h>
-#include <kimageio.h>
-#include <kcombobox.h>
-#include <kmessagebox.h>
-#include <kstandarddirs.h>
-#include <kio/netaccess.h>
-#include <kiconloader.h>
-#include <kurldrag.h>
-#include <kimagefilepreview.h>
-
-#include "tdm-appear.h"
-#include "kbackedcombobox.h"
-
-extern KSimpleConfig *config;
-
-
-TDMAppearanceWidget::TDMAppearanceWidget(TQWidget *parent, const char *name)
- : TQWidget(parent, name)
-{
- TQString wtstr;
-
- TQVBoxLayout *vbox = new TQVBoxLayout(this, KDialog::marginHint(),
- KDialog::spacingHint(), "vbox");
- TQGroupBox *group = new TQGroupBox(i18n("Appearance"), this);
- vbox->addWidget(group);
-
- TQGridLayout *grid = new TQGridLayout( group, 5, 2, KDialog::marginHint(),
- KDialog::spacingHint(), "grid");
- grid->addRowSpacing(0, group->fontMetrics().height());
- grid->setColStretch(0, 1);
- grid->setColStretch(1, 1);
-
- TQHBoxLayout *hlay = new TQHBoxLayout( KDialog::spacingHint() );
- grid->addMultiCellLayout(hlay, 1,1, 0,1);
- greetstr_lined = new KLineEdit(group);
- TQLabel *label = new TQLabel(greetstr_lined, i18n("&Greeting:"), group);
- hlay->addWidget(label);
- connect(greetstr_lined, TQT_SIGNAL(textChanged(const TQString&)),
- TQT_SLOT(changed()));
- hlay->addWidget(greetstr_lined);
- wtstr = i18n("This is the \"headline\" for TDM's login window. You may want to "
- "put some nice greeting or information about the operating system here.<p>"
- "TDM will substitute the following character pairs with the "
- "respective contents:<br><ul>"
- "<li>%d -> current display</li>"
- "<li>%h -> host name, possibly with domain name</li>"
- "<li>%n -> node name, most probably the host name without domain name</li>"
- "<li>%s -> the operating system</li>"
- "<li>%r -> the operating system's version</li>"
- "<li>%m -> the machine (hardware) type</li>"
- "<li>%% -> a single %</li>"
- "</ul>" );
- TQWhatsThis::add( label, wtstr );
- TQWhatsThis::add( greetstr_lined, wtstr );
-
-
- TQGridLayout *hglay = new TQGridLayout( 3, 4, KDialog::spacingHint() );
- grid->addMultiCellLayout(hglay, 2,4, 0,0);
-
- label = new TQLabel(i18n("Logo area:"), group);
- hglay->addWidget(label, 0, 0);
- TQVBoxLayout *vlay = new TQVBoxLayout( KDialog::spacingHint() );
- hglay->addMultiCellLayout(vlay, 0,0, 1,2);
- noneRadio = new TQRadioButton( i18n("logo area", "&None"), group );
- clockRadio = new TQRadioButton( i18n("Show cloc&k"), group );
- logoRadio = new TQRadioButton( i18n("Sho&w logo"), group );
- TQButtonGroup *buttonGroup = new TQButtonGroup( group );
- label->setBuddy( buttonGroup );
- connect( buttonGroup, TQT_SIGNAL(clicked(int)), TQT_SLOT(slotAreaRadioClicked(int)) );
- connect( buttonGroup, TQT_SIGNAL(clicked(int)), TQT_SLOT(changed()) );
- buttonGroup->hide();
- buttonGroup->insert(noneRadio, KdmNone);
- buttonGroup->insert(clockRadio, KdmClock);
- buttonGroup->insert(logoRadio, KdmLogo);
- vlay->addWidget(noneRadio);
- vlay->addWidget(clockRadio);
- vlay->addWidget(logoRadio);
- wtstr = i18n("You can choose to display a custom logo (see below), a clock or no logo at all.");
- TQWhatsThis::add( label, wtstr );
- TQWhatsThis::add( noneRadio, wtstr );
- TQWhatsThis::add( logoRadio, wtstr );
- TQWhatsThis::add( clockRadio, wtstr );
-
- logoLabel = new TQLabel(i18n("&Logo:"), group);
- logobutton = new TQPushButton(group);
- logoLabel->setBuddy( logobutton );
- logobutton->setAutoDefault(false);
- logobutton->setAcceptDrops(true);
- logobutton->installEventFilter(this); // for drag and drop
- connect(logobutton, TQT_SIGNAL(clicked()), TQT_SLOT(slotLogoButtonClicked()));
- hglay->addWidget(logoLabel, 1, 0);
- hglay->addWidget(logobutton, 1, 1, Qt::AlignCenter);
- hglay->addRowSpacing(1, 110);
- wtstr = i18n("Click here to choose an image that TDM will display. "
- "You can also drag and drop an image onto this button "
- "(e.g. from Konqueror).");
- TQWhatsThis::add( logoLabel, wtstr );
- TQWhatsThis::add( logobutton, wtstr );
- hglay->addRowSpacing( 2, KDialog::spacingHint());
- hglay->setColStretch( 3, 1);
-
-
- hglay = new TQGridLayout( 2, 3, KDialog::spacingHint() );
- grid->addLayout(hglay, 2, 1);
-
- label = new TQLabel(i18n("Position:"), group);
- hglay->addMultiCellWidget(label, 0,1, 0,0, Qt::AlignVCenter);
- TQValidator *posValidator = new TQIntValidator(0, 100, TQT_TQOBJECT(group));
- TQLabel *xLineLabel = new TQLabel(i18n("&X:"), group);
- hglay->addWidget(xLineLabel, 0, 1);
- xLineEdit = new TQLineEdit (group);
- connect( xLineEdit, TQT_SIGNAL( textChanged(const TQString&) ), TQT_SLOT( changed() ));
- hglay->addWidget(xLineEdit, 0, 2);
- xLineLabel->setBuddy(xLineEdit);
- xLineEdit->setValidator(posValidator);
- TQLabel *yLineLabel = new TQLabel(i18n("&Y:"), group);
- hglay->addWidget(yLineLabel, 1, 1);
- yLineEdit = new TQLineEdit (group);
- connect( yLineEdit, TQT_SIGNAL( textChanged(const TQString&) ), TQT_SLOT( changed() ));
- hglay->addWidget(yLineEdit, 1, 2);
- yLineLabel->setBuddy(yLineEdit);
- yLineEdit->setValidator(posValidator);
- wtstr = i18n("Here you specify the relative coordinates (in percent) of the login dialog's <em>center</em>.");
- TQWhatsThis::add( label, wtstr );
- TQWhatsThis::add( xLineLabel, wtstr );
- TQWhatsThis::add( xLineEdit, wtstr );
- TQWhatsThis::add( yLineLabel, wtstr );
- TQWhatsThis::add( yLineEdit, wtstr );
- hglay->setColStretch( 3, 1);
- hglay->setRowStretch( 2, 1);
-
-
- hglay = new TQGridLayout( 2, 3, KDialog::spacingHint() );
- grid->addLayout(hglay, 3, 1);
- hglay->setColStretch(3, 1);
-
- compositorcombo = new KBackedComboBox(group);
- compositorcombo->insertItem( "", i18n("None") );
- compositorcombo->insertItem( "kompmgr", i18n("Trinity compositor") );
- label = new TQLabel(compositorcombo, i18n("Compositor:"), group);
- connect(compositorcombo, TQT_SIGNAL(activated(int)), TQT_SLOT(changed()));
- hglay->addWidget(label, 0, 0);
- hglay->addWidget(compositorcombo, 0, 1);
- wtstr = i18n("Choose a compositor to be used in TDM. Note that the chosen compositor will continue to run after login.");
- TQWhatsThis::add( label, wtstr );
- TQWhatsThis::add( compositorcombo, wtstr );
-
- guicombo = new KBackedComboBox(group);
- guicombo->insertItem( "", i18n("<default>") );
- loadGuiStyles(guicombo);
- guicombo->listBox()->sort();
- label = new TQLabel(guicombo, i18n("GUI s&tyle:"), group);
- connect(guicombo, TQT_SIGNAL(activated(int)), TQT_SLOT(changed()));
- hglay->addWidget(label, 1, 0);
- hglay->addWidget(guicombo, 1, 1);
- wtstr = i18n("You can choose a basic GUI style here that will be "
- "used by TDM only.");
- TQWhatsThis::add( label, wtstr );
- TQWhatsThis::add( guicombo, wtstr );
-
- colcombo = new KBackedComboBox(group);
- colcombo->insertItem( "", i18n("<default>") );
- loadColorSchemes(colcombo);
- colcombo->listBox()->sort();
- label = new TQLabel(colcombo, i18n("&Color scheme:"), group);
- connect(colcombo, TQT_SIGNAL(activated(int)), TQT_SLOT(changed()));
- hglay->addWidget(label, 2, 0);
- hglay->addWidget(colcombo, 2, 1);
- wtstr = i18n("You can choose a basic Color Scheme here that will be "
- "used by TDM only.");
- TQWhatsThis::add( label, wtstr );
- TQWhatsThis::add( colcombo, wtstr );
-
- echocombo = new KBackedComboBox(group);
- echocombo->insertItem("NoEcho", i18n("No Echo"));
- echocombo->insertItem("OneStar", i18n("One Star"));
- echocombo->insertItem("ThreeStars", i18n("Three Stars"));
- label = new TQLabel(echocombo, i18n("Echo &mode:"), group);
- connect(echocombo, TQT_SIGNAL(activated(int)), TQT_SLOT(changed()));
- hglay->addWidget(label, 3, 0);
- hglay->addWidget(echocombo, 3, 1);
- wtstr = i18n("You can choose whether and how TDM shows your password when you type it.");
- TQWhatsThis::add( label, wtstr );
- TQWhatsThis::add( echocombo, wtstr );
-
-
- // The Language group box
- group = new TQGroupBox(0, Qt::Vertical, i18n("Locale"), this);
- vbox->addWidget(group);
-
- langcombo = new KLanguageButton(group);
- loadLanguageList(langcombo);
- connect(langcombo, TQT_SIGNAL(activated(const TQString &)), TQT_SLOT(changed()));
- label = new TQLabel(langcombo, i18n("Languag&e:"), group);
- TQGridLayout *hbox = new TQGridLayout( group->layout(), 2, 2, KDialog::spacingHint() );
- hbox->setColStretch(1, 1);
- hbox->addWidget(label, 1, 0);
- hbox->addWidget(langcombo, 1, 1);
- wtstr = i18n("Here you can choose the language used by TDM. This setting does not affect"
- " a user's personal settings; that will take effect after login.");
- TQWhatsThis::add( label, wtstr );
- TQWhatsThis::add( langcombo, wtstr );
-
-
- // The SAK group box
- group = new TQGroupBox(0, Qt::Vertical, i18n("Secure Attention Key"), this);
- vbox->addWidget(group);
-
- sakbox = new TQCheckBox( i18n("Enable Secure Attention Key"), group );
- connect( sakbox, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()) );
- TQGridLayout *hbox2 = new TQGridLayout( group->layout(), 2, 2, KDialog::spacingHint() );
- hbox2->setColStretch(1, 1);
- hbox2->addWidget(sakbox, 1, 0);
- wtstr = i18n("Here you can enable or disable the Secure Attention Key [SAK] anti-spoofing measure.");
- TQWhatsThis::add( sakbox, wtstr );
-
-
- vbox->addStretch(1);
-
-}
-
-void TDMAppearanceWidget::makeReadOnly()
-{
- disconnect( logobutton, TQT_SIGNAL(clicked()),
- this, TQT_SLOT(slotLogoButtonClicked()) );
- logobutton->setAcceptDrops(false);
- greetstr_lined->setReadOnly(true);
- noneRadio->setEnabled(false);
- clockRadio->setEnabled(false);
- logoRadio->setEnabled(false);
- xLineEdit->setEnabled(false);
- yLineEdit->setEnabled(false);
- compositorcombo->setEnabled(false);
- guicombo->setEnabled(false);
- colcombo->setEnabled(false);
- echocombo->setEnabled(false);
- langcombo->setEnabled(false);
- sakbox->setEnabled(false);
-}
-
-void TDMAppearanceWidget::loadLanguageList(KLanguageButton *combo)
-{
- TQStringList langlist = KGlobal::dirs()->findAllResources("locale",
- TQString::fromLatin1("*/entry.desktop"));
- langlist.sort();
- for ( TQStringList::ConstIterator it = langlist.begin();
- it != langlist.end(); ++it )
- {
- TQString fpath = (*it).left((*it).length() - 14);
- int index = fpath.findRev('/');
- TQString nid = fpath.mid(index + 1);
-
- KSimpleConfig entry(*it);
- entry.setGroup(TQString::fromLatin1("KCM Locale"));
- TQString name = entry.readEntry(TQString::fromLatin1("Name"), i18n("without name"));
- combo->insertLanguage(nid, name, TQString::fromLatin1("l10n/"), TQString::null);
- }
-}
-
-void TDMAppearanceWidget::loadColorSchemes(KBackedComboBox *combo)
-{
- // XXX: Global + local schemes
- TQStringList list = KGlobal::dirs()->
- findAllResources("data", "kdisplay/color-schemes/*.kcsrc", false, true);
- for (TQStringList::ConstIterator it = list.begin(); it != list.end(); ++it)
- {
- KSimpleConfig config(*it, true);
- config.setGroup("Color Scheme");
-
- TQString str;
- if (!(str = config.readEntry("Name")).isEmpty() ||
- !(str = config.readEntry("name")).isEmpty())
- {
- TQString str2 = (*it).mid( (*it).findRev( '/' ) + 1 ); // strip off path
- str2.setLength( str2.length() - 6 ); // strip off ".kcsrc
- combo->insertItem( str2, str );
- }
- }
-}
-
-void TDMAppearanceWidget::loadGuiStyles(KBackedComboBox *combo)
-{
- // XXX: Global + local schemes
- TQStringList list = KGlobal::dirs()->
- findAllResources("data", "kstyle/themes/*.themerc", false, true);
- for (TQStringList::ConstIterator it = list.begin(); it != list.end(); ++it)
- {
- KSimpleConfig config(*it, true);
-
- if (!(config.hasGroup("KDE") && config.hasGroup("Misc")))
- continue;
-
- config.setGroup("Desktop Entry");
- if (config.readBoolEntry("Hidden", false))
- continue;
-
- config.setGroup("KDE");
- TQString str2 = config.readEntry("WidgetStyle");
- if (str2.isNull())
- continue;
-
- config.setGroup("Misc");
- combo->insertItem( str2, config.readEntry("Name") );
- }
-}
-
-bool TDMAppearanceWidget::setLogo(TQString logo)
-{
- TQString flogo = logo.isEmpty() ?
- locate("data", TQString::fromLatin1("tdm/pics/kdelogo.png") ) :
- logo;
- TQImage p(flogo);
- if (p.isNull())
- return false;
- if (p.width() > 100 || p.height() > 100)
- p = p.smoothScale(100, 100, TQ_ScaleMin);
- logobutton->setPixmap(p);
- uint bd = style().pixelMetric( TQStyle::PM_ButtonMargin ) * 2;
- logobutton->setFixedSize(p.width() + bd, p.height() + bd);
- logopath = logo;
- return true;
-}
-
-
-void TDMAppearanceWidget::slotLogoButtonClicked()
-{
- KImageIO::registerFormats();
- KFileDialog dialogue(locate("data", TQString::fromLatin1("tdm/pics/")),
- KImageIO::pattern( KImageIO::Reading ),
- this, 0, true);
- dialogue.setOperationMode( KFileDialog::Opening );
- dialogue.setMode( KFile::File | KFile::LocalOnly );
-
- KImageFilePreview* imagePreview = new KImageFilePreview( &dialogue );
- dialogue.setPreviewWidget( imagePreview );
- if (dialogue.exec() == TQDialog::Accepted) {
- if ( setLogo(dialogue.selectedFile()) ) {
- changed();
- }
- }
-}
-
-
-void TDMAppearanceWidget::slotAreaRadioClicked(int id)
-{
- logobutton->setEnabled( id == KdmLogo );
- logoLabel->setEnabled( id == KdmLogo );
-}
-
-
-bool TDMAppearanceWidget::eventFilter(TQObject *, TQEvent *e)
-{
- if (e->type() == TQEvent::DragEnter) {
- iconLoaderDragEnterEvent((TQDragEnterEvent *) e);
- return true;
- }
-
- if (e->type() == TQEvent::Drop) {
- iconLoaderDropEvent((TQDropEvent *) e);
- return true;
- }
-
- return false;
-}
-
-void TDMAppearanceWidget::iconLoaderDragEnterEvent(TQDragEnterEvent *e)
-{
- e->accept(KURLDrag::canDecode(e));
-}
-
-
-KURL *decodeImgDrop(TQDropEvent *e, TQWidget *wdg);
-
-void TDMAppearanceWidget::iconLoaderDropEvent(TQDropEvent *e)
-{
- KURL pixurl;
- bool istmp;
-
- KURL *url = decodeImgDrop(e, this);
- if (url) {
-
- // we gotta check if it is a non-local file and make a tmp copy at the hd.
- if(!url->isLocalFile()) {
- pixurl.setPath(KGlobal::dirs()->resourceDirs("data").last() +
- "tdm/pics/" + url->fileName());
- KIO::NetAccess::copy(*url, pixurl, parentWidget());
- istmp = true;
- } else {
- pixurl = *url;
- istmp = false;
- }
-
- // By now url should be "file:/..."
- if (!setLogo(pixurl.path())) {
- KIO::NetAccess::del(pixurl, parentWidget());
- TQString msg = i18n("There was an error loading the image:\n"
- "%1\n"
- "It will not be saved.")
- .arg(pixurl.path());
- KMessageBox::sorry(this, msg);
- }
-
- delete url;
- }
-}
-
-
-void TDMAppearanceWidget::save()
-{
- config->setGroup("X-*-Greeter");
-
- config->writeEntry("GreetString", greetstr_lined->text());
-
- config->writeEntry("LogoArea", noneRadio->isChecked() ? "None" :
- logoRadio->isChecked() ? "Logo" : "Clock" );
-
- config->writeEntry("LogoPixmap", KGlobal::iconLoader()->iconPath(logopath, KIcon::Desktop, true));
-
- config->writeEntry("Compositor", compositorcombo->currentId());
-
- config->writeEntry("GUIStyle", guicombo->currentId());
-
- config->writeEntry("ColorScheme", colcombo->currentId());
-
- config->writeEntry("EchoMode", echocombo->currentId());
-
- config->writeEntry("GreeterPos", xLineEdit->text() + ',' + yLineEdit->text());
-
- config->writeEntry("Language", langcombo->current());
-
- config->writeEntry("UseSAK", sakbox->isChecked());
-}
-
-
-void TDMAppearanceWidget::load()
-{
- config->setGroup("X-*-Greeter");
-
- // Read the greeting string
- greetstr_lined->setText(config->readEntry("GreetString", i18n("Welcome to %n")));
-
- // Regular logo or clock
- TQString logoArea = config->readEntry("LogoArea", "Logo" );
- if (logoArea == "Clock") {
- clockRadio->setChecked(true);
- slotAreaRadioClicked(KdmClock);
- } else if (logoArea == "Logo") {
- logoRadio->setChecked(true);
- slotAreaRadioClicked(KdmLogo);
- } else {
- noneRadio->setChecked(true);
- slotAreaRadioClicked(KdmNone);
- }
-
- // See if we use alternate logo
- setLogo(config->readEntry("LogoPixmap"));
-
- // Check the current compositor type
- compositorcombo->setCurrentId(config->readEntry("Compositor"));
-
- // Check the GUI type
- guicombo->setCurrentId(config->readEntry("GUIStyle"));
-
- // Check the Color Scheme
- colcombo->setCurrentId(config->readEntry("ColorScheme"));
-
- // Check the echo mode
- echocombo->setCurrentId(config->readEntry("EchoMode", "OneStar"));
-
- TQStringList sl = config->readListEntry( "GreeterPos" );
- if (sl.count() != 2) {
- xLineEdit->setText( "50" );
- yLineEdit->setText( "50" );
- } else {
- xLineEdit->setText( sl.first() );
- yLineEdit->setText( sl.last() );
- }
-
- // get the language
- langcombo->setCurrentItem(config->readEntry("Language", "C"));
-
- // See if the SAK is enabled
- sakbox->setChecked(config->readBoolEntry("UseSAK", true));
-}
-
-
-void TDMAppearanceWidget::defaults()
-{
- greetstr_lined->setText( i18n("Welcome to %n") );
- logoRadio->setChecked( true );
- slotAreaRadioClicked( KdmLogo );
- setLogo( "" );
- compositorcombo->setCurrentId( "" );
- guicombo->setCurrentId( "" );
- colcombo->setCurrentId( "" );
- echocombo->setCurrentItem( "OneStar" );
-
- xLineEdit->setText( "50" );
- yLineEdit->setText( "50" );
-
- langcombo->setCurrentItem( "en_US" );
-}
-
-TQString TDMAppearanceWidget::quickHelp() const
-{
- return i18n("<h1>TDM - Appearance</h1> Here you can configure the basic appearance"
- " of the TDM login manager, i.e. a greeting string, an icon etc.<p>"
- " For further refinement of TDM's appearance, see the \"Font\" and \"Background\" "
- " tabs.");
-}
-
-
-void TDMAppearanceWidget::changed()
-{
- emit changed(true);
-}
-
-#include "tdm-appear.moc"