//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"
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()));
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);
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);
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_ScanView, SIGNAL(scanUsed(int,QString, int)), SLOT(slotUseScan(int, QString, int)));
}
BSView::~BSView()
*/
void BSView::slotDocumentChanged()
{
+ if (m_bMoreDocChanges)
+ return;
+
m_NumberView->clear();
const BattleList& battles = m_doc->battles();
}
m_InfoView->setBattles(battlenames);
updateInfoView();
+ setCurrentListViewItem();
updateFleetView();
}
if (lvi->parent() == '\0')
{
m_FleetViews->raiseWidget(0);
+ m_sFleet = QString::null;
+ m_sGroup = QString::null;
+ QString temp = lvi->text(0);
+
+ if (temp != m_sBattle)
+ {
+ m_sBattle = temp;
+ slotGenerateReport();
+ }
}
else if (lvi->parent()->parent() == '\0')
{
+ m_sFleet = QString::null;
+ m_sGroup = lvi->text(0);
+ QString temp = lvi->parent()->text(0);
+
+ if (temp != m_sBattle)
+ {
+ m_sBattle = temp;
+ slotGenerateReport();
+ }
+
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(2);
{
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();
//
void BSView::slotInfoApply()
{
+ QString battle = m_InfoView->battle();
+ QString group = m_InfoView->group();
+ QString fleet = m_InfoView->fleetName();
+
+
+
+ const Fleet* old = m_doc->specificFleet(m_sBattle, m_sGroup, m_sFleet);
+
+ const Planet* oldpl = dynamic_cast<const Planet*>(old);
+
+ Fleet* fl;
+ if(oldpl)
+ fl = new Planet(*oldpl);
+ else
+ fl = new Fleet(*old);
+
+
+
+ m_bMoreDocChanges = true;
+ m_doc->removeFleet(m_sBattle, m_sGroup, m_sFleet);
+ m_bMoreDocChanges = false;
+
+ m_sBattle = battle;
+ m_sGroup = group;
+ m_sFleet = fleet;
+
+
+ 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);
}
//////////////////////////////////////////////////////////////////////////
//
void BSView::slotInfoNew()
{
+
+ QString battle = m_InfoView->battle();
+ QString group = m_InfoView->group();
+ QString fleet = m_InfoView->fleetName();
+
+ const Fleet* fl1 = m_doc->specificFleet(battle, group, fleet);
+ if (fl1)
+ {
+ //fleet does already exist, do not overwrite.
+ //Need something else here....
+ return;
+ }
+
+
+
Fleet* fl = new Fleet();
- m_sBattle = m_InfoView->battle();
- m_sGroup = m_InfoView->group();
- m_sFleet = m_InfoView->fleetName();
+ m_sBattle = battle;
+ m_sGroup = group;
+ m_sFleet = fleet;
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);
//
void BSView::slotInfoRemove()
{
+ m_doc->removeFleet(m_sBattle, m_sGroup, m_sFleet);
+ m_sFleet = "";
}
//////////////////////////////////////////////////////////////////////////
if(!fl)
{
- m_InfoView->setRace("");
m_InfoView->setFleetName("");
m_InfoView->setEta(0);
- m_InfoView->setGroup("");
- m_InfoView->setBattle("");
m_InfoView->enableNameChange(true);
m_InfoView->enableRemove(false);
return;
}
+ m_InfoView->setGroup(m_sGroup);
+ m_InfoView->setBattle(m_sBattle);
- if(m_sFleet == tr("Home Planet"))
+/* NO LONGER NEEDED SINCE IT'S INTEGRATED IN THE InfoView CLASS
+ * if(m_sFleet == tr("Home Planet") && m_sGroup == tr("Friendly"))
{
- m_InfoView->enableNameChange(false);
- m_InfoView->enableRemove(false);
+ //m_InfoView->enableNameChange(false);
+ //m_InfoView->enableRemove(false);
}
else
{
m_InfoView->enableNameChange(true);
m_InfoView->enableRemove(true);
}
+*/
m_InfoView->setRace(fl->race().c_str());
m_InfoView->setFleetName(m_sFleet);
m_InfoView->setEta(fl->ETA());
m_InfoView->setGroup(m_sGroup);
m_InfoView->setBattle(m_sBattle);
+ m_InfoView->setStays(fl->stays());
}
//////////////////////////////////////////////////////////////////////////
delete m_FleetView;
m_FleetView = new FleetView(fl, friendly);
connect(m_FleetView, SIGNAL(fleetChanged(const Fleet*)), SLOT(slotFleetChanged(const Fleet*)));
+ 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)
+ {
+ cerr << "generating....." << endl;
+ 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");
+
+ for(map<string, int>::iterator m = l->second.begin(); m != l->second.end(); ++m)
+ {
+ if (m->first != "000")
+ t.append(QString("<li>%0 %1</li>").arg(m->second).arg(m->first.c_str()));
+ }
+
+ 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>");
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::setCurrentListViewItem()
+{
+ QListViewItemIterator i(m_NumberView);
+ while ( i.current() != 0)
+ {
+ QListViewItem* lvi = i.current();
+ if (lvi->parent() == '\0')
+ {
+ if (m_sFleet.isNull() && m_sGroup.isNull() && m_sBattle == lvi->text(0))
+ {
+ m_NumberView->setCurrentItem(lvi);
+ return;
+ }
+ }
+ else if (lvi->parent()->parent() == '\0')
+ {
+ if (m_sFleet.isNull() && m_sGroup == lvi->text(0) && m_sBattle == lvi->parent()->text(0))
+ {
+ m_NumberView->setCurrentItem(lvi);
+ return;
+ }
+ }
+ else
+ {
+ if (m_sFleet == lvi->text(0) && m_sGroup == lvi->parent()->text(0) && m_sBattle == lvi->parent()->parent()->text(0))
+ {
+ m_NumberView->setCurrentItem(lvi);
+ return;
+ }
+ }
+ ++i;
+ }
+ m_NumberView->setCurrentItem(m_NumberView->firstChild());
+}