]> ruin.nu Git - hbs.git/blobdiff - bs/bsview.cpp
added the possibility to add new fleets..
[hbs.git] / bs / bsview.cpp
index 6f0bf311fd01af1d5b219282107a996d38f1faf8..f5e74bc82324a8f93440976d6b9bddad7cc388b9 100644 (file)
@@ -62,6 +62,11 @@ BSView::BSView(QWidget *parent, BSDoc *doc) : QSplitter(parent)
        
        m_InfoView = new InfoView(m_LeftSplit);
 
+       connect(m_InfoView,SIGNAL(add()),SLOT(slotInfoNew()));
+       connect(m_InfoView,SIGNAL(apply()),SLOT(slotInfoApply()));
+       connect(m_InfoView,SIGNAL(cancel()),SLOT(slotInfoCancel()));
+       connect(m_InfoView,SIGNAL(remove()),SLOT(slotInfoRemove()));
+
        vector<QString> raceNames;
        const map<string, vector<int> >& races = Fleet::Races();
        for(map<string, vector<int> >::const_iterator i = races.begin(); i != races.end(); ++i)
@@ -154,16 +159,14 @@ void BSView::slotDocumentChanged()
                }
        }
        m_InfoView->setBattles(battlenames);
+       updateInfoView();
+       updateFleetView();
 }
 
 //////////////////////////////////////////////////////////////////////////////
 //
 void BSView::slotFleetSelection(QListViewItem *lvi)
 {
-       //cout << lvi->parent()->text(2).toLocal8bit() << endl;
-//     for (int i = 0; i < 5; i++)
-//             cout << lvi->text(i).local8Bit() << endl;
-       
 
        if (lvi->parent() == '\0')
        {
@@ -171,7 +174,6 @@ void BSView::slotFleetSelection(QListViewItem *lvi)
        }
        else if (lvi->parent()->parent() == '\0')
        {
-//                     m_FleetView->slotHomePlanet(false);
                if (lvi->text(0) == tr("Friendly"))
                {
 //                     m_FleetView->slotAttacker(false);
@@ -185,50 +187,12 @@ void BSView::slotFleetSelection(QListViewItem *lvi)
        }
        else
        {
-               bool friendly = false;
-               bool home       = false;
                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(m_sFleet == tr("Home Planet"))
-                               home=true;
-               }
-
-               const Fleet* fl = m_doc->specificFleet(m_sBattle, m_sGroup, m_sFleet);
-
-               m_InfoView->setRace(fl->race().c_str());
-               m_InfoView->setFleetName(m_sFleet);
-               m_InfoView->setEta(fl->ETA());
-               m_InfoView->setGroup(m_sGroup);
-               m_InfoView->setBattle(m_sBattle);
-
-               if (fl->race() == tr("Generic").latin1())
-               {
-                       m_GenericFleetView->viewFleet(fl, friendly);
-                       m_FleetViews->raiseWidget(2);
-
-               }
-               else 
-               {
-                       if (fl->race() == m_FleetView->fleet()->race() &&
-                       m_FleetView->isHome() == home)
-                       {
-                               m_FleetView->viewFleet(fl, friendly);
-                       }
-                       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);
-               }
+               updateInfoView();
+               updateFleetView();
        }
 }
 
@@ -267,3 +231,121 @@ void BSView::slotFleetChanged(const Fleet* fleet)
        m_doc->changeFleet(m_sBattle, m_sGroup, m_sFleet, fleet);
 }
 
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::slotInfoApply()
+{
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::slotInfoCancel()
+{
+       updateInfoView();
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::slotInfoNew()
+{
+       Fleet* fl = new Fleet();
+
+       m_sBattle = m_InfoView->battle();
+       m_sGroup = m_InfoView->group();
+       m_sFleet = m_InfoView->fleetName();
+
+       fl->setETA(m_InfoView->eta());
+       fl->setName(m_sFleet.latin1());
+       fl->setRace(m_InfoView->race().latin1());
+
+       m_doc->newFleet(m_sBattle, m_sGroup, m_sFleet, fl);
+
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::slotInfoRemove()
+{
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::updateInfoView()
+{
+       const Fleet* fl = m_doc->specificFleet(m_sBattle, m_sGroup, m_sFleet);
+
+       if(!fl)
+       {
+               m_InfoView->setRace("");
+               m_InfoView->setFleetName("");
+               m_InfoView->setEta(0);
+               m_InfoView->setGroup("");
+               m_InfoView->setBattle("");              
+               m_InfoView->enableNameChange(true);
+               m_InfoView->enableRemove(false);
+               return;
+       }
+
+       if(m_sFleet == tr("Home Planet"))
+       {
+               m_InfoView->enableNameChange(false);
+               m_InfoView->enableRemove(false);
+       }
+       else
+       {
+               m_InfoView->enableNameChange(true);
+               m_InfoView->enableRemove(true);
+       }
+
+       m_InfoView->setRace(fl->race().c_str());
+       m_InfoView->setFleetName(m_sFleet);
+       m_InfoView->setEta(fl->ETA());
+       m_InfoView->setGroup(m_sGroup);
+       m_InfoView->setBattle(m_sBattle);
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+void BSView::updateFleetView()
+{
+       bool friendly = false;
+       bool home       = false;
+
+       const Fleet* fl = m_doc->specificFleet(m_sBattle, m_sGroup, m_sFleet);
+
+       if (!fl)
+       {
+               m_FleetViews->raiseWidget(2);
+               return;
+       }
+
+       if ( m_sGroup == tr("Friendly"))
+       {
+                       friendly = true;
+                       if(m_sFleet == tr("Home Planet"))
+                               home=true;
+       }
+       if (fl->race() == tr("Generic").latin1())
+       {
+               m_GenericFleetView->viewFleet(fl, friendly);
+               m_FleetViews->raiseWidget(2);
+
+       }
+       else 
+       {
+               if (fl->race() == m_FleetView->fleet()->race() &&
+               m_FleetView->isHome() == home)
+               {
+                       m_FleetView->viewFleet(fl, friendly);
+               }
+               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);
+       }
+}