Client via Swift | V1.1

This commit is contained in:
2015-09-09 15:23:17 +02:00
parent 03abd6ef7a
commit 0752fe0547
64 changed files with 2625 additions and 1048 deletions
+140 -265
View File
@@ -7,219 +7,137 @@
objects = {
/* Begin PBXBuildFile section */
ECB32E3718210D1D00D3C886 /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = ECB32E3618210D1D00D3C886 /* Reachability.m */; };
ECB32E3918210F3A00D3C886 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECB32E3818210F3A00D3C886 /* SystemConfiguration.framework */; };
ECB963CC18228F42006F370E /* statusbar-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = ECB963CB18228F42006F370E /* statusbar-icon.png */; };
ECB963D01822943E006F370E /* ImageHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = ECB963CF1822943E006F370E /* ImageHelper.m */; };
ECDDC036182D0C7C002B76C1 /* feet.png in Resources */ = {isa = PBXBuildFile; fileRef = ECDDC035182D0C7C002B76C1 /* feet.png */; };
ECE5811B181A77090066D073 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECE5811A181A77090066D073 /* Cocoa.framework */; };
ECE58125181A77090066D073 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = ECE58123181A77090066D073 /* InfoPlist.strings */; };
ECE58127181A77090066D073 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE58126181A77090066D073 /* main.m */; };
ECE5812B181A77090066D073 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = ECE58129181A77090066D073 /* Credits.rtf */; };
ECE5812E181A77090066D073 /* ipbcAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE5812D181A77090066D073 /* ipbcAppDelegate.m */; };
ECE58131181A77090066D073 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = ECE5812F181A77090066D073 /* MainMenu.xib */; };
ECE58133181A77090066D073 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = ECE58132181A77090066D073 /* Images.xcassets */; };
ECE5813A181A77090066D073 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECE58139181A77090066D073 /* XCTest.framework */; };
ECE5813B181A77090066D073 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECE5811A181A77090066D073 /* Cocoa.framework */; };
ECE58143181A77090066D073 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = ECE58141181A77090066D073 /* InfoPlist.strings */; };
ECE58145181A77090066D073 /* ipbc_ClientTests.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE58144181A77090066D073 /* ipbc_ClientTests.m */; };
ECE6FED6181E8AFE004F6C1F /* WebserviceClient.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE6FED5181E8AFD004F6C1F /* WebserviceClient.m */; };
ECE6FEDA181E8BE4004F6C1F /* WebServiceConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE6FED9181E8BE4004F6C1F /* WebServiceConstants.m */; };
ECEBE1881BA0639500E5B4E3 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECEBE1871BA0639500E5B4E3 /* AppDelegate.swift */; };
ECEBE18A1BA0639500E5B4E3 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = ECEBE1891BA0639500E5B4E3 /* Images.xcassets */; };
ECEBE18D1BA0639500E5B4E3 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = ECEBE18B1BA0639500E5B4E3 /* MainMenu.xib */; };
ECEBE1991BA0639500E5B4E3 /* ipbc_ClientTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECEBE1981BA0639500E5B4E3 /* ipbc_ClientTests.swift */; };
ECEBE1A41BA0690B00E5B4E3 /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECEBE1A21BA0690B00E5B4E3 /* MainViewController.swift */; };
ECEBE1A51BA0690B00E5B4E3 /* MainViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ECEBE1A31BA0690B00E5B4E3 /* MainViewController.xib */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
ECE5813C181A77090066D073 /* PBXContainerItemProxy */ = {
ECEBE1931BA0639500E5B4E3 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = ECE5810F181A77090066D073 /* Project object */;
containerPortal = ECEBE17A1BA0639500E5B4E3 /* Project object */;
proxyType = 1;
remoteGlobalIDString = ECE58116181A77090066D073;
remoteGlobalIDString = ECEBE1811BA0639500E5B4E3;
remoteInfo = "ipbc-Client";
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
ECB32E3518210D1D00D3C886 /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Reachability.h; sourceTree = "<group>"; };
ECB32E3618210D1D00D3C886 /* Reachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Reachability.m; sourceTree = "<group>"; };
ECB32E3818210F3A00D3C886 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
ECB963CB18228F42006F370E /* statusbar-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "statusbar-icon.png"; sourceTree = "<group>"; };
ECB963CE1822943E006F370E /* ImageHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageHelper.h; sourceTree = "<group>"; };
ECB963CF1822943E006F370E /* ImageHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageHelper.m; sourceTree = "<group>"; };
ECCE9DCC18B80EC4006C032B /* ipbc-Client.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "ipbc-Client.entitlements"; sourceTree = "<group>"; };
ECDDC035182D0C7C002B76C1 /* feet.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = feet.png; sourceTree = "<group>"; };
ECE58117181A77090066D073 /* ipbc-Client.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ipbc-Client.app"; sourceTree = BUILT_PRODUCTS_DIR; };
ECE5811A181A77090066D073 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
ECE5811D181A77090066D073 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
ECE5811E181A77090066D073 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
ECE5811F181A77090066D073 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
ECE58122181A77090066D073 /* ipbc-Client-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "ipbc-Client-Info.plist"; sourceTree = "<group>"; };
ECE58124181A77090066D073 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
ECE58126181A77090066D073 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
ECE58128181A77090066D073 /* ipbc-Client-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ipbc-Client-Prefix.pch"; sourceTree = "<group>"; };
ECE5812A181A77090066D073 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; };
ECE5812C181A77090066D073 /* ipbcAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ipbcAppDelegate.h; sourceTree = "<group>"; };
ECE5812D181A77090066D073 /* ipbcAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ipbcAppDelegate.m; sourceTree = "<group>"; };
ECE58130181A77090066D073 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
ECE58132181A77090066D073 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
ECE58138181A77090066D073 /* ipbc-ClientTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "ipbc-ClientTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
ECE58139181A77090066D073 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
ECE58140181A77090066D073 /* ipbc-ClientTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "ipbc-ClientTests-Info.plist"; sourceTree = "<group>"; };
ECE58142181A77090066D073 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
ECE58144181A77090066D073 /* ipbc_ClientTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ipbc_ClientTests.m; sourceTree = "<group>"; };
ECE6FED4181E8AFD004F6C1F /* WebserviceClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebserviceClient.h; sourceTree = "<group>"; };
ECE6FED5181E8AFD004F6C1F /* WebserviceClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebserviceClient.m; sourceTree = "<group>"; };
ECE6FED8181E8BE4004F6C1F /* WebServiceConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebServiceConstants.h; sourceTree = "<group>"; };
ECE6FED9181E8BE4004F6C1F /* WebServiceConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebServiceConstants.m; sourceTree = "<group>"; };
ECEBE1821BA0639500E5B4E3 /* ipbc-Client.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ipbc-Client.app"; sourceTree = BUILT_PRODUCTS_DIR; };
ECEBE1861BA0639500E5B4E3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
ECEBE1871BA0639500E5B4E3 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
ECEBE1891BA0639500E5B4E3 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
ECEBE18C1BA0639500E5B4E3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
ECEBE1921BA0639500E5B4E3 /* ipbc-ClientTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "ipbc-ClientTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
ECEBE1971BA0639500E5B4E3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
ECEBE1981BA0639500E5B4E3 /* ipbc_ClientTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ipbc_ClientTests.swift; sourceTree = "<group>"; };
ECEBE1A21BA0690B00E5B4E3 /* MainViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MainViewController.swift; path = Controller/MainViewController.swift; sourceTree = "<group>"; };
ECEBE1A31BA0690B00E5B4E3 /* MainViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MainViewController.xib; path = Controller/MainViewController.xib; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
ECE58114181A77090066D073 /* Frameworks */ = {
ECEBE17F1BA0639500E5B4E3 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
ECB32E3918210F3A00D3C886 /* SystemConfiguration.framework in Frameworks */,
ECE5811B181A77090066D073 /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
ECE58135181A77090066D073 /* Frameworks */ = {
ECEBE18F1BA0639500E5B4E3 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
ECE5813B181A77090066D073 /* Cocoa.framework in Frameworks */,
ECE5813A181A77090066D073 /* XCTest.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
ECB963CA18228F29006F370E /* images */ = {
ECEBE1791BA0639500E5B4E3 = {
isa = PBXGroup;
children = (
ECDDC035182D0C7C002B76C1 /* feet.png */,
ECB963CB18228F42006F370E /* statusbar-icon.png */,
);
name = images;
sourceTree = "<group>";
};
ECB963CD18229423006F370E /* Helper */ = {
isa = PBXGroup;
children = (
ECB963CE1822943E006F370E /* ImageHelper.h */,
ECB963CF1822943E006F370E /* ImageHelper.m */,
);
name = Helper;
sourceTree = "<group>";
};
ECE5810E181A77090066D073 = {
isa = PBXGroup;
children = (
ECE58120181A77090066D073 /* ipbc-Client */,
ECE5813E181A77090066D073 /* ipbc-ClientTests */,
ECE58119181A77090066D073 /* Frameworks */,
ECE58118181A77090066D073 /* Products */,
ECEBE1841BA0639500E5B4E3 /* ipbc-Client */,
ECEBE1951BA0639500E5B4E3 /* ipbc-ClientTests */,
ECEBE1831BA0639500E5B4E3 /* Products */,
);
sourceTree = "<group>";
};
ECE58118181A77090066D073 /* Products */ = {
ECEBE1831BA0639500E5B4E3 /* Products */ = {
isa = PBXGroup;
children = (
ECE58117181A77090066D073 /* ipbc-Client.app */,
ECE58138181A77090066D073 /* ipbc-ClientTests.xctest */,
ECEBE1821BA0639500E5B4E3 /* ipbc-Client.app */,
ECEBE1921BA0639500E5B4E3 /* ipbc-ClientTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
ECE58119181A77090066D073 /* Frameworks */ = {
ECEBE1841BA0639500E5B4E3 /* ipbc-Client */ = {
isa = PBXGroup;
children = (
ECB32E3818210F3A00D3C886 /* SystemConfiguration.framework */,
ECE5811A181A77090066D073 /* Cocoa.framework */,
ECE58139181A77090066D073 /* XCTest.framework */,
ECE5811C181A77090066D073 /* Other Frameworks */,
);
name = Frameworks;
sourceTree = "<group>";
};
ECE5811C181A77090066D073 /* Other Frameworks */ = {
isa = PBXGroup;
children = (
ECE5811D181A77090066D073 /* AppKit.framework */,
ECE5811E181A77090066D073 /* CoreData.framework */,
ECE5811F181A77090066D073 /* Foundation.framework */,
);
name = "Other Frameworks";
sourceTree = "<group>";
};
ECE58120181A77090066D073 /* ipbc-Client */ = {
isa = PBXGroup;
children = (
ECCE9DCC18B80EC4006C032B /* ipbc-Client.entitlements */,
ECB963CD18229423006F370E /* Helper */,
ECB963CA18228F29006F370E /* images */,
ECE6FED7181E8B1C004F6C1F /* WebService */,
ECE5812C181A77090066D073 /* ipbcAppDelegate.h */,
ECE5812D181A77090066D073 /* ipbcAppDelegate.m */,
ECE5812F181A77090066D073 /* MainMenu.xib */,
ECE58132181A77090066D073 /* Images.xcassets */,
ECE58121181A77090066D073 /* Supporting Files */,
ECEBE1A71BA0693200E5B4E3 /* control */,
ECEBE1A61BA0692000E5B4E3 /* view */,
ECEBE1871BA0639500E5B4E3 /* AppDelegate.swift */,
ECEBE1891BA0639500E5B4E3 /* Images.xcassets */,
ECEBE1851BA0639500E5B4E3 /* Supporting Files */,
);
path = "ipbc-Client";
sourceTree = "<group>";
};
ECE58121181A77090066D073 /* Supporting Files */ = {
ECEBE1851BA0639500E5B4E3 /* Supporting Files */ = {
isa = PBXGroup;
children = (
ECE58122181A77090066D073 /* ipbc-Client-Info.plist */,
ECE58123181A77090066D073 /* InfoPlist.strings */,
ECE58126181A77090066D073 /* main.m */,
ECE58128181A77090066D073 /* ipbc-Client-Prefix.pch */,
ECE58129181A77090066D073 /* Credits.rtf */,
ECEBE1861BA0639500E5B4E3 /* Info.plist */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
ECE5813E181A77090066D073 /* ipbc-ClientTests */ = {
ECEBE1951BA0639500E5B4E3 /* ipbc-ClientTests */ = {
isa = PBXGroup;
children = (
ECE58144181A77090066D073 /* ipbc_ClientTests.m */,
ECE5813F181A77090066D073 /* Supporting Files */,
ECEBE1981BA0639500E5B4E3 /* ipbc_ClientTests.swift */,
ECEBE1961BA0639500E5B4E3 /* Supporting Files */,
);
path = "ipbc-ClientTests";
sourceTree = "<group>";
};
ECE5813F181A77090066D073 /* Supporting Files */ = {
ECEBE1961BA0639500E5B4E3 /* Supporting Files */ = {
isa = PBXGroup;
children = (
ECE58140181A77090066D073 /* ipbc-ClientTests-Info.plist */,
ECE58141181A77090066D073 /* InfoPlist.strings */,
ECEBE1971BA0639500E5B4E3 /* Info.plist */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
ECE6FED7181E8B1C004F6C1F /* WebService */ = {
ECEBE1A61BA0692000E5B4E3 /* view */ = {
isa = PBXGroup;
children = (
ECE6FED4181E8AFD004F6C1F /* WebserviceClient.h */,
ECE6FED5181E8AFD004F6C1F /* WebserviceClient.m */,
ECE6FED8181E8BE4004F6C1F /* WebServiceConstants.h */,
ECE6FED9181E8BE4004F6C1F /* WebServiceConstants.m */,
ECB32E3518210D1D00D3C886 /* Reachability.h */,
ECB32E3618210D1D00D3C886 /* Reachability.m */,
ECEBE1A31BA0690B00E5B4E3 /* MainViewController.xib */,
ECEBE18B1BA0639500E5B4E3 /* MainMenu.xib */,
);
name = WebService;
name = view;
sourceTree = "<group>";
};
ECEBE1A71BA0693200E5B4E3 /* control */ = {
isa = PBXGroup;
children = (
ECEBE1A21BA0690B00E5B4E3 /* MainViewController.swift */,
);
name = control;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
ECE58116181A77090066D073 /* ipbc-Client */ = {
ECEBE1811BA0639500E5B4E3 /* ipbc-Client */ = {
isa = PBXNativeTarget;
buildConfigurationList = ECE58148181A77090066D073 /* Build configuration list for PBXNativeTarget "ipbc-Client" */;
buildConfigurationList = ECEBE19C1BA0639500E5B4E3 /* Build configuration list for PBXNativeTarget "ipbc-Client" */;
buildPhases = (
ECE58113181A77090066D073 /* Sources */,
ECE58114181A77090066D073 /* Frameworks */,
ECE58115181A77090066D073 /* Resources */,
ECEBE17E1BA0639500E5B4E3 /* Sources */,
ECEBE17F1BA0639500E5B4E3 /* Frameworks */,
ECEBE1801BA0639500E5B4E3 /* Resources */,
);
buildRules = (
);
@@ -227,51 +145,46 @@
);
name = "ipbc-Client";
productName = "ipbc-Client";
productReference = ECE58117181A77090066D073 /* ipbc-Client.app */;
productReference = ECEBE1821BA0639500E5B4E3 /* ipbc-Client.app */;
productType = "com.apple.product-type.application";
};
ECE58137181A77090066D073 /* ipbc-ClientTests */ = {
ECEBE1911BA0639500E5B4E3 /* ipbc-ClientTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = ECE5814B181A77090066D073 /* Build configuration list for PBXNativeTarget "ipbc-ClientTests" */;
buildConfigurationList = ECEBE19F1BA0639500E5B4E3 /* Build configuration list for PBXNativeTarget "ipbc-ClientTests" */;
buildPhases = (
ECE58134181A77090066D073 /* Sources */,
ECE58135181A77090066D073 /* Frameworks */,
ECE58136181A77090066D073 /* Resources */,
ECEBE18E1BA0639500E5B4E3 /* Sources */,
ECEBE18F1BA0639500E5B4E3 /* Frameworks */,
ECEBE1901BA0639500E5B4E3 /* Resources */,
);
buildRules = (
);
dependencies = (
ECE5813D181A77090066D073 /* PBXTargetDependency */,
ECEBE1941BA0639500E5B4E3 /* PBXTargetDependency */,
);
name = "ipbc-ClientTests";
productName = "ipbc-ClientTests";
productReference = ECE58138181A77090066D073 /* ipbc-ClientTests.xctest */;
productReference = ECEBE1921BA0639500E5B4E3 /* ipbc-ClientTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
ECE5810F181A77090066D073 /* Project object */ = {
ECEBE17A1BA0639500E5B4E3 /* Project object */ = {
isa = PBXProject;
attributes = {
CLASSPREFIX = ipbc;
LastUpgradeCheck = 0500;
LastUpgradeCheck = 0640;
ORGANIZATIONNAME = "Adawim UG (haftungsbeschränkt)";
TargetAttributes = {
ECE58116181A77090066D073 = {
DevelopmentTeam = H474U3TZ74;
SystemCapabilities = {
com.apple.Sandbox = {
enabled = 1;
};
};
ECEBE1811BA0639500E5B4E3 = {
CreatedOnToolsVersion = 6.4;
};
ECE58137181A77090066D073 = {
TestTargetID = ECE58116181A77090066D073;
ECEBE1911BA0639500E5B4E3 = {
CreatedOnToolsVersion = 6.4;
TestTargetID = ECEBE1811BA0639500E5B4E3;
};
};
};
buildConfigurationList = ECE58112181A77090066D073 /* Build configuration list for PBXProject "ipbc-Client" */;
buildConfigurationList = ECEBE17D1BA0639500E5B4E3 /* Build configuration list for PBXProject "ipbc-Client" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
@@ -279,115 +192,84 @@
en,
Base,
);
mainGroup = ECE5810E181A77090066D073;
productRefGroup = ECE58118181A77090066D073 /* Products */;
mainGroup = ECEBE1791BA0639500E5B4E3;
productRefGroup = ECEBE1831BA0639500E5B4E3 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
ECE58116181A77090066D073 /* ipbc-Client */,
ECE58137181A77090066D073 /* ipbc-ClientTests */,
ECEBE1811BA0639500E5B4E3 /* ipbc-Client */,
ECEBE1911BA0639500E5B4E3 /* ipbc-ClientTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
ECE58115181A77090066D073 /* Resources */ = {
ECEBE1801BA0639500E5B4E3 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
ECE58125181A77090066D073 /* InfoPlist.strings in Resources */,
ECDDC036182D0C7C002B76C1 /* feet.png in Resources */,
ECE58133181A77090066D073 /* Images.xcassets in Resources */,
ECB963CC18228F42006F370E /* statusbar-icon.png in Resources */,
ECE5812B181A77090066D073 /* Credits.rtf in Resources */,
ECE58131181A77090066D073 /* MainMenu.xib in Resources */,
ECEBE18A1BA0639500E5B4E3 /* Images.xcassets in Resources */,
ECEBE1A51BA0690B00E5B4E3 /* MainViewController.xib in Resources */,
ECEBE18D1BA0639500E5B4E3 /* MainMenu.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
ECE58136181A77090066D073 /* Resources */ = {
ECEBE1901BA0639500E5B4E3 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
ECE58143181A77090066D073 /* InfoPlist.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
ECE58113181A77090066D073 /* Sources */ = {
ECEBE17E1BA0639500E5B4E3 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
ECE6FEDA181E8BE4004F6C1F /* WebServiceConstants.m in Sources */,
ECE5812E181A77090066D073 /* ipbcAppDelegate.m in Sources */,
ECE58127181A77090066D073 /* main.m in Sources */,
ECB963D01822943E006F370E /* ImageHelper.m in Sources */,
ECE6FED6181E8AFE004F6C1F /* WebserviceClient.m in Sources */,
ECB32E3718210D1D00D3C886 /* Reachability.m in Sources */,
ECEBE1881BA0639500E5B4E3 /* AppDelegate.swift in Sources */,
ECEBE1A41BA0690B00E5B4E3 /* MainViewController.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
ECE58134181A77090066D073 /* Sources */ = {
ECEBE18E1BA0639500E5B4E3 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
ECE58145181A77090066D073 /* ipbc_ClientTests.m in Sources */,
ECEBE1991BA0639500E5B4E3 /* ipbc_ClientTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
ECE5813D181A77090066D073 /* PBXTargetDependency */ = {
ECEBE1941BA0639500E5B4E3 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = ECE58116181A77090066D073 /* ipbc-Client */;
targetProxy = ECE5813C181A77090066D073 /* PBXContainerItemProxy */;
target = ECEBE1811BA0639500E5B4E3 /* ipbc-Client */;
targetProxy = ECEBE1931BA0639500E5B4E3 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
ECE58123181A77090066D073 /* InfoPlist.strings */ = {
ECEBE18B1BA0639500E5B4E3 /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
ECE58124181A77090066D073 /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
ECE58129181A77090066D073 /* Credits.rtf */ = {
isa = PBXVariantGroup;
children = (
ECE5812A181A77090066D073 /* en */,
);
name = Credits.rtf;
sourceTree = "<group>";
};
ECE5812F181A77090066D073 /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
ECE58130181A77090066D073 /* Base */,
ECEBE18C1BA0639500E5B4E3 /* Base */,
);
name = MainMenu.xib;
sourceTree = "<group>";
};
ECE58141181A77090066D073 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
ECE58142181A77090066D073 /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
ECE58146181A77090066D073 /* Debug */ = {
ECEBE19A1BA0639500E5B4E3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
@@ -396,11 +278,15 @@
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
@@ -410,21 +296,24 @@
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.8;
MACOSX_DEPLOYMENT_TARGET = 10.10;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
ECE58147181A77090066D073 /* Release */ = {
ECEBE19B1BA0639500E5B4E3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
@@ -433,128 +322,114 @@
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.8;
MACOSX_DEPLOYMENT_TARGET = 10.10;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
};
name = Release;
};
ECE58149181A77090066D073 /* Debug */ = {
ECEBE19D1BA0639500E5B4E3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = "ipbc-Client/ipbc-Client.entitlements";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Mac Developer";
COMBINE_HIDPI_IMAGES = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "ipbc-Client/ipbc-Client-Prefix.pch";
INFOPLIST_FILE = "ipbc-Client/ipbc-Client-Info.plist";
MACOSX_DEPLOYMENT_TARGET = 10.8;
INFOPLIST_FILE = "ipbc-Client/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
WRAPPER_EXTENSION = app;
};
name = Debug;
};
ECE5814A181A77090066D073 /* Release */ = {
ECEBE19E1BA0639500E5B4E3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = "ipbc-Client/ipbc-Client.entitlements";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "3rd Party Mac Developer Application: Adawim UG (haftungsbeschrankt) (H474U3TZ74)";
COMBINE_HIDPI_IMAGES = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "ipbc-Client/ipbc-Client-Prefix.pch";
INFOPLIST_FILE = "ipbc-Client/ipbc-Client-Info.plist";
MACOSX_DEPLOYMENT_TARGET = 10.8;
INFOPLIST_FILE = "ipbc-Client/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
WRAPPER_EXTENSION = app;
};
name = Release;
};
ECE5814C181A77090066D073 /* Debug */ = {
ECEBE1A01BA0639500E5B4E3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/ipbc-Client.app/Contents/MacOS/ipbc-Client";
BUNDLE_LOADER = "$(TEST_HOST)";
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
"$(inherited)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "ipbc-Client/ipbc-Client-Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
INFOPLIST_FILE = "ipbc-ClientTests/ipbc-ClientTests-Info.plist";
INFOPLIST_FILE = "ipbc-ClientTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ipbc-Client.app/Contents/MacOS/ipbc-Client";
};
name = Debug;
};
ECE5814D181A77090066D073 /* Release */ = {
ECEBE1A11BA0639500E5B4E3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/ipbc-Client.app/Contents/MacOS/ipbc-Client";
BUNDLE_LOADER = "$(TEST_HOST)";
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
"$(inherited)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "ipbc-Client/ipbc-Client-Prefix.pch";
INFOPLIST_FILE = "ipbc-ClientTests/ipbc-ClientTests-Info.plist";
INFOPLIST_FILE = "ipbc-ClientTests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ipbc-Client.app/Contents/MacOS/ipbc-Client";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
ECE58112181A77090066D073 /* Build configuration list for PBXProject "ipbc-Client" */ = {
ECEBE17D1BA0639500E5B4E3 /* Build configuration list for PBXProject "ipbc-Client" */ = {
isa = XCConfigurationList;
buildConfigurations = (
ECE58146181A77090066D073 /* Debug */,
ECE58147181A77090066D073 /* Release */,
ECEBE19A1BA0639500E5B4E3 /* Debug */,
ECEBE19B1BA0639500E5B4E3 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
ECE58148181A77090066D073 /* Build configuration list for PBXNativeTarget "ipbc-Client" */ = {
ECEBE19C1BA0639500E5B4E3 /* Build configuration list for PBXNativeTarget "ipbc-Client" */ = {
isa = XCConfigurationList;
buildConfigurations = (
ECE58149181A77090066D073 /* Debug */,
ECE5814A181A77090066D073 /* Release */,
ECEBE19D1BA0639500E5B4E3 /* Debug */,
ECEBE19E1BA0639500E5B4E3 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
ECE5814B181A77090066D073 /* Build configuration list for PBXNativeTarget "ipbc-ClientTests" */ = {
ECEBE19F1BA0639500E5B4E3 /* Build configuration list for PBXNativeTarget "ipbc-ClientTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
ECE5814C181A77090066D073 /* Debug */,
ECE5814D181A77090066D073 /* Release */,
ECEBE1A01BA0639500E5B4E3 /* Debug */,
ECEBE1A11BA0639500E5B4E3 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = ECE5810F181A77090066D073 /* Project object */;
rootObject = ECEBE17A1BA0639500E5B4E3 /* Project object */;
}
@@ -5,23 +5,23 @@
<key>IDESourceControlProjectFavoriteDictionaryKey</key>
<false/>
<key>IDESourceControlProjectIdentifier</key>
<string>BDF122F8-DA02-47B4-AFC7-D6076CC3B9C4</string>
<string>B4996E80-3257-4F7C-86EA-7424113FB751</string>
<key>IDESourceControlProjectName</key>
<string>ipbc-Client</string>
<string>project</string>
<key>IDESourceControlProjectOriginsDictionary</key>
<dict>
<key>41A46EC74341898613642098E6535621FD117950</key>
<string>ssh://web1.adatewithmusic.com/git/ipbc-statusbarapp.git</string>
<string>ssh://services.adawim.com:7999/ipbc/statusbar-app-osx.git</string>
</dict>
<key>IDESourceControlProjectPath</key>
<string>ipbc-Client/ipbc-Client.xcodeproj</string>
<string>ipbc-Client/ipbc-Client.xcodeproj/project.xcworkspace</string>
<key>IDESourceControlProjectRelativeInstallPathDictionary</key>
<dict>
<key>41A46EC74341898613642098E6535621FD117950</key>
<string>../../..</string>
</dict>
<key>IDESourceControlProjectURL</key>
<string>ssh://web1.adatewithmusic.com/git/ipbc-statusbarapp.git</string>
<string>ssh://services.adawim.com:7999/ipbc/statusbar-app-osx.git</string>
<key>IDESourceControlProjectVersion</key>
<integer>111</integer>
<key>IDESourceControlProjectWCCIdentifier</key>
@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges</key>
<true/>
<key>SnapshotAutomaticallyBeforeSignificantChanges</key>
<true/>
</dict>
</plist>
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0500"
LastUpgradeVersion = "0640"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -14,12 +14,26 @@
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ECE58116181A77090066D073"
BlueprintIdentifier = "ECEBE1811BA0639500E5B4E3"
BuildableName = "ipbc-Client.app"
BlueprintName = "ipbc-Client"
ReferencedContainer = "container:ipbc-Client.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ECEBE1911BA0639500E5B4E3"
BuildableName = "ipbc-ClientTests.xctest"
BlueprintName = "ipbc-ClientTests"
ReferencedContainer = "container:ipbc-Client.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
@@ -32,7 +46,7 @@
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ECE58137181A77090066D073"
BlueprintIdentifier = "ECEBE1911BA0639500E5B4E3"
BuildableName = "ipbc-ClientTests.xctest"
BlueprintName = "ipbc-ClientTests"
ReferencedContainer = "container:ipbc-Client.xcodeproj">
@@ -42,7 +56,7 @@
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ECE58116181A77090066D073"
BlueprintIdentifier = "ECEBE1811BA0639500E5B4E3"
BuildableName = "ipbc-Client.app"
BlueprintName = "ipbc-Client"
ReferencedContainer = "container:ipbc-Client.xcodeproj">
@@ -58,10 +72,11 @@
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<BuildableProductRunnable>
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ECE58116181A77090066D073"
BlueprintIdentifier = "ECEBE1811BA0639500E5B4E3"
BuildableName = "ipbc-Client.app"
BlueprintName = "ipbc-Client"
ReferencedContainer = "container:ipbc-Client.xcodeproj">
@@ -76,10 +91,11 @@
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
<BuildableProductRunnable>
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "ECE58116181A77090066D073"
BlueprintIdentifier = "ECEBE1811BA0639500E5B4E3"
BuildableName = "ipbc-Client.app"
BlueprintName = "ipbc-Client"
ReferencedContainer = "container:ipbc-Client.xcodeproj">
@@ -12,12 +12,12 @@
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>ECE58116181A77090066D073</key>
<key>ECEBE1811BA0639500E5B4E3</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>ECE58137181A77090066D073</key>
<key>ECEBE1911BA0639500E5B4E3</key>
<dict>
<key>primary</key>
<true/>
+52
View File
@@ -0,0 +1,52 @@
//
// AppDelegate.swift
// ipbc-Client
//
// Created by Gerrit Linnemann on 09.09.15.
// Copyright (c) 2015 Adawim UG (haftungsbeschränkt). All rights reserved.
//
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
let statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-2)
let popover = NSPopover()
func applicationDidFinishLaunching(aNotification: NSNotification) {
// Insert code here to initialize your application
if let button = statusItem.button {
button.image = NSImage(named: "statusbar-icon")
button.action = Selector("togglePopover:")
}
popover.contentViewController = MainViewController(nibName: "MainViewController", bundle: nil)
}
func applicationWillTerminate(aNotification: NSNotification) {
// Insert code here to tear down your application
}
func showPopover(sender: AnyObject?) {
if let button = statusItem.button {
popover.showRelativeToRect(button.bounds, ofView: button, preferredEdge: NSMinYEdge)
}
}
func closePopover(sender: AnyObject?) {
popover.performClose(sender)
}
func togglePopover(sender: AnyObject?) {
if popover.shown {
closePopover(sender)
} else {
showPopover(sender)
}
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,18 @@
//
// MainViewController.swift
// ipbc-Client
//
// Created by Gerrit Linnemann on 09.09.15.
// Copyright (c) 2015 Adawim UG (haftungsbeschränkt). All rights reserved.
//
import Cocoa
class MainViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
}
}
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="5023" systemVersion="13A603" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="5023"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="MainViewController" customModuleProvider="target">
<connections>
<outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application"/>
<customView id="Hz6-mo-xeY">
<rect key="frame" x="0.0" y="0.0" width="480" height="272"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
</customView>
</objects>
</document>
-15
View File
@@ -1,15 +0,0 @@
//
// ImageHelper.h
// ipbc-Client
//
// Created by Gerrit Linnemann on 31.10.13.
// Copyright (c) 2013 Adawim UG (haftungsbeschränkt). All rights reserved.
//
#import <Foundation/Foundation.h>
@interface ImageHelper : NSObject
+(NSImage*)resizeImage:(NSImage*)sourceImage size:(NSSize)size;
@end
-30
View File
@@ -1,30 +0,0 @@
//
// ImageHelper.m
// ipbc-Client
//
// Created by Gerrit Linnemann on 31.10.13.
// Copyright (c) 2013 Adawim UG (haftungsbeschränkt). All rights reserved.
//
#import "ImageHelper.h"
@implementation ImageHelper
+(NSImage*)resizeImage:(NSImage*)sourceImage size:(NSSize)size {
NSRect targetFrame = NSMakeRect(0, 0, size.width, size.height);
NSImage* targetImage = nil;
NSImageRep *sourceImageRep =
[sourceImage bestRepresentationForRect:targetFrame
context:nil
hints:nil];
targetImage = [[NSImage alloc] initWithSize:size];
[targetImage lockFocus];
[sourceImageRep drawInRect: targetFrame];
[targetImage unlockFocus];
return targetImage;
}
@end
@@ -13,8 +13,9 @@
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "32x32",
"idiom" : "mac",
"filename" : "icon_32x32.png",
"scale" : "1x"
},
{
@@ -48,8 +49,9 @@
"scale" : "2x"
},
{
"idiom" : "mac",
"size" : "512x512",
"idiom" : "mac",
"filename" : "icon_512x512.png",
"scale" : "1x"
},
{
Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

After

Width:  |  Height:  |  Size: 377 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 639 KiB

After

Width:  |  Height:  |  Size: 1.2 MiB

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "mac"
},
{
"idiom" : "mac",
"scale" : "1x",
"filename" : "statusbar-icon.png"
},
{
"idiom" : "mac",
"scale" : "2x",
"filename" : "statusbar-icon2x.png"
}
],
"info" : {
"version" : 1,
"author" : "xcode",
"template-rendering-intent" : "template"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

@@ -3,17 +3,17 @@
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>de_DE</string>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.ipbc.client.osx</string>
<string>com.ipbc.client.osx.$(PRODUCT_NAME:rfc1034identifier)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
@@ -22,16 +22,14 @@
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>LSUIElement</key>
<true/>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2013 Adawim UG (haftungsbeschränkt). All rights reserved.</string>
<string>Copyright © 2015 Adawim UG (haftungsbeschränkt). All rights reserved.</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>LSUIElement</key>
<true/>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
-113
View File
@@ -1,113 +0,0 @@
/*
https://github.com/tonymillion/Reachability
Copyright (c) 2011, Tony Million.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
#import <Foundation/Foundation.h>
#import <SystemConfiguration/SystemConfiguration.h>
#import <sys/socket.h>
#import <netinet/in.h>
#import <netinet6/in6.h>
#import <arpa/inet.h>
#import <ifaddrs.h>
#import <netdb.h>
/**
* Does ARC support GCD objects?
* It does if the minimum deployment target is iOS 6+ or Mac OS X 8+
*
* @see http://opensource.apple.com/source/libdispatch/libdispatch-228.18/os/object.h
**/
#if OS_OBJECT_USE_OBJC
#define NEEDS_DISPATCH_RETAIN_RELEASE 0
#else
#define NEEDS_DISPATCH_RETAIN_RELEASE 1
#endif
/**
* Create NS_ENUM macro if it does not exist on the targeted version of iOS or OS X.
*
* @see http://nshipster.com/ns_enum-ns_options/
**/
#ifndef NS_ENUM
#define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
#endif
extern NSString *const kReachabilityChangedNotification;
typedef NS_ENUM(NSInteger, NetworkStatus) {
// Apple NetworkStatus Compatible Names.
NotReachable = 0,
ReachableViaWiFi = 2,
ReachableViaWWAN = 1
};
@class Reachability;
typedef void (^NetworkReachable)(Reachability * reachability);
typedef void (^NetworkUnreachable)(Reachability * reachability);
@interface Reachability : NSObject
@property (nonatomic, copy) NetworkReachable reachableBlock;
@property (nonatomic, copy) NetworkUnreachable unreachableBlock;
@property (nonatomic, assign) BOOL reachableOnWWAN;
+(Reachability*)reachabilityWithHostname:(NSString*)hostname;
+(Reachability*)reachabilityForInternetConnection;
+(Reachability*)reachabilityWithAddress:(const struct sockaddr_in*)hostAddress;
+(Reachability*)reachabilityForLocalWiFi;
-(Reachability *)initWithReachabilityRef:(SCNetworkReachabilityRef)ref;
-(BOOL)startNotifier;
-(void)stopNotifier;
-(BOOL)isReachable;
-(BOOL)isReachableViaWWAN;
-(BOOL)isReachableViaWiFi;
// WWAN may be available, but not active until a connection has been established.
// WiFi may require a connection for VPN on Demand.
-(BOOL)isConnectionRequired; // Identical DDG variant.
-(BOOL)connectionRequired; // Apple's routine.
// Dynamic, on demand connection?
-(BOOL)isConnectionOnDemand;
// Is user intervention required?
-(BOOL)isInterventionRequired;
-(NetworkStatus)currentReachabilityStatus;
-(SCNetworkReachabilityFlags)reachabilityFlags;
-(NSString*)currentReachabilityString;
-(NSString*)currentReachabilityFlags;
@end
-531
View File
@@ -1,531 +0,0 @@
/*
https://github.com/tonymillion/Reachability
Copyright (c) 2011, Tony Million.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
#import "Reachability.h"
NSString *const kReachabilityChangedNotification = @"kReachabilityChangedNotification";
@interface Reachability ()
@property (nonatomic, assign) SCNetworkReachabilityRef reachabilityRef;
#if NEEDS_DISPATCH_RETAIN_RELEASE
@property (nonatomic, assign) dispatch_queue_t reachabilitySerialQueue;
#else
@property (nonatomic, strong) dispatch_queue_t reachabilitySerialQueue;
#endif
@property (nonatomic, strong) id reachabilityObject;
-(void)reachabilityChanged:(SCNetworkReachabilityFlags)flags;
-(BOOL)isReachableWithFlags:(SCNetworkReachabilityFlags)flags;
@end
static NSString *reachabilityFlags(SCNetworkReachabilityFlags flags)
{
return [NSString stringWithFormat:@"%c%c %c%c%c%c%c%c%c",
#if TARGET_OS_IPHONE
(flags & kSCNetworkReachabilityFlagsIsWWAN) ? 'W' : '-',
#else
'X',
#endif
(flags & kSCNetworkReachabilityFlagsReachable) ? 'R' : '-',
(flags & kSCNetworkReachabilityFlagsConnectionRequired) ? 'c' : '-',
(flags & kSCNetworkReachabilityFlagsTransientConnection) ? 't' : '-',
(flags & kSCNetworkReachabilityFlagsInterventionRequired) ? 'i' : '-',
(flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) ? 'C' : '-',
(flags & kSCNetworkReachabilityFlagsConnectionOnDemand) ? 'D' : '-',
(flags & kSCNetworkReachabilityFlagsIsLocalAddress) ? 'l' : '-',
(flags & kSCNetworkReachabilityFlagsIsDirect) ? 'd' : '-'];
}
// Start listening for reachability notifications on the current run loop
static void TMReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info)
{
#pragma unused (target)
#if __has_feature(objc_arc)
Reachability *reachability = ((__bridge Reachability*)info);
#else
Reachability *reachability = ((Reachability*)info);
#endif
// We probably don't need an autoreleasepool here, as GCD docs state each queue has its own autorelease pool,
// but what the heck eh?
@autoreleasepool
{
[reachability reachabilityChanged:flags];
}
}
@implementation Reachability
@synthesize reachabilityRef;
@synthesize reachabilitySerialQueue;
@synthesize reachableOnWWAN;
@synthesize reachableBlock;
@synthesize unreachableBlock;
@synthesize reachabilityObject;
#pragma mark - Class Constructor Methods
+(Reachability*)reachabilityWithHostName:(NSString*)hostname
{
return [Reachability reachabilityWithHostname:hostname];
}
+(Reachability*)reachabilityWithHostname:(NSString*)hostname
{
SCNetworkReachabilityRef ref = SCNetworkReachabilityCreateWithName(NULL, [hostname UTF8String]);
if (ref)
{
id reachability = [[self alloc] initWithReachabilityRef:ref];
#if __has_feature(objc_arc)
return reachability;
#else
return [reachability autorelease];
#endif
}
return nil;
}
+(Reachability *)reachabilityWithAddress:(const struct sockaddr_in *)hostAddress
{
SCNetworkReachabilityRef ref = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr*)hostAddress);
if (ref)
{
id reachability = [[self alloc] initWithReachabilityRef:ref];
#if __has_feature(objc_arc)
return reachability;
#else
return [reachability autorelease];
#endif
}
return nil;
}
+(Reachability *)reachabilityForInternetConnection
{
struct sockaddr_in zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin_len = sizeof(zeroAddress);
zeroAddress.sin_family = AF_INET;
return [self reachabilityWithAddress:&zeroAddress];
}
+(Reachability*)reachabilityForLocalWiFi
{
struct sockaddr_in localWifiAddress;
bzero(&localWifiAddress, sizeof(localWifiAddress));
localWifiAddress.sin_len = sizeof(localWifiAddress);
localWifiAddress.sin_family = AF_INET;
// IN_LINKLOCALNETNUM is defined in <netinet/in.h> as 169.254.0.0
localWifiAddress.sin_addr.s_addr = htonl(IN_LINKLOCALNETNUM);
return [self reachabilityWithAddress:&localWifiAddress];
}
// Initialization methods
-(Reachability *)initWithReachabilityRef:(SCNetworkReachabilityRef)ref
{
self = [super init];
if (self != nil)
{
self.reachableOnWWAN = YES;
self.reachabilityRef = ref;
}
return self;
}
-(void)dealloc
{
[self stopNotifier];
if(self.reachabilityRef)
{
CFRelease(self.reachabilityRef);
self.reachabilityRef = nil;
}
self.reachableBlock = nil;
self.unreachableBlock = nil;
#if !(__has_feature(objc_arc))
[super dealloc];
#endif
}
#pragma mark - Notifier Methods
// Notifier
// NOTE: This uses GCD to trigger the blocks - they *WILL NOT* be called on THE MAIN THREAD
// - In other words DO NOT DO ANY UI UPDATES IN THE BLOCKS.
// INSTEAD USE dispatch_async(dispatch_get_main_queue(), ^{UISTUFF}) (or dispatch_sync if you want)
-(BOOL)startNotifier
{
SCNetworkReachabilityContext context = { 0, NULL, NULL, NULL, NULL };
// this should do a retain on ourself, so as long as we're in notifier mode we shouldn't disappear out from under ourselves
// woah
self.reachabilityObject = self;
// First, we need to create a serial queue.
// We allocate this once for the lifetime of the notifier.
self.reachabilitySerialQueue = dispatch_queue_create("com.tonymillion.reachability", NULL);
if(!self.reachabilitySerialQueue)
{
return NO;
}
#if __has_feature(objc_arc)
context.info = (__bridge void *)self;
#else
context.info = (void *)self;
#endif
if (!SCNetworkReachabilitySetCallback(self.reachabilityRef, TMReachabilityCallback, &context))
{
#ifdef DEBUG
NSLog(@"SCNetworkReachabilitySetCallback() failed: %s", SCErrorString(SCError()));
#endif
// Clear out the dispatch queue
if(self.reachabilitySerialQueue)
{
#if NEEDS_DISPATCH_RETAIN_RELEASE
dispatch_release(self.reachabilitySerialQueue);
#endif
self.reachabilitySerialQueue = nil;
}
self.reachabilityObject = nil;
return NO;
}
// Set it as our reachability queue, which will retain the queue
if(!SCNetworkReachabilitySetDispatchQueue(self.reachabilityRef, self.reachabilitySerialQueue))
{
#ifdef DEBUG
NSLog(@"SCNetworkReachabilitySetDispatchQueue() failed: %s", SCErrorString(SCError()));
#endif
// UH OH - FAILURE!
// First stop, any callbacks!
SCNetworkReachabilitySetCallback(self.reachabilityRef, NULL, NULL);
// Then clear out the dispatch queue.
if(self.reachabilitySerialQueue)
{
#if NEEDS_DISPATCH_RETAIN_RELEASE
dispatch_release(self.reachabilitySerialQueue);
#endif
self.reachabilitySerialQueue = nil;
}
self.reachabilityObject = nil;
return NO;
}
return YES;
}
-(void)stopNotifier
{
// First stop, any callbacks!
SCNetworkReachabilitySetCallback(self.reachabilityRef, NULL, NULL);
// Unregister target from the GCD serial dispatch queue.
SCNetworkReachabilitySetDispatchQueue(self.reachabilityRef, NULL);
if(self.reachabilitySerialQueue)
{
#if NEEDS_DISPATCH_RETAIN_RELEASE
dispatch_release(self.reachabilitySerialQueue);
#endif
self.reachabilitySerialQueue = nil;
}
self.reachabilityObject = nil;
}
#pragma mark - reachability tests
// This is for the case where you flick the airplane mode;
// you end up getting something like this:
//Reachability: WR ct-----
//Reachability: -- -------
//Reachability: WR ct-----
//Reachability: -- -------
// We treat this as 4 UNREACHABLE triggers - really apple should do better than this
#define testcase (kSCNetworkReachabilityFlagsConnectionRequired | kSCNetworkReachabilityFlagsTransientConnection)
-(BOOL)isReachableWithFlags:(SCNetworkReachabilityFlags)flags
{
BOOL connectionUP = YES;
if(!(flags & kSCNetworkReachabilityFlagsReachable))
connectionUP = NO;
if( (flags & testcase) == testcase )
connectionUP = NO;
#if TARGET_OS_IPHONE
if(flags & kSCNetworkReachabilityFlagsIsWWAN)
{
// We're on 3G.
if(!self.reachableOnWWAN)
{
// We don't want to connect when on 3G.
connectionUP = NO;
}
}
#endif
return connectionUP;
}
-(BOOL)isReachable
{
SCNetworkReachabilityFlags flags;
if(!SCNetworkReachabilityGetFlags(self.reachabilityRef, &flags))
return NO;
return [self isReachableWithFlags:flags];
}
-(BOOL)isReachableViaWWAN
{
#if TARGET_OS_IPHONE
SCNetworkReachabilityFlags flags = 0;
if(SCNetworkReachabilityGetFlags(reachabilityRef, &flags))
{
// Check we're REACHABLE
if(flags & kSCNetworkReachabilityFlagsReachable)
{
// Now, check we're on WWAN
if(flags & kSCNetworkReachabilityFlagsIsWWAN)
{
return YES;
}
}
}
#endif
return NO;
}
-(BOOL)isReachableViaWiFi
{
SCNetworkReachabilityFlags flags = 0;
if(SCNetworkReachabilityGetFlags(reachabilityRef, &flags))
{
// Check we're reachable
if((flags & kSCNetworkReachabilityFlagsReachable))
{
#if TARGET_OS_IPHONE
// Check we're NOT on WWAN
if((flags & kSCNetworkReachabilityFlagsIsWWAN))
{
return NO;
}
#endif
return YES;
}
}
return NO;
}
// WWAN may be available, but not active until a connection has been established.
// WiFi may require a connection for VPN on Demand.
-(BOOL)isConnectionRequired
{
return [self connectionRequired];
}
-(BOOL)connectionRequired
{
SCNetworkReachabilityFlags flags;
if(SCNetworkReachabilityGetFlags(reachabilityRef, &flags))
{
return (flags & kSCNetworkReachabilityFlagsConnectionRequired);
}
return NO;
}
// Dynamic, on demand connection?
-(BOOL)isConnectionOnDemand
{
SCNetworkReachabilityFlags flags;
if (SCNetworkReachabilityGetFlags(reachabilityRef, &flags))
{
return ((flags & kSCNetworkReachabilityFlagsConnectionRequired) &&
(flags & (kSCNetworkReachabilityFlagsConnectionOnTraffic | kSCNetworkReachabilityFlagsConnectionOnDemand)));
}
return NO;
}
// Is user intervention required?
-(BOOL)isInterventionRequired
{
SCNetworkReachabilityFlags flags;
if (SCNetworkReachabilityGetFlags(reachabilityRef, &flags))
{
return ((flags & kSCNetworkReachabilityFlagsConnectionRequired) &&
(flags & kSCNetworkReachabilityFlagsInterventionRequired));
}
return NO;
}
#pragma mark - reachability status stuff
-(NetworkStatus)currentReachabilityStatus
{
if([self isReachable])
{
if([self isReachableViaWiFi])
return ReachableViaWiFi;
#if TARGET_OS_IPHONE
return ReachableViaWWAN;
#endif
}
return NotReachable;
}
-(SCNetworkReachabilityFlags)reachabilityFlags
{
SCNetworkReachabilityFlags flags = 0;
if(SCNetworkReachabilityGetFlags(reachabilityRef, &flags))
{
return flags;
}
return 0;
}
-(NSString*)currentReachabilityString
{
NetworkStatus temp = [self currentReachabilityStatus];
if(temp == reachableOnWWAN)
{
// Updated for the fact that we have CDMA phones now!
return NSLocalizedString(@"Cellular", @"");
}
if (temp == ReachableViaWiFi)
{
return NSLocalizedString(@"WiFi", @"");
}
return NSLocalizedString(@"No Connection", @"");
}
-(NSString*)currentReachabilityFlags
{
return reachabilityFlags([self reachabilityFlags]);
}
#pragma mark - Callback function calls this method
-(void)reachabilityChanged:(SCNetworkReachabilityFlags)flags
{
if([self isReachableWithFlags:flags])
{
if(self.reachableBlock)
{
self.reachableBlock(self);
}
}
else
{
if(self.unreachableBlock)
{
self.unreachableBlock(self);
}
}
// this makes sure the change notification happens on the MAIN THREAD
dispatch_async(dispatch_get_main_queue(), ^{
[[NSNotificationCenter defaultCenter] postNotificationName:kReachabilityChangedNotification
object:self];
});
}
#pragma mark - Debug Description
- (NSString *) description
{
NSString *description = [NSString stringWithFormat:@"<%@: %#x>",
NSStringFromClass([self class]), (unsigned int) self];
return description;
}
@end
@@ -1,19 +0,0 @@
//
// WebServiceConstants.h
// ipbc-Client
//
// Created by Gerrit Linnemann on 28.10.13.
// Copyright (c) 2013 Adawim UG (haftungsbeschränkt). All rights reserved.
//
#import <Foundation/Foundation.h>
@interface WebServiceConstants : NSObject
extern NSString * const HOMEPAGE_REGISTER;
extern NSString * const WS_BASE;
extern NSString * const WS_RESOURCE;
extern NSString * const WS_GET_USERS_IP_SERVICE;
@end
@@ -1,25 +0,0 @@
//
// WebServiceConstants.m
// ipbc-Client
//
// Created by Gerrit Linnemann on 28.10.13.
// Copyright (c) 2013 Adawim UG (haftungsbeschränkt). All rights reserved.
//
#import "WebServiceConstants.h"
@implementation WebServiceConstants
NSString * const HOMEPAGE_REGISTER = @"https://www.ip-bc.org/login.xhtml";
/*
NSString * const WS_BASE = @"localhost:8080/ip-bc.org";
NSString * const WS_RESOURCE = @"http://localhost:8080/ip-bc.org/ws/update/ip";
NSString * const WS_GET_USERS_IP_SERVICE = @"http://localhost:8080/ip-bc.org/ws/info/ip";
*/
NSString * const WS_BASE = @"www.ip-bc.org";
NSString * const WS_RESOURCE = @"https://www.ip-bc.org/ws/update/ip";
NSString * const WS_GET_USERS_IP_SERVICE = @"https://www.ip-bc.org/ws/info/ip";
@end
@@ -1,22 +0,0 @@
//
// WebserviceClient.h
// ipbc-Client
//
// Created by Gerrit Linnemann on 28.10.13.
// Copyright (c) 2013 Adawim UG (haftungsbeschränkt). All rights reserved.
//
#import <Foundation/Foundation.h>
@interface WebserviceClient : NSObject {
NSTimer *updateTimer;
NSString *usersIPv4;
BOOL isNetworkAvailable;
BOOL isRequestRunning;
}
-(BOOL)updateDomain;
-(void)checkNetworkAvailability;
@end
-151
View File
@@ -1,151 +0,0 @@
//
// WebserviceClient.m
// ipbc-Client
//
// Created by Gerrit Linnemann on 28.10.13.
// Copyright (c) 2013 Adawim UG (haftungsbeschränkt). All rights reserved.
//
#import "WebserviceClient.h"
#import "WebServiceConstants.h"
#import "Reachability.h"
@implementation WebserviceClient
-(void)awakeFromNib {
updateTimer = [NSTimer scheduledTimerWithTimeInterval: 4
target: self
selector: @selector(tick:)
userInfo: nil
repeats: YES];
isRequestRunning = NO;
isNetworkAvailable = NO;
[self checkNetworkAvailability];
}
- (void)tick:(NSTimer *)theTimer {
if(isNetworkAvailable && !isRequestRunning) {
[self updateDomain];
} else {
// else for logging only
if(!isNetworkAvailable) {
NSLog(@"no ip update, 'cause network unavailable");
}
if(isRequestRunning) {
NSLog(@"no ip update, 'cause of active request");
}
}
}
-(BOOL)updateDomain {
usersIPv4 = [self fetchIPv4];
NSString *storedIPv4 = [[NSUserDefaults standardUserDefaults] stringForKey:@"value.ip.ipv4"];
if(storedIPv4 == nil) {
[[NSUserDefaults standardUserDefaults] setObject:usersIPv4 forKey:@"value.ip.ipv4"];
}
BOOL updateResult = NO;
if([self checkUpdateNeeded]) {
NSLog(@"update resource: %@", WS_RESOURCE);
updateResult = [self doWebServiceUpdate];
} else {
NSLog(@"no update needed");
}
return updateResult;
}
-(void)checkNetworkAvailability {
// Allocate a reachability object
Reachability* reach = [Reachability reachabilityWithHostname:WS_BASE];
// Set the blocks
reach.reachableBlock = ^(Reachability*reach)
{
NSLog(@"%@ REACHABLE", WS_BASE);
isNetworkAvailable = YES;
};
reach.unreachableBlock = ^(Reachability*reach)
{
NSLog(@"%@ UNREACHABLE", WS_BASE);
isNetworkAvailable = NO;
};
// Start the notifier, which will cause the reachability object to retain itself!
[reach startNotifier];
}
-(BOOL)checkUpdateNeeded {
NSString *storedIPv4 = [[NSUserDefaults standardUserDefaults] stringForKey:@"value.ip.ipv4"];
NSString *fetchedIPv4 = usersIPv4;
//return YES;
if(storedIPv4 == nil) {
NSLog(@"stored IPv4 NULL");
return YES;
} else if(fetchedIPv4 == nil) {
NSLog(@"fetched IPv4 NULL");
return NO;
} else {
BOOL changed = ![storedIPv4 isEqualToString:fetchedIPv4];
NSLog(@"compare stored %@ with %@. Changed: %@", storedIPv4, fetchedIPv4, (changed ? @"yes" : @"no"));
return changed;
}
}
-(BOOL)doWebServiceUpdate {
isRequestRunning = YES;
NSString *settingTempName = [[NSUserDefaults standardUserDefaults] stringForKey:@"setting.name"];
NSString *settingTempToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"setting.token"];
if([settingTempName length] > 0 && [settingTempToken length] > 0) {
NSLog(@"update ip to %@", usersIPv4);
NSURL *url = [NSURL URLWithString:WS_RESOURCE];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSDictionary *tmp = [[NSDictionary alloc] initWithObjectsAndKeys:
settingTempName, @"domain",
settingTempToken, @"token",
nil];
NSError *error;
NSData *postData = [NSJSONSerialization dataWithJSONObject:tmp options:0 error:&error];
[request setHTTPBody:postData];
/*NSData *resultData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *strData = [[NSString alloc]initWithData:resultData encoding:NSUTF8StringEncoding];
NSLog(@"resultData: %@", strData);*/
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *resultData, NSError *error) {
NSString *strData = [[NSString alloc]initWithData:resultData encoding:NSUTF8StringEncoding];
NSLog(@"resultData: %@", strData);
// locally save posted ip
[[NSUserDefaults standardUserDefaults] setObject:usersIPv4 forKey:@"value.ip.ipv4"];
isRequestRunning = NO;
}];
return YES;
} else {
return NO;
}
}
-(NSString *)fetchIPv4 {
NSURL *myIpAdress = [NSURL URLWithString:WS_GET_USERS_IP_SERVICE];
NSString *contentOfURL = [NSString stringWithContentsOfURL:myIpAdress encoding:NSUTF8StringEncoding error:NULL];
NSString *contentTrimmed = [contentOfURL stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
//NSLog(@"fetched IPv4: %@", contentTrimmed);
return contentTrimmed;
}
@end
@@ -1,29 +0,0 @@
{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw9840\paperh8400
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\b\fs24 \cf0 Engineering:
\b0 \
Some people\
\
\b Human Interface Design:
\b0 \
Some other people\
\
\b Testing:
\b0 \
Hopefully not nobody\
\
\b Documentation:
\b0 \
Whoever\
\
\b With special thanks to:
\b0 \
Mom\
}
@@ -1,2 +0,0 @@
/* Localized versions of Info.plist keys */
Binary file not shown.

Before

Width:  |  Height:  |  Size: 668 KiB

@@ -1,9 +0,0 @@
//
// Prefix header
//
// The contents of this file are implicitly included at the beginning of every source file.
//
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif
@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
</dict>
</plist>
-32
View File
@@ -1,32 +0,0 @@
//
// ipbcAppDelegate.h
// ipbc-Client
//
// Created by Gerrit Linnemann on 25.10.13.
// Copyright (c) 2013 Adawim UG (haftungsbeschränkt). All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface ipbcAppDelegate : NSObject <NSApplicationDelegate> {
NSWindow *window;
IBOutlet NSWindow *settings;
IBOutlet NSMenu *statusMenu;
NSStatusItem * statusItem;
/* settings */
IBOutlet NSTextField *settingName;
IBOutlet NSTextField *settingToken;
}
@property (assign) IBOutlet NSWindow *window;
-(IBAction)fromMenuSettings:(id)sender;
-(IBAction)fromMenuQuit:(id)sender;
-(IBAction)fromSettingsCancel:(id)sender;
-(IBAction)fromSettingsSave:(id)sender;
-(IBAction)gotoHomepage:(id)sender;
@end
-64
View File
@@ -1,64 +0,0 @@
//
// ipbcAppDelegate.m
// ipbc-Client
//
// Created by Gerrit Linnemann on 25.10.13.
// Copyright (c) 2013 Adawim UG (haftungsbeschränkt). All rights reserved.
//
#import "ipbcAppDelegate.h"
#import "ImageHelper.h"
#import "WebServiceConstants.h"
@implementation ipbcAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// Insert code here to initialize your application
NSString *settingTempName = [[NSUserDefaults standardUserDefaults] stringForKey:@"setting.name"];
NSString *settingTempToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"setting.token"];
[settingName setStringValue:(settingTempName != nil ? settingTempName : @"")];
[settingToken setStringValue:(settingTempToken != nil ? settingTempToken : @"")];
}
-(void)awakeFromNib {
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusItem setMenu:statusMenu];
[statusItem setHighlightMode:YES];
// statusbar icon
NSSize statusbarIconSize;
statusbarIconSize.width = 18;
statusbarIconSize.height = 18;
[statusItem setImage:[ImageHelper resizeImage:[NSImage imageNamed: @"statusbar-icon.png"] size:statusbarIconSize]];
}
-(IBAction)fromMenuSettings:(id)sender {
[settings makeKeyAndOrderFront:nil];
}
-(IBAction)fromMenuQuit:(id)sender {
[NSApp terminate:self];
}
-(IBAction)fromSettingsSave:(id)sender {
NSUserDefaults *defauls = [NSUserDefaults standardUserDefaults];
[defauls setObject:[settingName stringValue] forKey:@"setting.name"];
[defauls setObject:[settingToken stringValue] forKey:@"setting.token"];
// ip reset
[defauls setObject:@"0.0.0.0" forKey:@"value.ip.ipv4"];
[settings orderOut:self];
}
-(IBAction)fromSettingsCancel:(id)sender {
[settings orderOut:self];
}
-(IBAction)gotoHomepage:(id)sender {
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:HOMEPAGE_REGISTER]];
}
@end
-14
View File
@@ -1,14 +0,0 @@
//
// main.m
// ipbc-Client
//
// Created by Gerrit Linnemann on 25.10.13.
// Copyright (c) 2013 Adawim UG (haftungsbeschränkt). All rights reserved.
//
#import <Cocoa/Cocoa.h>
int main(int argc, const char * argv[])
{
return NSApplicationMain(argc, argv);
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

@@ -5,11 +5,13 @@
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>com.adawim.${PRODUCT_NAME:rfc1034identifier}</string>
<string>com.ipbc.client.osx.$(PRODUCT_NAME:rfc1034identifier)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
@@ -1,2 +0,0 @@
/* Localized versions of Info.plist keys */
@@ -1,34 +0,0 @@
//
// ipbc_ClientTests.m
// ipbc-ClientTests
//
// Created by Gerrit Linnemann on 25.10.13.
// Copyright (c) 2013 Adawim UG (haftungsbeschränkt). All rights reserved.
//
#import <XCTest/XCTest.h>
@interface ipbc_ClientTests : XCTestCase
@end
@implementation ipbc_ClientTests
- (void)setUp
{
[super setUp];
// Put setup code here. This method is called before the invocation of each test method in the class.
}
- (void)tearDown
{
// Put teardown code here. This method is called after the invocation of each test method in the class.
[super tearDown];
}
- (void)testExample
{
XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
}
@end
@@ -0,0 +1,36 @@
//
// ipbc_ClientTests.swift
// ipbc-ClientTests
//
// Created by Gerrit Linnemann on 09.09.15.
// Copyright (c) 2015 Adawim UG (haftungsbeschränkt). All rights reserved.
//
import Cocoa
import XCTest
class ipbc_ClientTests: XCTestCase {
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testExample() {
// This is an example of a functional test case.
XCTAssert(true, "Pass")
}
func testPerformanceExample() {
// This is an example of a performance test case.
self.measureBlock() {
// Put the code you want to measure the time of here.
}
}
}