Feature: Change app icon

This commit is contained in:
yicheng 2018-08-06 15:30:41 +08:00
parent 27b6242cca
commit 4abbc701f3
6 changed files with 74 additions and 29 deletions

View File

@ -23,6 +23,7 @@
495A44CD20D266BA00888A0A /* ClashXLaunchHelper.app in CopyFiles */ = {isa = PBXBuildFile; fileRef = 495A44BC20D2660A00888A0A /* ClashXLaunchHelper.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
495A44D320D267D000888A0A /* LaunchAtLogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 495A44D220D267D000888A0A /* LaunchAtLogin.swift */; };
4966E9E32118153A00A391FB /* NSUserNotificationCenter+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4966E9E22118153A00A391FB /* NSUserNotificationCenter+Extension.swift */; };
4966E9E6211824F300A391FB /* NSImage+extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4966E9E5211824F300A391FB /* NSImage+extension.swift */; };
497F0DF320DE2FE50077AD41 /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 497F0DF220DE2FE50077AD41 /* Icon.icns */; };
4989F98020D01C8F0001E564 /* clash.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4989F97E20D01C8F0001E564 /* clash.a */; };
4989F98420D02D200001E564 /* Country.mmdb in Resources */ = {isa = PBXBuildFile; fileRef = 4989F98320D02D200001E564 /* Country.mmdb */; };
@ -32,10 +33,6 @@
49CF3B2120CD7463001EBF94 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49CF3B2020CD7463001EBF94 /* AppDelegate.swift */; };
49CF3B2520CD7465001EBF94 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B2420CD7465001EBF94 /* Assets.xcassets */; };
49CF3B2820CD7465001EBF94 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B2620CD7465001EBF94 /* Main.storyboard */; };
49CF3B3F20CD7845001EBF94 /* menu_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B3B20CD7845001EBF94 /* menu_icon.png */; };
49CF3B4020CD7845001EBF94 /* menu_icon_disabled@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B3C20CD7845001EBF94 /* menu_icon_disabled@2x.png */; };
49CF3B4120CD7845001EBF94 /* menu_icon_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B3D20CD7845001EBF94 /* menu_icon_disabled.png */; };
49CF3B4220CD7845001EBF94 /* menu_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B3E20CD7845001EBF94 /* menu_icon@2x.png */; };
49CF3B5C20CE8068001EBF94 /* ProxyConfigManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49CF3B5B20CE8068001EBF94 /* ProxyConfigManager.swift */; };
49CF3B5F20CE80D2001EBF94 /* install_proxy_helper.sh in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B5E20CE80D2001EBF94 /* install_proxy_helper.sh */; };
49CF3B6320CED9CF001EBF94 /* check_proxy_helper.sh in Resources */ = {isa = PBXBuildFile; fileRef = 49CF3B6220CED934001EBF94 /* check_proxy_helper.sh */; };
@ -92,6 +89,7 @@
495A44C820D2660B00888A0A /* ClashXLaunchHelper.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ClashXLaunchHelper.entitlements; sourceTree = "<group>"; };
495A44D220D267D000888A0A /* LaunchAtLogin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchAtLogin.swift; sourceTree = "<group>"; };
4966E9E22118153A00A391FB /* NSUserNotificationCenter+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSUserNotificationCenter+Extension.swift"; sourceTree = "<group>"; };
4966E9E5211824F300A391FB /* NSImage+extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSImage+extension.swift"; sourceTree = "<group>"; };
497F0DF220DE2FE50077AD41 /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Icon.icns; sourceTree = "<group>"; };
4989F97E20D01C8F0001E564 /* clash.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = clash.a; sourceTree = "<group>"; };
4989F97F20D01C8F0001E564 /* clash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = clash.h; sourceTree = "<group>"; };
@ -107,10 +105,6 @@
49CF3B2920CD7465001EBF94 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
49CF3B2A20CD7465001EBF94 /* ClashX.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ClashX.entitlements; sourceTree = "<group>"; };
49CF3B3520CD75DF001EBF94 /* ClashX-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ClashX-Bridging-Header.h"; sourceTree = "<group>"; };
49CF3B3B20CD7845001EBF94 /* menu_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_icon.png; sourceTree = "<group>"; };
49CF3B3C20CD7845001EBF94 /* menu_icon_disabled@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_icon_disabled@2x.png"; sourceTree = "<group>"; };
49CF3B3D20CD7845001EBF94 /* menu_icon_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_icon_disabled.png; sourceTree = "<group>"; };
49CF3B3E20CD7845001EBF94 /* menu_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "menu_icon@2x.png"; sourceTree = "<group>"; };
49CF3B4B20CE5232001EBF94 /* ProxyConfig.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = ProxyConfig.xcodeproj; sourceTree = "<group>"; };
49CF3B5B20CE8068001EBF94 /* ProxyConfigManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyConfigManager.swift; sourceTree = "<group>"; };
49CF3B5E20CE80D2001EBF94 /* install_proxy_helper.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = install_proxy_helper.sh; sourceTree = "<group>"; };
@ -198,6 +192,7 @@
4997732420D251A60009B136 /* SWBApplication.h */,
495A44D220D267D000888A0A /* LaunchAtLogin.swift */,
4966E9E22118153A00A391FB /* NSUserNotificationCenter+Extension.swift */,
4966E9E5211824F300A391FB /* NSImage+extension.swift */,
);
path = Basic;
sourceTree = "<group>";
@ -251,11 +246,7 @@
children = (
4989F98D20D0AE990001E564 /* sampleConfig.ini */,
4989F98320D02D200001E564 /* Country.mmdb */,
49CF3B3D20CD7845001EBF94 /* menu_icon_disabled.png */,
49CF3B3C20CD7845001EBF94 /* menu_icon_disabled@2x.png */,
49CF3B3B20CD7845001EBF94 /* menu_icon.png */,
492C4864210EC9E4004554A0 /* ProxyConfig */,
49CF3B3E20CD7845001EBF94 /* menu_icon@2x.png */,
);
path = "Support Files";
sourceTree = "<group>";
@ -442,11 +433,7 @@
49CF3B2520CD7465001EBF94 /* Assets.xcassets in Resources */,
495340B020DE5F7200B0D3FF /* StatusItemView.xib in Resources */,
49CF3B2820CD7465001EBF94 /* Main.storyboard in Resources */,
49CF3B4220CD7845001EBF94 /* menu_icon@2x.png in Resources */,
49CF3B4120CD7845001EBF94 /* menu_icon_disabled.png in Resources */,
49CF3B5F20CE80D2001EBF94 /* install_proxy_helper.sh in Resources */,
49CF3B4020CD7845001EBF94 /* menu_icon_disabled@2x.png in Resources */,
49CF3B3F20CD7845001EBF94 /* menu_icon.png in Resources */,
4952C3CC2116E952004A4FA8 /* PreferencesWindowController.xib in Resources */,
4989F98420D02D200001E564 /* Country.mmdb in Resources */,
497F0DF320DE2FE50077AD41 /* Icon.icns in Resources */,
@ -549,6 +536,7 @@
49CF3B6520CEE06C001EBF94 /* ConfigManager.swift in Sources */,
4952C3BF2115C7CA004A4FA8 /* ProxyMenuItemFactory.swift in Sources */,
4966E9E32118153A00A391FB /* NSUserNotificationCenter+Extension.swift in Sources */,
4966E9E6211824F300A391FB /* NSImage+extension.swift in Sources */,
4952C3CE2116EA2E004A4FA8 /* ProxyServerModel.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;

View File

@ -80,9 +80,8 @@ class AppDelegate: NSObject, NSApplicationDelegate {
.bind{ [unowned self]
enable in
self.proxySettingMenuItem.state = (enable ?? false) ? .on : .off
let image = (enable ?? false) ?
NSImage(named: NSImage.Name(rawValue: "menu_icon"))! :
NSImage(named: NSImage.Name(rawValue: "menu_icon_disabled"))!
let image =
NSImage(named: NSImage.Name(rawValue: "menu_icon"))!.tint(color: enable! ? NSColor.black : NSColor.gray)
((self.statusItem.view) as! StatusItemView).imageView.image = image
}.disposed(by: disposeBag)

View File

@ -0,0 +1,24 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "menu_icon@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
},
"properties" : {
"template-rendering-intent" : "template"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 B

View File

@ -86,11 +86,24 @@
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Config" id="tck-zU-JKQ">
<items>
<menuItem title="Generate config" id="5Ab-VJ-iIm">
<menuItem title="Generate Config" id="a4G-S3-jxT">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="actionGenConfig:" target="Voe-Tx-rLC" id="SBd-vV-e1R"/>
</connections>
<menu key="submenu" title="Generate Config" id="IeJ-1Q-UaF">
<items>
<menuItem title="Generate config" id="5Ab-VJ-iIm">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="actionGenConfig:" target="Voe-Tx-rLC" id="SBd-vV-e1R"/>
</connections>
</menuItem>
<menuItem title="Import bunch json file" id="GRE-Ra-Pkx">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="actionImportBunchJsonFile:" target="Voe-Tx-rLC" id="wPl-iW-WvG"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Edit config Manually" id="DwE-WX-ETZ">
<modifierMask key="keyEquivalentModifierMask"/>
@ -104,12 +117,6 @@
<action selector="actionUpdateConfig:" target="Voe-Tx-rLC" id="oW5-Ll-SY8"/>
</connections>
</menuItem>
<menuItem title="Import bunch json file" id="GRE-Ra-Pkx">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="actionImportBunchJsonFile:" target="Voe-Tx-rLC" id="wPl-iW-WvG"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>

View File

@ -0,0 +1,27 @@
//
// NSImage+extension.swift
// ClashX
//
// Created by CYC on 2018/8/6.
// Copyright © 2018 west2online. All rights reserved.
//
import Foundation
import AppKit
extension NSImage {
func tint(color: NSColor) -> NSImage {
let image = self.copy() as! NSImage
image.lockFocus()
color.set()
let imageRect = NSRect(origin: NSZeroPoint, size: image.size)
imageRect.fill(using: .sourceAtop)
image.unlockFocus()
image.isTemplate = false
return image
}
}