Fix crash: fix wrong use of QMap's.
[kdenetwork.git] / krfb / invitationmanager.cpp
blob6c646fc133e0090ffdf7d43bd43d5d20c988abe8
1 /* This file is part of the KDE project
2 Copyright (C) 2007 Alessandro Praduroux <pradu@pradu.it>
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public
6 License as published by the Free Software Foundation; version 2
7 of the License.
8 */
9 #include "invitationmanager.h"
10 #include "invitationmanager.moc"
12 #include <KStaticDeleter>
13 #include <KConfigGroup>
14 #include <KConfig>
15 #include <KGlobal>
17 #include <QTimer>
19 static KStaticDeleter<InvitationManager> sd;
20 InvitationManager * InvitationManager::_self = 0;
21 InvitationManager * InvitationManager::self() {
22 if (!_self) sd.setObject(_self, new InvitationManager);
23 return _self;
26 InvitationManager::InvitationManager()
28 loadInvitations();
30 QTimer *refreshTimer = new QTimer(this);
31 connect(refreshTimer, SIGNAL(timeout()), SLOT(loadInvitations()));
32 refreshTimer->start(1000*60);
36 InvitationManager::~InvitationManager()
41 void InvitationManager::invalidateOldInvitations() {
42 int invNum = invitationList.size();
44 while(invNum--) {
45 if (!invitationList[invNum].isValid()) {
46 invitationList.removeAt(invNum);
49 saveInvitations();
53 void InvitationManager::loadInvitations()
55 int invNum = invitationList.size();
57 KSharedConfigPtr conf = KGlobal::config();
58 KConfigGroup invitationConfig(conf, "Invitations");
59 int numInv = invitationConfig.readEntry("invitation_num",0);
61 invitationList.clear();
62 for (int i = 0; i < numInv; i++) {
63 KConfigGroup ic(conf, QString("Invitation_%1").arg(i));
64 invitationList.append(Invitation(ic));
67 invalidateOldInvitations();
68 if (numInv != invNum) {
69 emit invitationNumChanged(invitationList.size());
74 Invitation InvitationManager::addInvitation()
76 Invitation i;
77 invitationList.append(i);
78 emit invitationNumChanged(invitationList.size());
79 saveInvitations();
80 return i;
83 const QList< Invitation > & InvitationManager::invitations()
85 return invitationList;
88 void InvitationManager::saveInvitations()
90 KSharedConfigPtr conf = KGlobal::config();
91 KConfigGroup invitationConfig(conf, "Invitations");
92 int invNum = invitationList.size();
93 invitationConfig.writeEntry("invitation_num",invNum);
94 for (int i = 0; i < invNum; i++) {
95 KConfigGroup ic(conf, QString("Invitation_%1").arg(i));
96 invitationList[i].save(ic);
98 conf->sync();
101 int InvitationManager::activeInvitations()
103 invalidateOldInvitations();
104 return invitationList.size();
107 void InvitationManager::removeInvitation(const Invitation & inv)
109 invitationList.removeAll(inv);
110 emit invitationNumChanged(invitationList.size());