From f86f2e692aab318a55420fc33fbfec263eafe899 Mon Sep 17 00:00:00 2001 From: Nic Pottier Date: Thu, 25 Aug 2016 17:12:25 -0500 Subject: [PATCH 1/2] domino style icon to show <100ms, 200ms, 300ms etc.. up to >1000ms --- iconping.xcodeproj/project.pbxproj | 121 ++++++++++++++++++++++++++--- iconping/iconping-Info.plist | 2 +- iconping/iconpingAppDelegate.h | 2 +- iconping/iconpingAppDelegate.m | 63 ++++++++++----- 4 files changed, 157 insertions(+), 31 deletions(-) diff --git a/iconping.xcodeproj/project.pbxproj b/iconping.xcodeproj/project.pbxproj index 3c217bb..fe5b05c 100644 --- a/iconping.xcodeproj/project.pbxproj +++ b/iconping.xcodeproj/project.pbxproj @@ -7,20 +7,58 @@ objects = { /* Begin PBXBuildFile section */ + 839211691C8F8069002B802F /* ping_1@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 839211681C8F8069002B802F /* ping_1@2x.png */; }; + 839211731C8F8516002B802F /* ping_8@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8392116A1C8F8516002B802F /* ping_8@2x.png */; }; + 839211741C8F8516002B802F /* ping_7@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8392116B1C8F8516002B802F /* ping_7@2x.png */; }; + 839211751C8F8516002B802F /* ping_6@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8392116C1C8F8516002B802F /* ping_6@2x.png */; }; + 839211761C8F8516002B802F /* ping_5@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8392116D1C8F8516002B802F /* ping_5@2x.png */; }; + 839211771C8F8516002B802F /* ping_4@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8392116E1C8F8516002B802F /* ping_4@2x.png */; }; + 839211781C8F8516002B802F /* ping_3@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8392116F1C8F8516002B802F /* ping_3@2x.png */; }; + 839211791C8F8516002B802F /* ping_2@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 839211701C8F8516002B802F /* ping_2@2x.png */; }; + 8392117A1C8F8516002B802F /* ping_9@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 839211711C8F8516002B802F /* ping_9@2x.png */; }; + 8392117B1C8F8516002B802F /* ping_error@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 839211721C8F8516002B802F /* ping_error@2x.png */; }; + 83E571CE1C8E4ECB00891AFE /* ping_1.png in Resources */ = {isa = PBXBuildFile; fileRef = 83E571C41C8E4ECB00891AFE /* ping_1.png */; }; + 83E571CF1C8E4ECB00891AFE /* ping_2.png in Resources */ = {isa = PBXBuildFile; fileRef = 83E571C51C8E4ECB00891AFE /* ping_2.png */; }; + 83E571D01C8E4ECB00891AFE /* ping_3.png in Resources */ = {isa = PBXBuildFile; fileRef = 83E571C61C8E4ECB00891AFE /* ping_3.png */; }; + 83E571D11C8E4ECB00891AFE /* ping_4.png in Resources */ = {isa = PBXBuildFile; fileRef = 83E571C71C8E4ECB00891AFE /* ping_4.png */; }; + 83E571D21C8E4ECB00891AFE /* ping_5.png in Resources */ = {isa = PBXBuildFile; fileRef = 83E571C81C8E4ECB00891AFE /* ping_5.png */; }; + 83E571D31C8E4ECB00891AFE /* ping_6.png in Resources */ = {isa = PBXBuildFile; fileRef = 83E571C91C8E4ECB00891AFE /* ping_6.png */; }; + 83E571D41C8E4ECB00891AFE /* ping_7.png in Resources */ = {isa = PBXBuildFile; fileRef = 83E571CA1C8E4ECB00891AFE /* ping_7.png */; }; + 83E571D51C8E4ECB00891AFE /* ping_8.png in Resources */ = {isa = PBXBuildFile; fileRef = 83E571CB1C8E4ECB00891AFE /* ping_8.png */; }; + 83E571D61C8E4ECB00891AFE /* ping_9.png in Resources */ = {isa = PBXBuildFile; fileRef = 83E571CC1C8E4ECB00891AFE /* ping_9.png */; }; + 83E571D71C8E4ECB00891AFE /* ping_error.png in Resources */ = {isa = PBXBuildFile; fileRef = 83E571CD1C8E4ECB00891AFE /* ping_error.png */; }; B6869BA013DD8DDE00F2D69B /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6869B9F13DD8DDE00F2D69B /* Cocoa.framework */; }; B6869BAA13DD8DDE00F2D69B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B6869BA813DD8DDE00F2D69B /* InfoPlist.strings */; }; B6869BAC13DD8DDE00F2D69B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B6869BAB13DD8DDE00F2D69B /* main.m */; }; B6869BB013DD8DDE00F2D69B /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = B6869BAE13DD8DDE00F2D69B /* Credits.rtf */; }; B6869BB313DD8DDE00F2D69B /* iconpingAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B6869BB213DD8DDE00F2D69B /* iconpingAppDelegate.m */; }; B6869BB613DD8DDE00F2D69B /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6869BB413DD8DDE00F2D69B /* MainMenu.xib */; }; - B6869BBD13DDA3D900F2D69B /* iconok.png in Resources */ = {isa = PBXBuildFile; fileRef = B6869BBC13DDA3D900F2D69B /* iconok.png */; }; - B6869BBF13DDAEA600F2D69B /* iconko.png in Resources */ = {isa = PBXBuildFile; fileRef = B6869BBE13DDAEA600F2D69B /* iconko.png */; }; B6869BC113DDAEB500F2D69B /* iconslow.png in Resources */ = {isa = PBXBuildFile; fileRef = B6869BC013DDAEB500F2D69B /* iconslow.png */; }; B688E44813ED7C7A00D58F00 /* world_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = B688E44713ED7C7A00D58F00 /* world_icon.png */; }; B688E44B13ED874400D58F00 /* world_icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = B688E44A13ED874400D58F00 /* world_icon.icns */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 839211681C8F8069002B802F /* ping_1@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ping_1@2x.png"; sourceTree = ""; }; + 8392116A1C8F8516002B802F /* ping_8@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ping_8@2x.png"; sourceTree = ""; }; + 8392116B1C8F8516002B802F /* ping_7@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ping_7@2x.png"; sourceTree = ""; }; + 8392116C1C8F8516002B802F /* ping_6@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ping_6@2x.png"; sourceTree = ""; }; + 8392116D1C8F8516002B802F /* ping_5@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ping_5@2x.png"; sourceTree = ""; }; + 8392116E1C8F8516002B802F /* ping_4@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ping_4@2x.png"; sourceTree = ""; }; + 8392116F1C8F8516002B802F /* ping_3@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ping_3@2x.png"; sourceTree = ""; }; + 839211701C8F8516002B802F /* ping_2@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ping_2@2x.png"; sourceTree = ""; }; + 839211711C8F8516002B802F /* ping_9@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ping_9@2x.png"; sourceTree = ""; }; + 839211721C8F8516002B802F /* ping_error@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "ping_error@2x.png"; sourceTree = ""; }; + 83E571C41C8E4ECB00891AFE /* ping_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ping_1.png; sourceTree = ""; }; + 83E571C51C8E4ECB00891AFE /* ping_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ping_2.png; sourceTree = ""; }; + 83E571C61C8E4ECB00891AFE /* ping_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ping_3.png; sourceTree = ""; }; + 83E571C71C8E4ECB00891AFE /* ping_4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ping_4.png; sourceTree = ""; }; + 83E571C81C8E4ECB00891AFE /* ping_5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ping_5.png; sourceTree = ""; }; + 83E571C91C8E4ECB00891AFE /* ping_6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ping_6.png; sourceTree = ""; }; + 83E571CA1C8E4ECB00891AFE /* ping_7.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ping_7.png; sourceTree = ""; }; + 83E571CB1C8E4ECB00891AFE /* ping_8.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ping_8.png; sourceTree = ""; }; + 83E571CC1C8E4ECB00891AFE /* ping_9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ping_9.png; sourceTree = ""; }; + 83E571CD1C8E4ECB00891AFE /* ping_error.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ping_error.png; sourceTree = ""; }; B6869B9B13DD8DDE00F2D69B /* iconping.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iconping.app; sourceTree = BUILT_PRODUCTS_DIR; }; B6869B9F13DD8DDE00F2D69B /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; B6869BA213DD8DDE00F2D69B /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; @@ -34,8 +72,6 @@ B6869BB113DD8DDE00F2D69B /* iconpingAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iconpingAppDelegate.h; sourceTree = ""; }; B6869BB213DD8DDE00F2D69B /* iconpingAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iconpingAppDelegate.m; sourceTree = ""; }; B6869BB513DD8DDE00F2D69B /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; - B6869BBC13DDA3D900F2D69B /* iconok.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = iconok.png; sourceTree = ""; }; - B6869BBE13DDAEA600F2D69B /* iconko.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = iconko.png; sourceTree = ""; }; B6869BC013DDAEB500F2D69B /* iconslow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = iconslow.png; sourceTree = ""; }; B688E44713ED7C7A00D58F00 /* world_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = world_icon.png; sourceTree = ""; }; B688E44A13ED874400D58F00 /* world_icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = world_icon.icns; sourceTree = ""; }; @@ -105,9 +141,27 @@ B6869BA613DD8DDE00F2D69B /* Supporting Files */ = { isa = PBXGroup; children = ( + 8392116A1C8F8516002B802F /* ping_8@2x.png */, + 8392116B1C8F8516002B802F /* ping_7@2x.png */, + 8392116C1C8F8516002B802F /* ping_6@2x.png */, + 8392116D1C8F8516002B802F /* ping_5@2x.png */, + 8392116E1C8F8516002B802F /* ping_4@2x.png */, + 8392116F1C8F8516002B802F /* ping_3@2x.png */, + 839211701C8F8516002B802F /* ping_2@2x.png */, + 839211711C8F8516002B802F /* ping_9@2x.png */, + 839211721C8F8516002B802F /* ping_error@2x.png */, + 839211681C8F8069002B802F /* ping_1@2x.png */, + 83E571C41C8E4ECB00891AFE /* ping_1.png */, + 83E571C51C8E4ECB00891AFE /* ping_2.png */, + 83E571C61C8E4ECB00891AFE /* ping_3.png */, + 83E571C71C8E4ECB00891AFE /* ping_4.png */, + 83E571C81C8E4ECB00891AFE /* ping_5.png */, + 83E571C91C8E4ECB00891AFE /* ping_6.png */, + 83E571CA1C8E4ECB00891AFE /* ping_7.png */, + 83E571CB1C8E4ECB00891AFE /* ping_8.png */, + 83E571CC1C8E4ECB00891AFE /* ping_9.png */, + 83E571CD1C8E4ECB00891AFE /* ping_error.png */, B6869BC013DDAEB500F2D69B /* iconslow.png */, - B6869BBE13DDAEA600F2D69B /* iconko.png */, - B6869BBC13DDA3D900F2D69B /* iconok.png */, B6869BA713DD8DDE00F2D69B /* iconping-Info.plist */, B6869BA813DD8DDE00F2D69B /* InfoPlist.strings */, B6869BAB13DD8DDE00F2D69B /* main.m */, @@ -143,7 +197,7 @@ B6869B9213DD8DDD00F2D69B /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0410; + LastUpgradeCheck = 0720; ORGANIZATIONNAME = "Kiurma s.r.l. / Merzia s.r.l."; }; buildConfigurationList = B6869B9513DD8DDD00F2D69B /* Build configuration list for PBXProject "iconping" */; @@ -168,13 +222,31 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 839211761C8F8516002B802F /* ping_5@2x.png in Resources */, + 8392117A1C8F8516002B802F /* ping_9@2x.png in Resources */, + 839211691C8F8069002B802F /* ping_1@2x.png in Resources */, + 8392117B1C8F8516002B802F /* ping_error@2x.png in Resources */, B6869BAA13DD8DDE00F2D69B /* InfoPlist.strings in Resources */, + 83E571D61C8E4ECB00891AFE /* ping_9.png in Resources */, B6869BB013DD8DDE00F2D69B /* Credits.rtf in Resources */, + 83E571D51C8E4ECB00891AFE /* ping_8.png in Resources */, + 83E571D21C8E4ECB00891AFE /* ping_5.png in Resources */, + 839211781C8F8516002B802F /* ping_3@2x.png in Resources */, + 83E571D01C8E4ECB00891AFE /* ping_3.png in Resources */, + 83E571D41C8E4ECB00891AFE /* ping_7.png in Resources */, + 83E571D31C8E4ECB00891AFE /* ping_6.png in Resources */, B6869BB613DD8DDE00F2D69B /* MainMenu.xib in Resources */, - B6869BBD13DDA3D900F2D69B /* iconok.png in Resources */, - B6869BBF13DDAEA600F2D69B /* iconko.png in Resources */, + 83E571D71C8E4ECB00891AFE /* ping_error.png in Resources */, + 839211731C8F8516002B802F /* ping_8@2x.png in Resources */, + 83E571CF1C8E4ECB00891AFE /* ping_2.png in Resources */, + 839211751C8F8516002B802F /* ping_6@2x.png in Resources */, B6869BC113DDAEB500F2D69B /* iconslow.png in Resources */, + 839211791C8F8516002B802F /* ping_2@2x.png in Resources */, B688E44813ED7C7A00D58F00 /* world_icon.png in Resources */, + 839211771C8F8516002B802F /* ping_4@2x.png in Resources */, + 83E571CE1C8E4ECB00891AFE /* ping_1.png in Resources */, + 83E571D11C8E4ECB00891AFE /* ping_4.png in Resources */, + 839211741C8F8516002B802F /* ping_7@2x.png in Resources */, B688E44B13ED874400D58F00 /* world_icon.icns in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -225,11 +297,20 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = 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", @@ -240,6 +321,9 @@ GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; MACOSX_DEPLOYMENT_TARGET = 10.5; ONLY_ACTIVE_ARCH = YES; @@ -251,15 +335,26 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_NO_COMMON_BLOCKS = YES; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; MACOSX_DEPLOYMENT_TARGET = 10.5; SDKROOT = macosx; @@ -269,10 +364,12 @@ B6869BBA13DD8DDE00F2D69B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + COMBINE_HIDPI_IMAGES = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "iconping/iconping-Prefix.pch"; INFOPLIST_FILE = "iconping/iconping-Info.plist"; MACOSX_DEPLOYMENT_TARGET = 10.5; + PRODUCT_BUNDLE_IDENTIFIER = "com.antirez.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; WRAPPER_EXTENSION = app; @@ -282,10 +379,12 @@ B6869BBB13DD8DDE00F2D69B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + COMBINE_HIDPI_IMAGES = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "iconping/iconping-Prefix.pch"; INFOPLIST_FILE = "iconping/iconping-Info.plist"; MACOSX_DEPLOYMENT_TARGET = 10.5; + PRODUCT_BUNDLE_IDENTIFIER = "com.antirez.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; WRAPPER_EXTENSION = app; diff --git a/iconping/iconping-Info.plist b/iconping/iconping-Info.plist index 5e9c3f4..62d8abb 100644 --- a/iconping/iconping-Info.plist +++ b/iconping/iconping-Info.plist @@ -11,7 +11,7 @@ CFBundleIconFile world_icon.icns CFBundleIdentifier - com.antirez.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/iconping/iconpingAppDelegate.h b/iconping/iconpingAppDelegate.h index 912608e..8be179b 100644 --- a/iconping/iconpingAppDelegate.h +++ b/iconping/iconpingAppDelegate.h @@ -11,7 +11,7 @@ @interface iconpingAppDelegate : NSObject { NSWindow *window; NSStatusItem *myStatusItem; - NSImage *myStatusImageOK, *myStatusImageSLOW, *myStatusImageKO; + NSImage *ping1, *ping2, *ping3, *ping4, *ping5, *ping6, *ping7, *ping8, *ping9, *pingError; NSMenu *myMenu; NSMenuItem *statusMenuItem, *openAtStartupMenuItem; uint16_t icmp_id; diff --git a/iconping/iconpingAppDelegate.m b/iconping/iconpingAppDelegate.m index 62f67ce..c1ebb99 100644 --- a/iconping/iconpingAppDelegate.m +++ b/iconping/iconpingAppDelegate.m @@ -33,9 +33,7 @@ @implementation iconpingAppDelegate #define ICMP_TYPE_ECHO_REPLY 0 #define ICMP_TYPE_ECHO_REQUEST 8 -#define CONN_STATE_KO 0 -#define CONN_STATE_SLOW 1 -#define CONN_STATE_OK 2 +#define CONN_STATE_KO -1 /* This is the standard BSD checksum code, modified to use modern types. */ static uint16_t in_cksum(const void *buffer, size_t bufferLen) @@ -150,7 +148,7 @@ - (void) receivePing { return; } - NSLog(@"OK received an ICMP packet that matches!\n"); + NSLog(@"OK received an ICMP packet that matches.\n"); if (reply->sentTime > last_received_time) { last_rtt = (int)(ustime()-reply->sentTime)/1000; last_received_time = reply->sentTime; @@ -168,7 +166,7 @@ - (void)applicationDidFinishLaunching:(NSNotification *)aNotification [self methodSignatureForSelector:@selector(timerHandler:)]]; [invocation setTarget:self]; [invocation setSelector:@selector(timerHandler:)]; - [[NSRunLoop mainRunLoop] addTimer:[NSTimer timerWithTimeInterval:0.1 invocation:invocation repeats:YES] forMode:NSRunLoopCommonModes]; + [[NSRunLoop mainRunLoop] addTimer:[NSTimer timerWithTimeInterval:0.05 invocation:invocation repeats:YES] forMode:NSRunLoopCommonModes]; myMenu = [[NSMenu alloc] initWithTitle:@"Menu Title"]; NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:@"Quit Icon Ping" action:@selector(exitAction) keyEquivalent:@"q"]; @@ -187,10 +185,18 @@ - (void)applicationDidFinishLaunching:(NSNotification *)aNotification myStatusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain]; - myStatusImageOK = [[NSImage alloc] initWithContentsOfFile: [bundle pathForResource:@"iconok" ofType:@"png"]]; - myStatusImageSLOW = [[NSImage alloc] initWithContentsOfFile: [bundle pathForResource:@"iconslow" ofType:@"png"]]; - myStatusImageKO = [[NSImage alloc] initWithContentsOfFile: [bundle pathForResource:@"iconko" ofType:@"png"]]; - [myStatusItem setImage:myStatusImageKO]; + ping1 = [NSImage imageNamed:@"ping_1"]; + ping2 = [NSImage imageNamed:@"ping_2"]; + ping3 = [NSImage imageNamed:@"ping_3"]; + ping4 = [NSImage imageNamed:@"ping_4"]; + ping5 = [NSImage imageNamed:@"ping_5"]; + ping6 = [NSImage imageNamed:@"ping_6"]; + ping7 = [NSImage imageNamed:@"ping_7"]; + ping8 = [NSImage imageNamed:@"ping_8"]; + ping9 = [NSImage imageNamed:@"ping_9"]; + pingError = [NSImage imageNamed:@"ping_error"]; + + [myStatusItem setImage:pingError]; [myStatusItem setMenu: myMenu]; [self changeConnectionState: CONN_STATE_KO]; @@ -217,12 +223,11 @@ - (void) timerHandler: (NSTimer *) t /* Update the current state accordingly */ elapsed = (ustime() - last_received_time)/1000; /* in milliseconds */ + //NSLog(@"Ping took %d\n", (int)last_rtt); if (elapsed > 3000) { state = CONN_STATE_KO; - } else if (last_rtt < 300) { - state = CONN_STATE_OK; } else { - state = CONN_STATE_SLOW; + state = (int)((last_rtt + 10) / 100); } if (state != connection_state) { [self changeConnectionState: state]; @@ -231,15 +236,37 @@ - (void) timerHandler: (NSTimer *) t - (void) changeConnectionState: (int) state { + //NSLog(@"State change to %d\n", state); if (state == CONN_STATE_KO) { - [myStatusItem setImage:myStatusImageKO]; + [myStatusItem setImage:pingError]; [statusMenuItem setTitle:@"No Connection!"]; - } else if (state == CONN_STATE_OK) { - [myStatusItem setImage:myStatusImageOK]; + } else if (state <= 1) { + [myStatusItem setImage:ping1]; + [statusMenuItem setTitle:@"Connection OK"]; + } else if (state == 2) { + [myStatusItem setImage:ping2]; + [statusMenuItem setTitle:@"Connection OK"]; + } else if (state == 3) { + [myStatusItem setImage:ping3]; + [statusMenuItem setTitle:@"Connection OK"]; + } else if (state == 4) { + [myStatusItem setImage:ping4]; + [statusMenuItem setTitle:@"Connection OK"]; + } else if (state == 5) { + [myStatusItem setImage:ping5]; + [statusMenuItem setTitle:@"Connection OK"]; + } else if (state == 6) { + [myStatusItem setImage:ping6]; + [statusMenuItem setTitle:@"Connection OK"]; + } else if (state == 7) { + [myStatusItem setImage:ping7]; + [statusMenuItem setTitle:@"Connection OK"]; + } else if (state == 8) { + [myStatusItem setImage:ping8]; + [statusMenuItem setTitle:@"Connection OK"]; + } else if (state == 9) { + [myStatusItem setImage:ping9]; [statusMenuItem setTitle:@"Connection OK"]; - } else if (state == CONN_STATE_SLOW) { - [myStatusItem setImage:myStatusImageSLOW]; - [statusMenuItem setTitle:@"Connection is slow"]; } connection_state = state; } From 93124f3392a676b149e96941191b9903e5c6dda6 Mon Sep 17 00:00:00 2001 From: Nic Pottier Date: Thu, 25 Aug 2016 17:15:53 -0500 Subject: [PATCH 2/2] missing icons --- dominos.psd | Bin 0 -> 32702 bytes iconping/ping_1.png | Bin 0 -> 1037 bytes iconping/ping_1@2x.png | Bin 0 -> 253 bytes iconping/ping_2.png | Bin 0 -> 233 bytes iconping/ping_2@2x.png | Bin 0 -> 292 bytes iconping/ping_3.png | Bin 0 -> 236 bytes iconping/ping_3@2x.png | Bin 0 -> 318 bytes iconping/ping_4.png | Bin 0 -> 215 bytes iconping/ping_4@2x.png | Bin 0 -> 280 bytes iconping/ping_5.png | Bin 0 -> 233 bytes iconping/ping_5@2x.png | Bin 0 -> 329 bytes iconping/ping_6.png | Bin 0 -> 200 bytes iconping/ping_6@2x.png | Bin 0 -> 277 bytes iconping/ping_7.png | Bin 0 -> 229 bytes iconping/ping_7@2x.png | Bin 0 -> 341 bytes iconping/ping_8.png | Bin 0 -> 204 bytes iconping/ping_8@2x.png | Bin 0 -> 311 bytes iconping/ping_9.png | Bin 0 -> 179 bytes iconping/ping_9@2x.png | Bin 0 -> 264 bytes iconping/ping_error.png | Bin 0 -> 200 bytes iconping/ping_error@2x.png | Bin 0 -> 269 bytes iconping@2x.psd | Bin 0 -> 44960 bytes 22 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 dominos.psd create mode 100644 iconping/ping_1.png create mode 100644 iconping/ping_1@2x.png create mode 100644 iconping/ping_2.png create mode 100644 iconping/ping_2@2x.png create mode 100644 iconping/ping_3.png create mode 100644 iconping/ping_3@2x.png create mode 100644 iconping/ping_4.png create mode 100644 iconping/ping_4@2x.png create mode 100644 iconping/ping_5.png create mode 100644 iconping/ping_5@2x.png create mode 100644 iconping/ping_6.png create mode 100644 iconping/ping_6@2x.png create mode 100644 iconping/ping_7.png create mode 100644 iconping/ping_7@2x.png create mode 100644 iconping/ping_8.png create mode 100644 iconping/ping_8@2x.png create mode 100644 iconping/ping_9.png create mode 100644 iconping/ping_9@2x.png create mode 100644 iconping/ping_error.png create mode 100644 iconping/ping_error@2x.png create mode 100644 iconping@2x.psd diff --git a/dominos.psd b/dominos.psd new file mode 100644 index 0000000000000000000000000000000000000000..47449de46f449f03d55bbb47c0d6ad2c54a2ed83 GIT binary patch literal 32702 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 h7eNMVzlbZ z6cIfbE?iI&H6%ulUW}0g2Q@}wNIdvQNbt0SiGCeycmSJx{eI+qp7(j*@A)2#r$@V^ zC!-jKb*ILZ44RLH<7fo^uY7$xfuHBvTkk#)xM_&Q1gFxfD}$0bR`Wo% zmd@$5vd$aC;01gj5D&0oB#_db5-hhxYx}!x zLJgw=&7~NU4ohkVs_OqkEvpsn!wlHdyDzbyn{fe^0lqWs>FDB$ykUgM5$ICfR zrP;;tk^>#T8_Mv9$Af<=|;vr4b5E3*)%QVL*ad3w)3Sp#4%R{+sD(mesPKCKx$fo>@=&;JnHOzZ_6Iidyob#F=;z8?^e}Fv z6e$<{C}@+D^^Kv9wYC?pXX~9y#gEuF6Ip#&kGWlATenZg?mun2yH;B|v3mI4va~$( zyK7$T?1{{CS5J8x&wl+`sZ@rJ^WWzVEi4A{j=AgDb{0>+TraO= literal 0 HcmV?d00001 diff --git a/iconping/ping_1@2x.png b/iconping/ping_1@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..68d2cb3dfe5306d23e8be53d438e1a019ba4885d GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJBc3jfArY-_r#o^r8;H2vpOSYw zT4ZmHUO<)l#uEFxD|nZRC1*EHXk=7W`QK_EAK0L|!ujMQhT|_HXJ-GFWw7=)UvfRR zdyB%pjE_7a4O|9{Poxe;HUvenD!f$E^mxV2?m2y{09(#%RW_*w(%)U*HK;wDQy6dL z@FSq6#Dn#MOQQZS3C~xJpU-?c{4MjLW!v1g58qPX?qX9iW!C+ym}AbLXu`?3gP%{u z=YYTBpXp_?hqwY5wGNmue7x`F=bL{hNb6pc`nt(B)nTq|O+f!Jc)I$ztaD0e0svs% BUsM19 literal 0 HcmV?d00001 diff --git a/iconping/ping_2.png b/iconping/ping_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6e30930ffda0d2dc06fa7d0f38bb25633c3e280f GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rhe4W2HJAr`%Nr`+Z}WWeLvAGqI| zF_C|l<8HPyQEZG{(J^+fI@*Fv8Taj&B&ylJIQw)T<0JM}HMtF^zc^g7WKT$|UT|FY zsslHV+**~QL-)0snwXy$iZn1SI6LX_o>Mlatg?;P1+08a6_R~Yr$^t}F0lFNm9DSH z7i9hQ(%KxE&hq0-pb_I`X2yjJCQs%}Sh~4*>J!ZcdIeV)&5zw*bhzEDtW5dkl+=Sd hdvbCc?V9#oV>XIex~fAkZyV6<44$rjF6*2UngIHzT8IDu literal 0 HcmV?d00001 diff --git a/iconping/ping_2@2x.png b/iconping/ping_2@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fb787d0d3c17dc5f48033c90b8402d05eb765804 GIT binary patch literal 292 zcmV+<0o(qGP)kuCT>i+fi936m*(H6Y z+d@)O165-QaR0IQRth52z(87rLk$tadlDS*@acRlTl1s{V>4PRb}PaI-~c!P+5yyj zgrWesLsBQnNt%2*NnLEO0hallUv*Y2Kcmb5tImq$XJlsCT(P88XZ81=(I#hALIbPL qijpD>CgICj?amQ}08OI#6ubb2kB5Mno^?(D0000K literal 0 HcmV?d00001 diff --git a/iconping/ping_3.png b/iconping/ping_3.png new file mode 100644 index 0000000000000000000000000000000000000000..10f18c5a92041a3504e12e761552a1e6b00974e9 GIT binary patch literal 236 zcmV1T{Dr6o?hKc;&k_B{?2%1L0nDtKJX%Qs7+ys^(K}!~s3l4Y m0Bo3JcI=6_EpRjz`q-Xr)8-5&H5gR@0000P)>kv}HcY%M)NMSgR$61FVy0HJ)uS zz5^W)fOG5+*Dy1e9!t`%?toLW*7ph6c?F0e9&^(GVPtsUp+*2D!xguDJ8@=LGuuob zX<12{WT0sc0~}v`d#Dv6Wnj-Vg!>i{!u=)$;1WB;HMilT5Sm$25q$)qq)t+hbdDV) zb#ucQU*ep*C1RV1q#47`;UH6hHA6+;LC#TQMghcFGWNG*N~Zp|*Vz{n)5 Q>;M1&07*qoM6N<$g6@`ja{vGU literal 0 HcmV?d00001 diff --git a/iconping/ping_4.png b/iconping/ping_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa0e796b23069dccf613d1e844e79e9cea835b9 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rhed7dtgAr`%Nr`+W|WWdv6uRPC~ zF}8*G*1<@YkYg5d8(29Df4*jZq@q2kc-y&inrt1S8@?9v&v~b>B3sRxW@fTdw%~xM zXaY-Gf1uFbjLNvx874nkZJxEdiJs5i>gl#^x%bNtP8V6`?0lCM6%g{#X(HpKFRPmN z>1;09vi;-n-Ur{ZN{#Bbit*cJ$<9`M`ghr8?)lcc1ojkX} z_7@m{04y;>Y{SeBWl3j?B#jz@*|nvdfw2OhsN?7L0AXWL%1{AN)X4!XI|H8;07aej z+`I}t0q#3}Zxy;#I(`Wz@|$O>Sc0MsnLPmS9UOp1%n;iSm!YeKFCF*Z0MklgcIrVS zDSHr|8Xcembbt=90!T{NK~j*k#0-))oy=a;=yXTa9g&YecSJ{=%+DMVAoo}E^GJ@! e12l=|Rqz6C20i*^pdYFL0000V3gbmWcSp-zZI6iPx8l`EW{lJnHDL$Xh&M5-S0dbD=3Oqgww(qqD zNqup30d9n%4oJWlnQT+b5*NMBM12$-IW~x9xajq1VPvf?rGm?f2H?qiS3^V543`xN zuawK8(J~-O8Y9yhp|>u!fom%&1@2L_^#R-@T4*X`@{y$ei^Z1Co<`#zo!#-f jvpcf0Ip7<~M7!e!9N7{sgAb)o00000NkvXXu0mjf%067a literal 0 HcmV?d00001 diff --git a/iconping/ping_5@2x.png b/iconping/ping_5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ddb4619cf1094be0f1965f1169d3bc71857e57e9 GIT binary patch literal 329 zcmV-P0k-~$P);TfqJIk9^v)bA1#D|Yq9Is^h5!LuGM5W$xsU*3V!X_34sdYK z+PSyE`X4v~30QKbyoQ-|WeaDGNvS#k7q?dO0-OQ_nmE3%Cy-W(N~QpTCQgmO@}Te< zAkf4q@6)H?H-V1_-@XTMLpc5j&eX+o4je%fhl&Q^TfqtV%$f39_ZYfK_=Ds24KUqV znC)srlB!13Q+$+^BrQ3Uq*asY2?K1T$#mlU)WArSi4X{DK+*!dRkpv(?6nhTy9P$a z76PNp>K;)Ij54cjBJ44lO(F!8H+G4t2uGPr1m}4pdfte9{PP>pD3j^IDSf9KktZ-E brcc2QfkJLHmmlaQ00000NkvXXu0mjfB0`CR literal 0 HcmV?d00001 diff --git a/iconping/ping_6.png b/iconping/ping_6.png new file mode 100644 index 0000000000000000000000000000000000000000..40867372d0c334c16dc1b4457a507ce747da6ba6 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rheeoq(25R2ZoQ!es08}PWy*WPFB z7}>&`P$0H&QF4rZfr`*11;_ulCa>}M_OoPPzl6fRhI98BE8enCns%va=GVyAoM(0{ zX6QNa%G7I7h~@cm(bg*Y6WO^Osy6qpE-uFUDy&I%^z% zxW(p()T%x8H|*uh9#q|6oUrr4+k6$SyT{n~Bz%u#(~On|I*q~8)z4*}Q$iB}51UWd literal 0 HcmV?d00001 diff --git a/iconping/ping_6@2x.png b/iconping/ping_6@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bfd47ab1a085dc3833c0af309262c6527f788cf3 GIT binary patch literal 277 zcmV+w0qXvVP)VT!A^O%{ZFGz$aiHklnZn-O3%j8n_v0B5&WX|q{f zv!o&w*ip6nVA;%sU4k z0Rcsx<-7SS_!e;6*?SG}hIsrHjBF3j7`TEW4;wQ8uL(}TJtO5@Rq?Nv@WbQ&8(?z9 zRckc=2ubTkB7%wB6101q% z?cCd-d;>=y0F!6%wR>O^lc<9eaLLwUUVxLC^~9vUIe}0piW$7H7p6#HS}FYU!d@5y zZ1`U=C-AX?eeaA(kw3wiW$~Q->Uv>{8i1>U1Muk?d<`=rQ~4iE+^@mJzDg|2b~PeN zi$+vae3TR%5#2eprP=l$+Qq?)_|l5cw5;1HnZ2tbGB=s zXKW$RWHL3;s)3s(b5{}88d0+d0r|!*5k;7oaJ>dtm}F+`|BYe(1Wx8T5j`iO2cL*~ nO*@+=A_f^zPGCq3{|kNq4FS{oo*yZ%00000NkvXXu0mjfY159B literal 0 HcmV?d00001 diff --git a/iconping/ping_8.png b/iconping/ping_8.png new file mode 100644 index 0000000000000000000000000000000000000000..c2c64f2d1eff6998b9d62743ef43c020b82cd53c GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rhe$(}BbAr`%7r(EQ1Q4nyEf3|O> zgVavGEgx1N$&h^A{+L}(tEn?@lj6)+HDlo><{s%+i$8Pow94pyaPG3Xz_@tVD#*LZ#C<0${DCHdX=A|x@w)|@1!YLpD?F?06LGs)78&qol`;+ E0Gj(z7ytkO literal 0 HcmV?d00001 diff --git a/iconping/ping_8@2x.png b/iconping/ping_8@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cad5ce479e91ef1d4703b7b152e548e70b269185 GIT binary patch literal 311 zcmV-70m%M|P)x}|241~Wq(F%g*(*U9;v|It^2Tl}00CSfmyewH-IpcUXaYhzk478t-#Q_%8w;o*E zpnU>MAOVwm^4J`h!X)>>3fNV#>^op(W<4>bZcQLHlCmdH?1gC(n64!LdSWk(0XF;< zoD$ex!EQQZiq%)J=5q6_{pfmOnmqu=4o<+{J$Vc>qw4ZAOkR&*a$Qx$-c2A&QF39WUYe zg{Uxrastgs=H&1GjiGe~d?%vsMD+0!QLky|rG%&^FvNzxf&;)SwKwE6uzdgk002ov JPDHLkV1oSafBpaf literal 0 HcmV?d00001 diff --git a/iconping/ping_9.png b/iconping/ping_9.png new file mode 100644 index 0000000000000000000000000000000000000000..b0f3b067389980e01a902ce527cd78503ac40e11 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@RheDo+>35R2ZoQx0-A7>GE>A1zkj z(7nUaddK9BzK^yu;&hyTR$V@@e8T-Um3FoR6^x6|Nk+_-65gQTE_mX=vXi^69Cpo2 zaJY2HWVYPb0?rK&kL7(RxEjb&iCz} z#N@SmnkK$|D7m&2s6ev8;vi$iEcWh&t3-nTHG2MbH|PxKD%#i^?Bil|bGPWmhE)w~ z{JxvE^=cO=7AgKJR?Jd0(sR*sVK>xsY2cp79r%ZT-tnl7@75mdKI;Vst0I8a39{>OV literal 0 HcmV?d00001 diff --git a/iconping/ping_error.png b/iconping/ping_error.png new file mode 100644 index 0000000000000000000000000000000000000000..1ebd084dd5c44cfa6448b26cd84b6eaf0b207275 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rheeoq(25R2ZYQ%-X>7znt;AK5H> zqp9|Ylg<$%ozqe(VGCcU9?efOxF-`a>F|dc2Xc56Y8J$tXL}KEq_x0VSXAjyB?GsG z?CXyrryLqCB~QA1r_#$|)AaK@UmRcXQ#-)q3+ENBgiF-{3*}^czt3ACCp&BIq!Syr z-dd`1>+}(oPrA9hJqH-BEL>{J<@L`kEMSw^*&{n_f4i<&19TdLr>mdKI;Vst035YZ AQ~&?~ literal 0 HcmV?d00001 diff --git a/iconping/ping_error@2x.png b/iconping/ping_error@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e55442d4278bee8f5d7edc2e52d6f8f907849f0d GIT binary patch literal 269 zcmV+o0rLKdP);e=~@xR~&L^Fbn T*J%CC00000NkvXXu0mjfUAJa* literal 0 HcmV?d00001 diff --git a/iconping@2x.psd b/iconping@2x.psd new file mode 100644 index 0000000000000000000000000000000000000000..5ecb6e6fe6d96a6056193fa8b0b93814d1168b39 GIT binary patch literal 44960 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 literal 0 HcmV?d00001