From: Michael Andreen Date: Sat, 6 Apr 2002 15:19:26 +0000 (+0000) Subject: initial commit X-Git-Tag: HBS_0_1_0~29 X-Git-Url: https://ruin.nu/git/?p=hbs.git;a=commitdiff_plain;h=bf9477417304837c7caa6fac90de3eecb5a9dc43 initial commit --- diff --git a/bs/fleetview.cpp b/bs/fleetview.cpp new file mode 100644 index 0000000..d40cfc5 --- /dev/null +++ b/bs/fleetview.cpp @@ -0,0 +1,194 @@ +/*************************************************************************** + fleetview.cpp - description + ------------------- + begin : Sun Mar 10 2002 + copyright : (C) 2002 by Michael Andreen + email : whale@linux.nu + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "fleetview.h" + +#include "ui/roidseditview.h" +#include "ui/resourceview.h" +#include "planet.h" + +#include + +#include +#include + +using namespace std; + +FleetView::FleetView(const Fleet* fleet, bool friendly, QWidget *parent, const char *name ) : QWidget(parent,name) +{ + m_Modified = false; + const Planet* planet = 0; + if((planet = dynamic_cast(fleet))) + { + m_Fleet = new Planet(*planet); + m_bHome = true; + } + else + { + m_Fleet = new Fleet(*fleet); + m_bHome = false; + } + + m_bFriendly = friendly; + + //m_ChangesMapper = new QSignalMapper(this); + + + findNames(); + int rows = m_Names.size() / 3 + m_Names.size() % 3; + m_MainLayout = new QVBoxLayout(this,2); + m_MainLayout->addSpacing(2); + m_UnitsLayout = new QGridLayout(m_MainLayout, rows, 6); + buildUnitTable(); + //QSpacerItem* space = new QSpacerItem(1, 1); + fillTable(); + + m_MainLayout->addStretch(10); + + if (m_bHome) + { + m_RoidsEditView = new RoidsEditView(this); + m_MainLayout->addWidget(m_RoidsEditView); + } + m_ResourceView = new ResourceView(this); + m_MainLayout->addWidget(m_ResourceView); + +} + +FleetView::~FleetView(){ +} + +///////////////////////////////////////////////////////////////////// +// +void FleetView::viewFleet(const Fleet* fleet, bool friendly) +{ + if (m_Fleet->race() != fleet->race()) + { + findNames(); + } + delete m_Fleet; + if(m_bHome) + { + m_Fleet = new Planet(*dynamic_cast(fleet)); + } + else + { + m_Fleet = new Fleet(*fleet); + } + fillTable(); +} + +///////////////////////////////////////////////////////////////////// +// +void FleetView::findNames() +{ + m_Names.clear(); + + const UnitList& units = Fleet::Units(); + vector races = m_Fleet->RacesAllowed(); + + for (UnitList::const_iterator i = units.begin(); i != units.end(); ++i) + { + for (vector::iterator j = races.begin(); j != races.end(); ++j) + { + if ((*j) == i->second.race()) + { + m_Names.push_back(i->first.c_str()); + break; + } + } + } +} + +///////////////////////////////////////////////////////////////////// +// +void FleetView::buildUnitTable() +{ + int rows = 0; + QIntValidator* val = new QIntValidator(this); + val->setBottom(0); + + for (vector::iterator i = m_Names.begin(); i != m_Names.end(); ++rows) + { + for ( int cols = 0; i != m_Names.end() && cols < 3; ++i, ++cols) + { + m_UnitsLabel[(*i)] = new QLabel((*i), this); + m_UnitsLayout->addWidget(m_UnitsLabel[(*i)], rows, cols*3); + + m_UnitsEdit[(*i)] = new QLineEdit(this,(*i)); + m_UnitsEdit[(*i)]->setValidator(val); + m_UnitsLayout->addWidget(m_UnitsEdit[(*i)], rows, cols*3+1); + + m_UnitsLostSurvivedView[(*i)] = new QLineEdit(this); + m_UnitsLostSurvivedView[(*i)]->setFocusPolicy(QWidget::NoFocus); + m_UnitsLostSurvivedView[(*i)]->setReadOnly(true); + m_UnitsLayout->addWidget(m_UnitsLostSurvivedView[(*i)], rows, cols*3+2); + + connect(m_UnitsEdit[(*i)], SIGNAL(textChanged(const QString&)),this, SLOT(unitsChanged(const QString&))); + } + } + +} + +///////////////////////////////////////////////////////////////////// +// +const Fleet* FleetView::fleet() +{ + return m_Fleet; +} + +///////////////////////////////////////////////////////////////////// +// +bool FleetView::isHome() +{ + return m_bHome; +} + +///////////////////////////////////////////////////////////////////// +// +bool FleetView::isFriendly() +{ + return m_bFriendly; +} + +///////////////////////////////////////////////////////////////////// +// +void FleetView::unitsChanged(const QString& number) +{ + m_Fleet->setFleet(sender()->name(), number.toInt()); + m_Modified = true; + emit fleetChanged(m_Fleet); +} + +///////////////////////////////////////////////////////////////////// +// +bool FleetView::isModified() +{ + return m_Modified; +} + +///////////////////////////////////////////////////////////////////// +// +void FleetView::fillTable() +{ + for(vector::iterator i = m_Names.begin(); i != m_Names.end(); ++i) + { + m_UnitsEdit[(*i)]->setText(QString("%1").arg(m_Fleet->fleet(i->latin1(), 0))); + } +} + + diff --git a/bs/fleetview.h b/bs/fleetview.h new file mode 100644 index 0000000..a2bbaaf --- /dev/null +++ b/bs/fleetview.h @@ -0,0 +1,83 @@ +/*************************************************************************** + fleetview.h - description + ------------------- + begin : Sun Mar 10 2002 + copyright : (C) 2002 by Michael Andreen + email : whale@linux.nu + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef FLEETVIEW_H +#define FLEETVIEW_H + +#include +#include + +#include +#include +#include +#include +#include + +#include "fleet.h" + +class RoidsEditView; +class ResourceView; + +/** + *@author Michael Andreen + */ +class FleetView : public QWidget +{ + Q_OBJECT +public: + FleetView(const Fleet* fleet, bool friendly, QWidget *parent=0, const char *name=0); + ~FleetView(); + + void viewFleet(const Fleet* fleet, bool friendly); + + const Fleet* fleet(); + bool isHome(); + bool isFriendly(); + + bool isModified(); + +signals: + void fleetChanged(const Fleet*); + +protected slots: + void unitsChanged(const QString& number); + +protected: + void findNames(); + void buildUnitTable(); + void fillTable(); + + QVBoxLayout* m_MainLayout; + QGridLayout* m_UnitsLayout; + QLabel* m_UnitName; + + RoidsEditView* m_RoidsEditView; + ResourceView* m_ResourceView; + + Fleet* m_Fleet; + bool m_bHome; + bool m_bFriendly; + + bool m_Modified; + + std::vector m_Names; + std::map m_UnitsLabel; + std::map m_UnitsEdit; + std::map m_UnitsLostSurvivedView; +}; + +#endif