source: SMSSender/frontend/persistence/groupmanager.h @ 316:16f8e7f93ca4

separation-frontend-backend
Last change on this file since 316:16f8e7f93ca4 was 316:16f8e7f93ca4, checked in by Sämy Zehnder <saemy.zehnder@…>, 8 years ago
  • Adds the copyright header to each file and updates the development period.
File size: 1.9 KB
Line 
1/*
2 smssender - A frontend for fast and easy SMS sending over different gateways.
3 Copyright (C) 2007-2014, gorrión. See http://smssender.gorrion.ch
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 */
18#ifndef PERS_GROUPMANAGER_H_
19#define PERS_GROUPMANAGER_H_
20
21#include <QScopedPointer>
22#include <QSqlDatabase>
23
24#include "common/domain/sgroup.h"
25#include "common/persistence/imainstorage.h"
26#include "common/persistence/impl/versionedstorage.h"
27
28class ContactManager;
29
30namespace Persistence {
31
32class GroupManager  {
33public:
34    GroupManager(IDatabase *mainDatabase, IMainStorage *mainStorage, const ::ContactManager &contactManager);
35    virtual ~GroupManager();
36
37public:
38    virtual void loadGroup(int groupId, SGroup **group);
39    virtual void loadGroups(QSet<SGroup*> *groups);
40
41    virtual void saveGroup(SGroup *group);
42    virtual void removeGroup(int groupId);
43
44private:
45    QSqlDatabase database() const;
46
47private:
48    class Storage : public VersionedStorage {
49        friend class GroupManager;
50    public:
51        Storage();
52        bool doDatabaseUpgrade(uint currentDbVersion);
53
54    private:
55        void initDB();
56    };
57
58private:
59    IMainStorage * const m_mainStorage;
60    const ::ContactManager &m_contactManager;
61    const QScopedPointer<Storage> m_groupStorage;
62
63    Q_DISABLE_COPY(GroupManager)
64};
65
66}
67
68#endif /* PERS_GROUPMANAGER_H_ */
Note: See TracBrowser for help on using the repository browser.