00001
00002
00003
00004
00005
00006
00007 #include "EngaugeAssert.h"
00008 #include "FormatCoordsUnitsStrategyNonPolarTheta.h"
00009 #include "FormatDateTime.h"
00010 #include "FormatDegreesMinutesSecondsNonPolarTheta.h"
00011 #include "Logger.h"
00012 #include <QLocale>
00013 #include "Transformation.h"
00014
00015 FormatCoordsUnitsStrategyNonPolarTheta::FormatCoordsUnitsStrategyNonPolarTheta ()
00016 {
00017 }
00018
00019 double FormatCoordsUnitsStrategyNonPolarTheta::formattedToUnformatted (const QString &string,
00020 const QLocale &locale,
00021 CoordUnitsNonPolarTheta coordUnits,
00022 CoordUnitsDate coordUnitsDate,
00023 CoordUnitsTime coordUnitsTime) const
00024 {
00025 LOG4CPP_DEBUG_S ((*mainCat)) << "FormatCoordsUnitsStrategyNonPolarTheta::formattedToUnformatted";
00026
00027 double value;
00028
00029 switch (coordUnits) {
00030 case COORD_UNITS_NON_POLAR_THETA_DATE_TIME:
00031 {
00032 FormatDateTime format;
00033 ENGAUGE_ASSERT (format.parseInput (coordUnitsDate,
00034 coordUnitsTime,
00035 string,
00036 value) == QValidator::Acceptable);
00037 }
00038 break;
00039
00040 case COORD_UNITS_NON_POLAR_THETA_DEGREES_MINUTES_SECONDS:
00041 case COORD_UNITS_NON_POLAR_THETA_DEGREES_MINUTES_SECONDS_NSEW:
00042 {
00043 FormatDegreesMinutesSecondsNonPolarTheta format;
00044 ENGAUGE_ASSERT (format.parseInput (string,
00045 value) == QValidator::Acceptable);
00046 }
00047 break;
00048
00049 case COORD_UNITS_NON_POLAR_THETA_NUMBER:
00050 value = locale.toDouble (string);
00051 break;
00052
00053 default:
00054 LOG4CPP_ERROR_S ((*mainCat)) << "FormatCoordsUnitsStrategyNonPolarTheta::formattedToFormatted";
00055 ENGAUGE_ASSERT (false);
00056 break;
00057 }
00058
00059 return value;
00060 }
00061
00062 QString FormatCoordsUnitsStrategyNonPolarTheta::unformattedToFormatted (double valueUnformatted,
00063 const QLocale &locale,
00064 CoordUnitsNonPolarTheta coordUnits,
00065 CoordUnitsDate coordUnitsDate,
00066 CoordUnitsTime coordUnitsTime,
00067 bool isXTheta,
00068 const Transformation &transformation,
00069 double valueUnformattedOther) const
00070 {
00071 LOG4CPP_DEBUG_S ((*mainCat)) << "FormatCoordsUnitsStrategyNonPolarTheta::unformattedToFormatted";
00072
00073 const char FORMAT ('g');
00074
00075 QString valueFormatted;
00076
00077 switch (coordUnits) {
00078 case COORD_UNITS_NON_POLAR_THETA_DATE_TIME:
00079 {
00080 FormatDateTime format;
00081 valueFormatted = format.formatOutput (coordUnitsDate,
00082 coordUnitsTime,
00083 valueUnformatted);
00084 }
00085 break;
00086
00087 case COORD_UNITS_NON_POLAR_THETA_DEGREES_MINUTES_SECONDS:
00088 case COORD_UNITS_NON_POLAR_THETA_DEGREES_MINUTES_SECONDS_NSEW:
00089 {
00090 FormatDegreesMinutesSecondsNonPolarTheta format;
00091 valueFormatted = format.formatOutput (coordUnits,
00092 valueUnformatted,
00093 isXTheta);
00094 }
00095 break;
00096
00097 case COORD_UNITS_NON_POLAR_THETA_NUMBER:
00098 valueFormatted = locale.toString (valueUnformatted,
00099 FORMAT,
00100 precisionDigitsForRawNumber (valueUnformatted,
00101 valueUnformattedOther,
00102 isXTheta,
00103 transformation));
00104 break;
00105
00106 default:
00107 LOG4CPP_ERROR_S ((*mainCat)) << "FormatCoordsUnitsStrategyNonPolarTheta::unformattedToFormatted";
00108 ENGAUGE_ASSERT (false);
00109 break;
00110 }
00111
00112 return valueFormatted;
00113 }