2 * @file PswGen/Storage/istorage.h
3 * @brief Interface for password storage modules
6 * Copyright (c) 2011-2019 Enar Vaikene
8 * This file is part of the eVaf C++ cross-platform application development framework.
10 * This file can be used under the terms of the GNU General Public License
11 * version 3.0 as published by the Free Software Foundation and appearing in
12 * the file LICENSE included in the packaging of this file. Please review the
13 * the following information to ensure the GNU General Public License version
14 * 3.0 requirements will be met: http://www.gnu.org/copyleft/gpl.html.
16 * Alternatively, this file may be used in accordance with the Commercial License
17 * Agreement provided with the Software.
20 #ifndef __PSWGEN_STORAGE_ISTORAGE_H
21 # define __PSWGEN_STORAGE_ISTORAGE_H
25 #include <QSharedData>
26 #include <QExplicitlySharedDataPointer>
28 class QAbstractItemModel
;
36 * Data stored for every password.
38 class Data
: public QSharedData
42 Data(QString
const & name
)
51 Data(QString
const & name
, QString
const & suffix
, int l
, uint f
= 0)
60 /// Name of the password
61 inline QString
const & name() const { return mName
; }
63 /// Optional suffix added to the name
64 inline QString
const & suffix() const { return mSuffix
; }
65 void setSuffix(QString
const & suffix
)
67 if (suffix
!= mSuffix
) {
73 /// Length of the generated password
74 inline int length() const { return mLength
; }
75 inline void setLength(int value
)
77 if (mLength
!= value
) {
83 /// Optional flags for the password generator
84 inline uint
flags() const { return mFlags
; }
85 inline void setFlags(uint value
)
87 if (mFlags
!= value
) {
93 /// Flag indicating that some fields are modified
94 bool modified() const { return mModified
; }
96 /// Resets the modified flag
97 void reset() { mModified
= false; }
110 } // eVaf::PswGen::Storage
113 * Password storage interface.
115 * This interface is used to store options that were used to generate strong passwords.
121 * Empty virtual destructor
126 * Saves the data record
127 * @param name Name of the password
128 * @param data Data for the password
129 * @return True if ok; false if failed
131 virtual bool save(QString
const & name
, QExplicitlySharedDataPointer
<Storage::Data
> data
) = 0;
134 * Returns a data record by the name
135 * @param name Name of the password
136 * @return Shared data pointer of the stored data record or invalid if not found
138 virtual QExplicitlySharedDataPointer
<Storage::Data
> query(QString
const & name
) const = 0;
141 * Returns an item model with the names of all the stored passwords
143 * This function returns an item model with the names of all the stored passwords. Use the item
144 * model for auto completion.
146 virtual QAbstractItemModel
* autoCompletionModel() = 0;
150 } // namespace eVaf::PswGen
153 Q_DECLARE_INTERFACE(eVaf::PswGen::iStorage
, "eVaf.PswGen.iStorage/1.0")