|
View:
New views
1 Messages
—
Rating Filter:
Alert me
|
|
|
KDE/kdeedu/kstars/kstarsSVN commit 1044910 by khudyakov:
Further refactor KSPopupMenu * Move label creation to separate funtion addFancyFunction * Add helper function to return string representation of rise/set/ transit time. * Use local variables where possible CCMAIL: kstars-devel@... M +70 -125 kspopupmenu.cpp M +6 -9 kspopupmenu.h --- trunk/KDE/kdeedu/kstars/kstars/kspopupmenu.cpp #1044909:1044910 @@ -40,27 +40,57 @@ #include "skycomponents/constellationboundary.h" -#include <kactioncollection.h> -// Convert magnitude to string representation for QLabel -static QString magToStr(double m) { - return QString("%1<sup>m</sup>").arg(m, 0, 'f', 2); -} +namespace { + // Convert magnitude to string representation for QLabel + QString magToStr(double m) { + return QString("%1<sup>m</sup>").arg(m, 0, 'f', 2); + } -// Helper function to return object name -static QString getObjectName(SkyObject *obj) { - // FIXME: make logic less convoluted. - if( obj->longname() != obj->name() ) { // Object has proper name - return obj->translatedLongName() + ", " + obj->translatedName(); - } else { - if( !obj->translatedName2().isEmpty() ) { - return obj->translatedName() + ", " + obj->translatedName2(); - } else { - return obj->translatedName(); - } - } + // Return object name + QString getObjectName(SkyObject *obj) { + // FIXME: make logic less convoluted. + if( obj->longname() != obj->name() ) { // Object has proper name + return obj->translatedLongName() + ", " + obj->translatedName(); + } else { + if( !obj->translatedName2().isEmpty() ) + return obj->translatedName() + ", " + obj->translatedName2(); + else + return obj->translatedName(); + } + } + + // String representation for rise/set time of object. If object + // doesn't rise/set returns descriptive string. + // + // Second parameter choose between raise and set. 'true' for + // raise, 'false' for set. + QString riseSetTimeLabel(SkyObject* o, bool isRaise) { + KStarsData* data = KStarsData::Instance(); + QTime t = o->riseSetTime( data->ut(), data->geo(), isRaise ); + if ( t.isValid() ) + //We can round to the nearest minute by simply adding 30 seconds to the time. + return i18n( "Rise time: %1", KGlobal::locale()->formatTime( t.addSecs(30) ) ); + if ( o->alt()->Degrees() > 0 ) + return i18n( "No rise time: Circumpolar" ); + else + return i18n( "No rise time: Never rises" ); + } + + // String representation for transit time for object + QString transitTimeLabel(SkyObject* o) { + KStarsData* data = KStarsData::Instance(); + QTime t = o->transitTime( data->ut(), data->geo() ); + if ( t.isValid() ) + //We can round to the nearest minute by simply adding 30 seconds to the time. + return i18n( "Transit time: %1", KGlobal::locale()->formatTime( t.addSecs(30) ) ); + else + return "--:--"; + } + } + KSPopupMenu::KSPopupMenu() : KMenu( KStars::Instance() ) { @@ -147,72 +177,26 @@ if( name.isEmpty() ) name = i18n( "Empty sky" ); - QLabel* labName = new QLabel( "<b>"+name+"</b>", this ); - labName->setAlignment( Qt::AlignHCenter | Qt::AlignVCenter ); - KAction* aName = new KAction( this ); - aName->setDefaultWidget( labName ); - addAction( aName ); + addFancyLabel( name ); + if ( !type.isEmpty() ) + addFancyLabel( type ); + if ( !info.isEmpty() ) + addFancyLabel( info ); + addFancyLabel( ConstellationBoundary::Instance()->constellationName( obj ) ); - if ( ! type.isEmpty() ) { - QLabel* labName2 = new QLabel( "<b>"+type+"</b>", this ); - labName2->setAlignment( Qt::AlignHCenter | Qt::AlignVCenter ); - KAction* aName2 = new KAction( this ); - aName2->setDefaultWidget( labName2 ); - addAction( aName2 ); - } - - if ( ! info.isEmpty() ) { - QLabel* labType = new QLabel( "<b>"+info+"</b>", this ); - labType->setAlignment( Qt::AlignHCenter | Qt::AlignVCenter ); - KAction* aType = new KAction( this ); - aType->setDefaultWidget( labType ); - addAction( aType ); - } - - QLabel* labConstellation = new QLabel( "<b>"+ - ConstellationBoundary::Instance()->constellationName( obj )+"</b>", this ); - labConstellation->setAlignment( Qt::AlignHCenter | Qt::AlignVCenter ); - KAction* aConstellation = new KAction( this ); - aConstellation->setDefaultWidget( labConstellation ); - addAction( aConstellation ); - //Insert Rise/Set/Transit labels - if ( showRiseSet && obj ) { + if( showRiseSet && obj ) { + SkyObject* o = obj->clone(); addSeparator(); - - QString sRiseTime( i18n( "Rise time: %1" , QString("00:00") ) ); - QString sSetTime( i18nc( "the time at which an object falls below the horizon", "Set time: %1" , QString("00:00") ) ); - QString sTransitTime( i18n( "Transit time: %1" , QString("00:00") ) ); - - labRiseTime = new QLabel( "<b>"+sRiseTime+"</b>", this ); - labRiseTime->setAlignment( Qt::AlignHCenter | Qt::AlignVCenter ); - QFont smallFont = labRiseTime->font(); - smallFont.setPointSize( smallFont.pointSize() - 2 ); - labRiseTime->setFont( smallFont ); - KAction* aRiseTime = new KAction( this ); - aRiseTime->setDefaultWidget( labRiseTime ); - addAction( aRiseTime ); - - labSetTime = new QLabel( "<b>"+sSetTime+"</b>", this ); - labSetTime->setAlignment( Qt::AlignHCenter | Qt::AlignVCenter ); - labSetTime->setFont( smallFont ); - KAction* aSetTime = new KAction( this ); - aSetTime->setDefaultWidget( labSetTime ); - addAction( aSetTime ); - - labTransitTime = new QLabel( "<b>"+sTransitTime+"</b>", this ); - labTransitTime->setAlignment( Qt::AlignHCenter | Qt::AlignVCenter ); - labTransitTime->setFont( smallFont ); - KAction* aTransitTime = new KAction( this ); - aTransitTime->setDefaultWidget( labTransitTime ); - addAction( aTransitTime ); - - setRiseSetLabels( obj ); + addFancyLabel( riseSetTimeLabel(o, true), -2 ); + addFancyLabel( riseSetTimeLabel(o, false), -2 ); + addFancyLabel( transitTimeLabel(o), -2 ); + addSeparator(); + delete o; } //Insert item for centering on object if ( showCenterTrack && obj ) { - addSeparator(); addAction( i18n( "Center && Track" ), ks->map(), SLOT( slotCenter() ) ); } @@ -399,56 +383,17 @@ #endif } -void KSPopupMenu::setRiseSetLabels( SkyObject *obj ) { - if ( ! obj ) return; - QString rt; - QTime rtime = obj->riseSetTime( ks->data()->ut(), ks->data()->geo(), true ); - dms rAz = obj->riseSetTimeAz( ks->data()->ut(), ks->data()->geo(), true ); - - if ( rtime.isValid() ) { - //We can round to the nearest minute by simply adding 30 seconds to the time. - rt = i18n( "Rise time: %1", KGlobal::locale()->formatTime( rtime.addSecs(30) ) ); - - } else if ( obj->alt()->Degrees() > 0 ) { - rt = i18n( "No rise time: Circumpolar" ); - } else { - rt = i18n( "No rise time: Never rises" ); +void KSPopupMenu::addFancyLabel(QString name, int deltaFontSize) { + QLabel* label = new QLabel( "<b>"+name+"</b>", this ); + label->setAlignment( Qt::AlignHCenter | Qt::AlignVCenter ); + if( deltaFontSize != 0 ) { + QFont font = label->font(); + font.setPointSize( font.pointSize() + deltaFontSize ); + label->setFont( font ); } - - KStarsDateTime dt = ks->data()->ut(); - QTime stime = obj->riseSetTime( dt, ks->data()->geo(), false ); - - QString st; - dms sAz = obj->riseSetTimeAz( dt, ks->data()->geo(), false ); - - if ( stime.isValid() ) { - //We can round to the nearest minute by simply adding 30 seconds to the time. - st = i18nc( "the time at which an object falls below the horizon", "Set time: %1", KGlobal::locale()->formatTime( stime.addSecs(30) ) ); - - } else if ( obj->alt()->Degrees() > 0 ) { - st = i18n( "No set time: Circumpolar" ); - } else { - st = i18n( "No set time: Never rises" ); - } - - QTime ttime = obj->transitTime( dt, ks->data()->geo() ); - dms trAlt = obj->transitAltitude( dt, ks->data()->geo() ); - QString tt; - - if ( ttime.isValid() ) { - //We can round to the nearest minute by simply adding 30 seconds to the time. - tt = i18n( "Transit time: %1", KGlobal::locale()->formatTime( ttime.addSecs(30) ) ); - } else { - tt = "--:--"; - } - - labRiseTime->setText( "<b>"+rt+"</b>" ); - labSetTime->setText( "<b>"+st+"</b>" ); - labTransitTime->setText( "<b>"+tt+"</b>" ) ; - - // Restore the position to the original - obj->recomputeCoords( ks->data()->ut(), ks->data()->geo() ); + KAction* act = new KAction( this ); + act->setDefaultWidget( label ); + addAction( act ); } - #include "kspopupmenu.moc" --- trunk/KDE/kdeedu/kstars/kstars/kspopupmenu.h #1044909:1044910 @@ -135,22 +135,19 @@ */ void createEmptyMenu( SkyObject *nullObj=0 ); - /**Set the rise/transit/set time labels for the object. Compute these times - *for the object for the current date and location. If the object is - *circumpolar or never rises, the rise and set labels will indicate this - *(but the transit time should always be valid). - *@param obj the skyobject whose r/t/s times are to be displayed. - */ - void setRiseSetLabels( SkyObject *obj ); - /**Add a submenu for INDI controls (Slew, Track, Sync, etc). *@return true if a valid INDI menu was added. */ bool addINDI(void); private: + /** Add fancy label to menu. + * @param name is content of the label + * @param deltaFontSize is change in font size from default + */ + void addFancyLabel(QString name, int deltaFontSize = 0); + KStars *ks; - QLabel *labRiseTime, *labSetTime, *labTransitTime; KMenu *menuDevice; }; _______________________________________________ Kstars-devel mailing list Kstars-devel@... https://mail.kde.org/mailman/listinfo/kstars-devel |
| Free embeddable forum powered by Nabble | Forum Help |