Add wizard skeleton for future development

pull/1/head
Timothy Pearson 12 years ago
parent 9ce051cdff
commit 15ed3f5aa0

@ -4,7 +4,7 @@ METASOURCES = AUTO
# Install this plugin in the KDE modules directory
kde_module_LTLIBRARIES = kcm_ldapcontroller.la
kcm_ldapcontroller_la_SOURCES = ldapcontroller.cpp ldapcontrollerconfigbase.ui
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_LIBADD = -lkio $(LIB_TDEUI)
kcm_ldapcontroller_la_LDFLAGS = -avoid-version -module -no-undefined \
$(all_libraries)

@ -34,6 +34,8 @@
#include <tqdir.h>
#include <tqheader.h>
#include <kcombobox.h>
#include <kmessagebox.h>
#include <tqcheckbox.h>
#include "ldapcontroller.h"
@ -41,6 +43,9 @@
// Connect this to CMake/Automake
#define KDE_CONFDIR "/etc/trinity"
#define ROLE_WORKSTATION 0
#define ROLE_REALM_CONTROLLER 1
typedef KGenericFactory<LDAPController, TQWidget> ldapFactory;
K_EXPORT_COMPONENT_FACTORY( kcm_ldapcontroller, ldapFactory("kcmldapcontroller"))
@ -64,19 +69,20 @@ LDAPController::LDAPController(TQWidget *parent, const char *name, const TQStrin
layout->add(m_base);
m_base->systemRole->clear();
m_base->systemRole->insertItem("Workstation", -1);
m_base->systemRole->insertItem("Realm Controller", -1);
m_base->systemRole->setCurrentItem(0);
m_base->systemRole->insertItem("Workstation", ROLE_WORKSTATION);
m_base->systemRole->insertItem("Realm Controller", ROLE_REALM_CONTROLLER);
setRootOnlyMsg(i18n("<b>LDAP controller settings take effect system wide, and require administrator access to modify</b><br>To alter the system's realm controller settings, click on the \"Administrator Mode\" button below."));
setUseRootOnlyMsg(true);
connect(m_base->systemEnableSupport, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
connect(m_base->systemEnableSupport, TQT_SIGNAL(clicked()), this, TQT_SLOT(processLockouts()));
connect(m_base->systemRole, TQT_SIGNAL(activated(const TQString&)), this, TQT_SLOT(systemRoleChanged()));
load();
if (getuid() != 0 || !m_systemconfig->checkConfigFilesWritable( true )) {
m_base->systemRole->setEnabled(false);
m_base->systemEnableSupport->setEnabled(false);
}
processLockouts();
@ -86,17 +92,52 @@ LDAPController::~LDAPController() {
}
void LDAPController::systemRoleChanged() {
// RAJA FIXME
// Verify that this workstation was not already bonded to an LDAP realm!
changed();
if (m_base->systemRole->currentItem() != m_prevRole) {
if (m_base->systemRole->currentItem() == ROLE_REALM_CONTROLLER) {
// Verify that this workstation was not already bonded to an LDAP realm!
bool bonded = false;
TQStringList cfgRealms = m_systemconfig->groupList();
for (TQStringList::Iterator it(cfgRealms.begin()); it != cfgRealms.end(); ++it) {
if ((*it).startsWith("LDAPRealm-")) {
m_systemconfig->setGroup(*it);
if (m_systemconfig->readBoolEntry("bonded", false) == true) {
bonded = true;
}
}
}
if (bonded) {
KMessageBox::error(0, i18n("<qt>You are already bonded to a realm!<p>Please unbond from all realms before selecting a Realm Controller role</qt>"), i18n("Common Sense Failure"));
m_base->systemRole->setCurrentItem(0);
}
else {
// RAJA FIXME
changed();
}
}
if (m_base->systemRole->currentItem() == ROLE_WORKSTATION) {
// RAJA FIXME
}
}
}
void LDAPController::processLockouts() {
//
bool enabled = (m_base->systemEnableSupport->isEnabled() && m_base->systemEnableSupport->isChecked());
m_base->systemRole->setEnabled(enabled);
}
void LDAPController::load() {
//
void LDAPController::load() {
m_systemconfig->setGroup(NULL);
m_base->systemEnableSupport->setChecked(m_systemconfig->readBoolEntry("EnableLDAP", false));
TQString ldapRole = m_systemconfig->readEntry("LDAPRole", "Workstation");
if (ldapRole == "RealmController") {
m_base->systemRole->setCurrentItem(ROLE_REALM_CONTROLLER);
}
else {
m_base->systemRole->setCurrentItem(ROLE_WORKSTATION);
}
m_prevRole = m_base->systemRole->currentItem();
}
void LDAPController::defaults() {

@ -56,6 +56,8 @@ class LDAPController: public KCModule
LDAPControllerConfigBase *m_base;
KSimpleConfig *m_systemconfig;
int m_prevRole;
};
#endif // _LDAPCONTROLLER_H_

@ -45,7 +45,15 @@
<property name="name">
<cstring>unnamed</cstring>
</property>
<widget class="TQLabel" row="0" column="0" colspan="1">
<widget class="TQCheckBox" row="0" column="0" colspan="2">
<property name="name">
<cstring>systemEnableSupport</cstring>
</property>
<property name="text">
<string>&amp;Enable LDAP Realm Support</string>
</property>
</widget>
<widget class="TQLabel" row="1" column="0" colspan="1">
<property name="name">
<cstring>unnamed</cstring>
</property>
@ -53,7 +61,7 @@
<cstring>System Role:</cstring>
</property>
</widget>
<widget class="KComboBox" row="0" column="1" colspan="1">
<widget class="KComboBox" row="1" column="1" colspan="1">
<property name="name">
<cstring>systemRole</cstring>
</property>

@ -0,0 +1,45 @@
/***************************************************************************
* 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 <tqstringlist.h>
#include <tqlabel.h>
#include <tqmap.h>
#include <kapplication.h>
#include <ksimpleconfig.h>
#include <klocale.h>
#include <kdebug.h>
#include <kstandarddirs.h>
#include <kiconloader.h>
#include <dcopclient.h>
#include <kprocess.h>
#include "realmconfigpage.h"
RealmConfigPage::RealmConfigPage(TQWidget *parent, const char *name ) : RealmConfigPageDlg(parent,name) {
px_introSidebar->setPixmap(UserIcon("step1.png"));
}
RealmConfigPage::~RealmConfigPage(){
//
}
#include "realmconfigpage.moc"

@ -0,0 +1,39 @@
/***************************************************************************
* 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 REALMCONFIGPAGE_H
#define REALMCONFIGPAGE_H
#include "realmconfigpagedlg.h"
class TQStringList;
/**Abstract class for the first wizard page. Sets the according selection on save()
*@author Timothy Pearson
*/
class RealmConfigPage : public RealmConfigPageDlg {
Q_OBJECT
public:
RealmConfigPage(TQWidget *parent=0, const char *name=0);
~RealmConfigPage();
};
#endif

@ -0,0 +1,118 @@
<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
<class>RealmConfigPageDlg</class>
<widget class="TQWidget">
<property name="name">
<cstring>RealmConfigPageDlg</cstring>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>678</width>
<height>452</height>
</rect>
</property>
<grid>
<property name="name">
<cstring>unnamed</cstring>
</property>
<widget class="TQLabel" row="0" column="0" rowspan="9" colspan="1">
<property name="name">
<cstring>px_introSidebar</cstring>
</property>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>0</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>170</width>
<height>430</height>
</size>
</property>
<property name="frameShape">
<enum>Panel</enum>
</property>
<property name="frameShadow">
<enum>Sunken</enum>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
<property name="indent">
<number>0</number>
</property>
</widget>
<widget class="TQLabel" row="0" column="1">
<property name="name">
<cstring>txt_welcome</cstring>
</property>
<property name="text">
<string>&lt;h3&gt;Welcome to the TDE LDAP Realming Wizard!&lt;/h3&gt;</string>
</property>
</widget>
<widget class="TQLabel" row="1" column="1">
<property name="name">
<cstring>TextLabel6</cstring>
</property>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>1</hsizetype>
<vsizetype>1</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>&lt;p&gt;This Wizard will help you bond your machine to an LDAP realm in three quick, easy steps.&lt;/p&gt;
&lt;p&gt;Please note that you will need administrative access to the LDAP realm you will be bonding with.&lt;/p&gt;
&lt;p&gt;If you wish to quit the Wizard, click &lt;b&gt;Cancel&lt;/b&gt; at any time.&lt;/p&gt;</string>
</property>
<property name="textFormat">
<enum>RichText</enum>
</property>
<property name="alignment">
<set>WordBreak|AlignTop|AlignLeft</set>
</property>
<property name="vAlign" stdset="0">
</property>
<property name="wordwrap" stdset="0">
</property>
</widget>
<spacer row="2" column="1">
<property name="name">
<cstring>Spacer6</cstring>
</property>
<property name="orientation">
<enum>Vertical</enum>
</property>
<property name="sizeType">
<enum>Fixed</enum>
</property>
<property name="sizeHint">
<size>
<width>20</width>
<height>30</height>
</size>
</property>
</spacer>
<spacer row="7" column="1">
<property name="name">
<cstring>Spacer5</cstring>
</property>
<property name="orientation">
<enum>Vertical</enum>
</property>
<property name="sizeType">
<enum>Expanding</enum>
</property>
</spacer>
</grid>
</widget>
<layoutdefaults spacing="3" margin="6"/>
<layoutfunctions spacing="KDialog::spacingHint" margin="KDialog::marginHint"/>
</UI>

@ -0,0 +1,45 @@
/***************************************************************************
* 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 <tqstringlist.h>
#include <tqlabel.h>
#include <tqmap.h>
#include <kapplication.h>
#include <ksimpleconfig.h>
#include <klocale.h>
#include <kdebug.h>
#include <kstandarddirs.h>
#include <kiconloader.h>
#include <dcopclient.h>
#include <kprocess.h>
#include "realmfinishpage.h"
RealmFinishPage::RealmFinishPage(TQWidget *parent, const char *name ) : RealmFinishPageDlg(parent,name) {
px_introSidebar->setPixmap(UserIcon("step1.png"));
}
RealmFinishPage::~RealmFinishPage(){
//
}
#include "realmfinishpage.moc"

@ -0,0 +1,39 @@
/***************************************************************************
* 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 REALMFINISHPAGE_H
#define REALMFINISHPAGE_H
#include "realmfinishpagedlg.h"
class TQStringList;
/**Abstract class for the first wizard page. Sets the according selection on save()
*@author Timothy Pearson
*/
class RealmFinishPage : public RealmFinishPageDlg {
Q_OBJECT
public:
RealmFinishPage(TQWidget *parent=0, const char *name=0);
~RealmFinishPage();
};
#endif

@ -0,0 +1,118 @@
<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
<class>RealmFinishPageDlg</class>
<widget class="TQWidget">
<property name="name">
<cstring>RealmFinishPageDlg</cstring>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>678</width>
<height>452</height>
</rect>
</property>
<grid>
<property name="name">
<cstring>unnamed</cstring>
</property>
<widget class="TQLabel" row="0" column="0" rowspan="9" colspan="1">
<property name="name">
<cstring>px_introSidebar</cstring>
</property>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>0</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>170</width>
<height>430</height>
</size>
</property>
<property name="frameShape">
<enum>Panel</enum>
</property>
<property name="frameShadow">
<enum>Sunken</enum>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
<property name="indent">
<number>0</number>
</property>
</widget>
<widget class="TQLabel" row="0" column="1">
<property name="name">
<cstring>txt_welcome</cstring>
</property>
<property name="text">
<string>&lt;h3&gt;Welcome to the TDE LDAP Realming Wizard!&lt;/h3&gt;</string>
</property>
</widget>
<widget class="TQLabel" row="1" column="1">
<property name="name">
<cstring>TextLabel6</cstring>
</property>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>1</hsizetype>
<vsizetype>1</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>&lt;p&gt;This Wizard will help you bond your machine to an LDAP realm in three quick, easy steps.&lt;/p&gt;
&lt;p&gt;Please note that you will need administrative access to the LDAP realm you will be bonding with.&lt;/p&gt;
&lt;p&gt;If you wish to quit the Wizard, click &lt;b&gt;Cancel&lt;/b&gt; at any time.&lt;/p&gt;</string>
</property>
<property name="textFormat">
<enum>RichText</enum>
</property>
<property name="alignment">
<set>WordBreak|AlignTop|AlignLeft</set>
</property>
<property name="vAlign" stdset="0">
</property>
<property name="wordwrap" stdset="0">
</property>
</widget>
<spacer row="2" column="1">
<property name="name">
<cstring>Spacer6</cstring>
</property>
<property name="orientation">
<enum>Vertical</enum>
</property>
<property name="sizeType">
<enum>Fixed</enum>
</property>
<property name="sizeHint">
<size>
<width>20</width>
<height>30</height>
</size>
</property>
</spacer>
<spacer row="7" column="1">
<property name="name">
<cstring>Spacer5</cstring>
</property>
<property name="orientation">
<enum>Vertical</enum>
</property>
<property name="sizeType">
<enum>Expanding</enum>
</property>
</spacer>
</grid>
</widget>
<layoutdefaults spacing="3" margin="6"/>
<layoutfunctions spacing="KDialog::spacingHint" margin="KDialog::marginHint"/>
</UI>

@ -0,0 +1,45 @@
/***************************************************************************
* 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 <tqstringlist.h>
#include <tqlabel.h>
#include <tqmap.h>
#include <kapplication.h>
#include <ksimpleconfig.h>
#include <klocale.h>
#include <kdebug.h>
#include <kstandarddirs.h>
#include <kiconloader.h>
#include <dcopclient.h>
#include <kprocess.h>
#include "realmintropage.h"
RealmIntroPage::RealmIntroPage(TQWidget *parent, const char *name ) : RealmIntroPageDlg(parent,name) {
px_introSidebar->setPixmap(UserIcon("step1.png"));
}
RealmIntroPage::~RealmIntroPage(){
//
}
#include "realmintropage.moc"

@ -0,0 +1,39 @@
/***************************************************************************
* 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 REALMINTROPAGE_H
#define REALMINTROPAGE_H
#include "realmintropagedlg.h"
class TQStringList;
/**Abstract class for the first wizard page. Sets the according selection on save()
*@author Timothy Pearson
*/
class RealmIntroPage : public RealmIntroPageDlg {
Q_OBJECT
public:
RealmIntroPage(TQWidget *parent=0, const char *name=0);
~RealmIntroPage();
};
#endif

@ -0,0 +1,118 @@
<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
<class>RealmIntroPageDlg</class>
<widget class="TQWidget">
<property name="name">
<cstring>RealmIntroPageDlg</cstring>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>678</width>
<height>452</height>
</rect>
</property>
<grid>
<property name="name">
<cstring>unnamed</cstring>
</property>
<widget class="TQLabel" row="0" column="0" rowspan="9" colspan="1">
<property name="name">
<cstring>px_introSidebar</cstring>
</property>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>0</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>170</width>
<height>430</height>
</size>
</property>
<property name="frameShape">
<enum>Panel</enum>
</property>
<property name="frameShadow">
<enum>Sunken</enum>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
<property name="indent">
<number>0</number>
</property>
</widget>
<widget class="TQLabel" row="0" column="1">
<property name="name">
<cstring>txt_welcome</cstring>
</property>
<property name="text">
<string>&lt;h3&gt;Welcome to the TDE LDAP Realming Wizard!&lt;/h3&gt;</string>
</property>
</widget>
<widget class="TQLabel" row="1" column="1">
<property name="name">
<cstring>TextLabel6</cstring>
</property>
<property name="sizePolicy">
<sizepolicy>
<hsizetype>1</hsizetype>
<vsizetype>1</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>&lt;p&gt;This Wizard will help you bond your machine to an LDAP realm in three quick, easy steps.&lt;/p&gt;
&lt;p&gt;Please note that you will need administrative access to the LDAP realm you will be bonding with.&lt;/p&gt;
&lt;p&gt;If you wish to quit the Wizard, click &lt;b&gt;Cancel&lt;/b&gt; at any time.&lt;/p&gt;</string>
</property>
<property name="textFormat">
<enum>RichText</enum>
</property>
<property name="alignment">
<set>WordBreak|AlignTop|AlignLeft</set>
</property>
<property name="vAlign" stdset="0">
</property>
<property name="wordwrap" stdset="0">
</property>
</widget>
<spacer row="2" column="1">
<property name="name">
<cstring>Spacer6</cstring>
</property>
<property name="orientation">
<enum>Vertical</enum>
</property>
<property name="sizeType">
<enum>Fixed</enum>
</property>
<property name="sizeHint">
<size>
<width>20</width>
<height>30</height>
</size>
</property>
</spacer>
<spacer row="7" column="1">
<property name="name">
<cstring>Spacer5</cstring>
</property>
<property name="orientation">
<enum>Vertical</enum>
</property>
<property name="sizeType">
<enum>Expanding</enum>
</property>
</spacer>
</grid>
</widget>
<layoutdefaults spacing="3" margin="6"/>
<layoutfunctions spacing="KDialog::spacingHint" margin="KDialog::marginHint"/>
</UI>

@ -0,0 +1,208 @@
/***************************************************************************
* 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 <unistd.h>
#include <tqpushbutton.h>
#include <tqlabel.h>
#include <tqstring.h>
#include <tqstringlist.h>
#include <tqfile.h>
#include <tqtimer.h>
#include <tqcursor.h>
#include <tqspinbox.h>
#include <ksimpleconfig.h>
#include <kglobal.h>
#include <kglobalsettings.h>
#include <kstandarddirs.h>
#include <klocale.h>
#include <kapplication.h>
#include <klistview.h>
#include <krun.h>
#include <kmessagebox.h>
#include <kconfig.h>
#include <knuminput.h>
#include <klineedit.h>
#include <ktextedit.h>
#include <kpassdlg.h>
#include <stdlib.h>
#include <kdebug.h>
#include "realmintropage.h"
#include "realmconfigpage.h"
#include "realmfinishpage.h"
#include "realmwizard.h"
#include "realmwizard.moc"
RealmWizard::RealmWizard(TQWidget *parent, const char *name)
: KWizard(parent, name, true) {
setCaption(i18n("LDAP Realm Wizard"));
intropage = new RealmIntroPage(this);
addPage (intropage, i18n( "Step 1: Introduction" ) );
setHelpEnabled(TQWizard::page(0), false);
realmpage = new RealmConfigPage(this);
addPage (realmpage, i18n( "Step 2: Set Up New Realm" ) );
setHelpEnabled(TQWizard::page(1), false);
finishpage = new RealmFinishPage(this);
addPage (finishpage, i18n( "Step 3: Initialize New Realm" ) );
setHelpEnabled(TQWizard::page(2), false);
//
// // Set up some defaults
// realmpage->txtKDCPort->setValue(88);
// realmpage->txtAdminServerPort->setValue(749);
// realmpage->txtUIDOffset->setValue(5000);
// realmpage->txtGIDOffset->setValue(5000);
//
// // Other setup
// finishpage->ldapAdminRealm->setEnabled(false);
setFinishEnabled(TQWizard::page(2), true);
setPosition();
}
RealmWizard::~RealmWizard() {
}
void RealmWizard::next() {
if (currentPage()==intropage) {
TQWizard::next();
// RAJA FIXME
// realmpage->validateEntries();
}
else if (currentPage()==realmpage) {
// Save realm information
// RAJA FIXME
TQWizard::next();
}
if (currentPage()==finishpage) {
backButton()->setEnabled(false);
finishButton()->setFocus();
}
}
void RealmWizard::slotNext() {
TQWizard::next();
}
void RealmWizard::back() {
TQWizard::back();
}
bool RealmWizard::askClose(){
TQString text;
if (currentPage()==intropage) {
return true;
}
else {
if (currentPage()==realmpage) {
text = i18n("<p>Are you sure you want to quit the LDAP Realm Wizard?</p>"
"<p>If yes, click <b>Quit</b> and all changes will be lost."
"<br>If not, click <b>Cancel</b> to return and finish your setup.</p>");
}
else if (currentPage()==finishpage) {
// RAJA FIXME
text = i18n("<p>Are you sure you want to quit the LDAP Realm Wizard?</p>"
"<p>If yes, click <b>Quit</b> and the new realm will remain deactivated pending bonding."
"<br>If not, click <b>Cancel</b> to return and finish your setup.</p>");
}
else {
text = i18n("<p>Are you sure you want to quit the LDAP Realm Wizard?</p>"
"<p>If not, click <b>Cancel</b> to return and finish setup.</p>");
}
int status = KMessageBox::warningContinueCancel(this, text, i18n("All Changes Will Be Lost"), KStdGuiItem::quit());
if(status==KMessageBox::Continue){
setDefaults();
return true;
} else {
return false;
}
}
}
/** the cancel button is connected to the reject() slot of TQDialog,
* so we have to reimplement this here to add a dialogbox to ask if we
* really want to quit the wizard.
*/
void RealmWizard::reject(){
if (askClose()){
done(0);
}
}
void RealmWizard::closeEvent(TQCloseEvent* e){
if ( askClose() )
done(0);
else
e->ignore();
}
/** maybe call a dialog that the wizard has finished. */
void RealmWizard::accept(){
// Try to create realm
TQString errorString;
// RAJA FIXME
// if (m_ldapConfig->bondRealm(m_finalRealm, finishpage->ldapAdminUsername->text(), finishpage->ldapAdminPassword->password(), finishpage->ldapAdminRealm->text(), &errorString) == 0) {
done(0);
// }
// 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"));
// }
}
/** calls all save functions after resetting all features/ OS/ theme selections to Trinity default */
void RealmWizard::setDefaults(){
// if(realm_dirty)
// realmpage->save(false);
}
/** there seems to be a bug in TQWizard, that makes this evil hack necessary */
void RealmWizard::setPosition() {
TQSize hint = intropage->sizeHint();
TQSize realm_size = realmpage->sizeHint();
TQSize finish_size = finishpage->sizeHint();
// get the width of the broadest child-widget
if ( hint.width() < realm_size.width() )
hint.setWidth(realm_size.width());
if ( hint.width() < finish_size.width() )
hint.setWidth(finish_size.width());
// get the height of the highest child-widget
if ( hint.height() < realm_size.height() )
hint.setHeight(realm_size.height());
if ( hint.height() < finish_size.height() )
hint.setHeight(finish_size.height());
// set the position
TQRect rect = KGlobalSettings::desktopGeometry(TQCursor::pos());
int w = rect.x() + (rect.width() - hint.width())/2 - 9;
int h = rect.y() + (rect.height() - hint.height())/2;
move(w, h);
}

@ -0,0 +1,79 @@
/***************************************************************************
* 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 BONDWIZARD_H
#define BONDWIZARD_H
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <kapplication.h>
#include <kwizard.h>
/** prototypes */
class KLanguageCombo;
class RealmIntroPage;
class RealmConfigPage;
class RealmFinishPage;
/** RealmWizard is the base class of the project */
class RealmWizard : public KWizard {
Q_OBJECT
public:
/** construtor */
RealmWizard(TQWidget* parent=0, const char *name=0);
/** destructor */
~RealmWizard();
virtual void next();
virtual void back();
public slots: // Public slots
/** calls all save functions after resetting all fields to Trinity default */
void setDefaults();
/** the cancel button is connected to the reject() slot of TQDialog,
* so we have to reimplement this here to add a dialogbox to
* ask if we really want to quit the wizard.
*/
void reject();
/** maybe call a dialog that the wizard has finished.
* Calls applySettings() to save the current selection.
*/
void accept();
/** We need this to use it in a TQTimer */
void slotNext();
private:
void setPosition();
private:
RealmIntroPage* intropage;
RealmConfigPage* realmpage;
RealmFinishPage* finishpage;
bool realm_dirty;
protected: // Protected methods
// the close button on the titlebar sets e->accept() which we don't want.
virtual void closeEvent(TQCloseEvent*);
bool askClose();
};
#endif
Loading…
Cancel
Save