summaryrefslogtreecommitdiffstats
path: root/kiostdetool/kioskgui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kiostdetool/kioskgui.cpp')
-rw-r--r--kiostdetool/kioskgui.cpp727
1 files changed, 0 insertions, 727 deletions
diff --git a/kiostdetool/kioskgui.cpp b/kiostdetool/kioskgui.cpp
deleted file mode 100644
index ee9afac..0000000
--- a/kiostdetool/kioskgui.cpp
+++ /dev/null
@@ -1,727 +0,0 @@
-/*
- * kioskgui.cpp
- *
- * Copyright (C) 2003,2004 Waldo Bastian <bastian@kde.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License versin 2 as
- * published by the Free Software Foundation.
- *
- * 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 "kioskgui.h"
-
-#include <tqdir.h>
-#include <tqlineedit.h>
-#include <tqobjectlist.h>
-#include <tqwidgetstack.h>
-#include <tqpushbutton.h>
-
-#include <kapplication.h>
-#include <kaction.h>
-#include <kcombobox.h>
-#include <tdeconfig.h>
-#include <tdefiledialog.h>
-#include <kglobal.h>
-#include <kiconloader.h>
-#include <kiconview.h>
-#include <klocale.h>
-#include <kmenubar.h>
-#include <kmessagebox.h>
-#include <kstatusbar.h>
-#include <kstdaccel.h>
-#include <kstdaction.h>
-#include <kstandarddirs.h>
-#include <kurlrequester.h>
-
-#include "mainview.h"
-#include "profileSelectionPage_ui.h"
-#include "profilePropsPage.h"
-#include "componentSelectionPage.h"
-#include "desktopComponent.h"
-#include "menueditComponent.h"
-#include "screensaverComponent.h"
-#include "panelComponent.h"
-#include "filetypeeditComponent.h"
-#include "componentPage.h"
-#include "pageWidget.h"
-#include "userManagement.h"
-#include "kioskConfigDialog.h"
-#include "kioskdata.h"
-#include "kioskrun.h"
-#include "kiosksync.h"
-
-KioskGui::KioskGui()
- : TDEMainWindow( 0, "kioskgui" ), m_profileSelectionPage(0),
- m_componentSelectionPage(0), m_componentPage(0), m_profileAssignPage(0),
- m_profilePropsPage(0), m_data(0),
- m_activePage(0), m_profile(0), m_componentData(0)
-{
- m_run = new KioskRun;
-
- m_view = new MainView(this);
-
- setupActions();
-
- updateBackground();
-
- // tell the TDEMainWindow that this is indeed the main widget
- setCentralWidget(m_view);
-
- setWidgetBackground(m_view);
- m_view->setBackgroundOrigin(WindowOrigin);
-
-
- createGUI();
-
- // apply the saved mainwindow settings, if any, and ask the mainwindow
- // to automatically save settings if changed: window size, toolbar
- // position, icon size, etc.
- setAutoSaveSettings();
-
- m_view->pbHelp->hide(); // TODO, write help :)
-
- connect(m_view->pbDiscard, TQT_SIGNAL(clicked()), this, TQT_SLOT(discardPage()));
- connect(m_view->pbFinished, TQT_SIGNAL(clicked()), this, TQT_SLOT(finishedPage()));
-
- TDEConfig *config = kapp->config();
- config->setGroup("General");
- m_profile = config->readEntry("CurrentProfile", "default");
- m_component = config->readEntry("CurrentComponent");
-
- selectPage(PAGE_PROFILE_SELECTION, true);
-
- TQTimer::singleShot(0, this, TQT_SLOT(slotCheckEtcSkel()));
-}
-
-KioskGui::~KioskGui()
-{
- delete m_data;
- delete m_run;
-}
-
-void KioskGui::slotCheckEtcSkel()
-{
- TQString etcSkel = "/etc/skel/.trinity";
- KioskSync skelDir;
- skelDir.addDir(etcSkel, KURL());
- TQStringList skelFiles = skelDir.listFiles();
- if (!skelFiles.isEmpty())
- {
- KMessageBox::informationList(this,
- i18n("<qt>Your system contains KDE configuration settings in the "
- "skeleton directory <b>%1</b>. These files are copied to the "
- "personal KDE settings directory of newly created users.<p>"
- "This may interfere with the correct operation of user profiles.<p>"
- "Unless a setting has been locked down, settings that have been copied "
- "to the personal KDE settings directory of a user will override "
- "a default setting configured in a profile.<p>"
- "<b>If this is not the intended behavior, please remove the offending "
- "files from the skeleton folder on all systems that you want to "
- "administer with user profiles.</b><p>"
- "The following files were found under <b>%2</b>:").arg(etcSkel).arg(etcSkel),
- skelFiles,
- TQString(),
- "etc_skel_warning");
- }
-}
-
-void KioskGui::setWidgetBackground(TQWidget *w)
-{
- TQObjectList *l = w->queryList( TQWIDGET_OBJECT_NAME_STRING );
- TQObjectListIt it( *l );
- for(TQWidget *wid=0; (wid = (TQWidget*)it.current()); ++it)
- {
- wid->setBackgroundOrigin(WindowOrigin);
- if (::tqqt_cast<TQPushButton*>(wid))
- wid->setAutoMask(true);
- }
- w->setBackgroundOrigin(WindowOrigin);
- delete l;
-}
-
-void KioskGui::setSubCaption(const TQString &subCaption)
-{
- m_view->subCaptionLabel->setText("<h1>"+subCaption+"</h1>");
-}
-
-void KioskGui::setupActions()
-{
-// KStdAction::open(this, TQT_SLOT(fileOpen()), actionCollection());
-// KStdAction::save(this, TQT_SLOT(fileSave()), actionCollection());
-// KStdAction::saveAs(this, TQT_SLOT(fileSaveAs()), actionCollection());
- KStdAction::quit(this, TQT_SLOT(close()), actionCollection());
-// KStdAction::back(this, TQT_SLOT(previousPage()), actionCollection(), "previousPage");
-// KStdAction::forward(this, TQT_SLOT(nextPage()), actionCollection(), "nextPage");
-
-// createStandardStatusBarAction();
-// setStandardToolBarMenuEnabled(true);
-
-// KStdAction::keyBindings(this, TQT_SLOT(optionsConfigureKeys()), actionCollection());
-// KStdAction::configureToolbars(this, TQT_SLOT(optionsConfigureToolbars()), actionCollection());
- KStdAction::preferences(this, TQT_SLOT(slotConfig()), actionCollection());
- m_uploadAction = new TDEAction(i18n("Upload &All Profiles"), TQString(), 0, this, TQT_SLOT(uploadAllProfiles()), actionCollection(), "upload_all");
- m_backgroundAction = new TDEToggleAction(i18n("Background Graphics"), TQString(), 0, this, TQT_SLOT(slotUpdateBackground()), actionCollection(), "show_background");
-
- updateActions();
-}
-
-void KioskGui::updateActions()
-{
- TDEConfig *config = kapp->config();
- config->setGroup("General");
-
- bool uploadEnabled = !config->readEntry("uploadURL").isEmpty();
-
- m_uploadAction->setEnabled(uploadEnabled);
- m_backgroundAction->setChecked(config->readBoolEntry("FancyBackground", true));
-}
-
-void KioskGui::saveProperties(TDEConfig * /*config*/ )
-{
- // the 'config' object points to the session managed
- // config file. anything you write here will be available
- // later when this app is restored
-}
-
-void KioskGui::readProperties(TDEConfig * /*config*/ )
-{
- // the 'config' object points to the session managed
- // config file. this function is automatically called whenever
- // the app is being restored. read in here whatever you wrote
- // in 'saveProperties'
-}
-
-void KioskGui::slotAddProfile()
-{
- selectPage(PAGE_PROFILE_NEW, true);
-}
-
-void KioskGui::slotProfileProperties()
-{
- selectPage(PAGE_PROFILE_PROPS, true);
-#if 0
- savePage(PAGE_PROFILE_SELECTION);
- ProfileConfigDialog dlg(this, m_profile);
- if (dlg.exec())
- {
- loadPage(PAGE_PROFILE_SELECTION);
- updateActions();
- }
-#endif
-}
-
-void KioskGui::slotProfileSetup()
-{
- selectPage(PAGE_COMPONENT_SELECTION, true);
-}
-
-void KioskGui::slotDeleteProfile(TQListViewItem *item)
-{
- if (!m_profileSelectionPage)
- return;
- if (!item)
- item = m_profileSelectionPage->listProfile->selectedItem();
- if (!item)
- return;
- TQString profile = item->text(0);
- int result = KMessageBox::warningContinueCancel(this,
- i18n("<qt>You are about to delete the profile <b>%1</b>.<p>"
- "Are you sure you want to do this?").arg(profile),
- TQString(), KGuiItem(i18n("Delete"),"editdelete"));
- if (result == KMessageBox::Continue)
- {
- if (KioskRun::self()->deleteProfile(profile))
- {
- delete item;
-
- item = m_profileSelectionPage->listProfile->currentItem();
- if (item)
- m_profileSelectionPage->listProfile->setSelected(item, true);
- }
- }
-}
-
-void KioskGui::slotManageUsers()
-{
- selectPage(PAGE_PROFILE_ASSIGN, true);
-}
-
-void KioskGui::slotProfileContextMenu(TQListViewItem *item, const TQPoint &p)
-{
- if (!item) return; // No item selected
-
- TQPopupMenu menu(this);
- menu.insertItem(i18n("&Delete Profile"), 1);
-
- int result = menu.exec( p );
- if (result == 1)
- slotDeleteProfile(item);
-}
-
-void KioskGui::selectPage(int page, bool save)
-{
- if (save && !savePage(m_activePage))
- return;
- m_activePage = page;
- if ((m_activePage == PAGE_PROFILE_SELECTION) && !m_profileSelectionPage)
- {
- m_profileSelectionPage = new ProfileSelectionPageUI(this);
- setWidgetBackground(m_profileSelectionPage);
-
- connect(m_profileSelectionPage->listProfile,
- TQT_SIGNAL(contextMenuRequested(TQListViewItem *, const TQPoint &, int)),
- this, TQT_SLOT(slotProfileContextMenu(TQListViewItem *, const TQPoint &)));
- connect(m_profileSelectionPage->listProfile,
- TQT_SIGNAL(doubleClicked (TQListViewItem *, const TQPoint &, int )),
- this, TQT_SLOT(nextPage()));
- connect(m_profileSelectionPage->buttonDelete, TQT_SIGNAL(clicked()),
- this, TQT_SLOT(slotDeleteProfile()));
- connect(m_profileSelectionPage->buttonAdd, TQT_SIGNAL(clicked()),
- this, TQT_SLOT(slotAddProfile()));
- connect(m_profileSelectionPage->buttonProperty, TQT_SIGNAL(clicked()),
- this, TQT_SLOT(slotProfileProperties()));
- connect(m_profileSelectionPage->buttonSetup, TQT_SIGNAL(clicked()),
- this, TQT_SLOT(slotProfileSetup()));
- connect(m_profileSelectionPage->buttonUsers, TQT_SIGNAL(clicked()),
- this, TQT_SLOT(slotManageUsers()));
-
- m_view->widgetStack->addWidget(m_profileSelectionPage, PAGE_PROFILE_SELECTION);
- m_profileSelectionPage->listProfile->setFocus();
- }
- if ((m_activePage == PAGE_COMPONENT_SELECTION) && !m_componentSelectionPage)
- {
- m_data = new KioskData;
- if (!m_data->load())
- {
- KMessageBox::error(this, m_data->errorMsg(), i18n("Error accessing Kiosk data"));
- }
-
- m_componentSelectionPage = new ComponentSelectionPage(m_data, this);
- connect(m_componentSelectionPage, TQT_SIGNAL(componentActivated()), this, TQT_SLOT(nextPage()));
- m_componentSelectionPage->setCurrentComponent(m_component);
- setWidgetBackground(m_componentSelectionPage);
-
- m_view->widgetStack->addWidget(m_componentSelectionPage, PAGE_COMPONENT_SELECTION);
- m_componentSelectionPage->listComponent->setFocus();
- }
- if (m_activePage == PAGE_PROFILE_NEW)
- {
- delete m_profilePropsPage;
- m_profilePropsPage = new ProfilePropsPage(this, TQString());
- setWidgetBackground(m_profilePropsPage->widget());
-
- m_view->widgetStack->addWidget(m_profilePropsPage->widget(), PAGE_PROFILE_NEW);
- m_profilePropsPage->setFocus();
- }
- if (m_activePage == PAGE_PROFILE_PROPS)
- {
- delete m_profilePropsPage;
- m_profilePropsPage = new ProfilePropsPage(this, m_profile);
- setWidgetBackground(m_profilePropsPage->widget());
-
- m_view->widgetStack->addWidget(m_profilePropsPage->widget(), PAGE_PROFILE_PROPS);
- m_profilePropsPage->setFocus();
- }
- if ((m_activePage == PAGE_PROFILE_ASSIGN) && !m_profileAssignPage)
- {
- m_profileAssignPage = new UserManagementPage(this);
- setWidgetBackground(m_profileAssignPage->widget());
-
- m_view->widgetStack->addWidget(m_profileAssignPage->widget(), PAGE_PROFILE_ASSIGN);
- m_profileAssignPage->setFocus();
- }
- if (m_activePage == PAGE_COMPONENT)
- {
- delete m_componentPage;
-
- Component *component = 0;
- if (m_component == "kdesktop")
- component = new DesktopComponent;
- else if (m_component == "kdemenu")
- component = new MenuEditComponent;
- else if (m_component == "screensaver")
- component = new ScreenSaverComponent;
- else if (m_component == "kicker")
- component = new PanelComponent;
- else if (m_component == "filetypes")
- component = new FileTypeEditComponent;
-
- m_componentPage = new ComponentPage(m_componentData, component, m_view->widgetStack);
- setWidgetBackground(m_componentPage->widget());
- m_view->widgetStack->addWidget(m_componentPage->widget(), PAGE_COMPONENT);
- m_componentPage->setFocus();
- }
- m_view->widgetStack->raiseWidget(m_activePage);
-
- switch (m_activePage)
- {
- case PAGE_PROFILE_SELECTION:
- setSubCaption(i18n("Main Menu"));
- setCaption(i18n("Main Menu"));
- break;
- case PAGE_PROFILE_NEW:
- setSubCaption(i18n("Add New Profile"));
- setCaption(i18n("Add New Profile"));
- break;
- case PAGE_PROFILE_PROPS:
- setSubCaption(i18n("Profile Properties"));
- setCaption(i18n("Profile Properties"));
- break;
- case PAGE_COMPONENT_SELECTION:
- setSubCaption(i18n("Setup Profile \"%1\"").arg(m_profile));
- setCaption(m_profile);
- break;
- case PAGE_COMPONENT:
- setSubCaption(m_componentPage->subCaption());
- break;
- case PAGE_PROFILE_ASSIGN:
- setSubCaption(i18n("Assign Profiles"));
- break;
- }
-
- loadPage(m_activePage);
-
- updateButtons();
-}
-
-void KioskGui::updateButtons()
-{
- switch(m_activePage)
- {
- case PAGE_PROFILE_SELECTION:
- {
- m_view->pbDiscard->hide();
- m_view->pbFinished->hide();
- break;
- }
-
- case PAGE_COMPONENT_SELECTION:
- {
- m_view->pbDiscard->hide();
- m_view->pbFinished->show();
- break;
- }
-
- case PAGE_COMPONENT:
- {
- m_view->pbDiscard->hide();
- m_view->pbFinished->show();
- break;
- }
-
- case PAGE_PROFILE_NEW:
- {
- m_view->pbDiscard->show();
- m_view->pbFinished->show();
- break;
- }
-
- case PAGE_PROFILE_PROPS:
- {
- m_view->pbDiscard->show();
- m_view->pbFinished->show();
- break;
- }
-
- case PAGE_PROFILE_ASSIGN:
- {
- m_view->pbDiscard->show();
- m_view->pbFinished->show();
- break;
- }
- }
-
- if (m_activePage == PAGE_PROFILE_NEW)
- {
- m_view->pbDiscard->setText(i18n("&Cancel"));
- m_view->pbFinished->setText(i18n("&Add"));
- }
- else
- {
- m_view->pbDiscard->setText(i18n("&Discard Changes"));
- m_view->pbFinished->setText(i18n("&Finished"));
- }
-
-}
-
-void KioskGui::loadProfiles()
-{
- m_profileSelectionPage->listProfile->clear();
-
- TQStringList profiles = KioskRun::self()->allProfiles();
-
- for(TQStringList::ConstIterator it = profiles.begin();
- it != profiles.end(); ++it)
- {
- TQString profile = *it;
- TQString description;
- TQString installUser;
- TQString installDir;
-
- KioskRun::self()->getProfileInfo(profile, description, installDir, installUser);
-
- TQListViewItem *item = new TQListViewItem(m_profileSelectionPage->listProfile, profile, description);
- if (m_profile == profile)
- m_profileSelectionPage->listProfile->setSelected(item, true);
- }
- if (!m_profileSelectionPage->listProfile->selectedItem())
- m_profileSelectionPage->listProfile->setSelected(m_profileSelectionPage->listProfile->firstChild(), true);
-}
-
-void KioskGui::loadPage(int page)
-{
- switch(page)
- {
- case PAGE_PROFILE_SELECTION:
- {
- loadProfiles();
- break;
- }
-
- case PAGE_COMPONENT:
- {
- m_componentPage->load();
- break;
- }
-
- case PAGE_PROFILE_NEW:
- {
- m_profilePropsPage->load();
- break;
- }
-
- case PAGE_PROFILE_PROPS:
- {
- m_profilePropsPage->load();
- break;
- }
-
- case PAGE_PROFILE_ASSIGN:
- {
- m_profileAssignPage->load();
- break;
- }
- }
-}
-
-bool KioskGui::savePage(int page)
-{
- switch(page)
- {
- case PAGE_PROFILE_SELECTION:
- {
- m_profile = m_profileSelectionPage->listProfile->selectedItem() ?
- m_profileSelectionPage->listProfile->selectedItem()->text(0) : TQString();
-
- TDEConfig *config = kapp->config();
- config->setGroup("General");
- config->writeEntry("CurrentProfile", m_profile);
- config->sync();
-
- TQString description;
- TQString installDir;
- TQString installUser;
-
- KioskRun::self()->getProfileInfo(m_profile, description, installDir, installUser);
-
- TQStringList kdeDirs;
- kdeDirs << installDir;
- m_run->setKdeDirs(kdeDirs);
- m_run->setUser(installUser);
-
- break;
- }
-
- case PAGE_COMPONENT_SELECTION:
- {
- m_component = m_componentSelectionPage->currentComponent();
- m_componentData = m_data->m_componentData.find(m_component);
- if (!m_componentData)
- return false;
-
- return m_componentSelectionPage->save();
- }
-
- case PAGE_COMPONENT:
- {
- if (m_componentPage)
- return m_componentPage->save();
- }
-
- case PAGE_PROFILE_NEW:
- {
- if (m_profilePropsPage)
- {
- m_profile = m_profilePropsPage->profile();
- return m_profilePropsPage->save();
- }
- }
-
- case PAGE_PROFILE_PROPS:
- {
- if (m_profilePropsPage)
- {
- m_profile = m_profilePropsPage->profile();
- return m_profilePropsPage->save();
- }
- }
-
- case PAGE_PROFILE_ASSIGN:
- {
- if (m_profileAssignPage)
- return m_profileAssignPage->save();
- }
- }
- return true;
-}
-
-void KioskGui::finishedPage(bool save)
-{
- if (m_activePage == PAGE_PROFILE_NEW)
- selectPage(PAGE_PROFILE_SELECTION, save);
- else if (m_activePage == PAGE_PROFILE_PROPS)
- selectPage(PAGE_PROFILE_SELECTION, save);
- else if (m_activePage == PAGE_PROFILE_ASSIGN)
- selectPage(PAGE_PROFILE_SELECTION, save);
- else if (m_activePage > 1)
- selectPage(m_activePage - 1, save);
-}
-
-void KioskGui::discardPage()
-{
- finishedPage(false);
-}
-
-void KioskGui::nextPage()
-{
- if (m_activePage < PAGE_LAST)
- selectPage(m_activePage + 1, true);
-}
-
-void KioskGui::slotConfig()
-{
- KioskConfigDialog dlg(this);
- if (dlg.exec())
- {
- dlg.save();
- updateActions();
- }
-}
-
-bool KioskGui::queryClose()
-{
- if (!savePage(m_activePage))
- {
- int result = KMessageBox::warningContinueCancel(this,
- i18n("Your changes could not be saved, do you want to quit anyway?"),
- TQString(),
- KStdGuiItem::quit());
- if (result == KMessageBox::Continue)
- return true;
- return false;
- }
- if (m_uploadAction->isEnabled())
- {
- TDEConfig *config = kapp->config();
- config->setGroup("General");
-
- KURL uploadUrl = config->readEntry("uploadURL");
- int result = KMessageBox::questionYesNo(this,
- i18n("<qt>Do you want to upload the profiles to <b>%1</b> ?</qt>").arg(uploadUrl.prettyURL()));
- if (result == KMessageBox::Yes)
- {
- uploadAllProfiles();
- }
- }
-
- return true;
-}
-
-void KioskGui::uploadAllProfiles()
-{
- TDEConfig *config = kapp->config();
- config->setGroup("General");
- TQString uploadPrefix = config->readEntry("uploadPrefix");
- TQString uploadURL = config->readEntry("uploadURL");
-
- KioskSync sync(this);
-
- TQStringList profiles = KioskRun::self()->allProfiles();
-
- for(TQStringList::ConstIterator it = profiles.begin();
- it != profiles.end(); ++it)
- {
- TQString profile = *it;
- TQString description;
- TQString installUser;
- TQString installDir;
-
- KioskRun::self()->getProfileInfo(profile, description, installDir, installUser);
-
-// sync.addDir(installDir, KURL("ftp://localhost/kde/profiles"));
-
- TQString dir = installDir;
- if (dir.startsWith(uploadPrefix))
- dir = dir.mid(uploadPrefix.length());
- if (dir.startsWith("/"))
- dir = dir.mid(1);
-
- KURL url(uploadURL);
- url.setPath(url.path(1)+dir);
- sync.addDir(installDir, url);
- }
-
- if (sync.sync())
- {
- KMessageBox::information(this, i18n("<qt>All profiles have been successfully uploaded to <b>%1</b>").arg(uploadURL));
- }
-}
-
-void KioskGui::uploadCurrentProfile()
-{
-}
-
-void KioskGui::slotUpdateBackground()
-{
- TDEConfig *config = kapp->config();
- config->setGroup("General");
- config->writeEntry("FancyBackground", m_backgroundAction->isChecked());
- config->sync();
- updateBackground();
-}
-
-void KioskGui::updateBackground()
-{
- if (m_backgroundAction->isChecked())
- {
- m_view->setPaletteBackgroundPixmap(locate("appdata", "background.png"));
- m_view->logoLabel->setPixmap(locate("appdata", "logo.png"));
- m_view->logoLabel->setMinimumSize(TQSize(160,170));
- TQString language = TDEGlobal::locale()->language();
- TQString caption = locate("appdata", "caption-"+language+".png");
- if (caption.isEmpty())
- caption = locate("appdata", "caption.png");
- TQPixmap pm(caption);
- m_view->captionLabel->setPixmap(pm);
- m_view->captionLabel->setMinimumHeight(pm.height());
- }
- else
- {
- m_view->unsetPalette();
- m_view->logoLabel->setPixmap(TQPixmap());
- m_view->logoLabel->setMinimumSize(0,0);
- m_view->captionLabel->setPixmap(TQPixmap());
- m_view->captionLabel->setMinimumHeight(0);
- }
-}
-
-
-#include "kioskgui.moc"