]> ruin.nu Git - hbs.git/commitdiff
initial commit
authorMichael Andreen <harv@ruin.nu>
Sat, 6 Apr 2002 15:19:26 +0000 (15:19 +0000)
committerMichael Andreen <harv@ruin.nu>
Sat, 6 Apr 2002 15:19:26 +0000 (15:19 +0000)
bs/fleetview.cpp [new file with mode: 0644]
bs/fleetview.h [new file with mode: 0644]

diff --git a/bs/fleetview.cpp b/bs/fleetview.cpp
new file mode 100644 (file)
index 0000000..d40cfc5
--- /dev/null
@@ -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 <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)));
+       }
+}
+
+       
diff --git a/bs/fleetview.h b/bs/fleetview.h
new file mode 100644 (file)
index 0000000..a2bbaaf
--- /dev/null
@@ -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 <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