1 /***************************************************************************
2 fleetview.cpp - description
4 begin : Sun Mar 10 2002
5 copyright : (C) 2002 by Michael Andreen
7 ***************************************************************************/
9 /***************************************************************************
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
16 ***************************************************************************/
18 #include "fleetview.h"
20 #include "ui/roidseditview.h"
21 #include "ui/resourceview.h"
24 #include <qvalidator.h>
31 FleetView::FleetView(const Fleet* fleet, bool friendly, QWidget *parent, const char *name ) : QWidget(parent,name)
34 const Planet* planet = 0;
35 if((planet = dynamic_cast<const Planet*>(fleet)))
37 m_Fleet = new Planet(*planet);
42 m_Fleet = new Fleet(*fleet);
46 m_bFriendly = friendly;
48 //m_ChangesMapper = new QSignalMapper(this);
52 int rows = m_Names.size() / 3 + m_Names.size() % 3;
53 m_MainLayout = new QVBoxLayout(this,2);
54 m_MainLayout->addSpacing(2);
55 m_UnitsLayout = new QGridLayout(m_MainLayout, rows, 6);
57 //QSpacerItem* space = new QSpacerItem(1, 1);
60 m_MainLayout->addStretch(10);
64 m_RoidsEditView = new RoidsEditView(this);
65 m_MainLayout->addWidget(m_RoidsEditView);
67 m_ResourceView = new ResourceView(this);
68 m_MainLayout->addWidget(m_ResourceView);
72 FleetView::~FleetView(){
75 /////////////////////////////////////////////////////////////////////
77 void FleetView::viewFleet(const Fleet* fleet, bool friendly)
79 if (m_Fleet->race() != fleet->race())
86 m_Fleet = new Planet(*dynamic_cast<const Planet*>(fleet));
90 m_Fleet = new Fleet(*fleet);
95 /////////////////////////////////////////////////////////////////////
97 void FleetView::findNames()
101 const UnitList& units = Fleet::Units();
102 vector<int> races = m_Fleet->RacesAllowed();
104 for (UnitList::const_iterator i = units.begin(); i != units.end(); ++i)
106 for (vector<int>::iterator j = races.begin(); j != races.end(); ++j)
108 if ((*j) == i->second.race())
110 m_Names.push_back(i->first.c_str());
117 /////////////////////////////////////////////////////////////////////
119 void FleetView::buildUnitTable()
122 QIntValidator* val = new QIntValidator(this);
125 for (vector<QString>::iterator i = m_Names.begin(); i != m_Names.end(); ++rows)
127 for ( int cols = 0; i != m_Names.end() && cols < 3; ++i, ++cols)
129 m_UnitsLabel[(*i)] = new QLabel((*i), this);
130 m_UnitsLayout->addWidget(m_UnitsLabel[(*i)], rows, cols*3);
132 m_UnitsEdit[(*i)] = new QLineEdit(this,(*i));
133 m_UnitsEdit[(*i)]->setValidator(val);
134 m_UnitsLayout->addWidget(m_UnitsEdit[(*i)], rows, cols*3+1);
136 m_UnitsLostSurvivedView[(*i)] = new QLineEdit(this);
137 m_UnitsLostSurvivedView[(*i)]->setFocusPolicy(QWidget::NoFocus);
138 m_UnitsLostSurvivedView[(*i)]->setReadOnly(true);
139 m_UnitsLayout->addWidget(m_UnitsLostSurvivedView[(*i)], rows, cols*3+2);
141 connect(m_UnitsEdit[(*i)], SIGNAL(textChanged(const QString&)),this, SLOT(unitsChanged(const QString&)));
147 /////////////////////////////////////////////////////////////////////
149 const Fleet* FleetView::fleet()
154 /////////////////////////////////////////////////////////////////////
156 bool FleetView::isHome()
161 /////////////////////////////////////////////////////////////////////
163 bool FleetView::isFriendly()
168 /////////////////////////////////////////////////////////////////////
170 void FleetView::unitsChanged(const QString& number)
172 m_Fleet->setFleet(sender()->name(), number.toInt());
174 emit fleetChanged(m_Fleet);
177 /////////////////////////////////////////////////////////////////////
179 bool FleetView::isModified()
184 /////////////////////////////////////////////////////////////////////
186 void FleetView::fillTable()
188 for(vector<QString>::iterator i = m_Names.begin(); i != m_Names.end(); ++i)
190 m_UnitsEdit[(*i)]->setText(QString("%1").arg(m_Fleet->fleet(i->latin1(), 0)));