keepassxc/src/core/Metadata.cpp

380 lines
7.4 KiB
C++
Raw Normal View History

2010-08-07 09:10:44 -04:00
/*
* Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
*
* 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 2 or (at your option)
* version 3 of the License.
*
* 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 <http://www.gnu.org/licenses/>.
*/
#include "Metadata.h"
2011-07-08 08:51:14 -04:00
#include "core/Database.h"
#include "core/Entry.h"
2010-08-13 12:08:06 -04:00
2010-08-24 17:12:01 -04:00
Metadata::Metadata(Database* parent)
: QObject(parent)
, m_parent(parent)
2010-08-07 09:10:44 -04:00
{
2010-08-13 12:08:06 -04:00
m_recycleBin = 0;
m_entryTemplatesGroup = 0;
m_lastSelectedGroup = 0;
m_lastTopVisibleGroup = 0;
2011-07-07 06:52:30 -04:00
m_generator = "KeePassX";
m_maintenanceHistoryDays = 365;
m_recycleBinEnabled = true;
m_masterKeyChangeRec = -1;
m_masterKeyChangeForce = -1;
2012-04-16 20:22:48 -04:00
QDateTime now = QDateTime::currentDateTimeUtc();
m_nameChanged = now;
m_descriptionChanged = now;
m_defaultUserNameChanged = now;
m_recycleBinChanged = now;
m_entryTemplatesGroupChanged = now;
m_masterKeyChanged = now;
2011-07-06 17:44:29 -04:00
m_protectTitle = false;
m_protectUsername = false;
m_protectPassword = true;
m_protectUrl = false;
m_protectNotes = false;
2011-11-20 04:16:13 -05:00
m_autoEnableVisualHiding = false;
2012-04-11 09:57:11 -04:00
m_updateDatetime = true;
}
template <class T> bool Metadata::set(T& property, const T& value) {
if (property != value) {
property = value;
Q_EMIT modified();
return true;
}
else {
return false;
}
}
template <class T> bool Metadata::set(T& property, const T& value, QDateTime& dateTime) {
if (property != value) {
property = value;
if (m_updateDatetime) {
2012-04-16 20:22:48 -04:00
dateTime = QDateTime::currentDateTimeUtc();
2012-04-11 09:57:11 -04:00
}
Q_EMIT modified();
return true;
}
else {
return false;
}
}
void Metadata::setUpdateDatetime(bool value) {
m_updateDatetime = value;
2010-08-07 09:10:44 -04:00
}
QString Metadata::generator() const
{
return m_generator;
}
2010-08-07 09:10:44 -04:00
QString Metadata::name() const
{
return m_name;
}
2010-08-07 09:10:44 -04:00
QDateTime Metadata::nameChanged() const
{
return m_nameChanged;
}
2010-08-07 09:10:44 -04:00
QString Metadata::description() const
{
return m_description;
}
2010-08-07 09:10:44 -04:00
QDateTime Metadata::descriptionChanged() const
{
return m_descriptionChanged;
}
2010-08-07 09:10:44 -04:00
QString Metadata::defaultUserName() const
{
return m_defaultUserName;
}
QDateTime Metadata::defaultUserNameChanged() const
{
return m_defaultUserNameChanged;
}
2010-08-07 09:10:44 -04:00
int Metadata::maintenanceHistoryDays() const
{
return m_maintenanceHistoryDays;
}
2010-08-07 09:10:44 -04:00
bool Metadata::protectTitle() const
{
return m_protectTitle;
}
2010-08-07 09:10:44 -04:00
bool Metadata::protectUsername() const
{
return m_protectUsername;
}
2010-08-07 09:10:44 -04:00
bool Metadata::protectPassword() const
{
return m_protectPassword;
}
2010-08-07 09:10:44 -04:00
bool Metadata::protectUrl() const
{
return m_protectUrl;
}
2010-08-07 09:10:44 -04:00
bool Metadata::protectNotes() const
{
return m_protectNotes;
}
2010-08-07 09:10:44 -04:00
bool Metadata::autoEnableVisualHiding() const
{
return m_autoEnableVisualHiding;
}
2010-08-07 09:10:44 -04:00
QImage Metadata::customIcon(const Uuid& uuid) const
2010-09-19 15:22:24 -04:00
{
return m_customIcons.value(uuid);
}
QHash<Uuid, QImage> Metadata::customIcons() const
2010-08-07 09:10:44 -04:00
{
return m_customIcons;
}
2010-08-07 09:10:44 -04:00
bool Metadata::recycleBinEnabled() const
{
return m_recycleBinEnabled;
}
2010-08-07 09:10:44 -04:00
Group* Metadata::recycleBin()
{
return m_recycleBin;
}
2010-08-13 12:08:06 -04:00
const Group* Metadata::recycleBin() const
2010-08-07 09:10:44 -04:00
{
2010-08-13 12:08:06 -04:00
return m_recycleBin;
}
2010-08-07 09:10:44 -04:00
QDateTime Metadata::recycleBinChanged() const
{
return m_recycleBinChanged;
}
2010-08-07 09:10:44 -04:00
2010-08-13 12:08:06 -04:00
const Group* Metadata::entryTemplatesGroup() const
2010-08-07 09:10:44 -04:00
{
return m_entryTemplatesGroup;
}
2010-08-07 09:10:44 -04:00
QDateTime Metadata::entryTemplatesGroupChanged() const
{
return m_entryTemplatesGroupChanged;
}
2010-08-07 09:10:44 -04:00
2010-08-13 12:08:06 -04:00
const Group* Metadata::lastSelectedGroup() const
2010-08-07 09:10:44 -04:00
{
return m_lastSelectedGroup;
}
2010-08-07 09:10:44 -04:00
2010-08-13 12:08:06 -04:00
const Group* Metadata::lastTopVisibleGroup() const
2010-08-07 09:10:44 -04:00
{
return m_lastTopVisibleGroup;
}
2010-08-07 09:10:44 -04:00
QDateTime Metadata::masterKeyChanged() const
{
return m_masterKeyChanged;
}
int Metadata::masterKeyChangeRec() const
{
return m_masterKeyChangeRec;
}
int Metadata::masterKeyChangeForce() const
{
return m_masterKeyChangeForce;
}
2010-08-07 09:10:44 -04:00
QHash<QString, QString> Metadata::customFields() const
{
return m_customFields;
}
2010-08-07 09:10:44 -04:00
void Metadata::setGenerator(const QString& value)
{
2012-04-11 09:57:11 -04:00
set(m_generator, value);
2010-08-07 09:10:44 -04:00
}
void Metadata::setName(const QString& value)
{
2012-04-11 09:57:11 -04:00
if (set(m_name, value, m_nameChanged)) {
Q_EMIT nameTextChanged(m_parent);
}
2010-08-07 09:10:44 -04:00
}
void Metadata::setNameChanged(const QDateTime& value)
{
m_nameChanged = value;
}
void Metadata::setDescription(const QString& value)
{
2012-04-11 09:57:11 -04:00
set(m_description, value, m_descriptionChanged);
2010-08-07 09:10:44 -04:00
}
void Metadata::setDescriptionChanged(const QDateTime& value)
{
m_descriptionChanged = value;
}
void Metadata::setDefaultUserName(const QString& value)
{
2012-04-11 09:57:11 -04:00
set(m_defaultUserName, value, m_defaultUserNameChanged);
2010-08-07 09:10:44 -04:00
}
void Metadata::setDefaultUserNameChanged(const QDateTime& value)
{
m_defaultUserNameChanged = value;
}
2010-08-07 09:10:44 -04:00
void Metadata::setMaintenanceHistoryDays(int value)
{
2012-04-11 09:57:11 -04:00
set(m_maintenanceHistoryDays, value);
2010-08-07 09:10:44 -04:00
}
void Metadata::setProtectTitle(bool value)
{
2012-04-11 09:57:11 -04:00
set(m_protectTitle, value);
2010-08-07 09:10:44 -04:00
}
void Metadata::setProtectUsername(bool value)
{
2012-04-11 09:57:11 -04:00
set(m_protectUsername, value);
2010-08-07 09:10:44 -04:00
}
void Metadata::setProtectPassword(bool value)
{
2012-04-11 09:57:11 -04:00
set(m_protectPassword, value);
2010-08-07 09:10:44 -04:00
}
void Metadata::setProtectUrl(bool value)
{
2012-04-11 09:57:11 -04:00
set(m_protectUrl, value);
2010-08-07 09:10:44 -04:00
}
void Metadata::setProtectNotes(bool value)
{
2012-04-11 09:57:11 -04:00
set(m_protectNotes, value);
2010-08-07 09:10:44 -04:00
}
void Metadata::setAutoEnableVisualHiding(bool value)
{
2012-04-11 09:57:11 -04:00
set(m_autoEnableVisualHiding, value);
2010-08-07 09:10:44 -04:00
}
void Metadata::addCustomIcon(const Uuid& uuid, const QImage& icon)
2010-08-07 09:10:44 -04:00
{
2010-08-13 12:08:06 -04:00
Q_ASSERT(!uuid.isNull());
2010-08-07 09:10:44 -04:00
Q_ASSERT(!m_customIcons.contains(uuid));
2010-09-19 15:22:24 -04:00
m_customIcons.insert(uuid, icon);
2012-04-11 09:57:11 -04:00
Q_EMIT modified();
2010-08-07 09:10:44 -04:00
}
void Metadata::removeCustomIcon(const Uuid& uuid)
{
2010-08-13 12:08:06 -04:00
Q_ASSERT(!uuid.isNull());
2010-08-07 09:10:44 -04:00
Q_ASSERT(m_customIcons.contains(uuid));
m_customIcons.remove(uuid);
2012-04-11 09:57:11 -04:00
Q_EMIT modified();
2010-08-07 09:10:44 -04:00
}
void Metadata::setRecycleBinEnabled(bool value)
{
2012-04-11 09:57:11 -04:00
set(m_recycleBinEnabled, value);
2010-08-07 09:10:44 -04:00
}
2010-08-13 12:08:06 -04:00
void Metadata::setRecycleBin(Group* group)
2010-08-07 09:10:44 -04:00
{
2012-04-11 09:57:11 -04:00
set(m_recycleBin, group, m_recycleBinChanged);
2010-08-07 09:10:44 -04:00
}
void Metadata::setRecycleBinChanged(const QDateTime& value)
{
m_recycleBinChanged = value;
}
2010-08-13 12:08:06 -04:00
void Metadata::setEntryTemplatesGroup(Group* group)
2010-08-07 09:10:44 -04:00
{
2012-04-11 09:57:11 -04:00
set(m_entryTemplatesGroup, group, m_entryTemplatesGroupChanged);
2010-08-07 09:10:44 -04:00
}
void Metadata::setEntryTemplatesGroupChanged(const QDateTime& value)
{
m_entryTemplatesGroupChanged = value;
}
2010-08-13 12:08:06 -04:00
void Metadata::setLastSelectedGroup(Group* group)
2010-08-07 09:10:44 -04:00
{
2012-04-11 09:57:11 -04:00
set(m_lastSelectedGroup, group);
2010-08-07 09:10:44 -04:00
}
2010-08-13 12:08:06 -04:00
void Metadata::setLastTopVisibleGroup(Group* group)
2010-08-07 09:10:44 -04:00
{
2012-04-11 09:57:11 -04:00
set(m_lastTopVisibleGroup, group);
2010-08-07 09:10:44 -04:00
}
void Metadata::setMasterKeyChanged(const QDateTime& value)
{
m_masterKeyChanged = value;
}
void Metadata::setMasterKeyChangeRec(int value)
{
2012-04-11 09:57:11 -04:00
set(m_masterKeyChangeRec, value);
}
void Metadata::setMasterKeyChangeForce(int value)
{
2012-04-11 09:57:11 -04:00
set(m_masterKeyChangeForce, value);
}
2010-08-07 09:10:44 -04:00
void Metadata::addCustomField(const QString& key, const QString& value)
{
Q_ASSERT(!m_customFields.contains(key));
m_customFields.insert(key, value);
2012-04-11 09:57:11 -04:00
Q_EMIT modified();
2010-08-07 09:10:44 -04:00
}
void Metadata::removeCustomField(const QString& key)
{
Q_ASSERT(m_customFields.contains(key));
m_customFields.remove(key);
2012-04-11 09:57:11 -04:00
Q_EMIT modified();
2010-08-07 09:10:44 -04:00
}