프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

markus / MarkusAutoUpdate / src / NetSparkle.UI.WPF / ViewModels / DownloadProgressWindowViewModel.cs @ d8f5045e

이력 | 보기 | 이력해설 | 다운로드 (4.06 KB)

1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using WPFTemplate.Helpers;
5

    
6
namespace NetSparkleUpdater.UI.WPF.ViewModels
7
{
8
    public class DownloadProgressWindowViewModel : ChangeNotifier
9
    {
10
        private AppCastItem _itemToDownload;
11

    
12
        private bool _isDownloading;
13
        private bool _didDownloadAnything;
14

    
15
        private string _errorMessageText;
16
        private bool _isErrorMessageVisible;
17

    
18
        private string _downloadingTitle;
19
        private double _downloadProgressValue;
20
        private string _userReadableDownloadProgress;
21

    
22
        private string _actionButtonTitle;
23
        private bool _isActionButtonVisible;
24

    
25
        public DownloadProgressWindowViewModel()
26
        {
27
            IsDownloading = true;
28
            DidDownloadAnything = false;
29
            ErrorMessageText = "";
30
            IsErrorMessageVisible = false;
31
            _downloadingTitle = "";
32
            _downloadProgressValue = 0.0;
33
            IsActionButtonVisible = false;
34
        }
35

    
36
        public AppCastItem ItemToDownload
37
        {
38
            get => _itemToDownload;
39
            set 
40
            { 
41
                _itemToDownload = value;
42
                NotifyPropertyChanged();
43

    
44
                if (value != null)
45
                {
46
                    DownloadingTitle = string.Format("Downloading {0}", _itemToDownload.AppName + " " + _itemToDownload.Version);
47
                }
48
                else
49
                {
50
                    DownloadingTitle = "Downloading...";
51
                }
52
            }
53
        }
54

    
55
        public bool IsDownloading
56
        {
57
            get => _isDownloading;
58
            set { _isDownloading = value; NotifyPropertyChanged(); }
59
        }
60

    
61
        public bool DidDownloadAnything
62
        {
63
            get => _didDownloadAnything;
64
            set { _didDownloadAnything = value; NotifyPropertyChanged(); }
65
        }
66

    
67
        public string ErrorMessageText
68
        {
69
            get => _errorMessageText;
70
            set { _errorMessageText = value; NotifyPropertyChanged(); }
71
        }
72

    
73
        public bool IsErrorMessageVisible
74
        {
75
            get => _isErrorMessageVisible;
76
            set { _isErrorMessageVisible = value; NotifyPropertyChanged(); }
77
        }
78

    
79
        public string DownloadingTitle
80
        {
81
            get => _downloadingTitle;
82
            set { _downloadingTitle = value; NotifyPropertyChanged(); }
83
        }
84

    
85
        public double DownloadProgress
86
        {
87
            get => _downloadProgressValue;
88
            set { _downloadProgressValue = value; NotifyPropertyChanged(); }
89
        }
90

    
91
        public string UserReadableDownloadProgress
92
        {
93
            get => _userReadableDownloadProgress;
94
            set { _userReadableDownloadProgress = value; NotifyPropertyChanged(); }
95
        }
96

    
97
        public string ActionButtonTitle
98
        {
99
            get => _actionButtonTitle;
100
            set { _actionButtonTitle = value; NotifyPropertyChanged(); }
101
        }
102

    
103
        public bool IsActionButtonVisible
104
        {
105
            get => _isActionButtonVisible;
106
            set { _isActionButtonVisible = value; NotifyPropertyChanged(); }
107
        }
108

    
109
        public void SetFinishedDownloading(bool isInstallFileValid)
110
        {
111
            IsDownloading = false;
112

    
113
            DownloadProgress = 100;
114
            if (!_didDownloadAnything)
115
            {
116
                UserReadableDownloadProgress = string.Format("");
117
            }
118
            if (isInstallFileValid)
119
            {
120
                IsActionButtonVisible = true;
121
                ActionButtonTitle = "Install and Relaunch";
122
            }
123
            else
124
            {
125
                IsActionButtonVisible = false;
126
            }
127
        }
128

    
129
        public void UpdateProgress(long bytesReceived, long totalBytesToReceive, int percentage)
130
        {
131
            DidDownloadAnything = true;
132
            DownloadProgress = percentage;
133
            UserReadableDownloadProgress = string.Format("({0} / {1})",
134
                Utilities.ConvertNumBytesToUserReadableString(bytesReceived),
135
                Utilities.ConvertNumBytesToUserReadableString(totalBytesToReceive));
136
        }
137

    
138
    }
139
}
클립보드 이미지 추가 (최대 크기: 500 MB)