/* * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "UBDocumentProxy.h" #include "frameworks/UBStringUtils.h" #include "core/UBApplication.h" #include "core/UBPersistenceManager.h" #include "core/UBSettings.h" #include "core/UBDocumentManager.h" #include "core/memcheck.h" UBDocumentProxy::UBDocumentProxy() : mPageCount(0) { init(); } UBDocumentProxy::UBDocumentProxy(const QString& pPersistancePath) : mPageCount(0) { init(); setPersistencePath(pPersistancePath); } void UBDocumentProxy::init() { setMetaData(UBSettings::documentGroupName, ""); QDateTime now = QDateTime::currentDateTime(); setMetaData(UBSettings::documentName, now.toString(Qt::SystemLocaleShortDate)); setUuid(QUuid::createUuid()); setDefaultDocumentSize(UBSettings::settings()->pageSize->get().toSize()); setSessionTitle(""); setSessionTarget(""); setSessionLicence(""); setSessionKeywords(""); setSessionLevel(""); setSessionTopic(""); setSessionAuthor(""); } UBDocumentProxy::~UBDocumentProxy() { // NOOP } int UBDocumentProxy::pageCount() { return mPageCount; } void UBDocumentProxy::setPageCount(int pPageCount) { mPageCount = pPageCount; } int UBDocumentProxy::incPageCount() { if (mPageCount <= 0) { mPageCount = 1; } else { mPageCount++; } return mPageCount; } int UBDocumentProxy::decPageCount() { mPageCount --; if (mPageCount < 0) { mPageCount = 0; } return mPageCount; } QString UBDocumentProxy::persistencePath() const { return mPersistencePath; } void UBDocumentProxy::setPersistencePath(const QString& pPersistencePath) { if (pPersistencePath != mPersistencePath) { mIsModified = true; mPersistencePath = pPersistencePath; } } void UBDocumentProxy::setMetaData(const QString& pKey, const QVariant& pValue) { if (mMetaDatas.contains(pKey) && mMetaDatas.value(pKey) == pValue) return; else { mIsModified = true; mMetaDatas.insert(pKey, pValue); if (pKey == UBSettings::documentUpdatedAt) { UBDocumentManager *documentManager = UBDocumentManager::documentManager(); if (documentManager) documentManager->emitDocumentUpdated(this); } } } QVariant UBDocumentProxy::metaData(const QString& pKey) const { if (mMetaDatas.contains(pKey)) { return mMetaDatas.value(pKey); } else { qDebug() << "Unknown metadata key" << pKey; return QString(""); // failsafe } } QHash UBDocumentProxy::metaDatas() const { return mMetaDatas; } QString UBDocumentProxy::name() const { return metaData(UBSettings::documentName).toString(); } QString UBDocumentProxy::groupName() const { return metaData(UBSettings::documentGroupName).toString(); } QSize UBDocumentProxy::defaultDocumentSize() const { if (mMetaDatas.contains(UBSettings::documentSize)) return metaData(UBSettings::documentSize).toSize(); else return UBSettings::settings()->pageSize->get().toSize(); } void UBDocumentProxy::setDefaultDocumentSize(QSize pSize) { if (defaultDocumentSize() != pSize) { setMetaData(UBSettings::documentSize, QVariant(pSize)); emit defaultDocumentSizeChanged(); mIsModified = true; } } void UBDocumentProxy::setDefaultDocumentSize(int pWidth, int pHeight) { setDefaultDocumentSize(QSize(pWidth, pHeight)); } QUuid UBDocumentProxy::uuid() const { QString id = metaData(UBSettings::documentIdentifer).toString(); QString sUuid = id.replace(UBSettings::uniboardDocumentNamespaceUri + "/", ""); return QUuid(sUuid); } void UBDocumentProxy::setUuid(const QUuid& uuid) { setMetaData(UBSettings::documentIdentifer, UBSettings::uniboardDocumentNamespaceUri + "/" + UBStringUtils::toCanonicalUuid(uuid)); } QString UBDocumentProxy::sessionTitle() const { if(mMetaDatas.contains(UBSettings::sessionTitle)) return metaData(UBSettings::sessionTitle).toString(); else return QString(); } void UBDocumentProxy::setSessionTitle(const QString & sessionTitle) { setMetaData(UBSettings::sessionTitle,QVariant(sessionTitle)); } QString UBDocumentProxy::sessionTarget() const { if(mMetaDatas.contains(UBSettings::sessionTarget)) return metaData(UBSettings::sessionTarget).toString(); else return QString(); } void UBDocumentProxy::setSessionTarget(const QString & sessionTarget) { setMetaData(UBSettings::sessionTarget,QVariant(sessionTarget)); } QString UBDocumentProxy::sessionLicence() const { if(mMetaDatas.contains(UBSettings::sessionLicence)) return metaData(UBSettings::sessionLicence).toString(); else return QString(); } void UBDocumentProxy::setSessionLicence(const QString & sessionLicence) { setMetaData(UBSettings::sessionLicence,QVariant(sessionLicence)); } void UBDocumentProxy::setSessionKeywords(const QString &kw) { setMetaData(UBSettings::sessionKeywords,QVariant(kw)); } QString UBDocumentProxy::sessionKeywords() { if(mMetaDatas.contains(UBSettings::sessionKeywords)) return metaData(UBSettings::sessionKeywords).toString(); else return QString(); } void UBDocumentProxy::setSessionLevel(const QString &level) { setMetaData(UBSettings::sessionLevel,QVariant(level)); } QString UBDocumentProxy::sessionLevel() { if(mMetaDatas.contains(UBSettings::sessionLevel)) return metaData(UBSettings::sessionLevel).toString(); else return QString(); } void UBDocumentProxy::setSessionTopic(const QString &topic) { setMetaData(UBSettings::sessionTopic,QVariant(topic)); } QString UBDocumentProxy::sessionTopic() { if(mMetaDatas.contains(UBSettings::sessionTopic)) return metaData(UBSettings::sessionTopic).toString(); else return QString(); } void UBDocumentProxy::setSessionAuthor(const QString &authors) { setMetaData(UBSettings::sessionAuthors,QVariant(authors)); } QString UBDocumentProxy::sessionAuthors() { if(mMetaDatas.contains(UBSettings::sessionAuthors)) return metaData(UBSettings::sessionAuthors).toString(); else return QString(); } bool UBDocumentProxy::isModified() const { return mIsModified; }