diff options
Diffstat (limited to 'kpilot/kpilot/conduitConfigDialog.cc')
-rw-r--r-- | kpilot/kpilot/conduitConfigDialog.cc | 849 |
1 files changed, 0 insertions, 849 deletions
diff --git a/kpilot/kpilot/conduitConfigDialog.cc b/kpilot/kpilot/conduitConfigDialog.cc deleted file mode 100644 index 3ea444d3f..000000000 --- a/kpilot/kpilot/conduitConfigDialog.cc +++ /dev/null @@ -1,849 +0,0 @@ -/* KPilot -** -** Copyright (C) 2001 by Dan Pilone -** Copyright (C) 2002-2004 by Adriaan de Groot -** Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com> -** -** This file defines a .ui-based configuration dialog for conduits. -*/ - -/* -** 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 in a file called COPYING; if not, write to -** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -** MA 02110-1301, USA. -*/ - -/* -** Bug reports and questions can be sent to kde-pim@kde.org -*/ - -#include "options.h" - -#include <tqlistview.h> -#include <tqlabel.h> -#include <tqtooltip.h> -#include <tqfile.h> -#include <tqpushbutton.h> -#include <tqhbox.h> -#include <tqlayout.h> -#include <tqwidgetstack.h> -#include <tqvbox.h> -#include <tqsplitter.h> -#include <tqheader.h> -#include <tqtimer.h> - -#include <kservice.h> -#include <kservicetype.h> -#include <kuserprofile.h> -#include <kprocess.h> -#include <kmessagebox.h> -#include <kglobal.h> -#include <kstandarddirs.h> -#include <klibloader.h> -#include <kseparator.h> -#include <kconfigskeleton.h> -#include <kdialogbase.h> - -#include "plugin.h" -#include "kpilotConfig.h" -#include "kpilotConfigDialog.h" - -#include "kpilotConfigWizard.h" - -#include "conduitConfigDialog.moc" - -#define CONDUIT_NAME (0) -#define CONDUIT_COMMENT (1) -#define CONDUIT_DESKTOP (2) -#define CONDUIT_LIBRARY (3) -#define CONDUIT_ORDER (4) - - -extern "C" -{ - KDE_EXPORT KCModule *create_kpilotconfig( TQWidget *parent, const char * ) - { - FUNCTIONSETUP; - return new ConduitConfigWidget( parent, "kcmkpilotconfig" ); - } - - KDE_EXPORT ConfigWizard *create_wizard(TQWidget *parent, int m) - { - FUNCTIONSETUP; - return new ConfigWizard(parent,"Wizard", m); - } -} - - -class ConduitTip : public QToolTip -{ -public: - ConduitTip(TQListView *parent); - virtual ~ConduitTip(); - -protected: - virtual void maybeTip(const TQPoint &); - - TQListView *fListView; -} ; - - -ConduitTip::ConduitTip(TQListView *p) : - TQToolTip(p->viewport(),0L), - fListView(p) -{ - FUNCTIONSETUP; -} - -ConduitTip::~ConduitTip() -{ - FUNCTIONSETUP; -} - -/* virtual */ void ConduitTip::maybeTip(const TQPoint &p) -{ - FUNCTIONSETUP; - - TQListViewItem *l = fListView->itemAt(p); - - if (!l) return; - - // ConduitListItem *q = static_cast<ConduitListItem *>(l); - -#ifdef DEBUG - DEBUGKPILOT << fname - << ": Tip over " - << l->text(CONDUIT_NAME) - << " with text " - << l->text(CONDUIT_COMMENT) - << endl; -#endif - - TQString s = l->text(CONDUIT_COMMENT); - - if (s.isEmpty()) return; - if (s.find(CSL1("<qt>"),0,false) == -1) - { - s.prepend(CSL1("<qt>")); - s.append(CSL1("</qt>")); - } - - tip(fListView->itemRect(l),s); -} - -// implement our own check list items so we can detect if a given item was checked/unchecked. We need -// this to prevent the modified signal if one only wants to display a conduit's config widget. Currently, -// KListView doesn't provide any signal that indicates that the checked state of a checklist item was changed. -class KPilotCheckListItem : public QCheckListItem -{ -public: - KPilotCheckListItem ( TQListViewItem * parent, const TQString & text, Type tt = RadioButtonController ) : TQCheckListItem(parent, text, tt),mOriginalState(false) {} - ~KPilotCheckListItem() {} - - void setOriginalState(bool state) { mOriginalState=state; setOn(state);} - bool isOriginalState() { return isOn() == mOriginalState; } - -protected: - bool mOriginalState; -}; - - -// Page numbers in the widget stack -#define OLD_CONDUIT (1) -#define BROKEN_CONDUIT (2) -#define INTERNAL_CONDUIT (3) -#define INTERNAL_EXPLN (4) -#define CONDUIT_EXPLN (5) -#define GENERAL_EXPLN (6) -#define GENERAL_ABOUT (7) -#define NEW_CONDUIT (8) - - -/* -** Create a page in the widget stack @p parent on page @p pageno, -** bearing the given @p text. The remainder of the parameters are -** for esoteric things like: -** @p buttons set to non-null to include (and return) a TQHBox suitable -** for displaying a row of buttons in on the page. -** @p label set to non-null to return the TQLabel used to display @p text. -*/ -static void addDescriptionPage(TQWidgetStack *parent, - int pageno, - const TQString &text, - TQHBox **buttons = 0L, - TQLabel **label = 0L) -{ - TQVBox *v = new TQVBox(parent); - TQLabel *l = 0L; - - v->setFrameShape(TQLabel::NoFrame); - v->setMargin(SPACING); - - l = new TQLabel(v); - l->setText(text); - l->setAlignment(Qt::AlignLeft | Qt::AlignVCenter | Qt::ExpandTabs | Qt::WordBreak); - - if (label) { *label = l; } - - if (buttons) - { - *buttons = new TQHBox(v); - l = new TQLabel(v); - } - - parent->addWidget(v,pageno); -} - - -ConduitConfigWidgetBase::ConduitConfigWidgetBase(TQWidget *parent, const char *n) : - KCModule(parent, n), - fConduitList(0L), - fStack(0L), - fConfigureButton(0L), - fConfigureWizard(0L), - fConfigureKontact(0L), - fActionDescription(0L) -{ - FUNCTIONSETUP; - - TQWidget *w = 0L; // For spacing purposes only. - TQHBox *btns = 0L; - - TQHBoxLayout *mainLayout = new TQHBoxLayout(this); - mainLayout->setSpacing(10); - - // Create the left hand column - fConduitList = new TQListView(this ,"ConduitList"); - fConduitList->addColumn(TQString::null); - fConduitList->header()->hide(); - fConduitList->setSizePolicy( - TQSizePolicy(TQSizePolicy::Maximum, TQSizePolicy::Preferred)); - mainLayout->addWidget(fConduitList); - - // Create the title - TQVBoxLayout *vbox = new TQVBoxLayout(this, 0, KDialog::spacingHint()); - // String below is just to make space; no need to translate. - fTitleText = new TQLabel(CSL1("Conduit Setup - Addressbook"), this); - TQFont titleFont(fTitleText->font()); - titleFont.setBold(true); - fTitleText->setFont(titleFont); - vbox->addWidget(fTitleText, 0, AlignLeft); - vbox->addWidget(new KSeparator(TQFrame::HLine|TQFrame::Plain, this)); - - // Right hand column - fStack = new TQWidgetStack(this, "RightPart"); - vbox->addWidget(fStack, 10); - - mainLayout->addLayout(vbox); - - // First page in stack (right hand column) - addDescriptionPage(fStack,BROKEN_CONDUIT, - i18n("<qt>This conduit appears to be broken and cannot " - "be configured.</qt>")); - - // Second page, now with layout in a single column - // - // Probably deprecated. - // - addDescriptionPage(fStack,OLD_CONDUIT, - i18n("<qt>This is an old-style conduit.</qt>"),&btns); - w = new TQWidget(btns); - btns->setStretchFactor(w,50); - fConfigureButton = new TQPushButton(btns); - fConfigureButton->setText(i18n("Configure...")); - w = new TQWidget(btns); - btns->setStretchFactor(w,50); - - // Page 3 - addDescriptionPage(fStack,INTERNAL_CONDUIT, - TQString::null,0L,&fActionDescription); - - // Page 5 - explanation about conduits - addDescriptionPage(fStack,CONDUIT_EXPLN, - i18n("<qt><i>Conduits</i> are external (possibly third-party) " - "programs that perform synchronization actions. They may " - "have individual configurations. Select a conduit to configure it, " - "and enable it by clicking on its checkbox. " - "</qt>")); - - // Page 6 - explanation about general setup - addDescriptionPage(fStack,GENERAL_EXPLN, - i18n("<qt><p>The <i>general</i> portion of KPilot's setup " - "contains settings for your hardware and the way KPilot " - "should display your data. For the basic setup, which should fulfill " - "the need of most users, just use the setup wizard below.</p>" - "If you need some special settings, this dialog provides all the options " - "for fine-tuning KPilot. But be warned: The HotSync settings are " - "various esoteric things.</p>" - "<p>You can enable an action or conduit by clicking on its checkbox. " - "Checked conduits will be run during a HotSync. " - "Select a conduit to configure it.</p>" - "</qt>"),&btns); - w = new TQWidget(btns); - btns->setStretchFactor(w,50); - fConfigureWizard = new TQPushButton(i18n("Configuration Wizard"),btns); - w = new TQWidget(btns); - btns->setStretchFactor(w,50); - - - fStack->addWidget(ConduitConfigBase::aboutPage(fStack,0L),GENERAL_ABOUT); -} - -ConduitConfigWidget::ConduitConfigWidget(TQWidget *parent, const char *n, - bool) : - ConduitConfigWidgetBase(parent,n), - fConfigure(0L), - fCurrentConduit(0L), - fGeneralPage(0L), - fCurrentConfig(0L) -{ - FUNCTIONSETUP; - - fConduitList->setSorting(-1); - fConduitList->setRootIsDecorated(true); - fConduitList->setTreeStepSize(10); - // fConduitList->removeColumn(CONDUIT_COMMENT); - fillLists(); - - fConduitList->resize(fConduitList->sizeHint()); - fConduitList->setMinimumSize(fConduitList->sizeHint()); - fConduitList->setColumnWidth(0, fConduitList->sizeHint().width()); - fConduitList->setResizeMode(TQListView::AllColumns); - - fStack->resize(fStack->sizeHint()+TQSize(10,40)); - fStack->setMinimumSize(fStack->sizeHint()+TQSize(10,40)); - - TQObject::connect(fConduitList, - TQT_SIGNAL(selectionChanged(TQListViewItem *)), - this,TQT_SLOT(selected(TQListViewItem *))); - TQObject::connect(fConduitList, - TQT_SIGNAL(clicked(TQListViewItem*)), - this, TQT_SLOT(conduitsChanged(TQListViewItem*))); - - // Deprecated? - TQObject::connect(fConfigureButton, - TQT_SIGNAL(clicked()), - this,TQT_SLOT(configure())); - - TQObject::connect(fConfigureWizard,TQT_SIGNAL(clicked()), - this,TQT_SLOT(configureWizard())); - - fGeneralPage->setSelected(true); - fConduitList->setCurrentItem(fGeneralPage); - selected(fGeneralPage); - - (void) new ConduitTip(fConduitList); - setButtons(Apply); - -} - -ConduitConfigWidget::~ConduitConfigWidget() -{ - FUNCTIONSETUP; - release(); -} - -void ConduitConfigWidget::fillLists() -{ - FUNCTIONSETUP; - - // 3 QListViewItems for the three headings in the list - TQListViewItem *general,*conduits; - - // And two generic pointers for the rest. - TQListViewItem *q = 0L; - KPilotCheckListItem *p = 0L; - - q = new TQListViewItem(fConduitList, i18n("About")); - q->setText(CONDUIT_COMMENT, i18n("About KPilot. Credits.")); - q->setText(CONDUIT_LIBRARY, CSL1("general_about")); - - conduits = new TQListViewItem(fConduitList, i18n("Conduits")); - - general = new TQListViewItem( fConduitList, i18n("General Setup" ) ); - fGeneralPage = general; - - // Give them identifiers so they can be handled specially when selected. - conduits->setText(CONDUIT_LIBRARY,CSL1("expln_conduits")); - general->setText( CONDUIT_LIBRARY, CSL1("expln_general") ); - - general->setText( CONDUIT_COMMENT, - i18n("General setup of KPilot (User name, port, general sync settings)") ); - conduits->setText( CONDUIT_COMMENT, - i18n("Actions for HotSync with individual configuration.")); - - conduits->setOpen(true); - general->setOpen(true); - - - // Create entries under general. -#define CE(a,b,c) q = new TQListViewItem(general,a) ; \ - q->setText(CONDUIT_COMMENT,b) ; \ - q->setText(CONDUIT_LIBRARY,c) ; - - CE(i18n("Startup and Exit"), i18n("Behavior at startup and exit."), CSL1("general_startexit") ); - CE(i18n("Viewers"), i18n("Viewer settings."), CSL1("general_view") ); - CE(i18n("Backup"),i18n("Special settings for backup."),CSL1("general_backup")); - CE(i18n("HotSync"),i18n("Special behavior during HotSync."),CSL1("general_sync")); - CE(i18n("Device"),i18n("Hardware settings and startup and exit options."),CSL1("general_setup")); - -#undef CE - - - // List of installed (enabled) actions and conduits. - TQStringList potentiallyInstalled = KPilotSettings::installedConduits(); - - // Create internal conduits. - // - // - -#define IC(a,b,c) p = new KPilotCheckListItem(conduits,i18n(a),TQCheckListItem::CheckBox); \ - p->setText(CONDUIT_COMMENT,i18n(c)); \ - p->setText(CONDUIT_LIBRARY,CSL1("internal_" b)); \ - p->setText(CONDUIT_DESKTOP,CSL1("internal_" b)); \ - if (potentiallyInstalled.findIndex(p->text(CONDUIT_DESKTOP))>=0) \ - p->setOriginalState(true); - - IC("Install Files","fileinstall", - "Install files that are dragged to KPilot onto the handheld."); -#undef IC - - - - KServiceTypeProfile::OfferList offers = - KServiceTypeProfile::offers(CSL1("KPilotConduit")); - - TQValueListIterator < KServiceOffer > availList(offers.begin()); - while (availList != offers.end()) - { - KSharedPtr < KService > o = (*availList).service(); - -#ifdef DEBUG - DEBUGKPILOT << fname << ": " - << o->desktopEntryName() - << " = " << o->name() << endl; -#endif - - if (!o->exec().isEmpty()) - { - WARNINGKPILOT << "Old-style conduit found " - << o->name() - << endl; - } - - p = new KPilotCheckListItem(conduits, - o->name(), - TQCheckListItem::CheckBox); - p->setMultiLinesEnabled(true); - p->setText(CONDUIT_COMMENT,o->comment()); - p->setText(CONDUIT_DESKTOP,o->desktopEntryName()); - p->setText(CONDUIT_LIBRARY,o->library()); - - if (potentiallyInstalled.findIndex(o->desktopEntryName()) < 0) - { - p->setOriginalState(false); - } - else - { - p->setOriginalState(true); - } - - ++availList; - } -} - -static void dumpConduitInfo(const KLibrary *lib) -{ -#ifdef DEBUG - FUNCTIONSETUP; - DEBUGKPILOT << "Plugin version = " << PluginUtility::pluginVersion(lib) << endl; - DEBUGKPILOT << "Plugin id = " << PluginUtility::pluginVersionString(lib) << endl; -#endif -} - -static ConduitConfigBase *handleGeneralPages(TQWidget *w, TQListViewItem *p) -{ - ConduitConfigBase *o = 0L; - - TQString s = p->text(CONDUIT_LIBRARY) ; - - if (s.startsWith(CSL1("general_setup"))) - { - o = new DeviceConfigPage( w, "generalSetup" ); - } - else if (s.startsWith(CSL1("general_sync"))) - { - o = new SyncConfigPage( w, "syncSetup" ); - } - else if (s.startsWith(CSL1("general_view"))) - { - o = new ViewersConfigPage( w, "viewSetup" ); - } - else if (s.startsWith(CSL1("general_startexit"))) - { - o = new StartExitConfigPage(w,"startSetup"); - } - else if (s.startsWith(CSL1("general_backup"))) - { - o = new BackupConfigPage(w,"backupSetup"); - } - - return o; -} - -void ConduitConfigWidget::loadAndConfigure(TQListViewItem *p) // ,bool exec) -{ - FUNCTIONSETUP; - - if (!p) - { -#ifdef DEBUG - DEBUGKPILOT << fname - << ": Executed NULL conduit?" - << endl; -#endif - fStack->raiseWidget(GENERAL_EXPLN); - return; - } - - TQString libraryName = p->text(CONDUIT_LIBRARY); - -#ifdef DEBUG - DEBUGKPILOT << fname - << ": Executing conduit " - << p->text(CONDUIT_NAME) - << " (library " << libraryName << ")" - << endl; -#endif - - - if (libraryName.isEmpty()) - { - fStack->raiseWidget(BROKEN_CONDUIT); - warnNoExec(p); - return; - } - - if (libraryName.startsWith(CSL1("internal_"))) - { - fStack->raiseWidget(INTERNAL_CONDUIT); - fActionDescription->setText( - i18n("<qt>This is an internal action which has no " - "configuration options. " - "The action's description is: <i>%1</i> " - "</qt>").arg(p->text(CONDUIT_COMMENT))); - return; - } - - if (libraryName == CSL1("expln_conduits")) - { - fStack->raiseWidget(CONDUIT_EXPLN); - return; - } - if (libraryName == CSL1("expln_general")) - { - fStack->raiseWidget(GENERAL_EXPLN); - return; - } - - if (libraryName == CSL1("general_about")) - { - fStack->raiseWidget(GENERAL_ABOUT); - return; - } - - TQObject *o = 0L; - - // Page 4: General setup - if (libraryName.startsWith(CSL1("general_"))) - { - o = handleGeneralPages(fStack,p); - } - else - { - TQCString library = TQFile::encodeName(libraryName); - - KLibFactory *f = KLibLoader::self()->factory(library); - if (!f) - { -#ifdef DEBUG - DEBUGKPILOT << fname - << ": No conduit library " - << library.data() - << " [" << library.size() << "]" - << " (" << libraryName << ")" - << " found." - << endl; -#endif - fStack->raiseWidget(BROKEN_CONDUIT); - warnNoLibrary(p); - return; - } - - dumpConduitInfo(KLibLoader::self()->library(library)); - - TQStringList a; - a.append(CSL1("modal")); - - o = f->create(fStack, 0L, "ConduitConfigBase", a); - - if (!o) - { -#ifdef DEBUG - DEBUGKPILOT << fname - << ": Can't create ConduitConfigBase - must be old conduit." - << endl; -#endif - - KLibLoader::self()->unloadLibrary( - library); - fStack->raiseWidget(BROKEN_CONDUIT); - warnNoLibrary(p); - return; - } - } - - ConduitConfigBase *d = dynamic_cast<ConduitConfigBase *>(o); - - if (!d) - { -#ifdef DEBUG - DEBUGKPILOT << fname - << ": Can't cast to config base object." - << endl; -#endif - fStack->raiseWidget(BROKEN_CONDUIT); - warnNoLibrary(p); - return; - } - - // Remove the config widget from the stack before we can add the new one - TQWidget *oldConfigWidget = fStack->widget( NEW_CONDUIT ); - if ( oldConfigWidget ) - { - fStack->removeWidget( oldConfigWidget ); - KPILOT_DELETE( oldConfigWidget ); - } - if (fStack->addWidget(d->widget(),NEW_CONDUIT)<0) - { -#ifdef DEBUG - DEBUGKPILOT << fname - << ": Can't add config widget to stack." - << endl; -#endif - } - else - { - d->load(); - fStack->raiseWidget(NEW_CONDUIT); - d->widget()->show(); - fCurrentConfig=d; - // make sure the changed signal is propagated to the KCM*Dialog - // and the apply button is enabled correspondingly. - connect(d, TQT_SIGNAL(changed(bool)), this, TQT_SIGNAL(changed(bool))); - } -} - -bool ConduitConfigWidget::release() -{ - FUNCTIONSETUP; - if (fCurrentConfig) - { - if (!fCurrentConfig->maybeSave()) - return false; - fStack->raiseWidget(0); - delete fCurrentConfig; - } - if (fCurrentConduit) - { - KLibLoader::self()->unloadLibrary( - TQFile::encodeName(fCurrentConduit->text(CONDUIT_LIBRARY))); - } - fCurrentConduit=0L; - fCurrentConfig=0L; - return true; -} - -void ConduitConfigWidget::unselect() -{ - fConduitList->setSelected( fCurrentConduit, true ); - fConduitList->setCurrentItem( fCurrentConduit ); -} - -void ConduitConfigWidget::selected(TQListViewItem *p) -{ - FUNCTIONSETUP; -#ifdef DEBUG - DEBUGKPILOT << fname << ": " - << ( p ? p->text(CONDUIT_NAME) : CSL1("None") ) - << endl; -#endif - if (p!=fCurrentConduit) - { - if (!release()) - { - fConduitList->blockSignals(true); - TQTimer::singleShot(1,this,TQT_SLOT(unselect())); - return; - } - } - fCurrentConduit=p; - loadAndConfigure(p); -// fStack->adjustSize(); -#ifdef DEBUG - DEBUGKPILOT << fname << ": New widget size " - << fStack->size().width() << "x" << fStack->size().height() << endl; - DEBUGKPILOT << fname << ": Current size " - << size().width() << "x" - << size().height() << endl; -#endif - emit sizeChanged(); -#ifdef DEBUG - DEBUGKPILOT << fname << ": New size " - << size().width() << "x" - << size().height() << endl; -#endif - - // set the dialog title to the selected item - TQListViewItem *pParent = p->parent(); - TQString title; - title = pParent ? pParent->text(CONDUIT_NAME) + CSL1(" - ") : TQString() ; - title += p ? p->text(CONDUIT_NAME) : i18n("KPilot Setup"); - fTitleText->setText(title); -} - -void ConduitConfigWidget::configure() -{ - loadAndConfigure(fConduitList->selectedItem()); -} - -void ConduitConfigWidget::warnNoExec(const TQListViewItem * p) -{ - FUNCTIONSETUP; - - TQString msg = i18n("<qt>No library could be " - "found for the conduit %1. This means that the " - "conduit was not installed properly.</qt>") - .arg(p->text(CONDUIT_NAME)); - -#ifdef DEBUG - DEBUGKPILOT << fname << ": No library for " - << p->text(CONDUIT_NAME) << endl; -#endif - - KMessageBox::error(this, msg, i18n("Conduit Error")); -} - -void ConduitConfigWidget::warnNoLibrary(const TQListViewItem *p) -{ - FUNCTIONSETUP; - - TQString msg = i18n("<qt>There was a problem loading the library " - "for the conduit %1. This means that the " - "conduit was not installed properly.</qt>") - .arg(p->text(CONDUIT_NAME)); - -#ifdef DEBUG - DEBUGKPILOT << fname << ": Can't load library for " - << p->text(CONDUIT_NAME) << endl; -#endif - - KMessageBox::error(this, msg, i18n("Conduit Error")); -} - -void ConduitConfigWidget::save() -{ - FUNCTIONSETUP; - - // Only new-style conduits and the general setup have changes that need to be commited - // old-style conduits have their own config dlg which commits them itself - if ( fStack->id( fStack->visibleWidget())==NEW_CONDUIT ) - { - if (fCurrentConfig) fCurrentConfig->commit(); - } - - TQStringList activeConduits; - TQListViewItemIterator it( fConduitList ); - while ( it.current() ) { - KPilotCheckListItem*p = dynamic_cast<KPilotCheckListItem*>(it.current()); - if ( p ) - { - p->setOriginalState( p->isOn() ); - if ( p->isOn() ) - activeConduits.append(p->text(CONDUIT_DESKTOP)); - } - ++it; - } - KPilotSettings::setInstalledConduits(activeConduits); - KPilotSettings::self()->writeConfig(); -} - - -void ConduitConfigWidget::load() -{ - FUNCTIONSETUP; - KPilotSettings::self()->readConfig(); - - TQStringList potentiallyInstalled = KPilotSettings::installedConduits(); - TQListViewItem*p = fConduitList->firstChild(); - while (p) - { - TQListViewItem*q = p->firstChild(); - while (q) - { - TQCheckListItem*qq=dynamic_cast<TQCheckListItem*>(q); - if (qq) - { - qq->setOn(! (potentiallyInstalled.findIndex(qq->text(CONDUIT_DESKTOP))<0) ); - } - q = q->nextSibling(); - } - p=p->nextSibling(); - } - - - // Only new-style conduits and the general setup have changes that need to be commited - // old-style conduits have their own config dlg which commits them itself - if ( fStack->id( fStack->visibleWidget())==NEW_CONDUIT ) - { - if (fCurrentConfig) fCurrentConfig->load(); - } -} - - -void ConduitConfigWidget::conduitsChanged(TQListViewItem*item) -{ - KPilotCheckListItem*i=dynamic_cast<KPilotCheckListItem*>(item); - if (i) - { - if (!i->isOriginalState()) emit changed(true); - } -} - -void ConduitConfigWidget::reopenItem(TQListViewItem *i) -{ - i->setOpen(true); -} - -void ConduitConfigWidget::configureWizard() -{ - FUNCTIONSETUP; - ConfigWizard wiz(this, "Wizard"); - if (wiz.exec()) { - KPilotSettings::self()->readConfig(); - load(); - } -} - - |