@@ -38,14 +38,14 @@ private struct Language
3838 }
3939 } ;
4040
41- private bool betaLangWarning = false ;
41+ private bool settingsStarted = false ;
4242 private MainForm owner ;
4343
4444 public SettingsForm ( bool darkMode )
4545 {
4646 if ( darkMode )
4747 {
48- this . HandleCreated += new EventHandler ( ThemeManager . formHandleCreated ) ;
48+ HandleCreated += new EventHandler ( ThemeManager . formHandleCreated ) ;
4949 }
5050
5151 InitializeComponent ( ) ;
@@ -89,12 +89,7 @@ public SettingsForm(bool darkMode)
8989
9090 favExtTextBox . Text = Properties . Settings . Default . FavoriteExternalApp ;
9191
92- const string openWithKey = "HKEY_CLASSES_ROOT\\ *\\ shell\\ QuickPictureViewer" ;
93- string openWithValue = ( string ) Registry . GetValue ( openWithKey , string . Empty , string . Empty ) ;
94- if ( openWithValue . Length > 0 )
95- {
96- openWithCheckBox . Checked = true ;
97- }
92+ openWithCheckBox . Checked = GetOpenWithState ( ) ;
9893 const string browseWithKey1 = "HKEY_CLASSES_ROOT\\ Directory\\ Background\\ shell\\ QuickPictureViewer" ;
9994 const string browseWithKey2 = "HKEY_CLASSES_ROOT\\ Directory\\ shell\\ QuickPictureViewer" ;
10095 string browseWithValue1 = ( string ) Registry . GetValue ( browseWithKey1 , string . Empty , string . Empty ) ;
@@ -124,7 +119,7 @@ public SettingsForm(bool darkMode)
124119
125120 private void InitLanguage ( )
126121 {
127- this . Text = owner . resMan . GetString ( "settings" ) ;
122+ Text = owner . resMan . GetString ( "settings" ) ;
128123 langPage . Text = owner . resMan . GetString ( "localization" ) ;
129124 startupPage . Text = owner . resMan . GetString ( "startup" ) ;
130125 restartLabel1 . Text = "* " + owner . resMan . GetString ( "restart-required" ) ;
@@ -140,7 +135,6 @@ private void InitLanguage()
140135 updatesCheckBox . Text = owner . resMan . GetString ( "check-for-app-updates" ) ;
141136 favExtLabel . Text = owner . resMan . GetString ( "fav-external-app" ) + ":" ;
142137 browseBtn . Text = " " + owner . resMan . GetString ( "browse" ) ;
143- externalPage . Text = owner . resMan . GetString ( "windows" ) ;
144138 slideshowPage . Text = owner . resMan . GetString ( "slideshow" ) ;
145139 slideshowTimeLabel . Text = owner . resMan . GetString ( "switching-time" ) + ":" ;
146140 mousePage . Text = owner . resMan . GetString ( "input" ) ;
@@ -175,32 +169,32 @@ private void SetDarkMode(bool dark)
175169 }
176170
177171 DarkMode = dark ;
178- updatesCheckBox . SetDarkMode ( dark ) ;
179- fullscrCursorCheckBox . SetDarkMode ( dark ) ;
172+ updatesCheckBox . DarkMode = dark ;
173+ fullscrCursorCheckBox . DarkMode = dark ;
180174 darkThemeRadio . SetDarkMode ( dark ) ;
181175 lightThemeRadio . SetDarkMode ( dark ) ;
182176 systemThemeRadio . SetDarkMode ( dark ) ;
183177 closeBtn . SetDarkMode ( dark ) ;
184178 slideshowTimeNumeric . DarkMode = dark ;
185- slideshowCounterCheckBox . SetDarkMode ( dark ) ;
179+ slideshowCounterCheckBox . DarkMode = dark ;
186180 langComboBox . SetDarkMode ( dark ) ;
187181 favExtTextBox . DarkMode = dark ;
188- escToExitCheckBox . SetDarkMode ( dark ) ;
182+ escToExitCheckBox . DarkMode = dark ;
189183 mouseWheelActionRadio1 . SetDarkMode ( dark ) ;
190184 mouseWheelActionRadio2 . SetDarkMode ( dark ) ;
191185 mouseWheelActionRadio3 . SetDarkMode ( dark ) ;
192- startupMaximizeCheckBox . SetDarkMode ( dark ) ;
193- startupPasteCheckBox . SetDarkMode ( dark ) ;
194- startupBoundsCheckBox . SetDarkMode ( dark ) ;
195- openWithCheckBox . SetDarkMode ( dark ) ;
196- browseWithCheckBox . SetDarkMode ( dark ) ;
186+ startupMaximizeCheckBox . DarkMode = dark ;
187+ startupPasteCheckBox . DarkMode = dark ;
188+ startupBoundsCheckBox . DarkMode = dark ;
189+ openWithCheckBox . DarkMode = dark ;
190+ browseWithCheckBox . DarkMode = dark ;
197191 }
198192
199193 private void SettingsForm_KeyDown ( object sender , KeyEventArgs e )
200194 {
201195 if ( e . KeyCode == Keys . Escape )
202196 {
203- this . Close ( ) ;
197+ Close ( ) ;
204198 }
205199 }
206200
@@ -245,7 +239,7 @@ private void fullscrCursorCheckBox_CheckedChanged(object sender, EventArgs e)
245239
246240 private void closeBtn_Click ( object sender , EventArgs e )
247241 {
248- this . Close ( ) ;
242+ Close ( ) ;
249243 }
250244
251245 private void favExtTextBox_TextChanged ( object sender , EventArgs e )
@@ -282,7 +276,7 @@ private void langComboBox_SelectedIndexChanged(object sender, EventArgs e)
282276
283277 if ( owner != null )
284278 {
285- if ( languages [ langComboBox . SelectedIndex ] . Beta && betaLangWarning )
279+ if ( languages [ langComboBox . SelectedIndex ] . Beta && settingsStarted )
286280 {
287281 MessageBox . Show (
288282 owner . resMan . GetString ( "beta-lang-warning" ) ,
@@ -318,10 +312,10 @@ private void Ll_Click(object sender, EventArgs e)
318312
319313 private void SettingsForm_Load ( object sender , EventArgs e )
320314 {
321- owner = this . Owner as MainForm ;
315+ owner = Owner as MainForm ;
322316 InitLanguage ( ) ;
323317 langComboBox_SelectedIndexChanged ( null , null ) ;
324- betaLangWarning = true ;
318+ settingsStarted = true ;
325319 }
326320
327321 private void escToExitCheckBox_CheckedChanged ( object sender , EventArgs e )
@@ -370,5 +364,67 @@ private void startupBoundsCheckBox_CheckedChanged(object sender, EventArgs e)
370364 Properties . Settings . Default . StartupRestoreBounds = startupBoundsCheckBox . Checked ;
371365 Properties . Settings . Default . Save ( ) ;
372366 }
367+
368+ private void openWithCheckBox_CheckedChanged ( object sender , EventArgs e )
369+ {
370+ if ( settingsStarted )
371+ {
372+ try
373+ {
374+ if ( openWithCheckBox . Checked )
375+ {
376+ Registry . SetValue ( "HKEY_CLASSES_ROOT\\ *\\ shell\\ QuickPictureViewer" , "" , "Open with QuickPictureViewer" ) ;
377+ Registry . SetValue ( "HKEY_CLASSES_ROOT\\ *\\ shell\\ QuickPictureViewer" , "Icon" , string . Format ( "\" {0}picture.ico\" " , AppDomain . CurrentDomain . BaseDirectory ) ) ;
378+ Registry . SetValue ( "HKEY_CLASSES_ROOT\\ *\\ shell\\ QuickPictureViewer\\ command" , "" , string . Format ( "\" {0}quick-picture-viewer.exe\" \" %V\" " , AppDomain . CurrentDomain . BaseDirectory ) ) ;
379+ }
380+ else
381+ {
382+ RegistryKey RegKey = Registry . ClassesRoot . OpenSubKey ( "*\\ shell\\ QuickPictureViewer" , true ) ;
383+ RegKey . DeleteSubKeyTree ( "" ) ;
384+ }
385+ }
386+ catch
387+ {
388+ MessageBox . Show ( "To change context menu options you need to run app with Administrator" , owner . resMan . GetString ( "error" ) ) ;
389+ }
390+ }
391+ }
392+
393+ private void browseWithCheckBox_CheckedChanged ( object sender , EventArgs e )
394+ {
395+ if ( settingsStarted )
396+ {
397+ try
398+ {
399+ if ( browseWithCheckBox . Checked )
400+ {
401+ Registry . SetValue ( "HKEY_CLASSES_ROOT\\ Directory\\ Background\\ shell\\ QuickPictureViewer" , "" , "Browse folder with QuickPictureViewer" ) ;
402+ Registry . SetValue ( "HKEY_CLASSES_ROOT\\ Directory\\ Background\\ shell\\ QuickPictureViewer" , "Icon" , string . Format ( "\" {0}picture.ico\" " , AppDomain . CurrentDomain . BaseDirectory ) ) ;
403+ Registry . SetValue ( "HKEY_CLASSES_ROOT\\ Directory\\ Background\\ shell\\ QuickPictureViewer\\ command" , "" , string . Format ( "\" {0}quick-picture-viewer.exe\" \" %V\" " , AppDomain . CurrentDomain . BaseDirectory ) ) ;
404+
405+ Registry . SetValue ( "HKEY_CLASSES_ROOT\\ Directory\\ shell\\ QuickPictureViewer" , "" , "Browse folder with QuickPictureViewer" ) ;
406+ Registry . SetValue ( "HKEY_CLASSES_ROOT\\ Directory\\ shell\\ QuickPictureViewer" , "Icon" , string . Format ( "\" {0}picture.ico\" " , AppDomain . CurrentDomain . BaseDirectory ) ) ;
407+ Registry . SetValue ( "HKEY_CLASSES_ROOT\\ Directory\\ shell\\ QuickPictureViewer\\ command" , "" , string . Format ( "\" {0}quick-picture-viewer.exe\" \" %V\" " , AppDomain . CurrentDomain . BaseDirectory ) ) ;
408+ }
409+ else
410+ {
411+ RegistryKey RegKey = Registry . ClassesRoot . OpenSubKey ( "Directory\\ Background\\ shell\\ QuickPictureViewer" , true ) ;
412+ RegKey . DeleteSubKeyTree ( "" ) ;
413+ RegistryKey RegKey2 = Registry . ClassesRoot . OpenSubKey ( "Directory\\ shell\\ QuickPictureViewer" , true ) ;
414+ RegKey2 . DeleteSubKeyTree ( "" ) ;
415+ }
416+ }
417+ catch
418+ {
419+ MessageBox . Show ( "To change context menu options you need to run app with Administrator" , owner . resMan . GetString ( "error" ) ) ;
420+ }
421+ }
422+ }
423+
424+ private bool GetOpenWithState ( )
425+ {
426+ string openWithValue = ( string ) Registry . GetValue ( "HKEY_CLASSES_ROOT\\ *\\ shell\\ QuickPictureViewer" , string . Empty , string . Empty ) ;
427+ return openWithValue . Length > 0 ;
428+ }
373429 }
374430}
0 commit comments