@@ -20,9 +20,6 @@
2020#include "unitymenumodelcache.h"
2121#include <unitymenumodel.h>
2222
23−#include <QQmlEngine>
24−#include <QDebug>
25−
2623UnityMenuModelCache::UnityMenuModelCache(QObject* parent)
2724 : QObject(parent)
2825{
@@ -32,24 +29,30 @@ UnityMenuModelCache::~UnityMenuModelCache()
3229{
3330}
3431
35−UnityMenuModel* UnityMenuModelCache::model(const QString& path) const
32+UnityMenuModel* UnityMenuModelCache::model(const QByteArray& bus,
33+ const QByteArray& path,
34+ const QVariantMap& actions)
3635{
37− return m_menuModels.value(path, NULL);
38−}
39−
40−void UnityMenuModelCache::registerModel(const QString& path, UnityMenuModel* menuModel)
41−{
42− m_menuModels[path] = menuModel;
36+ if (m_registry.contains(path))
37+ return m_registry[path];
4338
39+ UnityMenuModel* menuModel = new UnityMenuModel;
4440 connect(menuModel, &QObject::destroyed, this, [menuModel, this](QObject*) {
45− QList<QString> keys = m_menuModels.keys(menuModel);
46− Q_FOREACH(const QString& key, keys) {
47− m_menuModels.remove(key);
41+ QList<QByteArray> keys = m_registry.keys(menuModel);
42+ Q_FOREACH(const QByteArray& key, keys) {
43+ m_registry.remove(key);
44+ qDebug() << "removed " << key;
4845 }
4946 });
47+ m_registry[path] = menuModel;
48+
49+ menuModel->setBusName(bus);
50+ menuModel->setMenuObjectPath(path);
51+ menuModel->setActions(actions);
52+ return menuModel;
5053}
5154
5255bool UnityMenuModelCache::contains(UnityMenuModel* menuModel)
5356{
54− return !m_menuModels.keys(menuModel).isEmpty();
57+ return !m_registry.keys(menuModel).isEmpty();
5558}