summaryrefslogtreecommitdiffstats
path: root/src/sources/source.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sources/source.cpp')
-rw-r--r--src/sources/source.cpp222
1 files changed, 222 insertions, 0 deletions
diff --git a/src/sources/source.cpp b/src/sources/source.cpp
new file mode 100644
index 0000000..605537f
--- /dev/null
+++ b/src/sources/source.cpp
@@ -0,0 +1,222 @@
+/***************************************************************************
+ * 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 <math.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <klocale.h>
+#include <kglobal.h>
+
+//#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;
+}