VR-Forces 4.0.4 Class Documentation
include/drawerNative/unitDisplayManager.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 2008 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: unitDisplayManager.h,v $ $Revision: 1.3 $ $State: Exp $
00007 *********************************************************************/
00008 
00011 
00012 #ifndef UNITDISPLAYMANAGER_H_
00013 #define UNITDISPLAYMANAGER_H_
00014 
00015 #include "drawerNative/drawerNativeDefines.h"
00016 #include "archiver/archivableObject.h"
00017 #include "tdbutil/tdbUnits.h"               
00018 #include "drawerNative/unitDisplay.h"
00019 
00020 #include <QtCore/QObject>
00021 #include <QtCore/QStringList>
00022 #include <QtCore/QVector>
00023 #include <QtCore/QHash>
00024 
00025 class DtUnitConverterFactory;
00026 
00030 
00038 
00039 typedef QHash<QString, DtUnitDisplay*> DtUnitDisplayDict;
00040 typedef QHash<QString, double> DtGridLineChoiceMap;
00041 
00042 class DT_DLL_drawerNative DtUnitDisplayManager : public DtArchivableObject
00043 {
00044    Q_OBJECT
00045 
00046 public:
00047 
00049    DtUnitDisplayManager(const DtUnitConverterFactory*);
00050 
00052    virtual ~DtUnitDisplayManager();
00053 
00055    DtUnitDisplayManager(const DtUnitDisplayManager& orig);
00056 
00058    virtual DtUnitDisplayManager& operator=(const DtUnitDisplayManager& rhs);
00059 
00060    virtual bool init();
00061 
00062 public:
00063    static DtUnitDisplayManager* create(const DtUnitConverterFactory*);
00064    const DtUnitConverterFactory* unitConverterFactory() const;
00065 
00066 public:
00070    virtual bool addUnitToDisplay(const QString& unitDisplay, const QString& unit, int precision = 3, bool addTimeUnits = false);
00071 
00073    virtual bool addUnitToAllDisplay(const QString& unit, int precision = 3, bool addTimeUnits = false);
00074 
00076    virtual void addUnitDisplay(const QString& newUnit, const QString& basedOn, const QString& externalName);
00077 
00080    virtual void addGridLineChoices(double start, int steps, const QString& source, const QString& title,
00081       const QString& convertSource, const QString& convertDestination);
00082 
00083 public:
00087    virtual void addUnitDisplay(const QString& internalName, const QString& externalName,
00088       const QStringList& supportedUnits, const QVector<int>& defaultPrecision = QVector<int>());
00089 
00090    virtual void removeDisplayUnit(const QString& internalName);
00091 
00092    virtual QString displayingUnitsFor(const QString& displayUnit) const;
00093 
00095    virtual void setDisplayingUnitsFor(const QString& displayUnit, const QString& unit, bool signal = true);
00096 
00097    virtual int precisionFor(const QString& displayUnit, const QString& unit) const;
00098 
00100    virtual int precisionForDisplay(const QString& displayUnit) const;
00101 
00103    virtual void setPrecisionFor(const QString& displayUnit, const QString& unit, int precision, bool signal = true);
00104 
00106    virtual QString formatToPrecision(double val, const QString& displayUnit, const QString& unit) const;
00107 
00109    virtual DtUnitDisplayManager* clone() const;
00110 
00111    int count() const;
00112    virtual DtUnitDisplay unitDisplay(int) const;
00113    virtual QString internalName(int) const;
00114 
00116    virtual int displayIndexOf(const QString& internalName) const;
00117    virtual void setDisplayIndex(const QString& internalName, int i);
00118 
00120 
00121    virtual DtGridLineChoiceMap gridLineChoices(const QString&) const;
00122    virtual void addGridLineChoice(const QString& unit, const QString& title, double frequency);
00123    virtual void removeGridLineChoice(const QString& unit, const QString& title);
00124 
00126    virtual void restoreDefaults();
00127 
00128    virtual bool operator==(const DtUnitDisplayManager&) const;
00129    bool operator!=(const DtUnitDisplayManager&) const;
00130 
00131 public:
00134    virtual QString formatSourceToDestination(double val, const QString& unitDisplay, const QString& source,
00135       const QString& destination) const;
00136 
00138    virtual QString formatSourceToDisplay(double val, const QString& unitDisplay,
00139       const QString& source) const;
00140 
00142    virtual QString formatDestinationToSource(double val, const QString& unitDisplay,
00143       const QString& source, const QString& destination) const;
00144 
00146    virtual QString formatDisplayToSource(double val, const QString& unitDisplay,
00147       const QString& source) const;
00148 
00150    virtual double convertSourceToDisplay(double val, const QString& unitDisplay, const QString& source) const;
00151 
00153    virtual double convertDisplayToSource(double val, const QString& unitDisplay, const QString& source) const;
00154 
00156    virtual double convertSourceToDestination(double val, const QString& source, const QString& destination) const;
00157 
00159    virtual double convertDestinationToSource(double val, const QString& source, const QString& destination) const;
00160 
00161 signals:
00162    void unitDisplayChanged(const QString& unitDisplay, const QString& oldValue, const QString& newValue);
00163 
00165    void unitDisplayChanged(const DtUnitDisplayManager*);
00166 
00167 public:
00170    virtual QString unitLabel(const QString& unitDisplay) const;
00171 
00172 protected:
00173    virtual void copyDisplayUnits(const DtUnitDisplayDict&);
00174    virtual void cleanupUnitDisplay(DtUnitDisplayDict&);
00175    virtual void read(QTextStream& ts);
00176    virtual void write(QTextStream& ts);
00177    virtual void initGridLineChoices();
00178 
00179 protected:
00180    const DtUnitConverterFactory*  myUnitConverterFactory;
00181    DtUnitDisplayDict myDisplayUnits;
00182    QHash<QString, DtGridLineChoiceMap> myGridLineChoices;
00183 
00186    DtUnitDisplayManager*   myDefaults;
00187 };
00188 
00189 inline const DtUnitConverterFactory* DtUnitDisplayManager::unitConverterFactory() const
00190 {
00191    return myUnitConverterFactory;
00192 }
00193 
00194 inline bool DtUnitDisplay::operator!=(const DtUnitDisplay& rhs) const
00195 {
00196    return !(*this == rhs);
00197 }
00198 
00199 inline bool DtUnitDisplayManager::operator!=(const DtUnitDisplayManager& rhs) const
00200 {
00201    return !(*this == rhs);
00202 }
00203 
00204 #endif

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)