You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
728 lines
21 KiB
728 lines
21 KiB
/*
|
|
* 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 <tdeapplication.h>
|
|
#include <tdeaction.h>
|
|
#include <kcombobox.h>
|
|
#include <tdeconfig.h>
|
|
#include <tdefiledialog.h>
|
|
#include <tdeglobal.h>
|
|
#include <kiconloader.h>
|
|
#include <kiconview.h>
|
|
#include <tdelocale.h>
|
|
#include <tdemenubar.h>
|
|
#include <tdemessagebox.h>
|
|
#include <kstatusbar.h>
|
|
#include <tdestdaccel.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"),"edit-delete"));
|
|
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"
|