/*************************************************************************** * Copyright (C) 2006 by Ken Werner * * ken.werner@web.de * * * * 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., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "source.h" #include #include #include #include #include #include #include //#include "kdebug.h" Source::Source(QWidget* inParent): mID(""), mPosition(0), mName(""), mDescription(""), mEnabled(true), mMaybeEnabled(true), mShowOnApplet(true), mMaybeShowOnApplet(true), mShowName(true), mToolTipEnabled(true), mSourcePrefs(0) { } Source::~Source(){ } const QString& Source::getID() const{ return mID; } int Source::getPosition() const{ return mPosition; } void Source::setPosition(int inPosition, KConfig* inKConfig){ mPosition = inPosition; inKConfig->writeEntry(mID + "_position", mPosition); } const QString& Source::getName() const{ return mName; } const QString& Source::getDescription() const{ return mDescription; } bool Source::isMetric() const{ return mIsMetric; } bool Source::isEnabled() const{ return mEnabled; } bool Source::showOnApplet() const{ return mShowOnApplet; } bool Source::showName() const{ return mShowName; } bool Source::isToolTipEnabled() const{ return mToolTipEnabled; } void Source::setMaybeEnabled(bool inMaybeEnabled){ if(inMaybeEnabled != mMaybeEnabled){ mMaybeEnabled = inMaybeEnabled; // disable/enable some widgets if source is disabled/enabled setPrefsWidgetsEnabled(mMaybeEnabled, mSourcePrefs->taskbarCheckBox->isChecked()); } } QWidget* Source::createPrefs(QWidget* inParent){ if(!mSourcePrefs){ mSourcePrefs = new SourcePrefs(inParent, "sourceprefsui"); // disable nameCheckBox if taskbarCheckBox is disabled connect(mSourcePrefs->taskbarCheckBox, SIGNAL(toggled(bool)), mSourcePrefs->nameCheckBox, SLOT(setEnabled(bool))); // add prefs widgets from sub classes createSubPrefs(mSourcePrefs); // add bottom vspacer mSourcePrefs->layout()->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding) ); updatePrefsGUI(); // fill the prefs gui } return mSourcePrefs; } SourcePrefs* Source::getPrefs(){ return mSourcePrefs; } void Source::updatePrefsGUI(){ // set values mSourcePrefs->nameLineEdit->setText(mName); mSourcePrefs->descriptionLabel->setText(mDescription); mSourcePrefs->taskbarCheckBox->setChecked(mShowOnApplet); mSourcePrefs->nameCheckBox->setChecked(mShowName); mSourcePrefs->tooltipCheckBox->setChecked(mToolTipEnabled); // disable/enable some widgets if source is disabled/enabled setPrefsWidgetsEnabled(mEnabled, mShowOnApplet); } void Source::setPrefsWidgetsEnabled(bool isEnabled, bool isShownOnApplet){ mSourcePrefs->nameLabel->setEnabled(isEnabled); mSourcePrefs->nameLineEdit->setEnabled(isEnabled); mSourcePrefs->taskbarCheckBox->setEnabled(isEnabled); mSourcePrefs->nameCheckBox->setEnabled(isEnabled && isShownOnApplet); mSourcePrefs->tooltipCheckBox->setEnabled(isEnabled); } void Source::addPrefs(QWidget* inParent){ if(inParent != NULL) mSourcePrefs->layout()->add(inParent); } void Source::applyPrefs(){ mMaybeShowOnApplet = mSourcePrefs->taskbarCheckBox->isChecked(); mShowName = mSourcePrefs->nameCheckBox->isChecked(); mName = mSourcePrefs->nameLineEdit->text(); mToolTipEnabled = mSourcePrefs->tooltipCheckBox->isChecked(); //kdDebug() << "Source::applyPrefs() mEnabled: " << mEnabled << ", mMaybeEnabled: " << mMaybeEnabled << endl; if(mEnabled != mMaybeEnabled){ mEnabled = mMaybeEnabled; //kdDebug() << "Source::applyPrefs() emit enabledChanged: " << mEnabled << endl; emit enabledChanged(mEnabled, this); // force hide/show on kicker. if the user just // disabled/enabled the source, we want to show / hide // the source too, also if the "show on kicker" property // did not changed. so, force this here. mShowOnApplet = !mMaybeShowOnApplet; } if(!mEnabled) emit displaySource(false, this); else if(mMaybeShowOnApplet != mShowOnApplet) { emit displaySource(mMaybeShowOnApplet, this); } mShowOnApplet = mMaybeShowOnApplet; } void Source::savePrefs(KConfig* inKConfig){ inKConfig->writeEntry(mID + "_position", mPosition); inKConfig->writeEntry(mID + "_enabled", mEnabled); inKConfig->writeEntry(mID + "_showOnApplet", mShowOnApplet); inKConfig->writeEntry(mID + "_showName", mShowName); inKConfig->writeEntry(mID + "_name", mName); inKConfig->writeEntry(mID + "_toolTipEnabled", mToolTipEnabled); } void Source::loadPrefs(KConfig* inKConfig){ mPosition = inKConfig->readNumEntry(mID + "_position", mPosition); mEnabled = inKConfig->readBoolEntry(mID + "_enabled", mEnabled); mMaybeEnabled = mEnabled; mShowOnApplet = inKConfig->readBoolEntry(mID + "_showOnApplet", mShowOnApplet); mMaybeShowOnApplet = mShowOnApplet; mShowName = inKConfig->readBoolEntry(mID + "_showName", mShowName); mName = inKConfig->readEntry(mID + "_name", mName); mToolTipEnabled = inKConfig->readBoolEntry(mID + "_toolTipEnabled", mToolTipEnabled); // initializing // this signal is usually catched by the ThreadedTrigger who enables or disables the fetch loop emit enabledChanged(mEnabled, this); } // utility methods QString Source::formatTemperature(const QString& temp) const { if(mIsMetric) { return temp + QString::fromUtf8(" °C"); } else { return QString::number(celsiusToFahrenheit(temp.toInt())).append(QString::fromUtf8(" °F")); } } QString Source::KHzinHumanReadable( uint value ) const{ if( value >= 1000000 ) return QString::number( round(value/1000000.0, 1) ) + " GHz"; else if( value >= 1000 ) return QString::number( round(value/1000.0, -1) ) + " MHz"; else return QString::number( value ) + " KHz"; } double Source::round(double inValue, int inDigits) const{ return floor(inValue * pow( 10, inDigits) + 0.5) * pow(10, -inDigits); } int Source::celsiusToFahrenheit(int inCelsius) const{ return qRound(1.8 * inCelsius + 32); } void Source::realizeWidget(){ mIsMetric = KGlobal::locale()->measureSystem() == KLocale::Metric; }