1 #ifndef SEAFILE_CLIENT_INIT_VDRIVE_DIALOG_H
2 #define SEAFILE_CLIENT_INIT_VDRIVE_DIALOG_H
3 
4 #include <QDialog>
5 #include "ui_init-vdrive-dialog.h"
6 #include "account.h"
7 #include "api/requests.h"
8 
9 class LocalRepo;
10 class QTimer;
11 
12 class InitVirtualDriveDialog : public QDialog,
13                                public Ui::InitVirtualDriveDialog
14 {
15     Q_OBJECT
16 public:
17     InitVirtualDriveDialog(const Account& account, QWidget *parent=0);
18 
19 private slots:
20     void onGetDefaultRepoSuccess(bool exists, const QString& repo_id);
21     void onGetDefaultRepoFailure(const ApiError& error);
22     void onCreateDefaultRepoSuccess(const QString& repo_id);
23     void onCreateDefaultRepoFailure(const ApiError& error);
24     void onDownloadRepoSuccess(const RepoDownloadInfo& info);
25     void onDownloadRepoFailure(const ApiError& error);
26     void checkDownloadProgress();
27     void start();
28     void onCancel();
29     void openVirtualDisk();
30 
31 private:
32     Q_DISABLE_COPY(InitVirtualDriveDialog)
33 
34     void getDefaultRepo();
35     void startDownload(const QString& repo_id);
36     void createLoadingView();
37     void createDefaultRepo();
38     void setStatusText(const QString& status);
39     void setStatusIcon(const QString& path);
40     void ensureVisible();
41     void finish();
42     void fail(const QString& reason);
43 
44     GetDefaultRepoRequest *get_default_repo_req_;
45     CreateDefaultRepoRequest *create_default_repo_req_;
46     DownloadRepoRequest *download_default_repo_req_;
47 
48     QString default_repo_id_;
49     QString default_repo_path_;
50 
51     Account account_;
52 
53     QTimer *check_download_timer_;
54 };
55 
56 #endif // SEAFILE_CLIENT_INIT_VDRIVE_DIALOG_H
57