]> ruin.nu Git - hbs.git/blobdiff - bs/bsview.cpp
started to work on the battle report.. almost there =)
[hbs.git] / bs / bsview.cpp
index ccf334158c714641a2eaac86a39c32794364ccc4..c6fcc46efe831d4f2975572ff26626a0589be94c 100644 (file)
@@ -28,11 +28,13 @@ using namespace std;
 //QT includes
 #include <qlistview.h>
 #include <qwidgetstack.h>
+#include <qtabwidget.h>
+#include <qtextedit.h>
 
 #include "battlesum.h"
 #include "scanview.h"
 #include "ui/infoview.h"
-#include "tickview.h"
+//#include "tickview.h"
 #include "fleetview.h"
 #include "fleet.h"
 #include "planet.h"
@@ -40,6 +42,10 @@ using namespace std;
 BSView::BSView(QWidget *parent, BSDoc *doc) : QSplitter(parent)
 {
   /** connect doc with the view*/
+
+       m_iMaxTick = 0;
+       m_iMinTick = 0;
+       m_iResultMode = 0;
        
        m_bMoreDocChanges = false;
        connect(doc, SIGNAL(documentChanged()), this, SLOT(slotDocumentChanged()));
@@ -47,7 +53,16 @@ BSView::BSView(QWidget *parent, BSDoc *doc) : QSplitter(parent)
        m_doc = doc;
        
        m_LeftSplit = new QSplitter(QSplitter::Vertical, this);
-       m_RightSplit = new QSplitter(QSplitter::Vertical, this);
+
+       m_Pages = new QTabWidget(this);
+
+       m_RightSplit = new QSplitter(QSplitter::Vertical);
+       m_Pages->addTab(m_RightSplit, tr("Units"));
+       
+       m_Report = new QTextEdit();
+       m_Report->setReadOnly(true);
+       m_Pages->addTab(m_Report, tr("Report"));
+
 
        //setting up the listview
        m_NumberView = new QListView(m_LeftSplit);
@@ -79,7 +94,7 @@ BSView::BSView(QWidget *parent, BSDoc *doc) : QSplitter(parent)
        m_InfoView->setRaces(raceNames);
        
        //the right side
-       m_TickView = new TickView(m_RightSplit);
+       //m_TickView = new TickView(m_RightSplit);
        m_FleetViews = new QWidgetStack(m_RightSplit);
        m_ScanView = new ScanView(m_RightSplit);
        
@@ -96,12 +111,14 @@ BSView::BSView(QWidget *parent, BSDoc *doc) : QSplitter(parent)
        m_FleetViews->addWidget(m_FleetView, 1);
        m_GenericFleetView = new FleetView(&fl2, true);
        m_FleetViews->addWidget(m_GenericFleetView, 2);
+       m_FleetView->slotViewTickRange(m_iMinTick, m_iMaxTick);
+       m_GenericFleetView->slotViewTickRange(m_iMinTick, m_iMaxTick);
+
        //m_FleetViews->raiseWidget(0);
        connect(m_NumberView, SIGNAL(selectionChanged(QListViewItem *)), SLOT(slotFleetSelection(QListViewItem *)));
        connect(m_FleetView, SIGNAL(fleetChanged(const Fleet*)), SLOT(slotFleetChanged(const Fleet*)));
        connect(m_GenericFleetView, SIGNAL(fleetChanged(const Fleet*)), SLOT(slotFleetChanged(const Fleet*)));
-       connect(m_TickView, SIGNAL(ticksChanged(int,int)), m_FleetView, SLOT(slotViewTickRange(int,int)));
-       connect(m_TickView, SIGNAL(ticksChanged(int,int)), m_GenericFleetView, SLOT(slotViewTickRange(int,int)));
+       connect(m_ScanView, SIGNAL(scanUsed(int,QString, int)), SLOT(slotUseScan(int, QString, int)));
 }
 
 BSView::~BSView()
@@ -197,7 +214,13 @@ void BSView::slotFleetSelection(QListViewItem *lvi)
        {
                m_sFleet = lvi->text(0);
                m_sGroup = lvi->parent()->text(0);
-               m_sBattle = lvi->parent()->parent()->text(0);
+               QString temp = lvi->parent()->parent()->text(0);
+
+               if (temp != m_sBattle)
+               {
+                       m_sBattle = temp;
+                       slotGenerateReport();
+               }
 
                updateInfoView();
                updateFleetView();
@@ -273,6 +296,7 @@ void BSView::slotInfoApply()
        fl->setETA(m_InfoView->eta());
        fl->setName(m_sFleet.latin1());
        fl->setRace(m_InfoView->race().latin1());
+       fl->setStays(m_InfoView->stays());
        
        m_doc->newFleet(m_sBattle, m_sGroup, m_sFleet, fl);
 }
@@ -312,6 +336,7 @@ void BSView::slotInfoNew()
        fl->setETA(m_InfoView->eta());
        fl->setName(m_sFleet.latin1());
        fl->setRace(m_InfoView->race().latin1());
+       fl->setStays(m_InfoView->stays());
 
        m_doc->newFleet(m_sBattle, m_sGroup, m_sFleet, fl);
 
@@ -360,6 +385,7 @@ void BSView::updateInfoView()
        m_InfoView->setEta(fl->ETA());
        m_InfoView->setGroup(m_sGroup);
        m_InfoView->setBattle(m_sBattle);
+       m_InfoView->setStays(fl->stays());
 }
 
 //////////////////////////////////////////////////////////////////////////
@@ -402,10 +428,92 @@ void BSView::updateFleetView()
                        delete m_FleetView;
                        m_FleetView = new FleetView(fl, friendly);
                        connect(m_FleetView, SIGNAL(fleetChanged(const Fleet*)), SLOT(slotFleetChanged(const Fleet*)));
-                       connect(m_TickView, SIGNAL(ticksChanged(int,int)), m_FleetView, SLOT(slotViewTickRange(int,int)));
+                       m_FleetView->slotViewTickRange(m_iMinTick, m_iMaxTick);
+                       m_FleetView->slotSetResultMode(m_iResultMode);
                        m_FleetViews->addWidget(m_FleetView, 1);
                }
                m_FleetViews->raiseWidget(2);
                m_FleetViews->raiseWidget(1);
        }
 }
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::slotTickChanged(int min, int max)
+{
+       m_FleetView->slotViewTickRange(min, max);
+       m_GenericFleetView->slotViewTickRange(min, max);
+
+       m_iMinTick = min;
+       m_iMaxTick = max;
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::slotResultModeChanged( int i)
+{
+       m_FleetView->slotSetResultMode(i);
+       m_GenericFleetView->slotSetResultMode(i);
+       
+       m_iResultMode = i;
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::slotUseScan(int action, QString text, int fleets)
+{
+       cerr << "Action: " << action << endl;
+       cerr << "Text: " << text.latin1() << endl;
+       cerr << "Fleets: " << fleets << endl;
+}
+
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::slotGenerateReport()
+{
+       const Fleet *fl = m_doc->specificFleet(m_sBattle, "Friendly", "Home Planet");
+       
+       const Planet* pl = dynamic_cast<const Planet*>(fl);
+       if (pl)
+       {
+               ReportList report = pl->report();
+               QString t;
+               
+               t.append("<qt>\n");
+               
+
+               for (ReportList::iterator i = report.begin(); i != report.end(); ++i)
+               {
+                       t.append(QString("Tick number: %0\n").arg(i->first));
+                       t.append("<ul>\n");
+                       for(map<int, map<string, map<string, map<string, int> > > >::iterator j = i->second.begin(); j != i->second.end(); ++j)
+                       {
+                               t.append(QString("<li>Now handling initiative: %0\n").arg(j->first));
+                               t.append("<ul type=circle>\n");
+                               for(map<string, map<string, map<string, int> > >::iterator k = j->second.begin(); k != j->second.end(); ++k)
+                               {
+                                       for(map<string, map<string, int> >::iterator l = k->second.begin(); l != k->second.end(); ++l)
+                                       {
+                                               t.append(QString("<li>%0 %1 %2 killing/blocking at: \n").arg(l->second["000"]).arg(k->first.c_str()).arg(l->first.c_str()));
+                                               t.append("<ul type=square>\n");
+
+                                               t.append("</ul>\n");
+                                               t.append("</li>\n");
+                                       }
+                               }
+                               t.append("</ul>\n");
+                               t.append("</li>\n");
+                       }
+                       t.append("</ul>\n");
+
+                       t.append("<hr>\n");
+               }
+               t.append("</qt>\n");
+               //cerr << t.latin1();
+               m_Report->clear();
+               m_Report->setText(t);
+
+       }
+       //m_Report->append("<b>test\n<b>");
+}