BSView::BSView(QWidget *parent, BSDoc *doc) : QSplitter(parent)
{
/** connect doc with the view*/
- connect(doc, SIGNAL(documentChanged()), this, SLOT(slotDocumentChanged()));
+ connect(doc, SIGNAL(documentChanged()), this, SLOT(slotDocumentChanged()));
m_doc = doc;
m_NumberView->addColumn("ETA");
//addBattle("NO BATTLES");
+
+
+ connect(m_NumberView, SIGNAL(expanded(QListViewItem*)), SLOT(slotItemExpanded(QListViewItem*)));
+ connect(m_NumberView, SIGNAL(collapsed(QListViewItem*)), SLOT(slotItemCollapsed(QListViewItem*)));
+
m_InfoView = new InfoView(m_LeftSplit);
+
+ vector<QString> raceNames;
+ const map<string, vector<int> >& races = Fleet::Races();
+ for(map<string, vector<int> >::const_iterator i = races.begin(); i != races.end(); ++i)
+ {
+ raceNames.push_back(i->first.c_str());
+ }
+ m_InfoView->setRaces(raceNames);
//the right side
m_TickView = new TickView(m_RightSplit);
m_FleetViews = new QWidgetStack(m_RightSplit);
m_ScanView = new ScanView(m_RightSplit);
+ Fleet fl1;
+ //fl1.setRace(tr("Terran").latin1());
+ fl1.setRace("Terran");
+ Fleet fl2;
+ fl2.setRace(tr("Generic").latin1());
+
//the widget stack
m_BattleSum = new BattleSum();
m_FleetViews->addWidget(m_BattleSum, 0);
- m_FleetView = new FleetView(Fleet(), true, true);
+ m_FleetView = new FleetView(fl1, true, true);
m_FleetViews->addWidget(m_FleetView, 1);
-
+ m_GenericFleetView = new FleetView(fl2, true, false);
+ m_FleetViews->addWidget(m_GenericFleetView, 2);
//m_FleetViews->raiseWidget(0);
connect(m_NumberView, SIGNAL(selectionChanged(QListViewItem *)), SLOT(slotFleetSelection(QListViewItem *)));
}
{
QString b = (*i).first;
QListViewItem* battle = new QListViewItem(m_NumberView, b);
+ battle->setOpen(m_TreeExpanded[b]["--"]);
+
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;
+ group->setOpen(m_TreeExpanded[b][g]);
for (map<QString, Fleet>::const_iterator k = j->second.begin(); k != j->second.end(); ++k)
{
{
// m_FleetView->slotAttacker(true);
}
- m_FleetViews->raiseWidget(1);
+ m_FleetViews->raiseWidget(2);
}
else
}
}
Fleet fl = m_doc->specificFleet(battle, group, fleet);
- if (fl.Race() == m_FleetView->fleet().Race() &&
- m_FleetView->isHome() == home)
+ m_InfoView->setRace(fl.Race().c_str());
+ m_InfoView->setFleetName(fleet);
+ m_InfoView->setEta(fl.ETA());
+ if (fl.Race() == tr("Generic").latin1())
{
- m_FleetView->viewFleet(fl, friendly);
+ m_GenericFleetView->viewFleet(fl, friendly);
+ m_FleetViews->raiseWidget(2);
+
}
- else
+ else
{
- m_FleetViews->removeWidget(m_FleetView);
- m_FleetView = new FleetView(fl, friendly, home);
- m_FleetViews->addWidget(m_FleetView, 1);
+ if (fl.Race() == m_FleetView->fleet().Race() &&
+ m_FleetView->isHome() == home)
+ {
+ m_FleetView->viewFleet(fl, friendly);
+ }
+ else
+ {
+ m_FleetViews->removeWidget(m_FleetView);
+ m_FleetView = new FleetView(fl, friendly, home);
+ m_FleetViews->addWidget(m_FleetView, 1);
+ }
+ m_FleetViews->raiseWidget(1);
}
- m_FleetViews->raiseWidget(1);
}
+}
-
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::slotItemExpanded(QListViewItem *lvi)
+{
+ if (lvi->parent() == '\0')
+ {
+ m_TreeExpanded[lvi->text(0)]["--"] = true;
+ }
+ else if (lvi->parent()->parent() == '\0')
+ {
+ m_TreeExpanded[lvi->parent()->text(0)][lvi->text(0)] = true;
+ }
}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::slotItemCollapsed(QListViewItem *lvi)
+{
+ if (lvi->parent() == '\0')
+ {
+ m_TreeExpanded[lvi->text(0)]["--"] = false;
+ }
+ else if (lvi->parent()->parent() == '\0')
+ {
+ m_TreeExpanded[lvi->parent()->text(0)][lvi->text(0)] = false;
+ }
+}
+