/*************************************************************************** kkeyleddtlcfg.cpp - description ------------------- begin : Tue Aug 14 2001 copyright : (C) 2001 by Dieter Landolt email : dieter.landolt@secs.ch ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #include #include #include #include #include #include #include #include #include #include "kkeyleddtlcfg.h" #include "ksoundcfg.h" #include "dockwidget.h" kkeyleddtlcfg::kkeyleddtlcfg(QWidget *parent, const char *name, bool modal, WFlags fl) : ledcfgdia(parent,name,modal,fl) { // Bugworkaround for QT designer and signal usage // ThemSupport->setEnabled(false); mainFrame->setEnabled(false); soundFrame->setEnabled(false); iconFrame->setEnabled(false); readConfig("Ledpictures"); connect(ThemeSupport,SIGNAL(clicked()), this,SLOT(enableApply())); connect(PlaySounds,SIGNAL(clicked()), this,SLOT(enableApply())); connect(PaintPix,SIGNAL(clicked()), this,SLOT(enableApply())); connect(PlaySounds,SIGNAL(clicked()), this,SLOT(enableSave())); connect(PaintPix,SIGNAL(clicked()), this,SLOT(enableSave())); connect(numlockoff,SIGNAL(clicked()), this,SLOT(numlockoff_click())); connect(numlockon,SIGNAL(clicked()), this,SLOT(numlockon_click())); connect(capslockoff,SIGNAL(clicked()), this,SLOT(capslockoff_click())); connect(capslockon,SIGNAL(clicked()), this,SLOT(capslockon_click())); connect(scrollockoff,SIGNAL(clicked()),this,SLOT(scrollockoff_click())); connect(scrollockon,SIGNAL(clicked()), this,SLOT(scrollockon_click())); connect(ApplyButton,SIGNAL(clicked()), this,SLOT(applyConfig())); connect(OkButton,SIGNAL(clicked()), this,SLOT(applyConfig())); // Clearing path's connect(clearnumlock,SIGNAL(clicked()), this, SLOT(clearnum())); connect(clearcapslock,SIGNAL(clicked()), this, SLOT(clearcaps())); connect(clearscrollock,SIGNAL(clicked()), this, SLOT(clearscroll())); // Setting Paths for dnd's connect(numlockoff,SIGNAL(newPath(QString)),this, SLOT(setNumOffPath(QString))); connect(numlockon,SIGNAL(newPath(QString)),this, SLOT(setNumOnPath(QString))); connect(capslockoff,SIGNAL(newPath(QString)),this, SLOT(setCapsOffPath(QString))); connect(capslockon,SIGNAL(newPath(QString)),this, SLOT(setCapsOnPath(QString))); connect(scrollockoff,SIGNAL(newPath(QString)),this, SLOT(setScrollOffPath(QString))); connect(scrollockon,SIGNAL(newPath(QString)),this, SLOT(setScrollOnPath(QString))); // Setting Paths for sound Paths connect(numOffSound,SIGNAL(newPath(QString)), this, SLOT(setSoundPath(QString))); connect(numOnSound,SIGNAL(newPath(QString)), this, SLOT(setSoundPath(QString))); connect(scrollOffSound,SIGNAL(newPath(QString)), this, SLOT(setSoundPath(QString))); connect(scrollOnSound,SIGNAL(newPath(QString)), this, SLOT(setSoundPath(QString))); connect(capsOffSound,SIGNAL(newPath(QString)), this, SLOT(setSoundPath(QString))); connect(capsOnSound,SIGNAL(newPath(QString)), this, SLOT(setSoundPath(QString))); // Signals to handel for themes connect(ThemeBox,SIGNAL(textChanged(const QString&)),this,SLOT(setCurrentTheme())); connect(ThemeSave,SIGNAL(clicked()),this, SLOT(saveThisTheme())); connect(ThemeBox,SIGNAL(activated(int)),this,SLOT(activateTheme(int))); connect(ThemeDel,SIGNAL(clicked()),this, SLOT(delThisTheme())); connect(ThemeRename,SIGNAL(clicked()),this,SLOT(renThisTheme())); } kkeyleddtlcfg::~kkeyleddtlcfg(){ } /** Apply Configuration */ void kkeyleddtlcfg::applyConfig(){ ApplyButton->setEnabled(false); KGlobal::config()->setGroup("Ledpictures"); KGlobal::config()->writeEntry("UseTheme",ThemeSupport->isChecked(), true,false,false ); if( ! ThemeSave->isEnabled() ) { KGlobal::config()->writeEntry("ActualTheme",ThemeBox->currentItem(),true,false,false); } else { KGlobal::config()->writeEntry("ActualTheme",-1,true,false,false); } saveTheme("Ledpictures"); configChanged(); // Call signal to notify } /** Handler for all buttons */ void kkeyleddtlcfg::lockbutton_click(kDndButton *button){ QString retPath; // QPixmap *fp = new QPixmap(20,20); retPath = KFileDialog::getOpenFileName(QString::null, i18n("*.png *.mng *.gif *.xpm|All supported image format\n*.png|Portable network graphics (PNG)\n*.xpm|Pixmap format (XPM)\n*.gif|Grafic image format (GIF)\n*.mng|Multiple-image network graphics format(MNG)"), this,i18n("Select the right graphic file")); if (retPath != button->path && retPath != QString::null ) { // qDebug(retPath); button->setMovie(retPath); // button->setPixmap(QPixmap(retPath)); old Function button->path = retPath; ApplyButton->setEnabled(true); ThemeSave->setEnabled(true); } } /** clear the path of the numlock buttons */ void kkeyleddtlcfg::clearnum(){ if ( numlockoff->path != QString::null || numlockon->path != QString::null ) { numlockoff->setMovie(""); numlockoff->setPixmap( DockWidget::paintIcon(DockWidget::Off) ); numlockon->setMovie(""); numlockon->setPixmap( DockWidget::paintIcon(DockWidget::On) ); numlockon->path = numlockoff->path = QString::null; ApplyButton->setEnabled(true); ThemeSave->setEnabled(true); } } /** clear the capslock button */ void kkeyleddtlcfg::clearcaps(){ if ( capslockoff->path != QString::null || capslockon->path != QString::null ) { capslockoff->setMovie(""); capslockoff->setPixmap( DockWidget::paintIcon(DockWidget::Off) ); capslockon->setMovie(""); capslockon->setPixmap( DockWidget::paintIcon(DockWidget::On) ); capslockon->path = capslockoff->path = QString::null; ApplyButton->setEnabled(true); ThemeSave->setEnabled(true); } } /** clear the scrollockbuttons */ void kkeyleddtlcfg::clearscroll(){ if ( scrollockoff->path != QString::null || scrollockon->path != QString::null ) { scrollockoff->setMovie(""); scrollockoff->setPixmap( DockWidget::paintIcon(DockWidget::Off) ); scrollockon->setMovie(""); scrollockon->setPixmap( DockWidget::paintIcon(DockWidget::On) ); scrollockon->path = scrollockoff->path = QString::null; ApplyButton->setEnabled(true); ThemeSave->setEnabled(true); } } /** read a spezific configuration. for active or theme */ void kkeyleddtlcfg::readConfig(QString confName){ // KSimpleConfig conf ("Kkeyledrc"); KGlobal::config()->setGroup(confName); if ( confName == "Ledpictures" ) { // Ledpicures hold's the activ configuration ThemeSupport->setChecked(KGlobal::config()->readBoolEntry("UseThemes",true )); } /***/ loadTheme(confName); ThemeBox->insertStringList(KGlobal::config()->readListEntry("Themes")); // If locale is not possible read independend entry if(ThemeBox->count() == 0) { ThemeDel->setEnabled(false); } ThemeBox->setCurrentItem(KGlobal::config()->readNumEntry("ActualTheme",-1)); } /** Loads a them to activate */ void kkeyleddtlcfg::loadTheme(QString theme,bool display){ KGlobal::config()->setGroup(theme); PaintPix->setChecked( KGlobal::config()->readBoolEntry("UsePictures",false )); PlaySounds->setChecked( KGlobal::config()->readBoolEntry("UseSounds",false )); numlockoff->path = locate("data",KGlobal::config()->readPathEntry("numoff_path")); numlockon->path = locate("data",KGlobal::config()->readPathEntry("numon_path")); capslockoff->path = locate("data",KGlobal::config()->readPathEntry("capsoff_path")); capslockon->path = locate("data",KGlobal::config()->readPathEntry("capson_path")); scrollockoff->path = locate("data",KGlobal::config()->readPathEntry("scrolloff_path")); scrollockon->path = locate("data",KGlobal::config()->readPathEntry("scrollon_path")); numOffSound->setText(locate("data",KGlobal::config()->readPathEntry("numoffsound_path"))); numOnSound->setText(locate("data",KGlobal::config()->readPathEntry("numonsound_path"))); capsOffSound->setText(locate("data",KGlobal::config()->readPathEntry("capsoffsound_path"))); capsOnSound->setText(locate("data",KGlobal::config()->readPathEntry("capsonsound_path"))); scrollOffSound->setText(locate("data",KGlobal::config()->readPathEntry("scrolloffsound_path"))); scrollOnSound->setText(locate("data",KGlobal::config()->readPathEntry("scrollonsound_path"))); if ( display ) { if (numlockoff->path != QString::null && QFile::exists(numlockoff->path) ) { // numlockoff->setPixmap(QPixmap(numlockoff->path)); numlockoff->setMovie(numlockoff->path); } else { numlockoff->setMovie(""); numlockoff->setPixmap( DockWidget::paintIcon(DockWidget::Off) ); numlockoff->path = QString::null; } if (numlockon->path != QString::null && QFile::exists(numlockon->path) ) { // numlockon->setPixmap(QPixmap(numlockon->path)); numlockon->setMovie(numlockon->path); } else { numlockon->setMovie(""); numlockon->setPixmap( DockWidget::paintIcon(DockWidget::On) ); numlockon->path = QString::null; } if (capslockoff->path != QString::null && QFile::exists(capslockoff->path) ) { // capslockoff->setPixmap(QPixmap(capslockoff->path)); capslockoff->setMovie(capslockoff->path); } else { capslockoff->setMovie(""); capslockoff->setPixmap( DockWidget::paintIcon(DockWidget::Off) ); capslockoff->path = QString::null; } if (capslockon->path != QString::null && QFile::exists(capslockon->path) ) { // capslockon->setPixmap(QPixmap(capslockon->path)); capslockon->setMovie(capslockon->path); } else { capslockon->setMovie(""); capslockon->setPixmap( DockWidget::paintIcon(DockWidget::On) ); capslockon->path = QString::null; } if (scrollockoff->path != QString::null && QFile::exists(scrollockoff->path) ) { // scrollockoff->setPixmap(QPixmap(scrollockoff->path)); scrollockoff->setMovie(scrollockoff->path); } else { scrollockoff->setMovie(""); scrollockoff->setPixmap( DockWidget::paintIcon(DockWidget::Off) ); scrollockoff->path = QString::null; } if (scrollockon->path != QString::null && QFile::exists(scrollockon->path) ) { // scrollockon->setPixmap(QPixmap(scrollockon->path)); scrollockon->setMovie(scrollockon->path); } else { scrollockon->setMovie(""); scrollockon->setPixmap( DockWidget::paintIcon(DockWidget::On) ); scrollockon->path = QString::null; } ThemeSave->setEnabled(false); ThemeRename->setEnabled(false); } } /** Function witch saves a spezific theme */ void kkeyleddtlcfg::saveTheme(QString theme){ // KSimpleConfig conf ("Kkeyledrc"); KGlobal::config()->setGroup(theme); KGlobal::config()->writeEntry("UsePictures", PaintPix->isChecked(), true,false,false); KGlobal::config()->writePathEntry("scrolloff_path",KGlobal::dirs()->relativeLocation("data",scrollockoff->path), true,false,false); KGlobal::config()->writePathEntry("scrollon_path", KGlobal::dirs()->relativeLocation("data",scrollockon->path), true,false,false); KGlobal::config()->writePathEntry("numoff_path", KGlobal::dirs()->relativeLocation("data",numlockoff->path), true,false,false); KGlobal::config()->writePathEntry("numon_path", KGlobal::dirs()->relativeLocation("data",numlockon->path), true,false,false); KGlobal::config()->writePathEntry("capsoff_path", KGlobal::dirs()->relativeLocation("data",capslockoff->path), true,false,false); KGlobal::config()->writePathEntry("capson_path", KGlobal::dirs()->relativeLocation("data",capslockon->path), true,false,false); // Save the Sound Part of the thme +*+ KGlobal::config()->writeEntry("UseSounds", PlaySounds->isChecked(), true,false,false); KGlobal::config()->writePathEntry("numoffsound_path", KGlobal::dirs()->relativeLocation("data",numOffSound->text()), true,false,false); KGlobal::config()->writePathEntry("numonsound_path", KGlobal::dirs()->relativeLocation("data",numOnSound->text()), true,false,false); KGlobal::config()->writePathEntry("capsoffsound_path", KGlobal::dirs()->relativeLocation("data",capsOffSound->text()), true,false,false); KGlobal::config()->writePathEntry("capsonsound_path", KGlobal::dirs()->relativeLocation("data",capsOnSound->text()), true,false,false); KGlobal::config()->writePathEntry("scrolloffsound_path",KGlobal::dirs()->relativeLocation("data",scrollOffSound->text()), true,false,false); KGlobal::config()->writePathEntry("scrollonsound_path", KGlobal::dirs()->relativeLocation("data",scrollOnSound->text()), true,false,false); } /** set the them from the combobox */ void kkeyleddtlcfg::setCurrentTheme(){ ThemeSave->setEnabled(true); ThemeRename->setEnabled(true); ThemeDel->setEnabled(true); } /** save the them under the Name and into the list of the box */ void kkeyleddtlcfg::saveThisTheme(){ QString themeName; QStringList allEntrys; bool inList = false; for(int i=0;i < ThemeBox->count();i++) { allEntrys.append(ThemeBox->text(i)); if ( ThemeBox->text(i) == ThemeBox->currentText() ) { inList = true; } } int tIndex = 0; themeName = ThemeBox->currentText(); tIndex = ThemeBox->currentItem(); if( ! inList ) { ThemeBox->insertItem(themeName); tIndex = ThemeBox->count() -1; allEntrys.append(themeName); } saveTheme("Theme" + QString::number( tIndex )); ThemeSave->setEnabled(false); ThemeDel->setEnabled(true); // KSimpleConfig conf ("Kkeyledrc"); KGlobal::config()->setGroup("Ledpictures"); // conf->writeEntry("Themes",allEntrys,',',true,false,true); // Language specific KGlobal::config()->writeEntry("Themes",allEntrys,',',true,false,true); // Language unspecific if a switch is done } /** For renaming a displayed Theme */ void kkeyleddtlcfg::renThisTheme(){ QStringList allEntrys; ThemeBox->changeItem(ThemeBox->currentText(),ThemeBox->currentItem()); for(int i=0;i < ThemeBox->count();i++) { allEntrys.append(ThemeBox->text(i)); } ThemeRename->setEnabled(false); KGlobal::config()->setGroup("Ledpictures"); KGlobal::config()->writeEntry("Themes",allEntrys,',',true,false,true); // Language unspecific if a switch is done } /** Called to activate the them selected in the Combobox */ void kkeyleddtlcfg::activateTheme(int themeNr){ loadTheme("Theme" + QString::number( themeNr )); ApplyButton->setEnabled(true); } /** Notfy's that the displayed Theme should be deleted */ void kkeyleddtlcfg::delThisTheme(){ delTheme(ThemeBox->currentText()); activateTheme(ThemeBox->currentItem()); saveThisTheme(); } /** delete a theme width this name (theme) i must be esisting in the combobox */ void kkeyleddtlcfg::delTheme(QString theme){ // QString themeName; QStringList allEntrys; bool inList = false; int posList =-1; for(int i=0;i < ThemeBox->count();i++) { // allEntrys.append(ThemeBox->text(i)); if ( ThemeBox->text(i) == theme ) { inList = true; posList = i; } } for ( int i=posList; icount();i++) { // qDebug("move theme from " + QString::number(i + 1) + " to " + QString::number(i) + "\n"); loadTheme("Theme" + QString::number(i + 1) ); saveTheme("Theme" + QString::number(i) ); } ThemeBox->removeItem(posList); }