Line data Source code
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 0 : 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 : Q_SIGNALS:
47 : void requestCheck();
48 : void stopThread();
49 :
50 : public Q_SLOTS:
51 : void setStatus(int status, const QString &message, quint64 bytesAvailable);
52 :
53 : private Q_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
|