Move printGpsCoords from MainTab to QtHelper

Last time I touched this I got a scream from dirk, but then I
looked at the code again and the problem that I faced was that
I broke translations in a sad way, well, now I broke it again.

However, this method shouldn't belong to MainTab ( because of
that thingy that I said before and also many others: Separate
the logic of your application from the UI specific code )

This generates a string that's going to be used on the Interface,
it doesn't display it on the interface. Move it down below makes
it easier to test ( I don't need to create an Widget and worry
about the parent-relationship with the mainwindow just to test
this function, for instance. )

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2014-05-12 13:19:57 -03:00 committed by Dirk Hohndel
parent 05e0086631
commit 2b06e4be67
4 changed files with 31 additions and 33 deletions

View file

@ -1076,32 +1076,6 @@ void MainTab::editWeightWidget(const QModelIndex &index)
ui.weights->edit(index);
}
QString MainTab::printGPSCoords(int lat, int lon)
{
unsigned int latdeg, londeg;
unsigned int latmin, lonmin;
double latsec, lonsec;
QString lath, lonh, result;
if (!lat && !lon)
return QString("");
lath = lat >= 0 ? tr("N") : tr("S");
lonh = lon >= 0 ? tr("E") : tr("W");
lat = abs(lat);
lon = abs(lon);
latdeg = lat / 1000000;
londeg = lon / 1000000;
latmin = (lat % 1000000) * 60;
lonmin = (lon % 1000000) * 60;
latsec = (latmin % 1000000) * 60;
lonsec = (lonmin % 1000000) * 60;
result.sprintf("%u%s%02d\'%06.3f\"%s %u%s%02d\'%06.3f\"%s",
latdeg, UTF8_DEGREE, latmin / 1000000, latsec / 1000000, lath.toUtf8().data(),
londeg, UTF8_DEGREE, lonmin / 1000000, lonsec / 1000000, lonh.toUtf8().data());
return result;
}
void MainTab::updateCoordinatesText(qreal lat, qreal lon)
{
int ulat = rint(lat * 1000000);

View file

@ -120,7 +120,6 @@ private:
Completers completers;
void resetPallete();
void saveTags();
QString printGPSCoords(int lat, int lon);
void updateGpsCoordinates(const struct dive *dive);
};

View file

@ -110,6 +110,32 @@ QString weight_string(int weight_in_grams)
return (str);
}
QString printGPSCoords(int lat, int lon)
{
unsigned int latdeg, londeg;
unsigned int latmin, lonmin;
double latsec, lonsec;
QString lath, lonh, result;
if (!lat && !lon)
return QString();
lath = lat >= 0 ? tr("N") : tr("S");
lonh = lon >= 0 ? tr("E") : tr("W");
lat = abs(lat);
lon = abs(lon);
latdeg = lat / 1000000;
londeg = lon / 1000000;
latmin = (lat % 1000000) * 60;
lonmin = (lon % 1000000) * 60;
latsec = (latmin % 1000000) * 60;
lonsec = (lonmin % 1000000) * 60;
result.sprintf("%u%s%02d\'%06.3f\"%s %u%s%02d\'%06.3f\"%s",
latdeg, UTF8_DEGREE, latmin / 1000000, latsec / 1000000, lath.toUtf8().data(),
londeg, UTF8_DEGREE, lonmin / 1000000, lonsec / 1000000, lonh.toUtf8().data());
return result;
}
bool parseGpsText(const QString &gps_text, double *latitude, double *longitude)
{
enum {
@ -121,10 +147,10 @@ bool parseGpsText(const QString &gps_text, double *latitude, double *longitude)
int eastWest = 4;
int northSouth = 1;
QString trHemisphere[4];
trHemisphere[0] = MainWindow::instance()->information()->trHemisphere("N");
trHemisphere[1] = MainWindow::instance()->information()->trHemisphere("S");
trHemisphere[2] = MainWindow::instance()->information()->trHemisphere("E");
trHemisphere[3] = MainWindow::instance()->information()->trHemisphere("W");
trHemisphere[0] = tr("N");
trHemisphere[1] = tr("S");
trHemisphere[2] = tr("E");
trHemisphere[3] = tr("W");
QString regExp;
/* an empty string is interpreted as 0.0,0.0 and therefore "no gps location" */
if (gps_text.trimmed().isEmpty()) {
@ -302,7 +328,6 @@ extern "C" void call_for_each_dc(void *f, void (*callback)(void *, const char *,
}
}
static xmlDocPtr get_stylesheet_doc(const xmlChar *uri, xmlDictPtr, int, void *, xsltLoadType)
{
QFile f(QLatin1String(":/xslt/") + (const char *)uri);

View file

@ -41,6 +41,6 @@ public:
QString weight_string(int weight_in_grams);
bool gpsHasChanged(struct dive *dive, struct dive *master, const QString &gps_text, bool *parsed);
QString printGPSCoords(int lat, int lon);
QList<int> getDivesInTrip(dive_trip_t *trip);
#endif // QTHELPER_H