Unity 8
 All Classes Functions
unitymenumodelcache.cpp
1 /*
2  * Copyright 2013 Canonical Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation; version 3.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Authors:
17  * Nick Dedekind <nick.dedekind@canonical.com>
18  */
19 
20 #include "unitymenumodelcache.h"
21 #include <unitymenumodel.h>
22 
23 UnityMenuModelCache::UnityMenuModelCache(QObject* parent)
24  : QObject(parent)
25 {
26 }
27 
28 UnityMenuModelCache::~UnityMenuModelCache()
29 {
30 }
31 
32 UnityMenuModel* UnityMenuModelCache::model(const QByteArray& bus,
33  const QByteArray& path,
34  const QVariantMap& actions)
35 {
36  if (m_registry.contains(path))
37  return m_registry[path];
38 
39  UnityMenuModel* menuModel = new UnityMenuModel;
40  connect(menuModel, &QObject::destroyed, this, [menuModel, this](QObject*) {
41  QList<QByteArray> keys = m_registry.keys(menuModel);
42  Q_FOREACH(const QByteArray& key, keys) {
43  m_registry.remove(key);
44  }
45  });
46  m_registry[path] = menuModel;
47 
48  menuModel->setBusName(bus);
49  menuModel->setMenuObjectPath(path);
50  menuModel->setActions(actions);
51  return menuModel;
52 }
53 
54 bool UnityMenuModelCache::contains(const QByteArray& path)
55 {
56  return m_registry.contains(path);
57 }