Additional GUI work, now ready for deployment process

pull/1/head
Timothy Pearson 13 years ago
parent 46d1d860d1
commit 2894137130

@ -4,7 +4,7 @@ METASOURCES = AUTO
# Install this plugin in the KDE modules directory # Install this plugin in the KDE modules directory
kde_module_LTLIBRARIES = kcm_ldapcontroller.la kde_module_LTLIBRARIES = kcm_ldapcontroller.la
kcm_ldapcontroller_la_SOURCES = ldapcontroller.cpp ldapcontrollerconfigbase.ui realmwizard.cpp realmintropagedlg.ui realmintropage.cpp realmconfigpagedlg.ui realmconfigpage.cpp realmfinishpagedlg.ui realmfinishpage.cpp kcm_ldapcontroller_la_SOURCES = ldapcontroller.cpp ldapcontrollerconfigbase.ui realmwizard.cpp realmintropagedlg.ui realmintropage.cpp realmconfigpagedlg.ui realmconfigpage.cpp realmfinishpagedlg.ui realmfinishpage.cpp processingdialog.cpp
kcm_ldapcontroller_la_LIBADD = -lkio $(LIB_TDEUI) kcm_ldapcontroller_la_LIBADD = -lkio $(LIB_TDEUI)
kcm_ldapcontroller_la_LDFLAGS = -avoid-version -module -no-undefined \ kcm_ldapcontroller_la_LDFLAGS = -avoid-version -module -no-undefined \
$(all_libraries) $(all_libraries)

@ -18,6 +18,10 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/ ***************************************************************************/
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <tqlayout.h> #include <tqlayout.h>
#include <klocale.h> #include <klocale.h>
@ -39,6 +43,7 @@
#include "ldapcontroller.h" #include "ldapcontroller.h"
#include "realmwizard.h" #include "realmwizard.h"
#include "processingdialog.h"
// FIXME // FIXME
// Connect this to CMake/Automake // Connect this to CMake/Automake
@ -80,6 +85,8 @@ LDAPController::LDAPController(TQWidget *parent, const char *name, const TQStrin
connect(m_base->systemEnableSupport, TQT_SIGNAL(clicked()), this, TQT_SLOT(processLockouts())); connect(m_base->systemEnableSupport, TQT_SIGNAL(clicked()), this, TQT_SLOT(processLockouts()));
connect(m_base->systemRole, TQT_SIGNAL(activated(const TQString&)), this, TQT_SLOT(systemRoleChanged())); connect(m_base->systemRole, TQT_SIGNAL(activated(const TQString&)), this, TQT_SLOT(systemRoleChanged()));
m_fqdn = getMachineFQDN();
load(); load();
if (getuid() != 0 || !m_systemconfig->checkConfigFilesWritable( true )) { if (getuid() != 0 || !m_systemconfig->checkConfigFilesWritable( true )) {
@ -92,6 +99,33 @@ LDAPController::LDAPController(TQWidget *parent, const char *name, const TQStrin
LDAPController::~LDAPController() { LDAPController::~LDAPController() {
} }
// FIXME
// This should be moved to a TDE core library
TQString LDAPController::getMachineFQDN() {
struct addrinfo hints, *info, *p;
int gai_result;
char hostname[1024];
hostname[1023] = '\0';
gethostname(hostname, 1023);
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC; // IPV4 or IPV6
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_CANONNAME;
if ((gai_result = getaddrinfo(hostname, NULL, &hints, &info)) != 0) {
return TQString(hostname);
}
TQString fqdn = TQString(hostname);
for (p=info; p!=NULL; p=p->ai_next) {
fqdn = TQString(p->ai_canonname);
}
freeaddrinfo(info);
return fqdn;
}
void LDAPController::systemRoleChanged() { void LDAPController::systemRoleChanged() {
if (m_base->systemRole->currentItem() != m_prevRole) { if (m_base->systemRole->currentItem() != m_prevRole) {
if (m_base->systemRole->currentItem() == ROLE_REALM_CONTROLLER) { if (m_base->systemRole->currentItem() == ROLE_REALM_CONTROLLER) {
@ -115,7 +149,7 @@ void LDAPController::systemRoleChanged() {
// Something will probably change // Something will probably change
save(); save();
RealmWizard realmwizard(this, this); RealmWizard realmwizard(this, m_fqdn, this);
if (realmwizard.exec() < 0) { if (realmwizard.exec() < 0) {
// Wizard was cancelled // Wizard was cancelled
// Back out all changes! // Back out all changes!
@ -139,10 +173,21 @@ void LDAPController::processLockouts() {
m_base->systemRole->setEnabled(enabled); m_base->systemRole->setEnabled(enabled);
} }
void LDAPController::load() { void LDAPController::load() {
bool thisIsMyMachine;
m_systemconfig->setGroup(NULL); m_systemconfig->setGroup(NULL);
m_base->systemEnableSupport->setChecked(m_systemconfig->readBoolEntry("EnableLDAP", false)); m_base->systemEnableSupport->setChecked(m_systemconfig->readBoolEntry("EnableLDAP", false));
if (m_fqdn == m_systemconfig->readEntry("HostFQDN", "")) {
thisIsMyMachine = true;
}
else {
thisIsMyMachine = false;
}
TQString ldapRole = m_systemconfig->readEntry("LDAPRole", "Workstation"); TQString ldapRole = m_systemconfig->readEntry("LDAPRole", "Workstation");
if (!thisIsMyMachine) {
ldapRole = "Workstation";
}
if (ldapRole == "Realm Controller") { if (ldapRole == "Realm Controller") {
m_base->systemRole->setCurrentItem(ROLE_REALM_CONTROLLER); m_base->systemRole->setCurrentItem(ROLE_REALM_CONTROLLER);
} }
@ -179,6 +224,19 @@ void LDAPController::save() {
load(); load();
} }
int LDAPController::createNewLDAPRealm(TQWidget* dialogparent, LDAPRealmConfig realmconfig, TQString adminUserName, const char * adminPassword, TQString adminRealm, TQString *errstr) {
ProcessingDialog pdialog(dialogparent);
pdialog.setStatusMessage(i18n("Loading data for realm deployment..."));
pdialog.raise();
pdialog.setActiveWindow();
tqApp->processEvents();
sleep(1);
tqApp->processEvents();
sleep(5);
// RAJA FIXME
pdialog.closeDialog();
}
int LDAPController::buttons() { int LDAPController::buttons() {
return KCModule::Apply|KCModule::Help; return KCModule::Apply|KCModule::Help;
} }

@ -32,6 +32,25 @@
#include "ldapcontrollerconfigbase.h" #include "ldapcontrollerconfigbase.h"
// PRIVATE
class LDAPRealmConfig
{
public:
TQString name;
bool bonded;
long uid_offset;
long gid_offset;
TQStringList domain_mappings;
TQString kdc;
int kdc_port;
TQString admin_server;
int admin_server_port;
bool pkinit_require_eku;
bool pkinit_require_krbtgt_otherName;
bool win2k_pkinit;
bool win2k_pkinit_require_binding;
};
class LDAPController: public KCModule class LDAPController: public KCModule
{ {
Q_OBJECT Q_OBJECT
@ -47,6 +66,13 @@ class LDAPController: public KCModule
virtual TQString quickHelp() const; virtual TQString quickHelp() const;
virtual const KAboutData *aboutData() const { return myAboutData; }; virtual const KAboutData *aboutData() const { return myAboutData; };
public:
int createNewLDAPRealm(TQWidget* dialogparent, LDAPRealmConfig realmconfig, TQString adminUserName, const char * adminPassword, TQString adminRealm, TQString *errstr);
// FIXME
// This should be moved to a TDE core library
TQString getMachineFQDN();
private slots: private slots:
void systemRoleChanged(); void systemRoleChanged();
void processLockouts(); void processLockouts();
@ -57,6 +83,7 @@ class LDAPController: public KCModule
LDAPControllerConfigBase *m_base; LDAPControllerConfigBase *m_base;
KSimpleConfig *m_systemconfig; KSimpleConfig *m_systemconfig;
TQString m_fqdn;
int m_prevRole; int m_prevRole;
}; };

@ -0,0 +1,203 @@
/***************************************************************************
* Copyright (C) 2012 by Timothy Pearson *
* kb9vqf@pearsoncomputing.net *
* *
* 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 General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include <kconfig.h>
#include <kapplication.h>
#include <kdialog.h>
#include <klocale.h>
#include <kiconloader.h>
#include <tqlayout.h>
#include <tqobjectlist.h>
#include <tqguardedptr.h>
#include <tqlineedit.h>
#include <tqvaluelist.h>
#include <tqtimer.h>
#include <tqcursor.h>
#include <tqlabel.h>
#include <tqstyle.h>
#include <tqimage.h>
#ifdef Q_WS_X11
#include <netwm.h>
#endif
#include "processingdialog.h"
ProcessingDialogHeader::ProcessingDialogHeader(TQWidget* parent)
: TQWidget( parent, "", Qt::WDestructiveClose )
{
TQVBoxLayout* vbox = new TQVBoxLayout( this );
TQFrame* frame = new TQFrame( this );
frame->setFrameStyle( TQFrame::NoFrame );
frame->setLineWidth( 0 );
// we need to set the minimum size for the window
frame->setMinimumWidth(400);
vbox->addWidget( frame );
TQGridLayout* gbox = new TQGridLayout( frame, 1, 1, 0, KDialog::spacingHint() );
TQHBoxLayout* centerbox = new TQHBoxLayout( KDialog::spacingHint() );
TQHBoxLayout* seperatorbox = new TQHBoxLayout( 0 );
centerbox->setMargin(0);
seperatorbox->setMargin(0);
TQWidget* ticon = new TQWidget( frame );
KIconLoader * ldr = KGlobal::iconLoader();
TQPixmap trinityPixmap = ldr->loadIcon("kmenu", KIcon::Panel, KIcon::SizeLarge, KIcon::DefaultState, 0L, true);
// Manually draw the alpha portions of the icon onto the widget background color...
TQRgb backgroundRgb = ticon->paletteBackgroundColor().rgb();
TQImage correctedImage = trinityPixmap.convertToImage();
correctedImage = correctedImage.convertDepth(32);
correctedImage.setAlphaBuffer(true);
int w = correctedImage.width();
int h = correctedImage.height();
for (int y = 0; y < h; ++y) {
TQRgb *ls = (TQRgb *)correctedImage.scanLine( y );
for (int x = 0; x < w; ++x) {
TQRgb l = ls[x];
float alpha_adjust = tqAlpha( l )/255.0;
int r = int( (tqRed( l ) * alpha_adjust) + (tqRed( backgroundRgb ) * (1.0-alpha_adjust)) );
int g = int( (tqGreen( l ) * alpha_adjust) + (tqGreen( backgroundRgb ) * (1.0-alpha_adjust)) );
int b = int( (tqBlue( l ) * alpha_adjust) + (tqBlue( backgroundRgb ) * (1.0-alpha_adjust)) );
int a = int( 255 );
ls[x] = tqRgba( r, g, b, a );
}
}
trinityPixmap.convertFromImage(correctedImage);
ticon->setBackgroundPixmap(trinityPixmap);
ticon->setMinimumSize(trinityPixmap.size());
ticon->setMaximumSize(trinityPixmap.size());
ticon->resize(trinityPixmap.size());
centerbox->addWidget( ticon, AlignCenter );
TQWidget* swidget = new TQWidget( frame );
swidget->resize(2, frame->sizeHint().width());
swidget->setBackgroundColor(Qt::black);
seperatorbox->addWidget( swidget, AlignCenter );
TQLabel* label = new TQLabel( i18n("Trinity Desktop Environment"), frame );
TQFont fnt = label->font();
fnt.setBold( true );
fnt.setPointSize( fnt.pointSize() * 3 / 2 );
label->setFont( fnt );
centerbox->addWidget( label, AlignCenter );
gbox->addLayout(centerbox, 0, 0);
gbox->addLayout(seperatorbox, 1, 0);
setFixedSize( sizeHint() );
}
ProcessingDialogHeader::~ProcessingDialogHeader()
{
}
ProcessingDialog::ProcessingDialog(TQWidget* parent)
: TQWidget( parent, "systemmodaldialogclass", Qt::WType_Dialog | Qt::WDestructiveClose ), m_keepOnTopTimer(NULL), m_allowClose(false)
{
// Signal that we do not want any window controls to be shown at all
Atom kde_wm_system_modal_notification;
kde_wm_system_modal_notification = XInternAtom(tqt_xdisplay(), "_KDE_WM_MODAL_SYS_NOTIFICATION", False);
XChangeProperty(tqt_xdisplay(), winId(), kde_wm_system_modal_notification, XA_INTEGER, 32, PropModeReplace, (unsigned char *) "TRUE", 1L);
TQVBoxLayout* vbox = new TQVBoxLayout( this );
TQFrame* frame = new TQFrame( this );
frame->setFrameStyle( TQFrame::NoFrame );
frame->setLineWidth( style().pixelMetric( TQStyle::PM_DefaultFrameWidth, frame ) );
// we need to set the minimum size for the window
frame->setMinimumWidth(400);
vbox->addWidget( frame );
TQGridLayout* gbox = new TQGridLayout( frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint() );
TQHBoxLayout* centerbox = new TQHBoxLayout( frame, 0, KDialog::spacingHint() );
m_statusLabel = new TQLabel( i18n("Pondering what to do next").append("..."), frame );
TQFont fnt = m_statusLabel->font();
fnt.setBold( false );
fnt.setPointSize( fnt.pointSize() * 1 );
m_statusLabel->setFont( fnt );
gbox->addMultiCellWidget( m_statusLabel, 2, 2, 0, 0, AlignLeft | AlignVCenter );
ProcessingDialogHeader *theader = new ProcessingDialogHeader(this);
centerbox->addWidget( theader, AlignCenter );
gbox->addLayout(centerbox, 0, 0);
setFixedSize( sizeHint() );
setCaption( i18n("Please wait...") );
// Center the dialog
TQSize sh = sizeHint();
TQRect rect = parent->geometry();
move(rect.x() + (rect.width() - sh.width())/2, rect.y() + (rect.height() - sh.height())/2);
show();
keepMeOnTop();
}
ProcessingDialog::~ProcessingDialog()
{
m_keepOnTopTimer->stop();
delete m_keepOnTopTimer;
}
void ProcessingDialog::keepMeOnTop()
{
if (!m_keepOnTopTimer) {
m_keepOnTopTimer = new TQTimer();
connect(m_keepOnTopTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(keepMeOnTop()));
m_keepOnTopTimer->start(100, FALSE);
}
setActiveWindow();
raise();
setFocus();
}
void ProcessingDialog::setStatusMessage(TQString message)
{
if (message == "") {
m_statusLabel->setText(i18n("Pondering what to do next").append("..."));
}
else {
m_statusLabel->setText(message);
}
}
void ProcessingDialog::closeDialog()
{
m_allowClose = true;
close();
}
void ProcessingDialog::closeEvent(TQCloseEvent *e)
{
//---------------------------------------------
// Don't call the base function because
// we want to ignore the close event
//---------------------------------------------
if (m_allowClose)
TQWidget::closeEvent(e);
}
#include "processingdialog.moc"

@ -0,0 +1,76 @@
/***************************************************************************
* Copyright (C) 2012 by Timothy Pearson *
* kb9vqf@pearsoncomputing.net *
* *
* 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 General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef PROCESSINGDIALOG_H
#define PROCESSINGDIALOG_H
#include <tqdialog.h>
#include <tdelibs_export.h>
class TQLayoutItem;
/**
* \brief A modal dialog header
*
* Internal use only
*
* @author Timothy Pearson <kb9vqf@pearsoncomputing.net>
*/
class TDEUI_EXPORT ProcessingDialogHeader : public TQWidget
{
Q_OBJECT
public:
ProcessingDialogHeader( TQWidget* parent );
~ProcessingDialogHeader();
};
/**
* \brief A modal dialog
*
* This displays a special TDE modal dialog,
* which is used to present noninterruptible
* messages to the user.
*
* @author Timothy Pearson <kb9vqf@pearsoncomputing.net>
*/
class TQLabel;
class TDEUI_EXPORT ProcessingDialog : public TQWidget
{
Q_OBJECT
public:
ProcessingDialog( TQWidget* parent );
~ProcessingDialog();
void setStatusMessage(TQString message);
void closeDialog();
protected slots:
void keepMeOnTop();
void closeEvent(TQCloseEvent *e);
private:
TQTimer* m_keepOnTopTimer;
TQLabel* m_statusLabel;
bool m_allowClose;
};
#endif // PROCESSINGDIALOG_H

@ -40,8 +40,6 @@ public:
public slots: public slots:
void validateEntries(); void validateEntries();
private slots:
void realmNameChanged(); void realmNameChanged();
private: private:

@ -30,16 +30,45 @@
#include <kiconloader.h> #include <kiconloader.h>
#include <dcopclient.h> #include <dcopclient.h>
#include <kprocess.h> #include <kprocess.h>
#include <klineedit.h>
#include <ktextedit.h>
#include <kwizard.h>
#include <kdialogbase.h>
#include <tqpushbutton.h>
#include "realmfinishpage.h" #include "realmfinishpage.h"
RealmFinishPage::RealmFinishPage(TQWidget *parent, const char *name ) : RealmFinishPageDlg(parent,name) { RealmFinishPage::RealmFinishPage(TQWidget *parent, const char *name ) : RealmFinishPageDlg(parent,name) {
px_introSidebar->setPixmap(UserIcon("step3.png")); px_introSidebar->setPixmap(UserIcon("step3.png"));
connect(ldapAdminUsername, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(validateEntries()));
m_parentWizard = dynamic_cast<KWizard*>(parent);
m_parentDialog = dynamic_cast<KDialogBase*>(parent);
} }
RealmFinishPage::~RealmFinishPage(){ RealmFinishPage::~RealmFinishPage(){
// //
} }
void RealmFinishPage::validateEntries() {
if (m_parentWizard) {
if (ldapAdminUsername->text() != "") {
m_parentWizard->finishButton()->setEnabled(true);
}
else {
m_parentWizard->finishButton()->setEnabled(false);
}
}
if (m_parentDialog) {
if (ldapAdminUsername->text() != "") {
m_parentDialog->enableButton(KDialogBase::Ok, true);
}
else {
m_parentDialog->enableButton(KDialogBase::Ok, false);
}
}
}
#include "realmfinishpage.moc" #include "realmfinishpage.moc"

@ -21,6 +21,8 @@
#ifndef REALMFINISHPAGE_H #ifndef REALMFINISHPAGE_H
#define REALMFINISHPAGE_H #define REALMFINISHPAGE_H
#include <kwizard.h>
#include "realmfinishpagedlg.h" #include "realmfinishpagedlg.h"
class TQStringList; class TQStringList;
@ -31,9 +33,17 @@ class TQStringList;
class RealmFinishPage : public RealmFinishPageDlg { class RealmFinishPage : public RealmFinishPageDlg {
Q_OBJECT Q_OBJECT
public:
RealmFinishPage(TQWidget *parent=0, const char *name=0); public:
~RealmFinishPage(); RealmFinishPage(TQWidget *parent=0, const char *name=0);
~RealmFinishPage();
public slots:
void validateEntries();
private:
KWizard* m_parentWizard;
KDialogBase* m_parentDialog;
}; };
#endif #endif

@ -28,6 +28,7 @@
#include <tqtimer.h> #include <tqtimer.h>
#include <tqcursor.h> #include <tqcursor.h>
#include <tqspinbox.h> #include <tqspinbox.h>
#include <tqcheckbox.h>
#include <ksimpleconfig.h> #include <ksimpleconfig.h>
#include <kglobal.h> #include <kglobal.h>
@ -55,8 +56,8 @@
#include "realmwizard.h" #include "realmwizard.h"
#include "realmwizard.moc" #include "realmwizard.moc"
RealmWizard::RealmWizard(LDAPController* controller, TQWidget *parent, const char *name) RealmWizard::RealmWizard(LDAPController* controller, TQString fqdn, TQWidget *parent, const char *name)
: KWizard(parent, name, true), m_controller(controller) { : KWizard(parent, name, true), m_controller(controller), m_fqdn(fqdn) {
setCaption(i18n("LDAP Realm Wizard")); setCaption(i18n("LDAP Realm Wizard"));
@ -71,12 +72,22 @@ RealmWizard::RealmWizard(LDAPController* controller, TQWidget *parent, const cha
finishpage = new RealmFinishPage(this); finishpage = new RealmFinishPage(this);
addPage (finishpage, i18n( "Step 3: Initialize New Realm" ) ); addPage (finishpage, i18n( "Step 3: Initialize New Realm" ) );
setHelpEnabled(TQWizard::page(2), false); setHelpEnabled(TQWizard::page(2), false);
//
// // Set up some defaults // Set up some defaults
// realmpage->txtKDCPort->setValue(88); realmpage->txtKDCPort->setValue(88);
// realmpage->txtAdminServerPort->setValue(749); realmpage->txtAdminServerPort->setValue(749);
// realmpage->txtUIDOffset->setValue(5000); realmpage->txtUIDOffset->setValue(5000);
// realmpage->txtGIDOffset->setValue(5000); realmpage->txtGIDOffset->setValue(5000);
realmpage->txtGIDOffset->setValue(5000);
TQString domainGuess = m_fqdn;
int firstDot = domainGuess.find(".");
if (firstDot >= 0) {
domainGuess.remove(0, firstDot+1);
}
realmpage->txtRealmName->setText(domainGuess);
realmpage->txtKDC->setText(m_fqdn);
realmpage->txtAdminServer->setText(m_fqdn);
realmpage->realmNameChanged();
// Other setup // Other setup
finishpage->ldapAdminRealm->setEnabled(false); finishpage->ldapAdminRealm->setEnabled(false);
@ -97,9 +108,23 @@ void RealmWizard::next() {
} }
else if (currentPage()==realmpage) { else if (currentPage()==realmpage) {
// Save realm information // Save realm information
// RAJA FIXME m_realmconfig.name = realmpage->txtRealmName->text();
m_realmconfig.bonded = false;
m_realmconfig.uid_offset = realmpage->txtUIDOffset->value();
m_realmconfig.gid_offset = realmpage->txtGIDOffset->value();
m_realmconfig.domain_mappings = TQStringList::split("\n", realmpage->txtDomains->text(), FALSE);
m_realmconfig.kdc = realmpage->txtKDC->text();
m_realmconfig.kdc_port = realmpage->txtKDCPort->value();
m_realmconfig.admin_server = realmpage->txtAdminServer->text();
m_realmconfig.admin_server_port = realmpage->txtAdminServerPort->value();
m_realmconfig.pkinit_require_eku = realmpage->checkRequireEKU->isChecked();
m_realmconfig.pkinit_require_krbtgt_otherName = realmpage->checkRequireKrbtgtOtherName->isChecked();
m_realmconfig.win2k_pkinit = realmpage->checkWin2k->isChecked();
m_realmconfig.win2k_pkinit_require_binding = realmpage->checkWin2kPkinitRequireBinding->isChecked();
finishpage->ldapAdminRealm->setText(realmpage->txtRealmName->text()); finishpage->ldapAdminRealm->setText(realmpage->txtRealmName->text());
TQWizard::next(); TQWizard::next();
finishpage->validateEntries();
} }
if (currentPage()==finishpage) { if (currentPage()==finishpage) {
finishButton()->setFocus(); finishButton()->setFocus();
@ -149,7 +174,7 @@ bool RealmWizard::askClose(){
* so we have to reimplement this here to add a dialogbox to ask if we * so we have to reimplement this here to add a dialogbox to ask if we
* really want to quit the wizard. * really want to quit the wizard.
*/ */
void RealmWizard::reject(){ void RealmWizard::reject() {
if (askClose()){ if (askClose()){
done(-1); done(-1);
} }
@ -163,20 +188,30 @@ void RealmWizard::closeEvent(TQCloseEvent* e){
} }
/** maybe call a dialog that the wizard has finished. */ /** maybe call a dialog that the wizard has finished. */
void RealmWizard::accept(){ void RealmWizard::accept() {
// Validate entries
if (TQString(finishpage->ldapAdminPassword->password()) != TQString(finishpage->ldapConfirmAdminPassword->password())) {
KMessageBox::error(this, i18n("<qt><b>Passwords do not match!</b><p>Please re-enter the new administration account password</qt>"), i18n("Input Error"));
return;
}
if (TQString(finishpage->ldapAdminPassword->password()) == "") {
KMessageBox::error(this, i18n("<qt><b>Password required!</b><p>Please enter the new administration account password</qt>"), i18n("Input Error"));
return;
}
// Try to create realm // Try to create realm
TQString errorString; TQString errorString;
// RAJA FIXME // RAJA FIXME
// if (m_ldapConfig->bondRealm(m_finalRealm, finishpage->ldapAdminUsername->text(), finishpage->ldapAdminPassword->password(), finishpage->ldapAdminRealm->text(), &errorString) == 0) { if (m_controller->createNewLDAPRealm(this, m_realmconfig, finishpage->ldapAdminUsername->text(), finishpage->ldapAdminPassword->password(), finishpage->ldapAdminRealm->text(), &errorString) == 0) {
done(0); done(0);
// } }
// else { else {
// KMessageBox::error(this, i18n("<qt><b>Unable to create new realm!</b><p>Details: %1</qt>").arg(errorString), i18n("Unable to create new realm")); KMessageBox::error(this, i18n("<qt><b>Unable to create new realm!</b><p>Details: %1</qt>").arg(errorString), i18n("Unable to create new realm"));
// } }
} }
/** calls all save functions after resetting all features/ OS/ theme selections to Trinity default */ /** calls all save functions after resetting all features/ OS/ theme selections to Trinity default */
void RealmWizard::setDefaults(){ void RealmWizard::setDefaults() {
// if(realm_dirty) // if(realm_dirty)
// realmpage->save(false); // realmpage->save(false);
} }

@ -41,7 +41,7 @@ class RealmWizard : public KWizard {
Q_OBJECT Q_OBJECT
public: public:
/** construtor */ /** construtor */
RealmWizard(LDAPController* controller, TQWidget* parent=0, const char *name=0); RealmWizard(LDAPController* controller, TQString fqdn, TQWidget* parent=0, const char *name=0);
/** destructor */ /** destructor */
~RealmWizard(); ~RealmWizard();
@ -72,6 +72,8 @@ private:
RealmFinishPage* finishpage; RealmFinishPage* finishpage;
bool realm_dirty; bool realm_dirty;
LDAPController* m_controller; LDAPController* m_controller;
LDAPRealmConfig m_realmconfig;
TQString m_fqdn;
protected: // Protected methods protected: // Protected methods
// the close button on the titlebar sets e->accept() which we don't want. // the close button on the titlebar sets e->accept() which we don't want.

Loading…
Cancel
Save