1 // Copyright (c) 2011-2015 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 static const bool DEFAULT_CHOOSE_DATADIR = false; 13 14 class FreespaceChecker; 15 16 namespace Ui { 17 class Intro; 18 } 19 20 /** Introduction screen (pre-GUI startup). 21 Allows the user to choose a data directory, 22 in which the wallet and block chain will be stored. 23 */ 24 class Intro : public QDialog 25 { 26 Q_OBJECT 27 28 public: 29 explicit Intro(QWidget *parent = 0); 30 ~Intro(); 31 32 QString getDataDirectory(); 33 void setDataDirectory(const QString &dataDir); 34 35 /** 36 * Determine data directory. Let the user choose if the current one doesn't exist. 37 * 38 * @returns true if a data directory was selected, false if the user cancelled the selection 39 * dialog. 40 * 41 * @note do NOT call global GetDataDir() before calling this function, this 42 * will cause the wrong path to be cached. 43 */ 44 static bool pickDataDirectory(); 45 46 /** 47 * Determine default data directory for operating system. 48 */ 49 static QString getDefaultDataDirectory(); 50 51 Q_SIGNALS: 52 void requestCheck(); 53 void stopThread(); 54 55 public Q_SLOTS: 56 void setStatus(int status, const QString &message, quint64 bytesAvailable); 57 58 private Q_SLOTS: 59 void on_dataDirectory_textChanged(const QString &arg1); 60 void on_ellipsisButton_clicked(); 61 void on_dataDirDefault_clicked(); 62 void on_dataDirCustom_clicked(); 63 64 private: 65 Ui::Intro *ui; 66 QThread *thread; 67 QMutex mutex; 68 bool signalled; 69 QString pathToCheck; 70 71 void startThread(); 72 void checkPath(const QString &dataDir); 73 QString getPathToCheck(); 74 75 friend class FreespaceChecker; 76 }; 77 78 #endif // BITCOIN_QT_INTRO_H 79