Move singleton instance code to static member functions.

This commit is contained in:
Felix Geyer 2012-05-31 14:51:44 +02:00
parent 8d6b200dd7
commit d3fcf2e0c4
10 changed files with 65 additions and 45 deletions

View file

@ -28,6 +28,8 @@
#include "core/Config.h"
Clipboard* Clipboard::m_instance(0);
Clipboard::Clipboard(QObject* parent)
: QObject(parent)
, m_timer(new QTimer(this))
@ -75,13 +77,11 @@ void Clipboard::clearClipboard()
#endif
}
Clipboard* clipboard()
Clipboard* Clipboard::instance()
{
static Clipboard* instance(0);
if (!instance) {
instance = new Clipboard(qApp);
if (!m_instance) {
m_instance = new Clipboard(qApp);
}
return instance;
return m_instance;
}

View file

@ -30,17 +30,21 @@ public:
~Clipboard();
void setText(const QString& text);
static Clipboard* instance();
private Q_SLOTS:
void clearClipboard();
private:
explicit Clipboard(QObject* parent = 0);
QTimer* m_timer;
static Clipboard* m_instance;
friend Clipboard* clipboard();
QTimer* m_timer;
};
Clipboard* clipboard();
inline Clipboard* clipboard() {
return Clipboard::instance();
}
#endif // KEEPASSX_CLIPBOARD_H

View file

@ -19,6 +19,8 @@
#include "core/Config.h"
FileDialog* FileDialog::m_instance(0);
QString FileDialog::getOpenFileName(QWidget* parent, const QString& caption, QString dir,
const QString& filter, QString* selectedFilter,
QFileDialog::Options options)
@ -78,13 +80,11 @@ FileDialog::FileDialog()
{
}
FileDialog* fileDialog()
FileDialog* FileDialog::instance()
{
static FileDialog* instance(0);
if (!instance) {
instance = new FileDialog();
if (!m_instance) {
m_instance = new FileDialog();
}
return instance;
return m_instance;
}

View file

@ -36,15 +36,19 @@ public:
*/
void setNextFileName(const QString& fileName);
static FileDialog* instance();
private:
FileDialog();
QString m_nextFileName;
Q_DISABLE_COPY(FileDialog)
static FileDialog* m_instance;
friend FileDialog* fileDialog();
Q_DISABLE_COPY(FileDialog)
};
FileDialog* fileDialog();
inline FileDialog* fileDialog() {
return FileDialog::instance();
}
#endif // KEEPASSX_FILEDIALOG_H