// include files for QT
#include <qobject.h>
+// standard library
+#include <map>
+
// application specific includes
+#include "fleet.h"
-/**
- * the Document Class
+//! The document class
+/** This class is holding all the data, handles the transportation of the
+ * data to a couple of different mediums and informs users of the data
+ * if it's changed (through the documentChnaged() signal)
+ * \bug it's too open..
+ * \todo make this class more closed.
+ * \author Michael Andreen
*/
class BSDoc : public QObject
bool load(const QString &filename);
bool isModified() const;
+ /**Adds a new battle to the dokument and emits documentChanged.
+ * \todo add some checks to see if the battle exist and so and return the status.
+ * \return returns 0 if everything is ok.
+ */
+ int newBattle(QString name);
+
+ /**This returns the the data structure, so other can work on it, but not supposed
+ * change it.
+ * \todo remove this, and replace it with a better more closed interface.
+ */
+ std::map<QString, std::map<QString, std::map<QString, Fleet> > >& Battles();
+
signals:
void documentChanged();
protected:
bool modified;
+
+ /**This is the main datastructure of the battlecalc, it's more or less the
+ * core that everything else works around. A short explanation of the fields:
+ * -# The name of the battle (usually coordinates)
+ * -# The name of the group (ie. Friendly/Hostile)
+ * -# The fleetname (Home Planet, coordinates, irc nicks and so on)
+ * - and in the end you got the actual Fleet object with it's data.
+ */
+ std::map<QString, std::map<QString, std::map<QString, Fleet> > > m_Battles;
};
#endif