]> ruin.nu Git - hbs.git/blobdiff - bs/bsview.cpp
fleetview now generates the correct "unit table" when it's created.
[hbs.git] / bs / bsview.cpp
index 1906dda16732358ee4452f3be5b00c6e0b99469f..f7f3aa8a771b30783c4058810d2f987a7fa14f75 100644 (file)
@@ -33,7 +33,7 @@ using namespace std;
 #include "scanview.h"
 #include "ui/infoview.h"
 #include "tickview.h"
-#include "ui/fleetviewbase.h"
+#include "fleetview.h"
 #include "fleet.h"
 
 BSView::BSView(QWidget *parent, BSDoc *doc) : QSplitter(parent)
@@ -64,7 +64,7 @@ BSView::BSView(QWidget *parent, BSDoc *doc) : QSplitter(parent)
        //the widget stack
        m_BattleSum = new BattleSum();
        m_FleetViews->addWidget(m_BattleSum, 0);
-       m_FleetView = new FleetViewBase();
+       m_FleetView = new FleetView(Fleet(), true, true);
        m_FleetViews->addWidget(m_FleetView, 1);
 
        //m_FleetViews->raiseWidget(0);
@@ -94,22 +94,26 @@ void BSView::slotDocumentChanged()
 {
        m_NumberView->clear();
        
-       map<QString, map<QString, map<QString, Fleet> > >& battles = m_doc->Battles();  
+       const map<QString, map<QString, map<QString, Fleet> > >& battles = m_doc->battles();    
 
-       for (map<QString, map<QString, map<QString, Fleet> > >::iterator i = battles.begin(); i != battles.end(); i++)
+       for (map<QString, map<QString, map<QString, Fleet> > >::const_iterator i = battles.begin(); i != battles.end(); ++i)
        {
                QString b = (*i).first;
                QListViewItem* battle = new QListViewItem(m_NumberView, b);
 
-               for (map<QString, map<QString, Fleet> >::iterator j = battles[b].begin(); j != battles[b].end(); j++)
+               for (map<QString, map<QString, Fleet> >::const_iterator j = i->second.begin(); j != i->second.end(); ++j)
                {
                        QString g = (*j).first;
                        QListViewItem* group = new QListViewItem(battle, g);
+                       int groupShips = 0;
 
-                       for (map<QString, Fleet>::iterator k = battles[b][g].begin(); k != battles[b][g].end(); k++)
-                       {                               
-                               (void) new QListViewItem(group, (*k).first);
+                       for (map<QString, Fleet>::const_iterator k = j->second.begin(); k != j->second.end(); ++k)
+                       {       
+                               int ships = k->second.NumberOfShips();
+                               groupShips += ships;
+                               (void) new QListViewItem(group, (*k).first, QString("%1").arg(ships), QString("%1").arg(k->second.ETA()));
                        }
+                       group->setText(1, QString("%1").arg(groupShips));
                }
        }
 }
@@ -129,36 +133,46 @@ void BSView::slotFleetSelection(QListViewItem *lvi)
        }
        else if (lvi->parent()->parent() == '\0')
        {
-                       m_FleetView->slotHomePlanet(false);
+//                     m_FleetView->slotHomePlanet(false);
                if (lvi->text(0) == tr("Friendly"))
                {
-                       m_FleetView->slotAttacker(false);
+//                     m_FleetView->slotAttacker(false);
                }
                else
                {
-                       m_FleetView->slotAttacker(true);
+//                     m_FleetView->slotAttacker(true);
                }
                m_FleetViews->raiseWidget(1);
                
        }
        else
        {
-               if (lvi->parent()->text(0) == tr("Friendly"))
+               bool home = false;
+               bool friendly = false;
+               QString fleet = lvi->text(0);
+               QString group = lvi->parent()->text(0);
+               QString battle = lvi->parent()->parent()->text(0);
+               if ( group == tr("Friendly"))
                {
-                       m_FleetView->slotAttacker(false);
-                       m_FleetView->slotHomePlanet(false);
-                       if (lvi->text(0) == tr("Home Planet"))
+                       friendly = true;
+                       if ( fleet == tr("Home Planet"))
                        {
-                               m_FleetView->slotHomePlanet(true);
+                               home = true;
                        }
                }
+               Fleet fl = m_doc->specificFleet(battle, group, fleet);
+               if (fl.Race() == m_FleetView->fleet().Race() &&
+                       m_FleetView->isHome() == home)
+               {
+                       m_FleetView->viewFleet(fl, friendly);
+               }
                else
                {
-                       m_FleetView->slotAttacker(true);
-                       m_FleetView->slotHomePlanet(false);
+                       m_FleetViews->removeWidget(m_FleetView);
+                       m_FleetView = new FleetView(fl, friendly, home);
+                       m_FleetViews->addWidget(m_FleetView, 1);
                }
                m_FleetViews->raiseWidget(1);
-                               
        }