[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