[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [marble] src/lib: Basic webpopup for objects on sky map themes.
From: Torsten Rahn <rahn () kde ! org>
Date: 2013-01-18 0:49:03
Message-ID: 20130118004903.E0694A6091 () git ! kde ! org
[Download RAW message or body]
Git commit cafa0127664abca849c0f2ceb263517c01c5c3d4 by Torsten Rahn.
Committed on 18/01/2013 at 01:47.
Pushed by rahn into branch 'master'.
Basic webpopup for objects on sky map themes.
M +30 -2 src/lib/MarbleWidgetPopupMenu.cpp
M +1 -0 src/lib/MarbleWidgetPopupMenu.h
M +19 -9 src/lib/geodata/data/GeoDataCoordinates.cpp
M +1 -0 src/lib/libmarble.qrc
A +32 -0 src/lib/webpopup/skyplace.html
http://commits.kde.org/marble/cafa0127664abca849c0f2ceb263517c01c5c3d4
diff --git a/src/lib/MarbleWidgetPopupMenu.cpp b/src/lib/MarbleWidgetPopupMenu.cpp
index ffa9e71..eb608be 100644
--- a/src/lib/MarbleWidgetPopupMenu.cpp
+++ b/src/lib/MarbleWidgetPopupMenu.cpp
@@ -23,6 +23,8 @@
#include "GeoDataPlacemark.h"
#include "GeoDataStyle.h"
#include "GeoDataExtendedData.h"
+#include "GeoSceneDocument.h"
+#include "GeoSceneHead.h"
#include "MarbleClock.h"
#include "MarbleDebug.h"
#include "Planet.h"
@@ -254,16 +256,21 @@ void MarbleWidgetPopupMenu::slotInfoDialog()
bool isCity (index->visualCategory() >= GeoDataFeature::SmallCity &&
index->visualCategory() <= \
GeoDataFeature::LargeNationCapital);
bool isNation = (index->visualCategory() == GeoDataFeature::Nation);
-
+ bool isSky = false;
+ if ( m_model->mapTheme() ) {
+ isSky = m_model->mapTheme()->head()->target() == "sky";
+ }
MapInfoDialog* popup = m_widget->mapInfoDialog();
popup->setSize(QSizeF(580, 620));
- if (index->role().isEmpty() || isSatellite || isCity || isNation) {
+ if (index->role().isEmpty() || isSatellite || isCity || isNation || isSky) {
if (isSatellite) {
setupDialogSatellite(popup, index);
} else if (isCity) {
setupDialogCity(popup, index);
} else if (isNation) {
setupDialogNation(popup, index);
+ } else if (isSky) {
+ setupDialogSkyPlaces(popup, index);
} else {
popup->setContent(index->description());
}
@@ -395,6 +402,27 @@ void MarbleWidgetPopupMenu::setupDialogGeoPlaces(MapInfoDialog \
*popup, const Geo popup->setContent(description);
}
+void MarbleWidgetPopupMenu::setupDialogSkyPlaces(MapInfoDialog *popup, const \
GeoDataPlacemark *index) +{
+ GeoDataCoordinates location = index->coordinate(m_model->clockDateTime());
+ popup->setCoordinates(location, Qt::AlignRight | Qt::AlignVCenter);
+
+ QFile descriptionFile(":/marble/webpopup/skyplace.html");
+ if (!descriptionFile.open(QIODevice::ReadOnly)) {
+ return;
+ }
+
+ QString description = descriptionFile.readAll();
+ description.replace("%name%", index->name());
+ description.replace("%latitude%", GeoDataCoordinates::latToString(
+ location.latitude(), GeoDataCoordinates::Astro, \
GeoDataCoordinates::Radian, -1, 'f')); + description.replace("%longitude%", \
GeoDataCoordinates::lonToString( + location.longitude(), \
GeoDataCoordinates::Astro, GeoDataCoordinates::Radian, -1, 'f')); + \
description.replace("%shortDescription%", \
filterEmptyShortDescription(index->description())); +
+ popup->setContent(description);
+}
+
void MarbleWidgetPopupMenu::slotShowOrbit( bool show )
{
QAction *action = qobject_cast<QAction *>( sender() );
diff --git a/src/lib/MarbleWidgetPopupMenu.h b/src/lib/MarbleWidgetPopupMenu.h
index d4c549b..f9646fe 100644
--- a/src/lib/MarbleWidgetPopupMenu.h
+++ b/src/lib/MarbleWidgetPopupMenu.h
@@ -90,6 +90,7 @@ private Q_SLOTS:
void setupDialogCity(MapInfoDialog *popup, const GeoDataPlacemark *index);
void setupDialogNation(MapInfoDialog *popup, const GeoDataPlacemark *index);
void setupDialogGeoPlaces(MapInfoDialog *popup, const GeoDataPlacemark *index);
+ void setupDialogSkyPlaces(MapInfoDialog *popup, const GeoDataPlacemark *index);
private:
Q_DISABLE_COPY( MarbleWidgetPopupMenu )
diff --git a/src/lib/geodata/data/GeoDataCoordinates.cpp \
b/src/lib/geodata/data/GeoDataCoordinates.cpp index 4e884f7..7cd6b8e 100644
--- a/src/lib/geodata/data/GeoDataCoordinates.cpp
+++ b/src/lib/geodata/data/GeoDataCoordinates.cpp
@@ -1006,7 +1006,9 @@ QString GeoDataCoordinates::lonToString( qreal lon, \
GeoDataCoordinates::Notation }
else if ( notation == GeoDataCoordinates::Astro )
{
- lon = (lon >= 0) ? lon : lon + 360;
+ if (lon < 0) {
+ lon += ( unit == Degree ) ? 360 : 2 * M_PI;
+ }
qreal lonHourF = ( unit == Degree ) ? fabs( lon/15.0 ) : fabs( \
(qreal)(lon/15.0) * RAD2DEG ); int lonHour = (int) lonHourF;
@@ -1071,7 +1073,15 @@ QString GeoDataCoordinates::latToString( qreal lat, \
GeoDataCoordinates::Notation int precision,
char format )
{
- QString nsString = ( lat > 0 ) ? tr("N") : tr("S");
+ QString pmString;
+ QString nsString;
+
+ if (notation == GeoDataCoordinates::Astro){
+ pmString = ( lat > 0 ) ? "+" : "-";
+ }
+ else {
+ nsString = ( lat > 0 ) ? tr("N") : tr("S");
+ }
QString latString;
@@ -1095,7 +1105,7 @@ QString GeoDataCoordinates::latToString( qreal lat, \
GeoDataCoordinates::Notation } else if ( precision <= 4 && notation == DMS ) {
latSec = qRound( latSecF );
} else {
- if ( notation == DMS ) {
+ if ( notation == DMS || notation == Astro ) {
latSec = latSecF = qRound( latSecF * qPow( 10, precision - 4 ) ) / \
qPow( 10, precision - 4 ); }
else {
@@ -1103,7 +1113,7 @@ QString GeoDataCoordinates::latToString( qreal lat, \
GeoDataCoordinates::Notation }
}
- if (latSec > 59 && notation == DMS) {
+ if (latSec > 59 && ( notation == DMS || notation == Astro )) {
latSecF = 0;
latSec = latSecF;
latMin = latMin + 1;
@@ -1118,18 +1128,18 @@ QString GeoDataCoordinates::latToString( qreal lat, \
GeoDataCoordinates::Notation
latString = QString::fromUtf8("%1\xc2\xb0").arg(latDeg, 3, 10, QChar(' ') );
if ( precision == 0 ) {
- return latString + nsString;
+ return pmString + latString + nsString;
}
- if ( notation == DMS || precision < 3 ) {
+ if ( notation == DMS || notation == Astro || precision < 3 ) {
latString += QString(" %2\'").arg(latMin, 2, 10, QChar('0') );
}
if ( precision < 3 ) {
- return latString + nsString;
+ return pmString + latString + nsString;
}
- if ( notation == DMS ) {
+ if ( notation == DMS || notation == Astro ) {
// Includes -1 case!
if ( precision < 5 ) {
latString += QString(" %3\"").arg(latSec, 2, 'f', 0, QChar('0') );
@@ -1146,7 +1156,7 @@ QString GeoDataCoordinates::latToString( qreal lat, \
GeoDataCoordinates::Notation {
latString = QString::fromUtf8("%L1\xc2\xb0").arg(latDegF, 4 + precision, \
format, precision, QChar(' ') ); }
- return latString + nsString;
+ return pmString + latString + nsString;
}
QString GeoDataCoordinates::latToString() const
diff --git a/src/lib/libmarble.qrc b/src/lib/libmarble.qrc
index 19f9bb2..7753834 100644
--- a/src/lib/libmarble.qrc
+++ b/src/lib/libmarble.qrc
@@ -75,5 +75,6 @@
<file alias="geoplace.html">webpopup/geoplace.html</file>
<file alias="city.html">webpopup/city.html</file>
<file alias="nation.html">webpopup/nation.html</file>
+ <file alias="skyplace.html">webpopup/skyplace.html</file>
</qresource>
</RCC>
diff --git a/src/lib/webpopup/skyplace.html b/src/lib/webpopup/skyplace.html
new file mode 100644
index 0000000..707f30f
--- /dev/null
+++ b/src/lib/webpopup/skyplace.html
@@ -0,0 +1,32 @@
+<html>
+<head>
+<title>Place information</title>
+<link rel="stylesheet" media="screen" href="qrc:/marble/webpopup/placesscreen.css">
+<link rel="stylesheet" media="print, embossed" \
href="qrc:/marble/webpopup/placesprint.css"></head> +<style>
+.name {
+ width: 400px;
+ height: 50px;
+}
+</style>
+<body>
+<div class="name"><h1>%name%</h1></div>
+<p>
+<table>
+<tr class="blue">
+ <td colspan="2">Celestial Coordinates</td>
+</tr>
+<tr>
+ <td><a href="http://en.m.wikipedia.org/wiki/Right_ascension">Right \
Ascension</a></td><td>%longitude%</td> +</tr>
+<tr>
+ <td><a href="http://en.m.wikipedia.org/wiki/Declination">Declination</a></td><td>%latitude%</td>
+</tr>
+</table>
+<p>
+<h3>Short description:</h3>
+<div>
+%shortDescription%
+</div>
+</body>
+</html>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic