From 07acf9a898e295587b9034bee6b8682e11a97086 Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Fri, 5 Apr 2002 22:50:09 +0000 Subject: [PATCH] added the possibility to edit fleets --- bs/bsdoc.cpp | 19 +++++++++++++++++++ bs/bsdoc.h | 2 ++ bs/bsview.cpp | 27 +++++++++++++++++++-------- bs/bsview.h | 5 +++++ bs/fleet.cpp | 23 +++++++++++++++++++++++ bs/fleet.h | 3 +++ bs/planet.cpp | 4 +++- bs/ui/resourceview.ui | 20 +++++++++++--------- bs/ui/roidseditview.ui | 12 ++++++------ 9 files changed, 91 insertions(+), 24 deletions(-) diff --git a/bs/bsdoc.cpp b/bs/bsdoc.cpp index 5bf5f46..07b02fc 100644 --- a/bs/bsdoc.cpp +++ b/bs/bsdoc.cpp @@ -106,4 +106,23 @@ const Fleet* BSDoc::specificFleet(QString battle, QString group, QString fleet) return '\0'; } +////////////////////////////////////////////////////////////////////////// +// +void BSDoc::changeFleet(QString battle, QString group, QString fleet, const Fleet* fl) +{ + delete m_Battles[battle][group][fleet]; + + const Planet* planet = 0; + if((planet = dynamic_cast(fl))) + { + m_Battles[battle][group][fleet] = new Planet(*planet); + } + else + { + m_Battles[battle][group][fleet] = new Fleet(*fl); + } + emit documentChanged(); +} + + diff --git a/bs/bsdoc.h b/bs/bsdoc.h index 977491d..1477409 100644 --- a/bs/bsdoc.h +++ b/bs/bsdoc.h @@ -69,6 +69,8 @@ class BSDoc : public QObject */ const Fleet* specificFleet(QString battle, QString group, QString fleet) const; + void changeFleet(QString battle, QString group, QString fleet, const Fleet* fl); + signals: void documentChanged(); diff --git a/bs/bsview.cpp b/bs/bsview.cpp index 2dfe3f3..5158fe4 100644 --- a/bs/bsview.cpp +++ b/bs/bsview.cpp @@ -89,7 +89,9 @@ BSView::BSView(QWidget *parent, BSDoc *doc) : QSplitter(parent) m_GenericFleetView = new FleetView(&fl2, true); m_FleetViews->addWidget(m_GenericFleetView, 2); //m_FleetViews->raiseWidget(0); - connect(m_NumberView, SIGNAL(selectionChanged(QListViewItem *)), SLOT(slotFleetSelection(QListViewItem *))); + 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*))); } BSView::~BSView() @@ -177,18 +179,18 @@ void BSView::slotFleetSelection(QListViewItem *lvi) { bool friendly = false; bool home = false; - QString fleet = lvi->text(0); - QString group = lvi->parent()->text(0); - QString battle = lvi->parent()->parent()->text(0); - if ( group == tr("Friendly")) + m_sFleet = lvi->text(0); + m_sGroup = lvi->parent()->text(0); + m_sBattle = lvi->parent()->parent()->text(0); + if ( m_sGroup == tr("Friendly")) { friendly = true; - if(fleet == tr("Home Planet")) + if(m_sFleet == tr("Home Planet")) home=true; } - const Fleet* fl = m_doc->specificFleet(battle, group, fleet); + const Fleet* fl = m_doc->specificFleet(m_sBattle, m_sGroup, m_sFleet); m_InfoView->setRace(fl->race().c_str()); - m_InfoView->setFleetName(fleet); + m_InfoView->setFleetName(m_sFleet); m_InfoView->setEta(fl->ETA()); if (fl->race() == tr("Generic").latin1()) { @@ -206,7 +208,9 @@ void BSView::slotFleetSelection(QListViewItem *lvi) else { m_FleetViews->removeWidget(m_FleetView); + delete m_FleetView; m_FleetView = new FleetView(fl, friendly); + connect(m_FleetView, SIGNAL(fleetChanged(const Fleet*)), SLOT(slotFleetChanged(const Fleet*))); m_FleetViews->addWidget(m_FleetView, 1); } m_FleetViews->raiseWidget(1); @@ -242,3 +246,10 @@ void BSView::slotItemCollapsed(QListViewItem *lvi) } } +////////////////////////////////////////////////////////////////////////// +// +void BSView::slotFleetChanged(const Fleet* fleet) +{ + m_doc->changeFleet(m_sBattle, m_sGroup, m_sFleet, fleet); +} + diff --git a/bs/bsview.h b/bs/bsview.h index f33fce3..789a6d4 100644 --- a/bs/bsview.h +++ b/bs/bsview.h @@ -54,6 +54,7 @@ class BSView : public QSplitter protected slots: void slotDocumentChanged(); + void slotFleetChanged(const Fleet*); protected: BattleSum *m_BattleSum; @@ -68,6 +69,10 @@ class BSView : public QSplitter FleetView *m_GenericFleetView; BSDoc *m_doc; std::map > m_TreeExpanded; + + QString m_sBattle; + QString m_sGroup; + QString m_sFleet; public slots: // Public slots /** No descriptions */ diff --git a/bs/fleet.cpp b/bs/fleet.cpp index cb15df5..1133417 100644 --- a/bs/fleet.cpp +++ b/bs/fleet.cpp @@ -174,3 +174,26 @@ unsigned Fleet::score(int tick = 0) const return tot_score; } +////////////////////////////////////////////////////////////////////////// +// +void Fleet::setFleet(string unittype, int number) +{ + if (m_Fleet[unittype].size() == 0) + { + m_Fleet[unittype].push_back(number); + return; + } + m_Fleet[unittype][0] = number; +} + +////////////////////////////////////////////////////////////////////////// +// +int Fleet::fleet(string unittype, int tick = 0) +{ + if (m_Fleet[unittype].size() == 0) + return 0; + + return m_Fleet[unittype][tick]; +} + + diff --git a/bs/fleet.h b/bs/fleet.h index c156545..b90b15e 100644 --- a/bs/fleet.h +++ b/bs/fleet.h @@ -87,6 +87,9 @@ public: */ virtual unsigned score(int tick = 0) const; + void setFleet(std::string unittype, int number); + int fleet(std::string unittype, int tick = 0); + static void setRaces(RaceList& races); static void setUnits(UnitList& units); diff --git a/bs/planet.cpp b/bs/planet.cpp index 03c4537..425861e 100644 --- a/bs/planet.cpp +++ b/bs/planet.cpp @@ -17,7 +17,9 @@ #include "planet.h" -Planet::Planet(){ +Planet::Planet() +{ + m_sRace = "Planet"; } Planet::~Planet(){ } diff --git a/bs/ui/resourceview.ui b/bs/ui/resourceview.ui index 4bc7624..47043bf 100644 --- a/bs/ui/resourceview.ui +++ b/bs/ui/resourceview.ui @@ -10,15 +10,17 @@ 0 0 - 222 - 103 + 198 + 89 - - - 32767 - 110 - + + + 5 + 5 + 0 + 0 + QGroupBoxForm @@ -31,10 +33,10 @@ unnamed - 11 + 5 - 6 + 2 diff --git a/bs/ui/roidseditview.ui b/bs/ui/roidseditview.ui index c968a8e..5e7afcd 100644 --- a/bs/ui/roidseditview.ui +++ b/bs/ui/roidseditview.ui @@ -9,14 +9,14 @@ 0 0 - 219 - 103 + 227 + 115 - + - 32767 - 119 + 0 + 115 @@ -33,7 +33,7 @@ 2 - 0 + 2 -- 2.39.2