1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-09-03 21:57:51 -04:00

CRLF problem

This commit is contained in:
f4exb 2017-09-28 14:07:41 +02:00
parent dda9a1dcbb
commit c4bad4d834
9 changed files with 999 additions and 999 deletions

View File

@ -1,62 +1,62 @@
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2017 Edouard Griffiths, F4EXB // // Copyright (C) 2017 Edouard Griffiths, F4EXB //
// // // //
// This program is free software; you can redistribute it and/or modify // // 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 // // it under the terms of the GNU General Public License as published by //
// the Free Software Foundation as version 3 of the License, or // // the Free Software Foundation as version 3 of the License, or //
// // // //
// This program is distributed in the hope that it will be useful, // // This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of // // but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License V3 for more details. // // GNU General Public License V3 for more details. //
// // // //
// You should have received a copy of the GNU General Public License // // You should have received a copy of the GNU General Public License //
// along with this program. If not, see <http://www.gnu.org/licenses/>. // // along with this program. If not, see <http://www.gnu.org/licenses/>. //
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
#ifndef PLUGINS_SAMPLESOURCE_LIMESDROUTPUT_LIMESDROUTPUTSETTINGS_H_ #ifndef PLUGINS_SAMPLESOURCE_LIMESDROUTPUT_LIMESDROUTPUTSETTINGS_H_
#define PLUGINS_SAMPLESOURCE_LIMESDROUTPUT_LIMESDROUTPUTSETTINGS_H_ #define PLUGINS_SAMPLESOURCE_LIMESDROUTPUT_LIMESDROUTPUTSETTINGS_H_
#include <QByteArray> #include <QByteArray>
#include <stdint.h> #include <stdint.h>
/** /**
* These are the settings individual to each hardware channel or software Tx chain * These are the settings individual to each hardware channel or software Tx chain
* Plus the settings to be saved in the presets * Plus the settings to be saved in the presets
*/ */
struct LimeSDROutputSettings struct LimeSDROutputSettings
{ {
typedef enum { typedef enum {
FC_POS_INFRA = 0, FC_POS_INFRA = 0,
FC_POS_SUPRA, FC_POS_SUPRA,
FC_POS_CENTER FC_POS_CENTER
} fcPos_t; } fcPos_t;
enum PathRFE enum PathRFE
{ {
PATH_RFE_NONE = 0, PATH_RFE_NONE = 0,
PATH_RFE_TXRF1, PATH_RFE_TXRF1,
PATH_RFE_TXEF2 PATH_RFE_TXEF2
}; };
// global settings to be saved // global settings to be saved
uint64_t m_centerFrequency; uint64_t m_centerFrequency;
int m_devSampleRate; int m_devSampleRate;
uint32_t m_log2HardInterp; uint32_t m_log2HardInterp;
// channel settings // channel settings
uint32_t m_log2SoftInterp; uint32_t m_log2SoftInterp;
float m_lpfBW; //!< LMS amalog lowpass filter bandwidth (Hz) float m_lpfBW; //!< LMS amalog lowpass filter bandwidth (Hz)
bool m_lpfFIREnable; //!< Enable LMS digital lowpass FIR filters bool m_lpfFIREnable; //!< Enable LMS digital lowpass FIR filters
float m_lpfFIRBW; //!< LMS digital lowpass FIR filters bandwidth (Hz) float m_lpfFIRBW; //!< LMS digital lowpass FIR filters bandwidth (Hz)
uint32_t m_gain; //!< Optimally distributed gain (dB) uint32_t m_gain; //!< Optimally distributed gain (dB)
bool m_ncoEnable; //!< Enable TSP NCO and mixing bool m_ncoEnable; //!< Enable TSP NCO and mixing
int m_ncoFrequency; //!< Actual NCO frequency (the resulting frequency with mixing is displayed) int m_ncoFrequency; //!< Actual NCO frequency (the resulting frequency with mixing is displayed)
PathRFE m_antennaPath; PathRFE m_antennaPath;
LimeSDROutputSettings(); LimeSDROutputSettings();
void resetToDefaults(); void resetToDefaults();
QByteArray serialize() const; QByteArray serialize() const;
bool deserialize(const QByteArray& data); bool deserialize(const QByteArray& data);
}; };
#endif /* PLUGINS_SAMPLESOURCE_LIMESDRINPUT_LIMESDRINPUTSETTINGS_H_ */ #endif /* PLUGINS_SAMPLESOURCE_LIMESDRINPUT_LIMESDRINPUTSETTINGS_H_ */

View File

@ -1,43 +1,43 @@
#-------------------------------------------------------- #--------------------------------------------------------
# #
# Pro file for Android and Windows builds with Qt Creator # Pro file for Android and Windows builds with Qt Creator
# #
#-------------------------------------------------------- #--------------------------------------------------------
TEMPLATE = lib TEMPLATE = lib
CONFIG += plugin CONFIG += plugin
QT += core gui widgets multimedia network QT += core gui widgets multimedia network
TARGET = inputfcdproplus TARGET = inputfcdproplus
DEFINES += USE_SSE2=1 DEFINES += USE_SSE2=1
QMAKE_CXXFLAGS += -msse2 QMAKE_CXXFLAGS += -msse2
DEFINES += USE_SSE4_1=1 DEFINES += USE_SSE4_1=1
QMAKE_CXXFLAGS += -msse4.1 QMAKE_CXXFLAGS += -msse4.1
INCLUDEPATH += $$PWD INCLUDEPATH += $$PWD
INCLUDEPATH += ../../../sdrbase INCLUDEPATH += ../../../sdrbase
INCLUDEPATH += ../../../fcdhid INCLUDEPATH += ../../../fcdhid
INCLUDEPATH += ../../../fcdlib INCLUDEPATH += ../../../fcdlib
CONFIG(Release):build_subdir = release CONFIG(Release):build_subdir = release
CONFIG(Debug):build_subdir = debug CONFIG(Debug):build_subdir = debug
SOURCES = fcdproplusgui.cpp\ SOURCES = fcdproplusgui.cpp\
fcdproplusinputqt.cpp\ fcdproplusinputqt.cpp\
fcdproplusplugin.cpp\ fcdproplusplugin.cpp\
fcdproplussettings.cpp\ fcdproplussettings.cpp\
fcdproplusreader.cpp fcdproplusreader.cpp
HEADERS = fcdproplusgui.h\ HEADERS = fcdproplusgui.h\
fcdproplusinputqt.h\ fcdproplusinputqt.h\
fcdproplusplugin.h\ fcdproplusplugin.h\
fcdproplussettings.h\ fcdproplussettings.h\
fcdproplusreader.h fcdproplusreader.h
FORMS += fcdproplusgui.ui FORMS += fcdproplusgui.ui
LIBS += -L../../../fcdlib/$${build_subdir} -lfcdlib LIBS += -L../../../fcdlib/$${build_subdir} -lfcdlib
LIBS += -L../../../fcdhid/$${build_subdir} -lfcdhid LIBS += -L../../../fcdhid/$${build_subdir} -lfcdhid
LIBS += -L../../../sdrbase/$${build_subdir} -lsdrbase LIBS += -L../../../sdrbase/$${build_subdir} -lsdrbase

View File

@ -1,76 +1,76 @@
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2017 Edouard Griffiths, F4EXB // // Copyright (C) 2017 Edouard Griffiths, F4EXB //
// // // //
// This program is free software; you can redistribute it and/or modify // // 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 // // it under the terms of the GNU General Public License as published by //
// the Free Software Foundation as version 3 of the License, or // // the Free Software Foundation as version 3 of the License, or //
// // // //
// This program is distributed in the hope that it will be useful, // // This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of // // but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License V3 for more details. // // GNU General Public License V3 for more details. //
// // // //
// You should have received a copy of the GNU General Public License // // You should have received a copy of the GNU General Public License //
// along with this program. If not, see <http://www.gnu.org/licenses/>. // // along with this program. If not, see <http://www.gnu.org/licenses/>. //
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
#ifndef PLUGINS_SAMPLESOURCE_LIMESDRINPUT_LIMESDRINPUTSETTINGS_H_ #ifndef PLUGINS_SAMPLESOURCE_LIMESDRINPUT_LIMESDRINPUTSETTINGS_H_
#define PLUGINS_SAMPLESOURCE_LIMESDRINPUT_LIMESDRINPUTSETTINGS_H_ #define PLUGINS_SAMPLESOURCE_LIMESDRINPUT_LIMESDRINPUTSETTINGS_H_
#include <QByteArray> #include <QByteArray>
#include <stdint.h> #include <stdint.h>
/** /**
* These are the settings individual to each hardware channel or software Rx chain * These are the settings individual to each hardware channel or software Rx chain
* Plus the settings to be saved in the presets * Plus the settings to be saved in the presets
*/ */
struct LimeSDRInputSettings struct LimeSDRInputSettings
{ {
typedef enum { typedef enum {
FC_POS_INFRA = 0, FC_POS_INFRA = 0,
FC_POS_SUPRA, FC_POS_SUPRA,
FC_POS_CENTER FC_POS_CENTER
} fcPos_t; } fcPos_t;
enum PathRFE enum PathRFE
{ {
PATH_RFE_NONE = 0, PATH_RFE_NONE = 0,
PATH_RFE_LNAH, PATH_RFE_LNAH,
PATH_RFE_LNAL, PATH_RFE_LNAL,
PATH_RFE_LNAW, PATH_RFE_LNAW,
PATH_RFE_LB1, PATH_RFE_LB1,
PATH_RFE_LB2 PATH_RFE_LB2
}; };
typedef enum { typedef enum {
GAIN_AUTO, GAIN_AUTO,
GAIN_MANUAL GAIN_MANUAL
} GainMode; } GainMode;
// global settings to be saved // global settings to be saved
uint64_t m_centerFrequency; uint64_t m_centerFrequency;
int m_devSampleRate; int m_devSampleRate;
uint32_t m_log2HardDecim; uint32_t m_log2HardDecim;
// channel settings // channel settings
bool m_dcBlock; bool m_dcBlock;
bool m_iqCorrection; bool m_iqCorrection;
uint32_t m_log2SoftDecim; uint32_t m_log2SoftDecim;
float m_lpfBW; //!< LMS amalog lowpass filter bandwidth (Hz) float m_lpfBW; //!< LMS amalog lowpass filter bandwidth (Hz)
bool m_lpfFIREnable; //!< Enable LMS digital lowpass FIR filters bool m_lpfFIREnable; //!< Enable LMS digital lowpass FIR filters
float m_lpfFIRBW; //!< LMS digital lowpass FIR filters bandwidth (Hz) float m_lpfFIRBW; //!< LMS digital lowpass FIR filters bandwidth (Hz)
uint32_t m_gain; //!< Optimally distributed gain (dB) uint32_t m_gain; //!< Optimally distributed gain (dB)
bool m_ncoEnable; //!< Enable TSP NCO and mixing bool m_ncoEnable; //!< Enable TSP NCO and mixing
int m_ncoFrequency; //!< Actual NCO frequency (the resulting frequency with mixing is displayed) int m_ncoFrequency; //!< Actual NCO frequency (the resulting frequency with mixing is displayed)
PathRFE m_antennaPath; PathRFE m_antennaPath;
GainMode m_gainMode; //!< Gain mode: auto or manual GainMode m_gainMode; //!< Gain mode: auto or manual
uint32_t m_lnaGain; //!< Manual LAN gain uint32_t m_lnaGain; //!< Manual LAN gain
uint32_t m_tiaGain; //!< Manual TIA gain uint32_t m_tiaGain; //!< Manual TIA gain
uint32_t m_pgaGain; //!< Manual PGA gain uint32_t m_pgaGain; //!< Manual PGA gain
LimeSDRInputSettings(); LimeSDRInputSettings();
void resetToDefaults(); void resetToDefaults();
QByteArray serialize() const; QByteArray serialize() const;
bool deserialize(const QByteArray& data); bool deserialize(const QByteArray& data);
}; };
#endif /* PLUGINS_SAMPLESOURCE_LIMESDRINPUT_LIMESDRINPUTSETTINGS_H_ */ #endif /* PLUGINS_SAMPLESOURCE_LIMESDRINPUT_LIMESDRINPUTSETTINGS_H_ */

View File

@ -1,69 +1,69 @@
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2016 Edouard Griffiths, F4EXB // // Copyright (C) 2016 Edouard Griffiths, F4EXB //
// // // //
// This program is free software; you can redistribute it and/or modify // // 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 // // it under the terms of the GNU General Public License as published by //
// the Free Software Foundation as version 3 of the License, or // // the Free Software Foundation as version 3 of the License, or //
// // // //
// This program is distributed in the hope that it will be useful, // // This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of // // but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License V3 for more details. // // GNU General Public License V3 for more details. //
// // // //
// You should have received a copy of the GNU General Public License // // You should have received a copy of the GNU General Public License //
// along with this program. If not, see <http://www.gnu.org/licenses/>. // // along with this program. If not, see <http://www.gnu.org/licenses/>. //
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
#ifndef SDRBASE_AUDIO_AUDIOINPUT_H_ #ifndef SDRBASE_AUDIO_AUDIOINPUT_H_
#define SDRBASE_AUDIO_AUDIOINPUT_H_ #define SDRBASE_AUDIO_AUDIOINPUT_H_
#include <QMutex> #include <QMutex>
#include <QIODevice> #include <QIODevice>
#include <QAudioFormat> #include <QAudioFormat>
#include <list> #include <list>
#include <vector> #include <vector>
#include "util/export.h" #include "util/export.h"
class QAudioInput; class QAudioInput;
class AudioFifo; class AudioFifo;
class AudioOutputPipe; class AudioOutputPipe;
class SDRANGEL_API AudioInput : public QIODevice { class SDRANGEL_API AudioInput : public QIODevice {
public: public:
AudioInput(); AudioInput();
virtual ~AudioInput(); virtual ~AudioInput();
bool start(int device, int rate); bool start(int device, int rate);
void stop(); void stop();
void addFifo(AudioFifo* audioFifo); void addFifo(AudioFifo* audioFifo);
void removeFifo(AudioFifo* audioFifo); void removeFifo(AudioFifo* audioFifo);
uint getRate() const { return m_audioFormat.sampleRate(); } uint getRate() const { return m_audioFormat.sampleRate(); }
void setOnExit(bool onExit) { m_onExit = onExit; } void setOnExit(bool onExit) { m_onExit = onExit; }
void setVolume(float volume) { m_volume = volume; } void setVolume(float volume) { m_volume = volume; }
private: private:
QMutex m_mutex; QMutex m_mutex;
QAudioInput* m_audioInput; QAudioInput* m_audioInput;
uint m_audioUsageCount; uint m_audioUsageCount;
bool m_onExit; bool m_onExit;
float m_volume; float m_volume;
typedef std::list<AudioFifo*> AudioFifos; typedef std::list<AudioFifo*> AudioFifos;
AudioFifos m_audioFifos; AudioFifos m_audioFifos;
std::vector<qint32> m_mixBuffer; std::vector<qint32> m_mixBuffer;
QAudioFormat m_audioFormat; QAudioFormat m_audioFormat;
//virtual bool open(OpenMode mode); //virtual bool open(OpenMode mode);
virtual qint64 readData(char* data, qint64 maxLen); virtual qint64 readData(char* data, qint64 maxLen);
virtual qint64 writeData(const char* data, qint64 len); virtual qint64 writeData(const char* data, qint64 len);
friend class AudioOutputPipe; friend class AudioOutputPipe;
}; };
#endif /* SDRBASE_AUDIO_AUDIOINPUT_H_ */ #endif /* SDRBASE_AUDIO_AUDIOINPUT_H_ */

View File

@ -1,58 +1,58 @@
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2016 F4EXB // // Copyright (C) 2016 F4EXB //
// written by Edouard Griffiths // // written by Edouard Griffiths //
// // // //
// This program is free software; you can redistribute it and/or modify // // 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 // // it under the terms of the GNU General Public License as published by //
// the Free Software Foundation as version 3 of the License, or // // the Free Software Foundation as version 3 of the License, or //
// // // //
// This program is distributed in the hope that it will be useful, // // This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of // // but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License V3 for more details. // // GNU General Public License V3 for more details. //
// // // //
// You should have received a copy of the GNU General Public License // // You should have received a copy of the GNU General Public License //
// along with this program. If not, see <http://www.gnu.org/licenses/>. // // along with this program. If not, see <http://www.gnu.org/licenses/>. //
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
#include "dsp/basebandsamplesource.h" #include "dsp/basebandsamplesource.h"
#include "util/message.h" #include "util/message.h"
BasebandSampleSource::BasebandSampleSource() : BasebandSampleSource::BasebandSampleSource() :
m_sampleFifo(48000) // arbitrary, will be adjusted to match device sink FIFO size m_sampleFifo(48000) // arbitrary, will be adjusted to match device sink FIFO size
{ {
connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()));
connect(&m_sampleFifo, SIGNAL(dataWrite(int)), this, SLOT(handleWriteToFifo(int))); connect(&m_sampleFifo, SIGNAL(dataWrite(int)), this, SLOT(handleWriteToFifo(int)));
} }
BasebandSampleSource::~BasebandSampleSource() BasebandSampleSource::~BasebandSampleSource()
{ {
} }
void BasebandSampleSource::handleInputMessages() void BasebandSampleSource::handleInputMessages()
{ {
Message* message; Message* message;
while ((message = m_inputMessageQueue.pop()) != 0) while ((message = m_inputMessageQueue.pop()) != 0)
{ {
if (handleMessage(*message)) if (handleMessage(*message))
{ {
delete message; delete message;
} }
} }
} }
void BasebandSampleSource::handleWriteToFifo(int nbSamples) void BasebandSampleSource::handleWriteToFifo(int nbSamples)
{ {
SampleVector::iterator writeAt; SampleVector::iterator writeAt;
m_sampleFifo.getWriteIterator(writeAt); m_sampleFifo.getWriteIterator(writeAt);
pullAudio(nbSamples); // Pre-fetch input audio samples this is mandatory to keep things running smoothly pullAudio(nbSamples); // Pre-fetch input audio samples this is mandatory to keep things running smoothly
for (int i = 0; i < nbSamples; i++) for (int i = 0; i < nbSamples; i++)
{ {
pull((*writeAt)); pull((*writeAt));
m_sampleFifo.bumpIndex(writeAt); m_sampleFifo.bumpIndex(writeAt);
} }
} }

View File

@ -1,45 +1,45 @@
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2016 F4EXB // // Copyright (C) 2016 F4EXB //
// written by Edouard Griffiths // // written by Edouard Griffiths //
// // // //
// This program is free software; you can redistribute it and/or modify // // 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 // // it under the terms of the GNU General Public License as published by //
// the Free Software Foundation as version 3 of the License, or // // the Free Software Foundation as version 3 of the License, or //
// // // //
// This program is distributed in the hope that it will be useful, // // This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of // // but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License V3 for more details. // // GNU General Public License V3 for more details. //
// // // //
// You should have received a copy of the GNU General Public License // // You should have received a copy of the GNU General Public License //
// along with this program. If not, see <http://www.gnu.org/licenses/>. // // along with this program. If not, see <http://www.gnu.org/licenses/>. //
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
#include "dsp/devicesamplesink.h" #include "dsp/devicesamplesink.h"
DeviceSampleSink::DeviceSampleSink() : DeviceSampleSink::DeviceSampleSink() :
m_sampleSourceFifo(1<<19) m_sampleSourceFifo(1<<19)
{ {
connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()));
} }
DeviceSampleSink::~DeviceSampleSink() DeviceSampleSink::~DeviceSampleSink()
{ {
} }
void DeviceSampleSink::handleInputMessages() void DeviceSampleSink::handleInputMessages()
{ {
Message* message; Message* message;
while ((message = m_inputMessageQueue.pop()) != 0) while ((message = m_inputMessageQueue.pop()) != 0)
{ {
if (handleMessage(*message)) if (handleMessage(*message))
{ {
delete message; delete message;
} }
} }
} }

View File

@ -1,441 +1,441 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>CWKeyerGUI</class> <class>CWKeyerGUI</class>
<widget class="QWidget" name="CWKeyerGUI"> <widget class="QWidget" name="CWKeyerGUI">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>375</width> <width>375</width>
<height>60</height> <height>60</height>
</rect> </rect>
</property> </property>
<property name="font"> <property name="font">
<font> <font>
<family>Sans Serif</family> <family>Sans Serif</family>
<pointsize>8</pointsize> <pointsize>8</pointsize>
</font> </font>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>CW Keyer</string> <string>CW Keyer</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout" columnstretch="1,0,0"> <layout class="QGridLayout" name="gridLayout" columnstretch="1,0,0">
<property name="margin"> <property name="margin">
<number>2</number> <number>2</number>
</property> </property>
<property name="spacing"> <property name="spacing">
<number>3</number> <number>3</number>
</property> </property>
<item row="3" column="0" colspan="3"> <item row="3" column="0" colspan="3">
<layout class="QHBoxLayout" name="controlBtns"> <layout class="QHBoxLayout" name="controlBtns">
<property name="spacing"> <property name="spacing">
<number>3</number> <number>3</number>
</property> </property>
<item> <item>
<widget class="QLabel" name="cwSpeedLabel"> <widget class="QLabel" name="cwSpeedLabel">
<property name="text"> <property name="text">
<string>WPM</string> <string>WPM</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QDial" name="cwSpeed"> <widget class="QDial" name="cwSpeed">
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>24</width> <width>24</width>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>CW speed (WPM)</string> <string>CW speed (WPM)</string>
</property> </property>
<property name="minimum"> <property name="minimum">
<number>1</number> <number>1</number>
</property> </property>
<property name="maximum"> <property name="maximum">
<number>26</number> <number>26</number>
</property> </property>
<property name="pageStep"> <property name="pageStep">
<number>1</number> <number>1</number>
</property> </property>
<property name="value"> <property name="value">
<number>13</number> <number>13</number>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="cwSpeedText"> <widget class="QLabel" name="cwSpeedText">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>16</width> <width>16</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
<property name="font"> <property name="font">
<font> <font>
<pointsize>9</pointsize> <pointsize>9</pointsize>
</font> </font>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>CW speed display (WPM)</string> <string>CW speed display (WPM)</string>
</property> </property>
<property name="text"> <property name="text">
<string>13</string> <string>13</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="ButtonSwitch" name="playDots"> <widget class="ButtonSwitch" name="playDots">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum"> <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>24</width> <width>24</width>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="palette"> <property name="palette">
<palette> <palette>
<active> <active>
<colorrole role="ButtonText"> <colorrole role="ButtonText">
<brush brushstyle="SolidPattern"> <brush brushstyle="SolidPattern">
<color alpha="255"> <color alpha="255">
<red>255</red> <red>255</red>
<green>255</green> <green>255</green>
<blue>255</blue> <blue>255</blue>
</color> </color>
</brush> </brush>
</colorrole> </colorrole>
</active> </active>
<inactive> <inactive>
<colorrole role="ButtonText"> <colorrole role="ButtonText">
<brush brushstyle="SolidPattern"> <brush brushstyle="SolidPattern">
<color alpha="255"> <color alpha="255">
<red>255</red> <red>255</red>
<green>255</green> <green>255</green>
<blue>255</blue> <blue>255</blue>
</color> </color>
</brush> </brush>
</colorrole> </colorrole>
</inactive> </inactive>
<disabled> <disabled>
<colorrole role="ButtonText"> <colorrole role="ButtonText">
<brush brushstyle="SolidPattern"> <brush brushstyle="SolidPattern">
<color alpha="255"> <color alpha="255">
<red>255</red> <red>255</red>
<green>255</green> <green>255</green>
<blue>255</blue> <blue>255</blue>
</color> </color>
</brush> </brush>
</colorrole> </colorrole>
</disabled> </disabled>
</palette> </palette>
</property> </property>
<property name="font"> <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>12</pointsize>
<weight>75</weight> <weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Send dots</string> <string>Send dots</string>
</property> </property>
<property name="text"> <property name="text">
<string>.</string> <string>.</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="ButtonSwitch" name="playDashes"> <widget class="ButtonSwitch" name="playDashes">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum"> <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>24</width> <width>24</width>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="palette"> <property name="palette">
<palette> <palette>
<active> <active>
<colorrole role="ButtonText"> <colorrole role="ButtonText">
<brush brushstyle="SolidPattern"> <brush brushstyle="SolidPattern">
<color alpha="255"> <color alpha="255">
<red>255</red> <red>255</red>
<green>255</green> <green>255</green>
<blue>255</blue> <blue>255</blue>
</color> </color>
</brush> </brush>
</colorrole> </colorrole>
</active> </active>
<inactive> <inactive>
<colorrole role="ButtonText"> <colorrole role="ButtonText">
<brush brushstyle="SolidPattern"> <brush brushstyle="SolidPattern">
<color alpha="255"> <color alpha="255">
<red>255</red> <red>255</red>
<green>255</green> <green>255</green>
<blue>255</blue> <blue>255</blue>
</color> </color>
</brush> </brush>
</colorrole> </colorrole>
</inactive> </inactive>
<disabled> <disabled>
<colorrole role="ButtonText"> <colorrole role="ButtonText">
<brush brushstyle="SolidPattern"> <brush brushstyle="SolidPattern">
<color alpha="255"> <color alpha="255">
<red>255</red> <red>255</red>
<green>255</green> <green>255</green>
<blue>255</blue> <blue>255</blue>
</color> </color>
</brush> </brush>
</colorrole> </colorrole>
</disabled> </disabled>
</palette> </palette>
</property> </property>
<property name="font"> <property name="font">
<font> <font>
<pointsize>12</pointsize> <pointsize>12</pointsize>
<weight>75</weight> <weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Send dashes</string> <string>Send dashes</string>
</property> </property>
<property name="text"> <property name="text">
<string>-</string> <string>-</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="Line" name="line_2"> <widget class="Line" name="line_2">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="ButtonSwitch" name="playText"> <widget class="ButtonSwitch" name="playText">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum"> <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>24</width> <width>24</width>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="palette"> <property name="palette">
<palette> <palette>
<active> <active>
<colorrole role="ButtonText"> <colorrole role="ButtonText">
<brush brushstyle="SolidPattern"> <brush brushstyle="SolidPattern">
<color alpha="255"> <color alpha="255">
<red>255</red> <red>255</red>
<green>255</green> <green>255</green>
<blue>255</blue> <blue>255</blue>
</color> </color>
</brush> </brush>
</colorrole> </colorrole>
</active> </active>
<inactive> <inactive>
<colorrole role="ButtonText"> <colorrole role="ButtonText">
<brush brushstyle="SolidPattern"> <brush brushstyle="SolidPattern">
<color alpha="255"> <color alpha="255">
<red>255</red> <red>255</red>
<green>255</green> <green>255</green>
<blue>255</blue> <blue>255</blue>
</color> </color>
</brush> </brush>
</colorrole> </colorrole>
</inactive> </inactive>
<disabled> <disabled>
<colorrole role="ButtonText"> <colorrole role="ButtonText">
<brush brushstyle="SolidPattern"> <brush brushstyle="SolidPattern">
<color alpha="255"> <color alpha="255">
<red>106</red> <red>106</red>
<green>104</green> <green>104</green>
<blue>100</blue> <blue>100</blue>
</color> </color>
</brush> </brush>
</colorrole> </colorrole>
</disabled> </disabled>
</palette> </palette>
</property> </property>
<property name="font"> <property name="font">
<font> <font>
<family>DejaVu Serif</family> <family>DejaVu Serif</family>
<pointsize>9</pointsize> <pointsize>9</pointsize>
<weight>75</weight> <weight>75</weight>
<bold>true</bold> <bold>true</bold>
</font> </font>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Send text written above</string> <string>Send text written above</string>
</property> </property>
<property name="text"> <property name="text">
<string>T</string> <string>T</string>
</property> </property>
<property name="checkable"> <property name="checkable">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="ButtonSwitch" name="playLoopCW"> <widget class="ButtonSwitch" name="playLoopCW">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum"> <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>24</width> <width>24</width>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Play text in a loop</string> <string>Play text in a loop</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="../resources/res.qrc"> <iconset resource="../resources/res.qrc">
<normaloff>:/playloop.png</normaloff>:/playloop.png</iconset> <normaloff>:/playloop.png</normaloff>:/playloop.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
<size> <size>
<width>16</width> <width>16</width>
<height>16</height> <height>16</height>
</size> </size>
</property> </property>
<property name="checkable"> <property name="checkable">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="ButtonSwitch" name="playStop"> <widget class="ButtonSwitch" name="playStop">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum"> <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>24</width> <width>24</width>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Play / stop text coding</string> <string>Play / stop text coding</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="../resources/res.qrc"> <iconset resource="../resources/res.qrc">
<normaloff>:/play.png</normaloff> <normaloff>:/play.png</normaloff>
<normalon>:/stop.png</normalon>:/play.png</iconset> <normalon>:/stop.png</normalon>:/play.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
<size> <size>
<width>16</width> <width>16</width>
<height>16</height> <height>16</height>
</size> </size>
</property> </property>
<property name="checkable"> <property name="checkable">
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="autoRaise"> <property name="autoRaise">
<bool>false</bool> <bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<spacer name="horizontalSpacer"> <spacer name="horizontalSpacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
<width>40</width> <width>40</width>
<height>20</height> <height>20</height>
</size> </size>
</property> </property>
</spacer> </spacer>
</item> </item>
</layout> </layout>
</item> </item>
<item row="2" column="0" colspan="3"> <item row="2" column="0" colspan="3">
<layout class="QHBoxLayout" name="cwTextLayout"> <layout class="QHBoxLayout" name="cwTextLayout">
<item> <item>
<widget class="QLineEdit" name="cwTextEdit"> <widget class="QLineEdit" name="cwTextEdit">
<property name="toolTip"> <property name="toolTip">
<string>CW text</string> <string>CW text</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="cwTextClear"> <widget class="QPushButton" name="cwTextClear">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>24</width> <width>24</width>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>24</width> <width>24</width>
<height>24</height> <height>24</height>
</size> </size>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Clear CW text</string> <string>Clear CW text</string>
</property> </property>
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="../resources/res.qrc"> <iconset resource="../resources/res.qrc">
<normaloff>:/clear.png</normaloff>:/clear.png</iconset> <normaloff>:/clear.png</normaloff>:/clear.png</iconset>
</property> </property>
<property name="iconSize"> <property name="iconSize">
<size> <size>
<width>16</width> <width>16</width>
<height>16</height> <height>16</height>
</size> </size>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</item> </item>
</layout> </layout>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>
<class>ButtonSwitch</class> <class>ButtonSwitch</class>
<extends>QToolButton</extends> <extends>QToolButton</extends>
<header>gui/buttonswitch.h</header> <header>gui/buttonswitch.h</header>
</customwidget> </customwidget>
</customwidgets> </customwidgets>
<tabstops> <tabstops>
<tabstop>playLoopCW</tabstop> <tabstop>playLoopCW</tabstop>
</tabstops> </tabstops>
<resources> <resources>
<include location="../resources/res.qrc"/> <include location="../resources/res.qrc"/>
</resources> </resources>
<connections/> <connections/>
</ui> </ui>

View File

@ -1,122 +1,122 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>MyPositionDialog</class> <class>MyPositionDialog</class>
<widget class="QDialog" name="MyPositionDialog"> <widget class="QDialog" name="MyPositionDialog">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>324</width> <width>324</width>
<height>127</height> <height>127</height>
</rect> </rect>
</property> </property>
<property name="font"> <property name="font">
<font> <font>
<family>Sans Serif</family> <family>Sans Serif</family>
<pointsize>9</pointsize> <pointsize>9</pointsize>
</font> </font>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Dialog</string> <string>Dialog</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<widget class="QGroupBox" name="groupBox"> <widget class="QGroupBox" name="groupBox">
<property name="title"> <property name="title">
<string>My Station Position</string> <string>My Station Position</string>
</property> </property>
<layout class="QFormLayout" name="formLayout"> <layout class="QFormLayout" name="formLayout">
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="latitudeLabel"> <widget class="QLabel" name="latitudeLabel">
<property name="text"> <property name="text">
<string>Latitude</string> <string>Latitude</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="1" column="0">
<widget class="QLabel" name="longitudeLabel"> <widget class="QLabel" name="longitudeLabel">
<property name="text"> <property name="text">
<string>Longitude</string> <string>Longitude</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QDoubleSpinBox" name="longitudeSpinBox"> <widget class="QDoubleSpinBox" name="longitudeSpinBox">
<property name="decimals"> <property name="decimals">
<number>6</number> <number>6</number>
</property> </property>
<property name="minimum"> <property name="minimum">
<double>-180.000000000000000</double> <double>-180.000000000000000</double>
</property> </property>
<property name="maximum"> <property name="maximum">
<double>180.000000000000000</double> <double>180.000000000000000</double>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="0" column="1">
<widget class="QDoubleSpinBox" name="latitudeSpinBox"> <widget class="QDoubleSpinBox" name="latitudeSpinBox">
<property name="decimals"> <property name="decimals">
<number>6</number> <number>6</number>
</property> </property>
<property name="minimum"> <property name="minimum">
<double>-90.000000000000000</double> <double>-90.000000000000000</double>
</property> </property>
<property name="maximum"> <property name="maximum">
<double>90.000000000000000</double> <double>90.000000000000000</double>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QDialogButtonBox" name="buttonBox"> <widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="standardButtons"> <property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</widget> </widget>
<tabstops> <tabstops>
<tabstop>buttonBox</tabstop> <tabstop>buttonBox</tabstop>
</tabstops> </tabstops>
<resources/> <resources/>
<connections> <connections>
<connection> <connection>
<sender>buttonBox</sender> <sender>buttonBox</sender>
<signal>accepted()</signal> <signal>accepted()</signal>
<receiver>MyPositionDialog</receiver> <receiver>MyPositionDialog</receiver>
<slot>accept()</slot> <slot>accept()</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>257</x> <x>257</x>
<y>194</y> <y>194</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>157</x> <x>157</x>
<y>203</y> <y>203</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
<connection> <connection>
<sender>buttonBox</sender> <sender>buttonBox</sender>
<signal>rejected()</signal> <signal>rejected()</signal>
<receiver>MyPositionDialog</receiver> <receiver>MyPositionDialog</receiver>
<slot>reject()</slot> <slot>reject()</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
<x>314</x> <x>314</x>
<y>194</y> <y>194</y>
</hint> </hint>
<hint type="destinationlabel"> <hint type="destinationlabel">
<x>286</x> <x>286</x>
<y>203</y> <y>203</y>
</hint> </hint>
</hints> </hints>
</connection> </connection>
</connections> </connections>
</ui> </ui>

View File

@ -1,83 +1,83 @@
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2017 F4EXB // // Copyright (C) 2017 F4EXB //
// written by Edouard Griffiths // // written by Edouard Griffiths //
// // // //
// Same as ValueDial but handles optionally positive and negative numbers with // // Same as ValueDial but handles optionally positive and negative numbers with //
// sign display. // // sign display. //
// // // //
// This program is free software; you can redistribute it and/or modify // // 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 // // it under the terms of the GNU General Public License as published by //
// the Free Software Foundation as version 3 of the License, or // // the Free Software Foundation as version 3 of the License, or //
// // // //
// This program is distributed in the hope that it will be useful, // // This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of // // but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License V3 for more details. // // GNU General Public License V3 for more details. //
// // // //
// You should have received a copy of the GNU General Public License // // You should have received a copy of the GNU General Public License //
// along with this program. If not, see <http://www.gnu.org/licenses/>. // // along with this program. If not, see <http://www.gnu.org/licenses/>. //
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
#include <QWidget> #include <QWidget>
#include <QTimer> #include <QTimer>
#include "gui/colormapper.h" #include "gui/colormapper.h"
#include "util/export.h" #include "util/export.h"
class SDRANGEL_API ValueDialZ : public QWidget { class SDRANGEL_API ValueDialZ : public QWidget {
Q_OBJECT Q_OBJECT
public: public:
ValueDialZ(bool positiveOnly = true, QWidget* parent = NULL, ColorMapper colorMapper = ColorMapper(ColorMapper::Normal)); ValueDialZ(bool positiveOnly = true, QWidget* parent = NULL, ColorMapper colorMapper = ColorMapper(ColorMapper::Normal));
void setValue(qint64 value); void setValue(qint64 value);
void setValueRange(bool positiveOnly, uint numDigits, qint64 min, qint64 max); void setValueRange(bool positiveOnly, uint numDigits, qint64 min, qint64 max);
void setFont(const QFont& font); void setFont(const QFont& font);
void setBold(bool bold); void setBold(bool bold);
void setColorMapper(ColorMapper colorMapper); void setColorMapper(ColorMapper colorMapper);
qint64 getValue() const { return m_value; } qint64 getValue() const { return m_value; }
qint64 getValueNew() const { return m_valueNew; } qint64 getValueNew() const { return m_valueNew; }
signals: signals:
void changed(qint64 value); void changed(qint64 value);
private: private:
QLinearGradient m_background; QLinearGradient m_background;
int m_numDigits; int m_numDigits;
int m_numDecimalPoints; int m_numDecimalPoints;
int m_digitWidth; int m_digitWidth;
int m_digitHeight; int m_digitHeight;
int m_hightlightedDigit; int m_hightlightedDigit;
int m_cursor; int m_cursor;
bool m_cursorState; bool m_cursorState;
qint64 m_value; qint64 m_value;
qint64 m_valueMax; qint64 m_valueMax;
qint64 m_valueMin; qint64 m_valueMin;
bool m_positiveOnly; bool m_positiveOnly;
QString m_text; QString m_text;
qint64 m_valueNew; qint64 m_valueNew;
QString m_textNew; QString m_textNew;
int m_animationState; int m_animationState;
QTimer m_animationTimer; QTimer m_animationTimer;
QTimer m_blinkTimer; QTimer m_blinkTimer;
ColorMapper m_colorMapper; ColorMapper m_colorMapper;
quint64 findExponent(int digit); quint64 findExponent(int digit);
QChar digitNeigh(QChar c, bool dir); QChar digitNeigh(QChar c, bool dir);
QString formatText(qint64 value); QString formatText(qint64 value);
void paintEvent(QPaintEvent*); void paintEvent(QPaintEvent*);
void mousePressEvent(QMouseEvent*); void mousePressEvent(QMouseEvent*);
void mouseMoveEvent(QMouseEvent*); void mouseMoveEvent(QMouseEvent*);
void wheelEvent(QWheelEvent*); void wheelEvent(QWheelEvent*);
void leaveEvent(QEvent*); void leaveEvent(QEvent*);
void keyPressEvent(QKeyEvent*); void keyPressEvent(QKeyEvent*);
void focusInEvent(QFocusEvent*); void focusInEvent(QFocusEvent*);
void focusOutEvent(QFocusEvent*); void focusOutEvent(QFocusEvent*);
private slots: private slots:
void animate(); void animate();
void blink(); void blink();
}; };