summaryrefslogtreecommitdiffstats
path: root/konquest/planet_info.cc
diff options
context:
space:
mode:
Diffstat (limited to 'konquest/planet_info.cc')
-rw-r--r--konquest/planet_info.cc161
1 files changed, 161 insertions, 0 deletions
diff --git a/konquest/planet_info.cc b/konquest/planet_info.cc
new file mode 100644
index 00000000..4c1d4be1
--- /dev/null
+++ b/konquest/planet_info.cc
@@ -0,0 +1,161 @@
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qpalette.h>
+#include <qcolor.h>
+#include <kapplication.h>
+#include <klocale.h>
+
+#include "planet_info.h"
+#include <kglobal.h>
+#include "planet_info.moc"
+
+PlanetInfo::PlanetInfo( QWidget *parent, QPalette palette )
+ : QFrame( parent )
+{
+ setPalette( palette );
+
+ name = new QLabel( this );
+ name->setMinimumWidth( 100 );
+ owner = new QLabel( this );
+ owner->setMinimumWidth( 100 );
+ ships = new QLabel( this );
+ ships->setMinimumWidth( 100 );
+ production = new QLabel( this );
+ production->setMinimumWidth( 100 );
+ kill_percent = new QLabel( this );
+ kill_percent->setMinimumWidth( 100 );
+
+ clearDisplay();
+
+ QVBoxLayout *layout1 = new QVBoxLayout( this );
+
+ layout1->addWidget( name );
+ layout1->addWidget( owner );
+ layout1->addWidget( ships );
+ layout1->addWidget( production );
+ layout1->addWidget( kill_percent );
+ layout1->addStretch(1);
+
+ setMouseTracking( true );
+
+ setMinimumSize( sizeHint() );
+ setMaximumHeight( sizeHint().height() );
+}
+
+PlanetInfo::~PlanetInfo()
+{
+ emptyPlanetInfoList();
+}
+
+QSize PlanetInfo::sizeHint() const
+{
+ int height;
+
+ height = name->sizeHint().height() +
+ owner->sizeHint().height() +
+ ships->sizeHint().height() +
+ production->sizeHint().height()+
+ kill_percent->sizeHint().height();
+
+ return QSize( 100, height );
+}
+
+void PlanetInfo::setPlanetList( PlanetList &newPlanets )
+{
+ emptyPlanetInfoList();
+
+ PlanetListIterator itr( newPlanets );
+
+ Planet *p;
+ while( (p = itr()) ) {
+ planet_info_buffer *stats = new planet_info_buffer;
+ stats->planet = p;
+ planet_stats.append( stats );
+ }
+
+ rescanPlanets();
+}
+
+void PlanetInfo::rescanPlanets()
+{
+ PlanetInfoListIterator itr( planet_stats );
+ planet_info_buffer *p;
+
+ while( (p = itr()) ) {
+ p->production = p->planet->getProduction();
+ p->ships = p->planet->getFleet().getShipCount();
+ p->killRate = p->planet->getKillPercentage();
+ }
+}
+
+void PlanetInfo::clearDisplay()
+{
+ QString temp;
+
+ temp = "<qt>" + i18n("Planet name: ");
+ name->setText( temp );
+
+ temp = "<qt>" + i18n("Owner: ");
+ owner->setText( temp );
+
+ temp = "<qt>" + i18n("Ships: ");
+ ships->setText( temp );
+
+ temp = "<qt>" + i18n("Production: ");
+ production->setText( temp );
+
+ temp = "<qt>" + i18n("Kill percent: ");
+ kill_percent->setText( temp );
+}
+
+void PlanetInfo::emptyPlanetInfoList()
+{
+ planet_stats.first();
+
+ planet_info_buffer *p;
+ while( (p = planet_stats.take()) ) {
+ delete p;
+ }
+
+}
+
+void PlanetInfo::showPlanet( Planet *planet )
+{
+ if( planet->getPlayer()->isNeutral() ) {
+ clearDisplay();
+
+ QString temp;
+
+ temp = "<qt>" + i18n("Planet name: %1").arg(planet->getName());
+ name->setText( temp );
+ return;
+ }
+
+ QString nameToShow = planet->getName();
+
+ PlanetInfoListIterator itr( planet_stats );
+ planet_info_buffer *p;
+
+ while( (p = itr()) ) {
+ if( p->planet == planet ) {
+
+ QString temp;
+
+ temp = "<qt>" + i18n("Planet name: %1").arg(p->planet->getName());
+ name->setText( temp );
+
+ temp = "<qt>" + i18n("Owner: %1").arg(p->planet->getPlayer()->getColoredName());
+ owner->setText( temp );
+
+ temp = "<qt>" + i18n("Ships: %1").arg( KGlobal::locale()->formatNumber(p->ships, 0) );
+ ships->setText( temp );
+
+ temp = "<qt>" + i18n("Production: %1").arg( KGlobal::locale()->formatNumber(p->production, 0) );
+ production->setText( temp );
+
+ temp = "<qt>" + i18n("Kill percent: %1").arg( KGlobal::locale()->formatNumber(p->killRate, 3) );
+ kill_percent->setText( temp );
+ }
+ }
+}
+