--- /dev/null
+/***************************************************************************
+ 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 <qvalidator.h>
+
+#include <iostream>
+#include <map>
+
+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<const Planet*>(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<const Planet*>(fleet));
+ }
+ else
+ {
+ m_Fleet = new Fleet(*fleet);
+ }
+ fillTable();
+}
+
+/////////////////////////////////////////////////////////////////////
+//
+void FleetView::findNames()
+{
+ m_Names.clear();
+
+ const UnitList& units = Fleet::Units();
+ vector<int> races = m_Fleet->RacesAllowed();
+
+ for (UnitList::const_iterator i = units.begin(); i != units.end(); ++i)
+ {
+ for (vector<int>::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<QString>::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<QString>::iterator i = m_Names.begin(); i != m_Names.end(); ++i)
+ {
+ m_UnitsEdit[(*i)]->setText(QString("%1").arg(m_Fleet->fleet(i->latin1(), 0)));
+ }
+}
+
+
--- /dev/null
+/***************************************************************************
+ 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 <map>
+#include <vector>
+
+#include <qwidget.h>
+#include <qlayout.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qsignalmapper.h>
+
+#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<QString> m_Names;
+ std::map<QString, QLabel*> m_UnitsLabel;
+ std::map<QString, QLineEdit*> m_UnitsEdit;
+ std::map<QString, QLineEdit*> m_UnitsLostSurvivedView;
+};
+
+#endif