From 75905aa255b41551c548c25ea18c1a95634afaa6 Mon Sep 17 00:00:00 2001 From: halo Date: Tue, 24 Sep 2024 21:09:07 +0200 Subject: [PATCH 1/6] Add checkbox setting for single auto connect (Sorry for the layout constraint hassle) --- Common/ACPreferences.h | 7 +++ Common/ACPreferences.m | 11 +++++ .../Base.lproj/ACCrossPromotionWindow.xib | 18 ++++---- .../Base.lproj/ACPreferencesAboutView.xib | 10 ++--- .../Base.lproj/ACPreferencesGeneralView.xib | 45 ++++++++++++++----- .../ACPreferencesGeneralViewController.m | 17 +++++++ 6 files changed, 82 insertions(+), 26 deletions(-) diff --git a/Common/ACPreferences.h b/Common/ACPreferences.h index c22424a..403ac64 100644 --- a/Common/ACPreferences.h +++ b/Common/ACPreferences.h @@ -60,6 +60,13 @@ extern NSString * const kACMenuBarImageDidChange; -(void)setDisabledCheckForUpdatesAutomatically:(BOOL)inValue; +/** + Enable auto connecting to max one service. + */ +-(BOOL)singleAutoConnect; +-(void)setSingleAutoConnect:(BOOL)inValue; + + /** Menu Bar Images */ diff --git a/Common/ACPreferences.m b/Common/ACPreferences.m index f2d34de..88d31b0 100644 --- a/Common/ACPreferences.m +++ b/Common/ACPreferences.m @@ -20,6 +20,7 @@ NSString * const kAlwaysConnectedRetryDelayPrefKey = @"AlwaysConnectedRetryDelay"; NSString * const kDisabledCheckForUpdatesAutomaticallyPrefKey = @"DisabledCheckForUpdatesAutomatically"; +NSString * const kSingleAutoConnectPrefKey = @"SingleAutoConnect"; NSString * const kMenuBarImageTypePrefKey = @"MenuBarImageType"; NSString * const kACConfigurationDidChange = @"kACConfigurationDidChange"; @@ -202,6 +203,16 @@ -(void)setDisabledCheckForUpdatesAutomatically:(BOOL)inValue [[NSUserDefaults standardUserDefaults] setBool:inValue forKey:kDisabledCheckForUpdatesAutomaticallyPrefKey]; } +-(BOOL)singleAutoConnect +{ + return [[NSUserDefaults standardUserDefaults] boolForKey:kSingleAutoConnectPrefKey]; +} + +-(void)setSingleAutoConnect:(BOOL)inValue +{ + [[NSUserDefaults standardUserDefaults] setBool:inValue forKey:kSingleAutoConnectPrefKey]; +} + -(MenuBarImageType)menuBarImageType { return [[NSUserDefaults standardUserDefaults] integerForKey:kMenuBarImageTypePrefKey]; diff --git a/VPNStatus/Base.lproj/ACCrossPromotionWindow.xib b/VPNStatus/Base.lproj/ACCrossPromotionWindow.xib index 57f0d2f..5a0beff 100644 --- a/VPNStatus/Base.lproj/ACCrossPromotionWindow.xib +++ b/VPNStatus/Base.lproj/ACCrossPromotionWindow.xib @@ -1,8 +1,8 @@ - + - + @@ -17,7 +17,7 @@ - + @@ -62,7 +62,7 @@ - + @@ -70,7 +70,7 @@ - + @@ -146,7 +146,7 @@ - + @@ -154,7 +154,7 @@ - + @@ -230,7 +230,7 @@ - + @@ -238,7 +238,7 @@ - + diff --git a/VPNStatus/Base.lproj/ACPreferencesAboutView.xib b/VPNStatus/Base.lproj/ACPreferencesAboutView.xib index c852fb3..7fccd36 100644 --- a/VPNStatus/Base.lproj/ACPreferencesAboutView.xib +++ b/VPNStatus/Base.lproj/ACPreferencesAboutView.xib @@ -1,8 +1,8 @@ - + - + @@ -27,7 +27,7 @@ - + @@ -35,7 +35,7 @@ - + @@ -43,7 +43,7 @@ - + diff --git a/VPNStatus/Base.lproj/ACPreferencesGeneralView.xib b/VPNStatus/Base.lproj/ACPreferencesGeneralView.xib index 332a371..039b887 100644 --- a/VPNStatus/Base.lproj/ACPreferencesGeneralView.xib +++ b/VPNStatus/Base.lproj/ACPreferencesGeneralView.xib @@ -1,8 +1,8 @@ - + - + @@ -11,6 +11,7 @@ + @@ -20,15 +21,15 @@ - - + + - + @@ -36,8 +37,8 @@ - - + + @@ -54,16 +55,16 @@ - - + + - - + + @@ -90,7 +91,7 @@ - + @@ -98,6 +99,16 @@ + @@ -117,8 +128,17 @@ + + + + + + + + + @@ -138,6 +158,7 @@ + diff --git a/VPNStatus/PreferencesUI/ACPreferencesGeneralViewController.m b/VPNStatus/PreferencesUI/ACPreferencesGeneralViewController.m index 7d2f63f..531ac72 100644 --- a/VPNStatus/PreferencesUI/ACPreferencesGeneralViewController.m +++ b/VPNStatus/PreferencesUI/ACPreferencesGeneralViewController.m @@ -13,6 +13,7 @@ @interface ACPreferencesGeneralViewController () @property (weak) IBOutlet NSTextField *retryDelayField; @property (weak) IBOutlet NSButton *automaticCheckForUpdatesButton; +@property (weak) IBOutlet NSButton *singleAutoConnectButton; @property (weak) IBOutlet NSPopUpButton *menuBarImagePopUpButton; @end @@ -47,6 +48,16 @@ - (void)viewDidLoad [self.automaticCheckForUpdatesButton setState:NSControlStateValueOn]; } + BOOL singleAutoConnect = [[ACPreferences sharedPreferences] singleAutoConnect]; + if(singleAutoConnect) + { + [self.singleAutoConnectButton setState:NSControlStateValueOn]; + } + else + { + [self.singleAutoConnectButton setState:NSControlStateValueOff]; + } + NSMenu *theMenu = self.menuBarImagePopUpButton.menu; for(NSInteger menuItemIndex = 0 ; menuItemIndex < theMenu.numberOfItems ; menuItemIndex++) { @@ -94,6 +105,12 @@ - (IBAction)doCheckForUpdatesAutomatically:(id)sender [[ACPreferences sharedPreferences] setDisabledCheckForUpdatesAutomatically:(checkbox.state != NSControlStateValueOn)]; } +- (IBAction)doSingleAutoConnect:(id)sender +{ + NSButton *checkbox = (NSButton *)sender; + [[ACPreferences sharedPreferences] setSingleAutoConnect:(checkbox.state != NSControlStateValueOff)]; +} + - (IBAction)doChangeMenuBarImage:(id)sender { NSInteger menuBarImageType = [sender indexOfSelectedItem]; From cd3fcc46c5943a7e5de00fc12b84b5661f58e82f Mon Sep 17 00:00:00 2001 From: halo Date: Wed, 2 Oct 2024 11:23:26 +0200 Subject: [PATCH 2/6] Deactivate AlwaysConnected for other services --- Common/ACPreferences.m | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Common/ACPreferences.m b/Common/ACPreferences.m index 88d31b0..2563804 100644 --- a/Common/ACPreferences.m +++ b/Common/ACPreferences.m @@ -81,8 +81,14 @@ -(void)setAlwaysConnected:(BOOL)inAlwaysConnected forServicesIdentifier:(NSStrin [services addObject:updatedServiceDictionary]; serviceFound = YES; - break; - } + } else if([self singleAutoConnect]) + { + NSMutableDictionary *updatedServiceDictionary = [service mutableCopy]; + updatedServiceDictionary[kServiceAlwaysConnectedKey] = [NSNumber numberWithBool:false]; + + [services removeObject:service]; + [services addObject:updatedServiceDictionary]; + } } if(!serviceFound) From 095cf253c15510dd3ecd56dec7a927400be0e2e3 Mon Sep 17 00:00:00 2001 From: Alexandre Colucci Date: Wed, 2 Oct 2024 21:00:02 +0200 Subject: [PATCH 3/6] Fix the layout constraints for the checkbox setting for single auto connect --- .../Base.lproj/ACPreferencesGeneralView.xib | 45 ++++++++++--------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/VPNStatus/Base.lproj/ACPreferencesGeneralView.xib b/VPNStatus/Base.lproj/ACPreferencesGeneralView.xib index 039b887..357e7e8 100644 --- a/VPNStatus/Base.lproj/ACPreferencesGeneralView.xib +++ b/VPNStatus/Base.lproj/ACPreferencesGeneralView.xib @@ -21,8 +21,8 @@ - - + + @@ -37,8 +37,8 @@ - - + + @@ -55,16 +55,16 @@ - - + + - - + + @@ -72,7 +72,7 @@ - + -