11using System ;
22using System . Collections . Generic ;
3+ using System . ComponentModel ;
34using System . Drawing ;
45using System . IO ;
56using System . Threading . Tasks ;
@@ -19,7 +20,7 @@ public class PluginAction : KeypadBase
1920 {
2021 Item item ;
2122 PluginSettings pluginSettings ;
22- DataBinder apiAction ;
23+ DataBinder dataBinder ;
2324
2425 public PluginAction ( ISDConnection connection , InitialPayload payload ) : base ( connection , payload )
2526 {
@@ -34,8 +35,9 @@ public PluginAction(ISDConnection connection, InitialPayload payload) : base(con
3435 Connection . OnPropertyInspectorDidDisappear += Connection_OnPropertyInspectorDidDisappear ;
3536 Connection . OnSendToPlugin += Connection_OnSendToPlugin ;
3637 Connection . OnTitleParametersDidChange += Connection_OnTitleParametersDidChange ;
38+ pluginSettings . PropertyChanged += PropertyChanged ;
3739 }
38-
40+ #region Event
3941 /// <summary>
4042 /// 제목이 변경되거나 스트림독에 플러그인이 나타날 때 호출됩니다.titleParametersDidChange
4143 /// 하드웨어 기준.
@@ -45,15 +47,25 @@ public PluginAction(ISDConnection connection, InitialPayload payload) : base(con
4547 private async void Connection_OnTitleParametersDidChange ( object sender , SDEventReceivedEventArgs < BarRaider . SdTools . Events . TitleParametersDidChange > e )
4648 {
4749 Logger . Instance . LogMessage ( TracingLevel . INFO , "OnTitleParametersDidChange Event Handled" ) ;
50+ //Tools.AutoPopulateSettings(pluginSettings, e.Event.Payload.Settings);
4851
49- if ( ! GoogleAuth . CredentialIsExist ( ) )
52+ if ( ! GoogleAuth . CredentialIsExist ( pluginSettings . UserTokenName ) )
5053 {
5154 await DisplayInitialAsync ( ) ;
5255 }
5356 else
5457 {
58+ //TODO 자동 갱신 or 수동 갱신
5559 await DisplayBusyAsync ( ) ;
5660 await UpdateApiDataAsync ( ) ;
61+ //if (!CheckExistData())
62+ //{
63+ // await DisplayInitialAsync();
64+ //}
65+ //else
66+ //{
67+ // await DisplayPreValueAsync();
68+ //}
5769 }
5870 }
5971
@@ -129,7 +141,12 @@ private void Connection_OnApplicationDidLaunch(object sender, SDEventReceivedEve
129141 {
130142 Logger . Instance . LogMessage ( TracingLevel . INFO , "OnApplicationDidLaunch Event Handled" ) ;
131143 }
132-
144+ private void PropertyChanged ( object sender , PropertyChangedEventArgs e )
145+ {
146+ Logger . Instance . LogMessage ( TracingLevel . INFO , $ "{ e . PropertyName } Property Changed") ;
147+ }
148+ #endregion
149+ #region Steam Dock
133150 /// <summary>
134151 /// 스트림독에 플러그인이 표시되지 않으면 호출됩니다.
135152 /// </summary>
@@ -175,16 +192,31 @@ public async override void ReceivedSettings(ReceivedSettingsPayload payload)
175192 Logger . Instance . LogMessage ( TracingLevel . INFO , "ReceivedSettings called" ) ;
176193
177194 Tools . AutoPopulateSettings ( pluginSettings , payload . Settings ) ;
195+ await SaveSettingsAsync ( ) ; // 스트림독으로 설정 업로드
178196
179- await SaveSettingsAsync ( ) ;
180- await DisplayInitialAsync ( ) ;
197+ if ( ! GoogleAuth . CredentialIsExist ( pluginSettings . UserTokenName ) )
198+ {
199+ item . Init ( ) ;
200+ dataBinder = null ;
201+ await DisplayInitialAsync ( ) ;
202+ }
203+ else if ( CheckExistData ( ) )
204+ {
205+ await DisplayBusyAsync ( ) ;
206+ await UpdateApiDataAsync ( ) ;
207+ }
208+ else
209+ {
210+ await DisplayInitialAsync ( ) ;
211+ }
181212 }
182213
183214 public override void ReceivedGlobalSettings ( ReceivedGlobalSettingsPayload payload )
184215 {
185216 Logger . Instance . LogMessage ( TracingLevel . INFO , "ReceivedGlobalSettings called" ) ;
217+ Tools . AutoPopulateSettings ( pluginSettings , payload . Settings ) ;
186218 }
187-
219+ #endregion
188220 #region Private Methods
189221 /// <summary>
190222 /// 설정 값을 스트림독으로 전달합니다.
@@ -217,21 +249,23 @@ private async Task DisplayInitialAsync()
217249 {
218250 try
219251 {
220-
221- if ( ! CheckExistData ( ) )
222- {
223- #if DEBUG
224- Logger . Instance . LogMessage ( TracingLevel . INFO , "기존 데이터 없음." ) ;
225- #endif
226- item . DisplayValues . OnlyOne ( "Press Key..." ) ;
227- }
228- else
229- {
252+ item . DisplayValues . OnlyOne ( "Press Key..." ) ;
230253#if DEBUG
231- Logger . Instance . LogMessage ( TracingLevel . INFO , "기존 데이터 발견 ." ) ;
254+ Logger . Instance . LogMessage ( TracingLevel . INFO , "DisplayInitialAsync: 스트림독으로 이미지 전송 중.. ." ) ;
232255#endif
233- UpdateValues ( ) ;
234- }
256+ await Connection . SetImageAsync ( UpdateKeyImage ( item , true ) ) ; // 초기 이미지 출력
257+ }
258+ catch ( Exception ex )
259+ {
260+ Logger . Instance . LogMessage ( TracingLevel . ERROR , ex . Message ) ;
261+ Logger . Instance . LogMessage ( TracingLevel . ERROR , ex . StackTrace ) ;
262+ }
263+ }
264+ private async Task DisplayPreValueAsync ( )
265+ {
266+ try
267+ {
268+ UpdateValues ( ) ;
235269#if DEBUG
236270 Logger . Instance . LogMessage ( TracingLevel . INFO , "DisplayInitialAsync: 스트림독으로 이미지 전송 중..." ) ;
237271#endif
@@ -345,7 +379,7 @@ private Bitmap UpdateKeyImage(Item item, bool initial = false)
345379 /// <returns></returns>
346380 private DataBinder GetApiInstance ( )
347381 {
348- return apiAction ?? new DataBinder ( pluginSettings , item ) ;
382+ return dataBinder ?? new DataBinder ( pluginSettings , item ) ;
349383 }
350384 #endregion
351385 }
0 commit comments