Codemaru
1.0.0.0
QR 코드, 모바일 랜딩 페이지, vCard 연락처 저장과 명함 디자인을 한 화면에서 제공하는 디지털 명함 서비스입니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
MainWindowViewModel.cs
이 파일의 문서화 페이지로 가기
1
using
Codemaru.Services
;
2
using
Codemaru.States
;
3
using
Dreamine.MVVM.Attributes;
4
using
Dreamine.MVVM.ViewModels;
5
using
System.Collections.ObjectModel;
6
using
System.Windows;
7
8
namespace
Codemaru.ViewModels
;
9
18
public
sealed
partial class
MainWindowViewModel
: ViewModelBase, IDisposable
19
{
28
private
readonly
CardHybridSession
_session
;
37
private
readonly
CertificateMonitorViewModel
_certificateMonitor
;
46
private
bool
_disposed
;
47
56
[DreamineProperty]
private
string
_title
=
"Codemaru"
;
65
[DreamineProperty]
private
string
_brand
=
string
.Empty;
74
[DreamineProperty]
private
string
_ownerName
=
string
.Empty;
83
[DreamineProperty]
private
string
_landingUrl
=
string
.Empty;
92
[DreamineProperty]
private
string
_currentUser
=
"Guest"
;
101
[DreamineProperty]
private
string
_statusMessage
=
"명함 랜딩 페이지 준비 중"
;
110
[DreamineProperty]
private
int
_historyCount
;
119
[DreamineProperty]
private
ObservableCollection<string>
_logs
=
new
();
120
129
public
CertificateMonitorViewModel
CertificateMonitor
=>
_certificateMonitor
;
130
163
public
MainWindowViewModel
(
CardHybridSession
session,
CertificateMonitorViewModel
certificateMonitor)
164
{
165
_session
= session ??
throw
new
ArgumentNullException(nameof(session));
166
_certificateMonitor
= certificateMonitor ??
throw
new
ArgumentNullException(nameof(certificateMonitor));
167
_session.StateChanged +=
OnSessionChanged
;
168
ApplyState
(
_session
.State);
169
Logs.Add($
"[{DateTime.Now:HH:mm:ss}] CardHybrid started"
);
170
}
171
196
private
void
OnSessionChanged
(
object
? sender, CardHybridState state)
197
{
198
_ =
RunOnUiAsync
(() =>
ApplyState
(state));
199
}
200
217
private
void
ApplyState
(CardHybridState state)
218
{
219
Brand = state.Profile.Brand;
220
OwnerName = state.Profile.Name;
221
LandingUrl = state.Profile.LandingUrl;
222
CurrentUser =
"Guest"
;
223
HistoryCount = state.History.Count;
224
StatusMessage = $
"{state.Profile.Name} / {state.Profile.Role}"
;
225
Logs.Add($
"[{DateTime.Now:HH:mm:ss}] {state.Profile.LandingSlug} updated, history {HistoryCount}"
);
226
}
227
252
private
static
Task
RunOnUiAsync
(Action action)
253
{
254
if
(Application.Current?.Dispatcher is not { } dispatcher)
255
{
256
action();
257
return
Task.CompletedTask;
258
}
259
260
if
(dispatcher.CheckAccess())
261
{
262
action();
263
return
Task.CompletedTask;
264
}
265
266
return
dispatcher.InvokeAsync(action).Task;
267
}
268
277
public
void
Dispose
()
278
{
279
if
(
_disposed
)
280
{
281
return
;
282
}
283
284
_session.StateChanged -=
OnSessionChanged
;
285
_disposed
=
true
;
286
GC.SuppressFinalize(
this
);
287
}
288
}
Codemaru.Services
Definition
CardHybridCircuitSession.cs:8
Codemaru.States
Definition
CardHybridState.cs:3
Codemaru.ViewModels
Definition
AsyncRelayCommand.cs:3
Codemaru.Services.CardHybridSession
Definition
CardHybridSession.cs:24
Codemaru.ViewModels.CertificateMonitorViewModel
Definition
CertificateMonitorViewModel.cs:21
Codemaru.ViewModels.MainWindowViewModel._historyCount
int _historyCount
Definition
MainWindowViewModel.cs:110
Codemaru.ViewModels.MainWindowViewModel._landingUrl
string _landingUrl
Definition
MainWindowViewModel.cs:83
Codemaru.ViewModels.MainWindowViewModel._disposed
bool _disposed
Definition
MainWindowViewModel.cs:46
Codemaru.ViewModels.MainWindowViewModel._title
string _title
Definition
MainWindowViewModel.cs:56
Codemaru.ViewModels.MainWindowViewModel.ApplyState
void ApplyState(CardHybridState state)
Definition
MainWindowViewModel.cs:217
Codemaru.ViewModels.MainWindowViewModel._certificateMonitor
readonly CertificateMonitorViewModel _certificateMonitor
Definition
MainWindowViewModel.cs:37
Codemaru.ViewModels.MainWindowViewModel.Dispose
void Dispose()
Definition
MainWindowViewModel.cs:277
Codemaru.ViewModels.MainWindowViewModel._session
readonly CardHybridSession _session
Definition
MainWindowViewModel.cs:28
Codemaru.ViewModels.MainWindowViewModel._statusMessage
string _statusMessage
Definition
MainWindowViewModel.cs:101
Codemaru.ViewModels.MainWindowViewModel._currentUser
string _currentUser
Definition
MainWindowViewModel.cs:92
Codemaru.ViewModels.MainWindowViewModel.OnSessionChanged
void OnSessionChanged(object? sender, CardHybridState state)
Definition
MainWindowViewModel.cs:196
Codemaru.ViewModels.MainWindowViewModel.MainWindowViewModel
MainWindowViewModel(CardHybridSession session, CertificateMonitorViewModel certificateMonitor)
Definition
MainWindowViewModel.cs:163
Codemaru.ViewModels.MainWindowViewModel._ownerName
string _ownerName
Definition
MainWindowViewModel.cs:74
Codemaru.ViewModels.MainWindowViewModel.CertificateMonitor
CertificateMonitorViewModel CertificateMonitor
Definition
MainWindowViewModel.cs:129
Codemaru.ViewModels.MainWindowViewModel._logs
ObservableCollection< string > _logs
Definition
MainWindowViewModel.cs:119
Codemaru.ViewModels.MainWindowViewModel.RunOnUiAsync
static Task RunOnUiAsync(Action action)
Definition
MainWindowViewModel.cs:252
Codemaru.ViewModels.MainWindowViewModel._brand
string _brand
Definition
MainWindowViewModel.cs:65
ViewModels
MainWindowViewModel.cs
다음에 의해 생성됨 :
1.17.0