KDMAppearanceWidget::KDMAppearanceWidget(QWidget *parent, const char *name) : QWidget(parent, name) { QString wtstr; QVBoxLayout *vbox = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint(), "vbox"); QGroupBox *group = new QGroupBox(i18n("Appearance"), this); vbox->addWidget(group); QGridLayout *grid = new QGridLayout( group, 5, 2, KDialog::marginHint(), KDialog::spacingHint(), "grid"); grid->addRowSpacing(0, group->fontMetrics().height()); grid->setColStretch(0, 1); grid->setColStretch(1, 1); QHBoxLayout *hlay = new QHBoxLayout( KDialog::spacingHint() ); grid->addMultiCellLayout(hlay, 1,1, 0,1); greetstr_lined = new KLineEdit(group); QLabel *label = new QLabel(greetstr_lined, i18n("&Greeting:"), group); hlay->addWidget(label); connect(greetstr_lined, SIGNAL(textChanged(const QString&)), SLOT(changed())); hlay->addWidget(greetstr_lined); wtstr = i18n("This is the \"headline\" for KDM's login window. You may want to " "put some nice greeting or information about the operating system here.<p>" "KDM 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>" ); QWhatsThis::add( label, wtstr ); QWhatsThis::add( greetstr_lined, wtstr ); QGridLayout *hglay = new QGridLayout( 3, 4, KDialog::spacingHint() ); grid->addMultiCellLayout(hglay, 2,4, 0,0); label = new QLabel(i18n("Logo area:"), group); hglay->addWidget(label, 0, 0); QVBoxLayout *vlay = new QVBoxLayout( KDialog::spacingHint() ); hglay->addMultiCellLayout(vlay, 0,0, 1,2); noneRadio = new QRadioButton( i18n("logo area", "&None"), group ); clockRadio = new QRadioButton( i18n("Show cloc&k"), group ); logoRadio = new QRadioButton( i18n("Sho&w logo"), group ); QButtonGroup *buttonGroup = new QButtonGroup( group ); label->setBuddy( buttonGroup ); connect( buttonGroup, SIGNAL(clicked(int)), SLOT(slotAreaRadioClicked(int)) ); connect( buttonGroup, SIGNAL(clicked(int)), 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."); QWhatsThis::add( label, wtstr ); QWhatsThis::add( noneRadio, wtstr ); QWhatsThis::add( logoRadio, wtstr ); QWhatsThis::add( clockRadio, wtstr ); logoLabel = new QLabel(i18n("&Logo:"), group); logobutton = new QPushButton(group); logoLabel->setBuddy( logobutton ); logobutton->setAutoDefault(false); logobutton->setAcceptDrops(true); logobutton->installEventFilter(this); // for drag and drop connect(logobutton, SIGNAL(clicked()), SLOT(slotLogoButtonClicked())); hglay->addWidget(logoLabel, 1, 0); hglay->addWidget(logobutton, 1, 1, AlignCenter); hglay->addRowSpacing(1, 110); wtstr = i18n("Click here to choose an image that KDM will display. " "You can also drag and drop an image onto this button " "(e.g. from Konqueror)."); QWhatsThis::add( logoLabel, wtstr ); QWhatsThis::add( logobutton, wtstr ); hglay->addRowSpacing( 2, KDialog::spacingHint()); hglay->setColStretch( 3, 1); hglay = new QGridLayout( 2, 3, KDialog::spacingHint() ); grid->addLayout(hglay, 2, 1); label = new QLabel(i18n("Position:"), group); hglay->addMultiCellWidget(label, 0,1, 0,0, AlignVCenter); QValidator *posValidator = new QIntValidator(0, 100, group); QLabel *xLineLabel = new QLabel(i18n("&X:"), group); hglay->addWidget(xLineLabel, 0, 1); xLineEdit = new QLineEdit (group); connect( xLineEdit, SIGNAL( textChanged(const QString&) ), SLOT( changed() )); hglay->addWidget(xLineEdit, 0, 2); xLineLabel->setBuddy(xLineEdit); xLineEdit->setValidator(posValidator); QLabel *yLineLabel = new QLabel(i18n("&Y:"), group); hglay->addWidget(yLineLabel, 1, 1); yLineEdit = new QLineEdit (group); connect( yLineEdit, SIGNAL( textChanged(const QString&) ), 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>."); QWhatsThis::add( label, wtstr ); QWhatsThis::add( xLineLabel, wtstr ); QWhatsThis::add( xLineEdit, wtstr ); QWhatsThis::add( yLineLabel, wtstr ); QWhatsThis::add( yLineEdit, wtstr ); hglay->setColStretch( 3, 1); hglay->setRowStretch( 2, 1); hglay = new QGridLayout( 2, 3, KDialog::spacingHint() ); grid->addLayout(hglay, 3, 1); hglay->setColStretch(3, 1); guicombo = new KBackedComboBox(group); guicombo->insertItem( "", i18n("<default>") ); loadGuiStyles(guicombo); guicombo->listBox()->sort(); label = new QLabel(guicombo, i18n("GUI s&tyle:"), group); connect(guicombo, SIGNAL(activated(int)), SLOT(changed())); hglay->addWidget(label, 0, 0); hglay->addWidget(guicombo, 0, 1); wtstr = i18n("You can choose a basic GUI style here that will be " "used by KDM only."); QWhatsThis::add( label, wtstr ); QWhatsThis::add( guicombo, wtstr ); colcombo = new KBackedComboBox(group); colcombo->insertItem( "", i18n("<default>") ); loadColorSchemes(colcombo); colcombo->listBox()->sort(); label = new QLabel(colcombo, i18n("&Color scheme:"), group); connect(colcombo, SIGNAL(activated(int)), SLOT(changed())); hglay->addWidget(label, 1, 0); hglay->addWidget(colcombo, 1, 1); wtstr = i18n("You can choose a basic Color Scheme here that will be " "used by KDM only."); QWhatsThis::add( label, wtstr ); QWhatsThis::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 QLabel(echocombo, i18n("Echo &mode:"), group); connect(echocombo, SIGNAL(activated(int)), SLOT(changed())); hglay->addWidget(label, 2, 0); hglay->addWidget(echocombo, 2, 1); wtstr = i18n("You can choose whether and how KDM shows your password when you type it."); QWhatsThis::add( label, wtstr ); QWhatsThis::add( echocombo, wtstr ); // The Language group box group = new QGroupBox(0, Vertical, i18n("Locale"), this); vbox->addWidget(group); langcombo = new KLanguageButton(group); loadLanguageList(langcombo); connect(langcombo, SIGNAL(activated(const QString &)), SLOT(changed())); label = new QLabel(langcombo, i18n("Languag&e:"), group); QGridLayout *hbox = new QGridLayout( 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 KDM. This setting does not affect" " a user's personal settings; that will take effect after login."); QWhatsThis::add( label, wtstr ); QWhatsThis::add( langcombo, wtstr ); vbox->addStretch(1); }
TDMAppearanceWidget::TDMAppearanceWidget(TQWidget *parent, const char *name) : TQWidget(parent, name), sakwarning(0) { 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( TDE_COMPOSITOR_BINARY, 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); if (getuid() == 0 && config->checkConfigFilesWritable( true )) { if (system(KDE_BINDIR "/tsak checkdeps") != 0) { sakbox->setEnabled(false); sakwarning = new TQLabel( i18n("Secure Attention Key support is not available on your system. Please check for the presence of evdev and uinput."), group ); hbox2->addWidget(sakwarning, 2, 0); } } wtstr = i18n("Here you can enable or disable the Secure Attention Key [SAK] anti-spoofing measure."); TQWhatsThis::add( sakbox, wtstr ); vbox->addStretch(1); }
KDMGeneralWidget::KDMGeneralWidget( QWidget *parent ) : QWidget( parent ) { QString wtstr; QBoxLayout *ml = new QVBoxLayout( this ); ml->setSpacing( KDialog::spacingHint() ); ml->setMargin( KDialog::marginHint() ); QGroupBox *box = new QGroupBox( "Appearance", this ); ml->addWidget( box ); QGridLayout *grid = new QGridLayout( box ); grid->setSpacing( KDialog::spacingHint() ); grid->setMargin( KDialog::marginHint() ); grid->setColStretch( 2, 1 ); useThemeCheck = new QCheckBox( i18n("&Use themed greeter"), box ); connect( useThemeCheck, SIGNAL(toggled( bool )), SLOT(slotUseThemeChanged()) ); useThemeCheck->setWhatsThis( i18n("Enable this if you would like to use a themed Login Manager.") ); grid->addWidget( useThemeCheck, 0, 0, 1, 2 ); guicombo = new KBackedComboBox( box ); guicombo->insertItem( "", i18n("<placeholder>default</placeholder>") ); loadGuiStyles( guicombo ); QLabel *label = new QLabel( i18n("GUI s&tyle:"), box ); label->setBuddy( guicombo ); connect( guicombo, SIGNAL(activated( int )), SIGNAL(changed()) ); grid->addWidget( label, 1, 0 ); grid->addWidget( guicombo, 1, 1 ); wtstr = i18n("You can choose a basic GUI style here that will be " "used by KDM only."); label->setWhatsThis( wtstr ); guicombo->setWhatsThis( wtstr ); colcombo = new KBackedComboBox( box ); colcombo->insertItem( "", i18n("<placeholder>default</placeholder>") ); loadColorSchemes( colcombo ); label = new QLabel( i18n("Color sche&me:"), box ); label->setBuddy( colcombo ); connect( colcombo, SIGNAL(activated( int )), SIGNAL(changed()) ); grid->addWidget( label, 2, 0 ); grid->addWidget( colcombo, 2, 1 ); wtstr = i18n("You can choose a basic Color Scheme here that will be " "used by KDM only."); label->setWhatsThis( wtstr ); colcombo->setWhatsThis( wtstr ); box = new QGroupBox( "Locale", this ); ml->addWidget( box ); grid = new QGridLayout( box ); grid->setSpacing( KDialog::spacingHint() ); grid->setMargin( KDialog::marginHint() ); grid->setColStretch( 2, 1 ); // The Language group box langcombo = new KLanguageButton( box ); langcombo->showLanguageCodes(true); langcombo->loadAllLanguages(); connect( langcombo, SIGNAL(activated( const QString & )), SIGNAL(changed()) ); label = new QLabel( i18n("&Language:"), this ); label->setBuddy( langcombo ); grid->addWidget( label, 0, 0 ); grid->addWidget( langcombo, 0, 1 ); wtstr = i18n("Here you can choose the language used by KDM. This setting does not affect" " a user's personal settings; that will take effect after login."); label->setWhatsThis( wtstr ); langcombo->setWhatsThis( wtstr ); box = new QGroupBox( "Fonts", this ); ml->addWidget( box ); grid = new QGridLayout( box ); grid->setSpacing( KDialog::spacingHint() ); grid->setMargin( KDialog::marginHint() ); label = new QLabel( i18n("&General:"), box ); stdFontChooser = new KFontRequester( box ); label->setBuddy( stdFontChooser ); stdFontChooser->setWhatsThis( i18n("This changes the font which is used for all the text in the login manager except for the greeting and failure messages.") ); connect( stdFontChooser, SIGNAL(fontSelected( const QFont& )), SIGNAL(changed()) ); grid->addWidget( label, 0, 0 ); grid->addWidget( stdFontChooser, 0, 1 ); label = new QLabel( i18n("&Failure font:"), box ); failFontChooser = new KFontRequester( box ); label->setBuddy( failFontChooser ); failFontChooser->setWhatsThis( i18n("This changes the font which is used for failure messages in the login manager.") ); connect( failFontChooser, SIGNAL(fontSelected( const QFont& )), SIGNAL(changed()) ); grid->addWidget( label, 1, 0 ); grid->addWidget( failFontChooser, 1, 1 ); label = new QLabel( i18n("Gree&ting:"), box ); greetingFontChooser = new KFontRequester( box ); label->setBuddy( greetingFontChooser ); greetingFontChooser->setWhatsThis( i18n("This changes the font which is used for the login manager's greeting.") ); connect( greetingFontChooser, SIGNAL(fontSelected( const QFont& )), SIGNAL(changed()) ); grid->addWidget( label, 2, 0 ); grid->addWidget( greetingFontChooser, 2, 1 ); aacb = new QCheckBox( i18n("Use anti-aliasing for fonts"), box ); aacb->setWhatsThis( i18n("If you check this box and your X-Server has the Xft extension, " "fonts will be antialiased (smoothed) in the login dialog.") ); connect( aacb, SIGNAL(toggled( bool )), SIGNAL(changed()) ); grid->addWidget( aacb, 3, 0, 1, 2 ); ml->addStretch( 1 ); }