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
42 Data(QString
const & name
)
50 Data(QString
const & name
, int l
, uint f
= 0)
58 /// Name of the password
59 inline QString
const & name() const { return mName
; }
61 /// Length of the generated password
62 inline int length() const { return mLength
; }
63 inline void setLength(int value
)
65 if (mLength
!= value
) {
71 /// Optional flags for the password generator
72 inline uint
flags() const { return mFlags
; }
73 inline void setFlags(uint value
)
75 if (mFlags
!= value
) {
81 /// Flag indicating that some fields are modified
82 bool modified() const { return mModified
; }
84 /// Resets the modified flag
85 void reset() { mModified
= false; }
97 } // eVaf::PswGen::Storage
100 * Password storage interface.
102 * This interface is used to store options that were used to generate strong passwords.
108 * Saves the data record
109 * @param name Name of the password
110 * @param data Data for the password
111 * @return True if ok; false if failed
113 virtual bool save(QString
const & name
, QExplicitlySharedDataPointer
<Storage::Data
> data
) = 0;
116 * Returns a data record by the name
117 * @param name Name of the password
118 * @return Shared data pointer of the stored data record or invalid if not found
120 virtual QExplicitlySharedDataPointer
<Storage::Data
> query(QString
const & name
) const = 0;
123 * Returns an item model with the names of all the stored passwords
125 * This function returns an item model with the names of all the stored passwords. Use the item
126 * model for auto completion.
128 virtual QAbstractItemModel
* autoCompletionModel() = 0;
132 } // namespace eVaf::PswGen
135 Q_DECLARE_INTERFACE(eVaf::PswGen::iStorage
, "eVaf.PswGen.iStorage/1.0")