From c876d3bbefe0dc00c27ca0c12d29da5874946962 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Wed, 15 Dec 2021 21:04:28 +0100 Subject: rbutil: Merge rbutil with utils folder. rbutil uses several components from the utils folder, and can be considered part of utils too. Having it in a separate folder is an arbitrary split that doesn't help anymore these days, so merge them. This also allows other utils to easily use libtools.make without the need to navigate to a different folder. Change-Id: I3fc2f4de19e3e776553efb5dea5f779dfec0dc21 --- utils/rbutilqt/base/encttssettings.h | 128 +++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 utils/rbutilqt/base/encttssettings.h (limited to 'utils/rbutilqt/base/encttssettings.h') diff --git a/utils/rbutilqt/base/encttssettings.h b/utils/rbutilqt/base/encttssettings.h new file mode 100644 index 0000000000..1258d81d57 --- /dev/null +++ b/utils/rbutilqt/base/encttssettings.h @@ -0,0 +1,128 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2007 by Dominik Wenger + * + * 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 software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + +#ifndef ENCTTSSETTINGS_H +#define ENCTTSSETTINGS_H + +#include + +//! \brief This class stores everything needed to display a Setting. +//! +class EncTtsSetting : public QObject +{ + Q_OBJECT +public: + enum ESettingType + { + eBASE, + eBOOL, + eDOUBLE, + eINT, + eSTRING, + eREADONLYSTRING, + eSTRINGLIST, + }; + enum EButton + { + eNOBTN, + eBROWSEBTN, + eREFRESHBTN + }; + + //! constructor for a String or Bool setting + EncTtsSetting(QObject* parent,ESettingType type,QString name,QVariant current,EButton btn = eNOBTN); + //! contructor for a Stringlist setting, ie a enumeration + EncTtsSetting(QObject* parent,ESettingType type,QString name,QVariant current,QStringList list,EButton btn = eNOBTN); + //! constructor for a setting with a min-max range + EncTtsSetting(QObject* parent,ESettingType type,QString name,QVariant current,QVariant min,QVariant max,EButton = eNOBTN); + + //! get currentValue + QVariant current() {return m_currentValue;} + //! set currentValue + void setCurrent(QVariant current,bool noticeGui=true); + + //! get name of the Setting + QString name() {return m_name;} + //! get the type of the setting + ESettingType type() {return m_type;} + //! get what type of button this setting needs + EButton button() {return m_btn;} + //! get the minValue (only valid for a range setting, ie eDOUBLE or eINT) + QVariant min() {return m_minValue; } + //! get the maxValue (only valid for a range setting, ie eDOUBLE or eINT) + QVariant max() {return m_maxValue; } + //! get the enumerationlist (only valid for eSTRINGLIST settings) + QStringList list() {return m_list;} + //! set the enumeration list + void setList(QStringList list){m_list = list;} + +signals: + //! connect to this signal if you want to get noticed when the data changes + void dataChanged(); + //! connect to this if you want to react on refresh button + void refresh(); + //! will be emited when the gui should update this setting + void updateGui(); + +private: + ESettingType m_type; + EButton m_btn; + QString m_name; + QVariant m_currentValue; + QVariant m_minValue; + QVariant m_maxValue; + QStringList m_list; +}; + + +//! \brief this class is the Interface for Encoder and TTS engines, to display settings +//! It wraps nearly everything needed, only updateModel() and commitModel() needs to be reimplemented +//! +class EncTtsSettingInterface : public QObject +{ + Q_OBJECT +public: + EncTtsSettingInterface(QObject* parent) : QObject(parent) {} + + //! get the Settings list + QList getSettings() {generateSettings(); return settingsList;} + + //! Chlid class should commit the from SettingsList to permanent storage + virtual void saveSettings() = 0; + +signals: + void busy(); // emit this if a operation takes time + void busyEnd(); // emit this at the end of a busy section + +protected: + //! Child class should fill in the setttingsList + virtual void generateSettings() = 0; + + //! insert a setting + void insertSetting(int id,EncTtsSetting* setting); + //! retrieve a specific setting + EncTtsSetting* getSetting(int id); + +private: + //! The setting storage. + QList settingsList; + +}; +#endif -- cgit v1.2.3