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
25 #include <QSharedData>
26 #include <QExplicitlySharedDataPointer>
28 class QAbstractItemModel
;
36 * Data stored for every password.
38 class Data
: public QSharedData
49 Data(int l
, uint f
= 0)
56 /// Length of the generated password
57 inline int length() const { return mLength
; }
58 inline void setLength(int value
)
60 if (mLength
!= value
) {
66 /// Optional flags for the password generator
67 inline uint
flags() const { return mFlags
; }
68 inline void setFlags(uint value
)
70 if (mFlags
!= value
) {
76 /// Flag indicating that some fields are modified
77 bool modified() const { return mModified
; }
79 /// Resets the modified flag
80 void reset() { mModified
= false; }
91 } // eVaf::PswGen::Storage
94 * Password storage interface.
96 * This interface is used to store options that were used to generate strong passwords.
102 * Saves the data record
103 * @param name Name of the password
104 * @param data Data for the password
105 * @return True if ok; false if failed
107 virtual bool save(QString
const & name
, QExplicitlySharedDataPointer
<Storage::Data
> data
) = 0;
110 * Returns a data record by the name
111 * @param name Name of the password
112 * @return Shared data pointer of the stored data record or invalid if not found
114 virtual QExplicitlySharedDataPointer
<Storage::Data
> query(QString
const & name
) const = 0;
117 * Returns an item model with the names of all the stored passwords
119 * This function returns an item model with the names of all the stored passwords. Use the item
120 * model for auto completion.
122 virtual QAbstractItemModel
* autoCompletionModel() = 0;
126 } // namespace eVaf::PswGen
129 Q_DECLARE_INTERFACE(eVaf::PswGen::iStorage
, "eVaf.PswGen.iStorage/1.0")