2 * @file PswGen/Storage/istorage.h
3 * @brief Interface for password storage modules
6 * Copyright (c) 2011 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
27 #include <QSharedData>
28 #include <QExplicitlySharedDataPointer>
30 class QAbstractItemModel
;
38 * Data stored for every password.
40 class PSWGEN_STORAGE_EXPORT Data
: public QSharedData
51 Data(int l
, uint f
= 0)
58 /// Length of the generated password
59 inline int length() const { return mLength
; }
60 inline void setLength(int value
)
62 if (mLength
!= value
) {
68 /// Optional flags for the password generator
69 inline uint
flags() const { return mFlags
; }
70 inline void setFlags(uint value
)
72 if (mFlags
!= value
) {
78 /// Flag indicating that some fields are modified
79 bool modified() const { return mModified
; }
81 /// Resets the modified flag
82 void reset() { mModified
= false; }
93 } // eVaf::PswGen::Storage
96 * Password storage interface.
98 * This interface is used to store options that were used to generate strong passwords.
104 * Saves the data record
105 * @param name Name of the password
106 * @param data Data for the password
107 * @return True if ok; false if failed
109 virtual bool save(QString
const & name
, QExplicitlySharedDataPointer
<Storage::Data
> data
) = 0;
112 * Returns a data record by the name
113 * @param name Name of the password
114 * @return Shared data pointer of the stored data record or invalid if not found
116 virtual QExplicitlySharedDataPointer
<Storage::Data
> query(QString
const & name
) const = 0;
119 * Returns an item model with the names of all the stored passwords
121 * This function returns an item model with the names of all the stored passwords. Use the item
122 * model for auto completion.
124 virtual QAbstractItemModel
* autoCompletionModel() = 0;
128 } // namespace eVaf::PswGen
131 Q_DECLARE_INTERFACE(eVaf::PswGen::iStorage
, "eVaf.PswGen.iStorage/1.0")