From 54860b9c436f31cce71afd180e03b4bf93512b58 Mon Sep 17 00:00:00 2001 From: deva Date: Sun, 28 Dec 2008 11:46:24 +0000 Subject: Basic data model now in place. git-svn-id: file:///mnt/atuin/misc/bak/sync/data/svn/repos/qookie@10 385a8487-d0bc-44c8-a27f-f7cfc1192794 --- document.h | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 document.h (limited to 'document.h') diff --git a/document.h b/document.h new file mode 100644 index 0000000..ee0cfd5 --- /dev/null +++ b/document.h @@ -0,0 +1,78 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + * document.h + * + * Fri Aug 22 19:35:31 CEST 2008 + * Copyright 2008 Bent Bisballe Nyeng + * deva@aasimon.org + ****************************************************************************/ + +/* + * This file is part of Qookie. + * + * Qookie 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. + * + * Qookie is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Qookie; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ +#ifndef __QOOKIE_DOCUMENT_H__ +#define __QOOKIE_DOCUMENT_H__ + +#include + +#include "uid.h" +#include "menu.h" +#include "dish.h" +#include "course.h" +#include "ingredient.h" + +/** + * The document class is the internal representation of the Qookie document. + * It is detached to the medium, of its origin (file, database etc.) this is handled by the + * Reader interface class. + */ +class Document : public QObject { +Q_OBJECT +public: + Document(); + + bool hasChanged(); + void setChanged(bool changed); + + void addIngredient(Ingredient *ingredient); + void addCourse(Course *course); + void addDish(Dish *dish); + void addMenu(Menu *menu); + + const Ingredient &ingredient(uid_t uid) const; + const Course &course(uid_t uid) const; + const Dish &dish(uid_t uid) const; + const Menu &menu(uid_t uid) const; + + QString name; + +signals: + void documentStatusChanged(bool changed); + +private: + bool changed; + + QMap< uid_t, Menu *> menus; + QMap< uid_t, Dish *> dishes; + QMap< uid_t, Course *> courses; + QMap< uid_t, Ingredient *> ingredients; + + uid_t nextUid(); + uid_t maxuid; +}; + +#endif/*__QOOKIE_DOCUMENT_H__*/ -- cgit v1.2.3