core: Track upgrade step within schema version
[quassel.git] / src / core / corebufferviewmanager.cpp
1 /***************************************************************************
2  *   Copyright (C) 2005-2019 by the Quassel Project                        *
3  *   devel@quassel-irc.org                                                 *
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 2 of the License, or     *
8  *   (at your option) version 3.                                           *
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, write to the                         *
17  *   Free Software Foundation, Inc.,                                       *
18  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
19  ***************************************************************************/
20
21 #include "corebufferviewmanager.h"
22
23 #include "core.h"
24 #include "corebufferviewconfig.h"
25 #include "coresession.h"
26
27 CoreBufferViewManager::CoreBufferViewManager(SignalProxy* proxy, CoreSession* parent)
28     : BufferViewManager(proxy, parent)
29     , _coreSession(parent)
30 {
31     QVariantMap views = Core::getUserSetting(_coreSession->user(), "BufferViews").toMap();
32     QVariantMap::iterator iter = views.begin();
33     QVariantMap::iterator iterEnd = views.end();
34     CoreBufferViewConfig* config = nullptr;
35     while (iter != iterEnd) {
36         config = new CoreBufferViewConfig(iter.key().toInt(), iter.value().toMap(), this);
37         addBufferViewConfig(config);
38         ++iter;
39     }
40 }
41
42 void CoreBufferViewManager::saveBufferViews()
43 {
44     QVariantMap views;
45
46     BufferViewConfigHash::const_iterator iter = bufferViewConfigHash().constBegin();
47     BufferViewConfigHash::const_iterator iterEnd = bufferViewConfigHash().constEnd();
48     while (iter != iterEnd) {
49         views[QString::number((*iter)->bufferViewId())] = (*iter)->toVariantMap();
50         ++iter;
51     }
52
53     Core::setUserSetting(_coreSession->user(), "BufferViews", views);
54 }
55
56 void CoreBufferViewManager::requestCreateBufferView(const QVariantMap& properties)
57 {
58     QString bufferViewName = properties["bufferViewName"].toString();
59     int maxId = -1;
60     BufferViewConfigHash::const_iterator iter = bufferViewConfigHash().constBegin();
61     BufferViewConfigHash::const_iterator iterEnd = bufferViewConfigHash().constEnd();
62     while (iter != iterEnd) {
63         if ((*iter)->bufferViewName() == bufferViewName)
64             return;
65
66         if ((*iter)->bufferViewId() > maxId)
67             maxId = (*iter)->bufferViewId();
68
69         ++iter;
70     }
71     maxId++;
72
73     addBufferViewConfig(new CoreBufferViewConfig(maxId, properties, this));
74 }
75
76 void CoreBufferViewManager::requestCreateBufferViews(const QVariantList& properties)
77 {
78     QVariantList::const_iterator iter = properties.constBegin();
79     QVariantList::const_iterator iterEnd = properties.constEnd();
80     while (iter != iterEnd) {
81         requestCreateBufferView((*iter).toMap());
82         ++iter;
83     }
84 }
85
86 void CoreBufferViewManager::requestDeleteBufferView(int bufferViewId)
87 {
88     deleteBufferViewConfig(bufferViewId);
89 }
90
91 void CoreBufferViewManager::requestDeleteBufferViews(const QVariantList& bufferViews)
92 {
93     foreach (QVariant bufferView, bufferViews) {
94         deleteBufferViewConfig(bufferView.toInt());
95     }
96 }