Skip to content

Commit b736596

Browse files
authored
Merge pull request #10 from Onix-Systems/feature/first-release
Prepare for 0.1.0 release
2 parents 1faadb8 + 2c90bce commit b736596

19 files changed

+191
-165
lines changed

LICENSE

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
Copyright (c) 2017 Onix-Systems
2+
3+
Permission is hereby granted, free of charge, to any person obtaining a copy
4+
of this software and associated documentation files (the "Software"), to deal
5+
in the Software without restriction, including without limitation the rights
6+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7+
copies of the Software, and to permit persons to whom the Software is
8+
furnished to do so, subject to the following conditions:
9+
10+
The above copyright notice and this permission notice shall be included in
11+
all copies or substantial portions of the Software.
12+
13+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19+
THE SOFTWARE.

README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# status-bar-todo
2+
3+
Simple macOS app to keep TODO-list in status bar.
4+
5+
This app can do limited number of tasks:
6+
7+
1. Add TODO
8+
1. Mark/unmark TODO as completed
9+
1. Delete one or all TODOs
10+
1. Edit single todo
11+
12+
Here's how it look like:
13+
14+
<img width="487" alt="screen shot 2017-01-05 at 7 00 49 pm" src="https://cloud.githubusercontent.com/assets/1434418/21689532/52b0c1ba-d379-11e6-882a-b16d4f8fce00.png">
15+
16+
## Installation
17+
18+
Clone project and run it.
19+
20+
## LICENSE
21+
22+
status-bar-todo is released under the MIT license. See [LICENSE](LICENSE) for details.

todo-status-bar.xcodeproj/project.pbxproj renamed to status-bar-todo.xcodeproj/project.pbxproj

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@
1616
1E8FB7561E0BCD6400BF6D20 /* TodoItemsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E8FB7551E0BCD6400BF6D20 /* TodoItemsController.swift */; };
1717
1E8FB75D1E0BF88300BF6D20 /* AddTodoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E8FB75B1E0BF88300BF6D20 /* AddTodoViewController.swift */; };
1818
1E8FB75E1E0BF88300BF6D20 /* AddTodoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1E8FB75C1E0BF88300BF6D20 /* AddTodoViewController.xib */; };
19+
1EC8A5F21E1EAD5E003E401F /* CheckboxTableCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EC8A5F11E1EAD5D003E401F /* CheckboxTableCellView.swift */; };
20+
1EC8A5F41E1EAD75003E401F /* TodoItemTableCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EC8A5F31E1EAD75003E401F /* TodoItemTableCellView.swift */; };
1921
/* End PBXBuildFile section */
2022

2123
/* Begin PBXFileReference section */
22-
1E545FC41E0AD7E500D19810 /* todo-status-bar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "todo-status-bar.app"; sourceTree = BUILT_PRODUCTS_DIR; };
24+
1E545FC41E0AD7E500D19810 /* status-bar-todo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "status-bar-todo.app"; sourceTree = BUILT_PRODUCTS_DIR; };
2325
1E545FC71E0AD7E500D19810 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
2426
1E545FC91E0AD7E500D19810 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
2527
1E545FCC1E0AD7E500D19810 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
@@ -30,6 +32,8 @@
3032
1E8FB7551E0BCD6400BF6D20 /* TodoItemsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TodoItemsController.swift; sourceTree = "<group>"; };
3133
1E8FB75B1E0BF88300BF6D20 /* AddTodoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddTodoViewController.swift; sourceTree = "<group>"; };
3234
1E8FB75C1E0BF88300BF6D20 /* AddTodoViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AddTodoViewController.xib; sourceTree = "<group>"; };
35+
1EC8A5F11E1EAD5D003E401F /* CheckboxTableCellView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckboxTableCellView.swift; sourceTree = "<group>"; };
36+
1EC8A5F31E1EAD75003E401F /* TodoItemTableCellView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TodoItemTableCellView.swift; sourceTree = "<group>"; };
3337
/* End PBXFileReference section */
3438

3539
/* Begin PBXFrameworksBuildPhase section */
@@ -54,7 +58,7 @@
5458
1E545FC51E0AD7E500D19810 /* Products */ = {
5559
isa = PBXGroup;
5660
children = (
57-
1E545FC41E0AD7E500D19810 /* todo-status-bar.app */,
61+
1E545FC41E0AD7E500D19810 /* status-bar-todo.app */,
5862
);
5963
name = Products;
6064
sourceTree = "<group>";
@@ -67,21 +71,24 @@
6771
1E8FB7551E0BCD6400BF6D20 /* TodoItemsController.swift */,
6872
1E8FB75B1E0BF88300BF6D20 /* AddTodoViewController.swift */,
6973
1E8FB75C1E0BF88300BF6D20 /* AddTodoViewController.xib */,
70-
1E545FD41E0AE62400D19810 /* EditTodosWindowController.swift */,
7174
1E545FD51E0AE62400D19810 /* EditTodosWindowController.xib */,
75+
1E545FD41E0AE62400D19810 /* EditTodosWindowController.swift */,
76+
1EC8A5F11E1EAD5D003E401F /* CheckboxTableCellView.swift */,
77+
1EC8A5F31E1EAD75003E401F /* TodoItemTableCellView.swift */,
7278
1E545FC91E0AD7E500D19810 /* Assets.xcassets */,
7379
1E545FCB1E0AD7E500D19810 /* MainMenu.xib */,
7480
1E545FCE1E0AD7E500D19810 /* Info.plist */,
7581
);
76-
path = "todo-status-bar";
82+
name = "todo-status-bar";
83+
path = "status-bar-todo";
7784
sourceTree = "<group>";
7885
};
7986
/* End PBXGroup section */
8087

8188
/* Begin PBXNativeTarget section */
82-
1E545FC31E0AD7E500D19810 /* todo-status-bar */ = {
89+
1E545FC31E0AD7E500D19810 /* status-bar-todo */ = {
8390
isa = PBXNativeTarget;
84-
buildConfigurationList = 1E545FD11E0AD7E500D19810 /* Build configuration list for PBXNativeTarget "todo-status-bar" */;
91+
buildConfigurationList = 1E545FD11E0AD7E500D19810 /* Build configuration list for PBXNativeTarget "status-bar-todo" */;
8592
buildPhases = (
8693
1E545FC01E0AD7E500D19810 /* Sources */,
8794
1E545FC11E0AD7E500D19810 /* Frameworks */,
@@ -91,9 +98,9 @@
9198
);
9299
dependencies = (
93100
);
94-
name = "todo-status-bar";
101+
name = "status-bar-todo";
95102
productName = "todo-status-bar";
96-
productReference = 1E545FC41E0AD7E500D19810 /* todo-status-bar.app */;
103+
productReference = 1E545FC41E0AD7E500D19810 /* status-bar-todo.app */;
97104
productType = "com.apple.product-type.application";
98105
};
99106
/* End PBXNativeTarget section */
@@ -113,7 +120,7 @@
113120
};
114121
};
115122
};
116-
buildConfigurationList = 1E545FBF1E0AD7E500D19810 /* Build configuration list for PBXProject "todo-status-bar" */;
123+
buildConfigurationList = 1E545FBF1E0AD7E500D19810 /* Build configuration list for PBXProject "status-bar-todo" */;
117124
compatibilityVersion = "Xcode 3.2";
118125
developmentRegion = English;
119126
hasScannedForEncodings = 0;
@@ -126,7 +133,7 @@
126133
projectDirPath = "";
127134
projectRoot = "";
128135
targets = (
129-
1E545FC31E0AD7E500D19810 /* todo-status-bar */,
136+
1E545FC31E0AD7E500D19810 /* status-bar-todo */,
130137
);
131138
};
132139
/* End PBXProject section */
@@ -152,6 +159,8 @@
152159
files = (
153160
1E8FB7561E0BCD6400BF6D20 /* TodoItemsController.swift in Sources */,
154161
1E545FC81E0AD7E500D19810 /* AppDelegate.swift in Sources */,
162+
1EC8A5F21E1EAD5E003E401F /* CheckboxTableCellView.swift in Sources */,
163+
1EC8A5F41E1EAD75003E401F /* TodoItemTableCellView.swift in Sources */,
155164
1E8FB7541E0BCD5200BF6D20 /* TodoItem.swift in Sources */,
156165
1E8FB75D1E0BF88300BF6D20 /* AddTodoViewController.swift in Sources */,
157166
1E545FD61E0AE62400D19810 /* EditTodosWindowController.swift in Sources */,
@@ -268,9 +277,9 @@
268277
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
269278
COMBINE_HIDPI_IMAGES = YES;
270279
DEVELOPMENT_TEAM = GJX986XEH7;
271-
INFOPLIST_FILE = "todo-status-bar/Info.plist";
280+
INFOPLIST_FILE = "$(TARGET_NAME)/Info.plist";
272281
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
273-
PRODUCT_BUNDLE_IDENTIFIER = "com.onix-systems.todo-status-bar";
282+
PRODUCT_BUNDLE_IDENTIFIER = "com.onix-systems.status-bar-todo";
274283
PRODUCT_NAME = "$(TARGET_NAME)";
275284
SWIFT_VERSION = 3.0;
276285
};
@@ -282,9 +291,9 @@
282291
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
283292
COMBINE_HIDPI_IMAGES = YES;
284293
DEVELOPMENT_TEAM = GJX986XEH7;
285-
INFOPLIST_FILE = "todo-status-bar/Info.plist";
294+
INFOPLIST_FILE = "$(TARGET_NAME)/Info.plist";
286295
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
287-
PRODUCT_BUNDLE_IDENTIFIER = "com.onix-systems.todo-status-bar";
296+
PRODUCT_BUNDLE_IDENTIFIER = "com.onix-systems.status-bar-todo";
288297
PRODUCT_NAME = "$(TARGET_NAME)";
289298
SWIFT_VERSION = 3.0;
290299
};
@@ -293,7 +302,7 @@
293302
/* End XCBuildConfiguration section */
294303

295304
/* Begin XCConfigurationList section */
296-
1E545FBF1E0AD7E500D19810 /* Build configuration list for PBXProject "todo-status-bar" */ = {
305+
1E545FBF1E0AD7E500D19810 /* Build configuration list for PBXProject "status-bar-todo" */ = {
297306
isa = XCConfigurationList;
298307
buildConfigurations = (
299308
1E545FCF1E0AD7E500D19810 /* Debug */,
@@ -302,7 +311,7 @@
302311
defaultConfigurationIsVisible = 0;
303312
defaultConfigurationName = Release;
304313
};
305-
1E545FD11E0AD7E500D19810 /* Build configuration list for PBXNativeTarget "todo-status-bar" */ = {
314+
1E545FD11E0AD7E500D19810 /* Build configuration list for PBXNativeTarget "status-bar-todo" */ = {
306315
isa = XCConfigurationList;
307316
buildConfigurations = (
308317
1E545FD21E0AD7E500D19810 /* Debug */,

todo-status-bar.xcodeproj/project.xcworkspace/contents.xcworkspacedata renamed to status-bar-todo.xcodeproj/project.xcworkspace/contents.xcworkspacedata

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

todo-status-bar/AddTodoViewController.swift renamed to status-bar-todo/AddTodoViewController.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22
// AddTodoViewController.swift
33
// todo-status-bar
44
//
5-
// Created by derp on 12/22/16.
5+
// Created by Stanislav Derpoliuk on 12/22/16.
66
// Copyright © 2016 Onix-Systems. All rights reserved.
77
//
88

99
import Cocoa
1010

1111
protocol AddTodoViewControllerDelegate: class {
1212
func addTodoViewController(_ controller: AddTodoViewController, didAddTodoWith title: String)
13+
func addTodoViewControllerDidCancel(_ controller: AddTodoViewController)
1314
}
1415

1516
class AddTodoViewController: NSViewController, NSControlTextEditingDelegate {
@@ -21,5 +22,9 @@ class AddTodoViewController: NSViewController, NSControlTextEditingDelegate {
2122
delegate?.addTodoViewController(self, didAddTodoWith: string)
2223
return true
2324
}
25+
26+
override func cancelOperation(_ sender: Any?) {
27+
delegate?.addTodoViewControllerDidCancel(self)
28+
}
2429

2530
}

todo-status-bar/AppDelegate.swift renamed to status-bar-todo/AppDelegate.swift

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// AppDelegate.swift
33
// todo-status-bar
44
//
5-
// Created by derp on 12/21/16.
5+
// Created by Stanislav Derpoliuk on 12/21/16.
66
// Copyright © 2016 Onix-Systems. All rights reserved.
77
//
88

@@ -21,10 +21,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, EditTodosWindowControllerDel
2121
updateStatusItem()
2222
}
2323

24-
func applicationWillTerminate(_ aNotification: Notification) {
25-
// Insert code here to tear down your application
26-
}
27-
2824
// MARK: - Validate Menu Item
2925

3026
override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
@@ -65,6 +61,14 @@ class AppDelegate: NSObject, NSApplicationDelegate, EditTodosWindowControllerDel
6561
todoItems.forEach { todoItem in
6662
let todo = NSMenuItem(title: todoItem.title, action: #selector(menuTodoItemPressed(_:)), keyEquivalent: "")
6763
todo.representedObject = todoItem
64+
if todoItem.completed {
65+
let attributes = [
66+
NSStrikethroughStyleAttributeName: NSNumber(value: NSUnderlineStyle.styleSingle.rawValue),
67+
NSFontAttributeName: NSFont.menuBarFont(ofSize: 0)
68+
]
69+
let attributedString = NSAttributedString(string: todoItem.title, attributes: attributes)
70+
todo.attributedTitle = attributedString
71+
}
6872
items.append(todo)
6973
}
7074
return items
@@ -83,6 +87,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, EditTodosWindowControllerDel
8387
@objc private func menuTodoItemPressed(_ sender: NSMenuItem) {
8488
guard let todoItem = sender.representedObject as? TodoItem else { return }
8589
todoItem.completed = !todoItem.completed
90+
updateStatusItem()
8691
}
8792

8893
@objc private func menuEditItemPressed(_ sender: NSMenuItem) {

todo-status-bar/Base.lproj/MainMenu.xib renamed to status-bar-todo/Base.lproj/MainMenu.xib

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11762" systemVersion="16C67" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
33
<dependencies>
4-
<deployment identifier="macosx"/>
54
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11762"/>
65
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
76
</dependencies>
@@ -21,11 +20,11 @@
2120
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
2221
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
2322
<items>
24-
<menuItem title="todo-status-bar" id="1Xt-HY-uBw">
23+
<menuItem title="status-bar-todo" id="1Xt-HY-uBw">
2524
<modifierMask key="keyEquivalentModifierMask"/>
26-
<menu key="submenu" title="todo-status-bar" systemMenu="apple" id="uQy-DD-JDr">
25+
<menu key="submenu" title="status-bar-todo" systemMenu="apple" id="uQy-DD-JDr">
2726
<items>
28-
<menuItem title="About todo-status-bar" id="5kV-Vb-QxS">
27+
<menuItem title="About status-bar-todo" id="5kV-Vb-QxS">
2928
<modifierMask key="keyEquivalentModifierMask"/>
3029
<connections>
3130
<action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
@@ -39,7 +38,7 @@
3938
<menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
4039
</menuItem>
4140
<menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
42-
<menuItem title="Hide todo-status-bar" keyEquivalent="h" id="Olw-nP-bQN">
41+
<menuItem title="Hide status-bar-todo" keyEquivalent="h" id="Olw-nP-bQN">
4342
<connections>
4443
<action selector="hide:" target="-1" id="PnN-Uc-m68"/>
4544
</connections>
@@ -57,7 +56,7 @@
5756
</connections>
5857
</menuItem>
5958
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
60-
<menuItem title="Quit todo-status-bar" keyEquivalent="q" id="4sb-4s-VLi">
59+
<menuItem title="Quit status-bar-todo" keyEquivalent="q" id="4sb-4s-VLi">
6160
<connections>
6261
<action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
6362
</connections>
@@ -670,7 +669,7 @@
670669
<modifierMask key="keyEquivalentModifierMask"/>
671670
<menu key="submenu" title="Help" systemMenu="help" id="F2S-fz-NVQ">
672671
<items>
673-
<menuItem title="todo-status-bar Help" keyEquivalent="?" id="FKE-Sm-Kum">
672+
<menuItem title="status-bar-todo Help" keyEquivalent="?" id="FKE-Sm-Kum">
674673
<connections>
675674
<action selector="showHelp:" target="-1" id="y7X-2Q-9no"/>
676675
</connections>
@@ -680,7 +679,7 @@
680679
</menuItem>
681680
</items>
682681
</menu>
683-
<window title="todo-status-bar" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="QvC-M9-y7g">
682+
<window title="status-bar-todo" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="QvC-M9-y7g">
684683
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
685684
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
686685
<rect key="contentRect" x="335" y="390" width="480" height="360"/>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//
2+
// CheckboxTableCellView.swift
3+
// todo-status-bar
4+
//
5+
// Created by Stanislav Derpoliuk on 1/5/17.
6+
// Copyright © 2017 Onix-Systems. All rights reserved.
7+
//
8+
9+
import Cocoa
10+
11+
final class CheckboxTableCellView: NSTableCellView {
12+
13+
@IBOutlet var checkboxButton: NSButton!
14+
15+
}

0 commit comments

Comments
 (0)