Merge pull request #194 from fsb4000/sse2
[novacoin.git] / src / qt / intro.h
1 // Copyright (c) 2011-2013 The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5 #ifndef BITCOIN_QT_INTRO_H
6 #define BITCOIN_QT_INTRO_H
7
8 #include <QDialog>
9 #include <QMutex>
10 #include <QThread>
11
12 class FreespaceChecker;
13
14 namespace Ui {
15     class Intro;
16 }
17
18 /** Introduction screen (pre-GUI startup).
19   Allows the user to choose a data directory,
20   in which the wallet and block chain will be stored.
21  */
22 class Intro : public QDialog
23 {
24     Q_OBJECT
25
26 public:
27     explicit Intro(QWidget *parent = 0);
28     ~Intro();
29
30     QString getDataDirectory();
31     void setDataDirectory(const QString &dataDir);
32
33     /**
34      * Determine data directory. Let the user choose if the current one doesn't exist.
35      *
36      * @note do NOT call global GetDataDir() before calling this function, this
37      * will cause the wrong path to be cached.
38      */
39     static void pickDataDirectory();
40
41     /**
42      * Determine default data directory for operating system.
43      */
44     static QString getDefaultDataDirectory();
45
46 signals:
47     void requestCheck();
48     void stopThread();
49
50 public slots:
51     void setStatus(int status, const QString &message, quint64 bytesAvailable);
52
53 private slots:
54     void on_dataDirectory_textChanged(const QString &arg1);
55     void on_ellipsisButton_clicked();
56     void on_dataDirDefault_clicked();
57     void on_dataDirCustom_clicked();
58
59 private:
60     Ui::Intro *ui;
61     QThread *thread;
62     QMutex mutex;
63     bool signalled;
64     QString pathToCheck;
65
66     void startThread();
67     void checkPath(const QString &dataDir);
68     QString getPathToCheck();
69
70     friend class FreespaceChecker;
71 };
72
73 #endif // BITCOIN_QT_INTRO_H