File indexing completed on 2024-05-12 16:59:36
0001 /* 0002 * SPDX-FileCopyrightText: 2014 David Edmundson <david@davidedmundson.co.uk> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-or-later 0005 * 0006 */ 0007 0008 #include "notemanager.h" 0009 0010 #include <QDebug> 0011 #include <QMutex> 0012 #include <QQmlEngine> 0013 0014 #include "filesystemnoteloader.h" 0015 #include "note.h" 0016 0017 NoteManager::NoteManager(QObject *parent) 0018 : QObject(parent) 0019 , m_backend(loadBackend()) 0020 { 0021 } 0022 0023 Note *NoteManager::loadNote(const QString &id) 0024 { 0025 Note *note = m_backend->loadNote(id); 0026 QQmlEngine::setObjectOwnership(note, QQmlEngine::JavaScriptOwnership); 0027 return note; 0028 } 0029 0030 void NoteManager::deleteNoteResources(const QString &id) 0031 { 0032 m_backend->deleteNoteResources(id); 0033 } 0034 0035 QSharedPointer<AbstractNoteLoader> NoteManager::loadBackend() 0036 { 0037 static QMutex mutex; 0038 static QWeakPointer<AbstractNoteLoader> s_backend; 0039 0040 mutex.lock(); 0041 QSharedPointer<AbstractNoteLoader> manager = s_backend.toStrongRef(); 0042 if (manager.isNull()) { 0043 manager.reset(new FileSystemNoteLoader); 0044 s_backend = manager; 0045 } 0046 mutex.unlock(); 0047 return manager; 0048 }