Support open at login.
authorMiltiadis Vasilakis <mvasilak@gmail.com>
Mon, 9 Apr 2012 14:44:11 +0000 (17:44 +0300)
committerMiltiadis Vasilakis <mvasilak@gmail.com>
Mon, 9 Apr 2012 15:09:49 +0000 (18:09 +0300)
pithos-macos/en.lproj/MainMenu.xib
pithos-macos/pithos_macosAppDelegate.h
pithos-macos/pithos_macosAppDelegate.m

index adaf857..b221913 100644 (file)
@@ -12,7 +12,6 @@
                </object>
                <object class="NSArray" key="IBDocument.IntegratedClassDependencies">
                        <bool key="EncodedWithXMLCoder">YES</bool>
-                       <string>NSUserDefaultsController</string>
                        <string>NSMenu</string>
                        <string>NSMenuItem</string>
                        <string>NSCustomObject</string>
                                                <reference key="NSOnImage" ref="35465992"/>
                                                <reference key="NSMixedImage" ref="502551668"/>
                                        </object>
+                                       <object class="NSMenuItem" id="1049694472">
+                                               <reference key="NSMenu" ref="143458898"/>
+                                               <string key="NSTitle">Open at Login</string>
+                                               <string key="NSKeyEquiv"/>
+                                               <int key="NSMnemonicLoc">2147483647</int>
+                                               <reference key="NSOnImage" ref="35465992"/>
+                                               <reference key="NSMixedImage" ref="502551668"/>
+                                       </object>
+                                       <object class="NSMenuItem" id="303818157">
+                                               <reference key="NSMenu" ref="143458898"/>
+                                               <bool key="NSIsDisabled">YES</bool>
+                                               <bool key="NSIsSeparator">YES</bool>
+                                               <string key="NSTitle"/>
+                                               <string key="NSKeyEquiv"/>
+                                               <int key="NSMnemonicLoc">2147483647</int>
+                                               <reference key="NSOnImage" ref="35465992"/>
+                                               <reference key="NSMixedImage" ref="502551668"/>
+                                       </object>
                                        <object class="NSMenuItem" id="1057169541">
                                                <reference key="NSMenu" ref="143458898"/>
                                                <string key="NSTitle">About Pithos+</string>
                                        </object>
                                </object>
                        </object>
-                       <object class="NSUserDefaultsController" id="796122129">
-                               <bool key="NSSharedInstance">YES</bool>
-                       </object>
                </object>
                <object class="IBObjectContainer" key="IBDocument.Objects">
                        <object class="NSMutableArray" key="connectionRecords">
                                        </object>
                                        <int key="connectionID">599</int>
                                </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: delegate.openAtLogin</string>
+                                               <reference key="source" ref="1049694472"/>
+                                               <reference key="destination" ref="1050"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="1049694472"/>
+                                                       <reference key="NSDestination" ref="1050"/>
+                                                       <string key="NSLabel">value: delegate.openAtLogin</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">delegate.openAtLogin</string>
+                                                       <object class="NSDictionary" key="NSOptions">
+                                                               <bool key="EncodedWithXMLCoder">YES</bool>
+                                                               <object class="NSArray" key="dict.sortedKeys">
+                                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                       <string>NSAllowsEditingMultipleValuesSelection</string>
+                                                                       <string>NSValidatesImmediately</string>
+                                                               </object>
+                                                               <object class="NSArray" key="dict.values">
+                                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                       <boolean value="NO"/>
+                                                                       <boolean value="YES"/>
+                                                               </object>
+                                                       </object>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">618</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">enabled: delegate.openAtLoginEnabled</string>
+                                               <reference key="source" ref="1049694472"/>
+                                               <reference key="destination" ref="1050"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="1049694472"/>
+                                                       <reference key="NSDestination" ref="1050"/>
+                                                       <string key="NSLabel">enabled: delegate.openAtLoginEnabled</string>
+                                                       <string key="NSBinding">enabled</string>
+                                                       <string key="NSKeyPath">delegate.openAtLoginEnabled</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">619</int>
+                               </object>
                        </object>
                        <object class="IBMutableOrderedSet" key="objectRecords">
                                <object class="NSArray" key="orderedObjects">
                                                        <reference ref="483648450"/>
                                                        <reference ref="153366749"/>
                                                        <reference ref="105568913"/>
+                                                       <reference ref="303818157"/>
+                                                       <reference ref="1049694472"/>
                                                </object>
                                                <reference key="parent" ref="0"/>
                                        </object>
                                                <reference key="parent" ref="143458898"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">576</int>
-                                               <reference key="object" ref="796122129"/>
-                                               <reference key="parent" ref="0"/>
-                                       </object>
-                                       <object class="IBObjectRecord">
                                                <int key="objectID">591</int>
                                                <reference key="object" ref="483648450"/>
                                                <object class="NSMutableArray" key="children">
                                                <reference key="object" ref="105568913"/>
                                                <reference key="parent" ref="143458898"/>
                                        </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">606</int>
+                                               <reference key="object" ref="303818157"/>
+                                               <reference key="parent" ref="143458898"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">607</int>
+                                               <reference key="object" ref="1049694472"/>
+                                               <reference key="parent" ref="143458898"/>
+                                               <string key="objectName">Menu Item - Open at Login</string>
+                                       </object>
                                </object>
                        </object>
                        <object class="NSMutableDictionary" key="flattenedProperties">
                                        <string>545.IBPluginDependency</string>
                                        <string>56.IBPluginDependency</string>
                                        <string>57.IBPluginDependency</string>
-                                       <string>576.IBPluginDependency</string>
                                        <string>58.IBPluginDependency</string>
                                        <string>591.IBPluginDependency</string>
                                        <string>592.IBAttributePlaceholdersKey</string>
                                        <string>598.IBAttributePlaceholdersKey</string>
                                        <string>598.IBPluginDependency</string>
                                        <string>603.IBPluginDependency</string>
+                                       <string>606.IBPluginDependency</string>
+                                       <string>607.IBPluginDependency</string>
                                        <string>72.IBPluginDependency</string>
                                        <string>73.IBPluginDependency</string>
                                        <string>74.IBPluginDependency</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <object class="NSMutableDictionary">
                                                <bool key="EncodedWithXMLCoder">YES</bool>
                                                <reference key="dict.sortedKeys" ref="0"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                </object>
                        </object>
                        <object class="NSMutableDictionary" key="unlocalizedProperties">
                                <reference key="dict.values" ref="0"/>
                        </object>
                        <nil key="sourceID"/>
-                       <int key="maxID">604</int>
-               </object>
-               <object class="IBClassDescriber" key="IBDocument.Classes">
-                       <object class="NSMutableArray" key="referencedPartialClassDescriptions">
-                               <bool key="EncodedWithXMLCoder">YES</bool>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">PithosBrowserController</string>
-                                       <string key="superclassName">NSWindowController</string>
-                                       <object class="NSMutableDictionary" key="actions">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>forceRefresh:</string>
-                                                       <string>refresh:</string>
-                                               </object>
-                                               <object class="NSArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>id</string>
-                                                       <string>id</string>
-                                               </object>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="actionInfosByName">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>forceRefresh:</string>
-                                                       <string>refresh:</string>
-                                               </object>
-                                               <object class="NSArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <object class="IBActionInfo">
-                                                               <string key="name">forceRefresh:</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                                       <object class="IBActionInfo">
-                                                               <string key="name">refresh:</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                               </object>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="outlets">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>activityProgressIndicator</string>
-                                                       <string>activityTextField</string>
-                                                       <string>browser</string>
-                                                       <string>browserMenu</string>
-                                                       <string>horizontalSplitView</string>
-                                                       <string>leftBottomView</string>
-                                                       <string>leftTopView</string>
-                                                       <string>outlineView</string>
-                                                       <string>outlineViewMenu</string>
-                                                       <string>verticalSplitView</string>
-                                               </object>
-                                               <object class="NSArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>NSProgressIndicator</string>
-                                                       <string>NSTextField</string>
-                                                       <string>NSBrowser</string>
-                                                       <string>NSMenu</string>
-                                                       <string>NSSplitView</string>
-                                                       <string>NSView</string>
-                                                       <string>NSView</string>
-                                                       <string>NSOutlineView</string>
-                                                       <string>NSMenu</string>
-                                                       <string>NSSplitView</string>
-                                               </object>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="toOneOutletInfosByName">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>activityProgressIndicator</string>
-                                                       <string>activityTextField</string>
-                                                       <string>browser</string>
-                                                       <string>browserMenu</string>
-                                                       <string>horizontalSplitView</string>
-                                                       <string>leftBottomView</string>
-                                                       <string>leftTopView</string>
-                                                       <string>outlineView</string>
-                                                       <string>outlineViewMenu</string>
-                                                       <string>verticalSplitView</string>
-                                               </object>
-                                               <object class="NSArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">activityProgressIndicator</string>
-                                                               <string key="candidateClassName">NSProgressIndicator</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">activityTextField</string>
-                                                               <string key="candidateClassName">NSTextField</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">browser</string>
-                                                               <string key="candidateClassName">NSBrowser</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">browserMenu</string>
-                                                               <string key="candidateClassName">NSMenu</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">horizontalSplitView</string>
-                                                               <string key="candidateClassName">NSSplitView</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">leftBottomView</string>
-                                                               <string key="candidateClassName">NSView</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">leftTopView</string>
-                                                               <string key="candidateClassName">NSView</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">outlineView</string>
-                                                               <string key="candidateClassName">NSOutlineView</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">outlineViewMenu</string>
-                                                               <string key="candidateClassName">NSMenu</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">verticalSplitView</string>
-                                                               <string key="candidateClassName">NSSplitView</string>
-                                                       </object>
-                                               </object>
-                                       </object>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">./Classes/PithosBrowserController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">PithosPreferencesController</string>
-                                       <string key="superclassName">NSWindowController</string>
-                                       <object class="NSMutableDictionary" key="actions">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>addAccount:</string>
-                                                       <string>groupsApply:</string>
-                                                       <string>groupsRevert:</string>
-                                                       <string>login:</string>
-                                                       <string>loginCancel:</string>
-                                                       <string>removeAccount:</string>
-                                                       <string>syncApply:</string>
-                                                       <string>syncCancel:</string>
-                                               </object>
-                                               <object class="NSArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>id</string>
-                                                       <string>id</string>
-                                                       <string>id</string>
-                                                       <string>id</string>
-                                                       <string>id</string>
-                                                       <string>id</string>
-                                                       <string>id</string>
-                                                       <string>id</string>
-                                               </object>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="actionInfosByName">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>addAccount:</string>
-                                                       <string>groupsApply:</string>
-                                                       <string>groupsRevert:</string>
-                                                       <string>login:</string>
-                                                       <string>loginCancel:</string>
-                                                       <string>removeAccount:</string>
-                                                       <string>syncApply:</string>
-                                                       <string>syncCancel:</string>
-                                               </object>
-                                               <object class="NSArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <object class="IBActionInfo">
-                                                               <string key="name">addAccount:</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                                       <object class="IBActionInfo">
-                                                               <string key="name">groupsApply:</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                                       <object class="IBActionInfo">
-                                                               <string key="name">groupsRevert:</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                                       <object class="IBActionInfo">
-                                                               <string key="name">login:</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                                       <object class="IBActionInfo">
-                                                               <string key="name">loginCancel:</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                                       <object class="IBActionInfo">
-                                                               <string key="name">removeAccount:</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                                       <object class="IBActionInfo">
-                                                               <string key="name">syncApply:</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                                       <object class="IBActionInfo">
-                                                               <string key="name">syncCancel:</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                               </object>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="outlets">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>accountsArrayController</string>
-                                                       <string>groupsDictionaryController</string>
-                                                       <string>selectedGroupMembersDictionaryController</string>
-                                               </object>
-                                               <object class="NSArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>NSArrayController</string>
-                                                       <string>NSDictionaryController</string>
-                                                       <string>NSDictionaryController</string>
-                                               </object>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="toOneOutletInfosByName">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>accountsArrayController</string>
-                                                       <string>groupsDictionaryController</string>
-                                                       <string>selectedGroupMembersDictionaryController</string>
-                                               </object>
-                                               <object class="NSArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">accountsArrayController</string>
-                                                               <string key="candidateClassName">NSArrayController</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">groupsDictionaryController</string>
-                                                               <string key="candidateClassName">NSDictionaryController</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">selectedGroupMembersDictionaryController</string>
-                                                               <string key="candidateClassName">NSDictionaryController</string>
-                                                       </object>
-                                               </object>
-                                       </object>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">./Classes/PithosPreferencesController.h</string>
-                                       </object>
-                               </object>
-                               <object class="IBPartialClassDescription">
-                                       <string key="className">pithos_macosAppDelegate</string>
-                                       <string key="superclassName">NSObject</string>
-                                       <object class="NSMutableDictionary" key="actions">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>showPithosAbout:</string>
-                                                       <string>showPithosBrowser:</string>
-                                                       <string>showPithosPreferences:</string>
-                                               </object>
-                                               <object class="NSArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>id</string>
-                                                       <string>id</string>
-                                                       <string>id</string>
-                                               </object>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="actionInfosByName">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>showPithosAbout:</string>
-                                                       <string>showPithosBrowser:</string>
-                                                       <string>showPithosPreferences:</string>
-                                               </object>
-                                               <object class="NSArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <object class="IBActionInfo">
-                                                               <string key="name">showPithosAbout:</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                                       <object class="IBActionInfo">
-                                                               <string key="name">showPithosBrowser:</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                                       <object class="IBActionInfo">
-                                                               <string key="name">showPithosPreferences:</string>
-                                                               <string key="candidateClassName">id</string>
-                                                       </object>
-                                               </object>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="outlets">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>accountsMenu</string>
-                                                       <string>lastSyncMenu</string>
-                                                       <string>pithosBrowserController</string>
-                                                       <string>pithosPreferencesController</string>
-                                                       <string>statusMenu</string>
-                                               </object>
-                                               <object class="NSArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>NSMenu</string>
-                                                       <string>NSMenu</string>
-                                                       <string>PithosBrowserController</string>
-                                                       <string>PithosPreferencesController</string>
-                                                       <string>NSMenu</string>
-                                               </object>
-                                       </object>
-                                       <object class="NSMutableDictionary" key="toOneOutletInfosByName">
-                                               <bool key="EncodedWithXMLCoder">YES</bool>
-                                               <object class="NSArray" key="dict.sortedKeys">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>accountsMenu</string>
-                                                       <string>lastSyncMenu</string>
-                                                       <string>pithosBrowserController</string>
-                                                       <string>pithosPreferencesController</string>
-                                                       <string>statusMenu</string>
-                                               </object>
-                                               <object class="NSArray" key="dict.values">
-                                                       <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">accountsMenu</string>
-                                                               <string key="candidateClassName">NSMenu</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">lastSyncMenu</string>
-                                                               <string key="candidateClassName">NSMenu</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">pithosBrowserController</string>
-                                                               <string key="candidateClassName">PithosBrowserController</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">pithosPreferencesController</string>
-                                                               <string key="candidateClassName">PithosPreferencesController</string>
-                                                       </object>
-                                                       <object class="IBToOneOutletInfo">
-                                                               <string key="name">statusMenu</string>
-                                                               <string key="candidateClassName">NSMenu</string>
-                                                       </object>
-                                               </object>
-                                       </object>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
-                                               <string key="majorKey">IBProjectSource</string>
-                                               <string key="minorKey">./Classes/pithos_macosAppDelegate.h</string>
-                                       </object>
-                               </object>
-                       </object>
+                       <int key="maxID">619</int>
                </object>
+               <object class="IBClassDescriber" key="IBDocument.Classes"/>
                <int key="IBDocument.localizationMode">0</int>
                <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
                <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
index 3c7e2cd..9798748 100644 (file)
     IBOutlet NSMenu *lastSyncMenu;
     NSStatusItem *statusItem;
     
+    LSSharedFileListRef loginItems;
+    BOOL openAtLoginEnabled;
+    BOOL openAtLogin;
+    
     NSUserDefaults *userDefaults;
     
     BOOL activated;
@@ -68,6 +72,8 @@
 @property (nonatomic, readonly) PithosBrowserController *pithosBrowserController;
 @property (nonatomic, readonly) PithosPreferencesController *pithosPreferencesController;
 @property (nonatomic, assign) BOOL alwaysNo;
+@property (nonatomic, assign) BOOL openAtLoginEnabled;
+@property (nonatomic, assign) BOOL openAtLogin;
 @property (nonatomic, assign) BOOL activated;
 @property (nonatomic, retain) PithosAccount *currentPithosAccount;
 @property (nonatomic, retain) NSMutableArray *pithosAccounts;
index f0e78e5..a03fd36 100644 (file)
@@ -46,7 +46,7 @@
 #import "LastCompletedSyncTransformer.h"
 
 @implementation pithos_macosAppDelegate
-@synthesize pithosBrowserController, pithosPreferencesController, alwaysNo, activated, 
+@synthesize pithosBrowserController, pithosPreferencesController, alwaysNo, openAtLoginEnabled, openAtLogin, activated, 
 currentPithosAccount, pithosAccounts, pithosAccountsDictionary, syncPithosAccount, activityFacilityTimeInterval;
 
 - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
@@ -55,6 +55,15 @@ currentPithosAccount, pithosAccounts, pithosAccountsDictionary, syncPithosAccoun
                                                      forEventClass:kInternetEventClass 
                                                         andEventID:kAEGetURL];
     
+    // Based on: https://github.com/Mozketo/LaunchAtLoginController
+    // and: http://cocoatutorial.grapewave.com/2010/02/creating-andor-removing-a-login-item/
+    loginItems = LSSharedFileListCreate(NULL, kLSSharedFileListSessionLoginItems, NULL);
+    if (loginItems) {
+        LSSharedFileListAddObserver(loginItems, CFRunLoopGetMain(), (CFStringRef)NSDefaultRunLoopMode, LSSharedFileListChanged, self);
+        LSSharedFileListChanged(loginItems, self);
+        self.openAtLoginEnabled = YES;
+    }
+    
     userDefaults = [[NSUserDefaults standardUserDefaults] retain];
     
     syncTimeInterval = [userDefaults doubleForKey:@"syncTimeInterval"];
@@ -202,10 +211,46 @@ currentPithosAccount, pithosAccounts, pithosAccountsDictionary, syncPithosAccoun
         if (choice == NSAlertSecondButtonReturn) 
             return NSTerminateCancel;
     }
+    if (loginItems) {
+        LSSharedFileListRemoveObserver(loginItems, CFRunLoopGetMain(), (CFStringRef)NSDefaultRunLoopMode, LSSharedFileListChanged, self);
+        CFRelease(loginItems);
+    }
     return NSTerminateNow;
 }
 
 #pragma mark -
+#pragma mark Callbacks
+
+- (void)loginItemsChanged {
+    NSURL *appURL = [[NSBundle mainBundle] bundleURL];
+    LSSharedFileListItemRef appItem = NULL;
+    NSArray *snapshot = [NSMakeCollectable(LSSharedFileListCopySnapshot(loginItems, NULL)) autorelease];
+    for (id itemObject in snapshot) {
+        LSSharedFileListItemRef item = (LSSharedFileListItemRef)itemObject;
+        UInt32 resolutionFlags = kLSSharedFileListNoUserInteraction | kLSSharedFileListDoNotMountVolumes;
+        CFURLRef currentItemURL = NULL;
+        LSSharedFileListItemResolve(item, resolutionFlags, &currentItemURL, NULL);
+        if (currentItemURL && CFEqual(currentItemURL, appURL)) {
+            CFRelease(currentItemURL);
+            appItem = item;
+            break;
+        }
+        if (currentItemURL)
+            CFRelease(currentItemURL);
+    }
+    
+    if (appItem && (!openAtLogin || !openAtLoginEnabled))
+        self.openAtLogin = YES;
+    else if (!appItem && (openAtLogin || !openAtLoginEnabled))
+        self.openAtLogin = NO;
+}
+
+void LSSharedFileListChanged(LSSharedFileListRef inList, void *context) {
+    pithos_macosAppDelegate *self = (id)context;
+    [self loginItemsChanged];
+}
+
+#pragma mark -
 #pragma mark Properties
 
 - (PithosBrowserController *)pithosBrowserController {
@@ -222,6 +267,39 @@ currentPithosAccount, pithosAccounts, pithosAccountsDictionary, syncPithosAccoun
     return pithosPreferencesController;
 }
 
+- (void)setOpenAtLogin:(BOOL)anOpenAtLogin {
+    if (!openAtLoginEnabled) {
+        openAtLogin = anOpenAtLogin;
+    } else if (anOpenAtLogin != openAtLogin) {
+        NSURL *appURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
+        LSSharedFileListItemRef appItem = NULL;
+        NSArray *snapshot = [NSMakeCollectable(LSSharedFileListCopySnapshot(loginItems, NULL)) autorelease];
+        for (id itemObject in snapshot) {
+            LSSharedFileListItemRef item = (LSSharedFileListItemRef)itemObject;
+            UInt32 resolutionFlags = kLSSharedFileListNoUserInteraction | kLSSharedFileListDoNotMountVolumes;
+            CFURLRef currentItemURL = NULL;
+            LSSharedFileListItemResolve(item, resolutionFlags, &currentItemURL, NULL);
+            if (currentItemURL && CFEqual(currentItemURL, appURL)) {
+                CFRelease(currentItemURL);
+                appItem = item;
+                break;
+            }
+            if (currentItemURL)
+                CFRelease(currentItemURL);
+        }
+        
+        if (anOpenAtLogin) {
+            if (!appItem)
+                LSSharedFileListInsertItemURL(loginItems, kLSSharedFileListItemBeforeFirst, NULL, NULL, (CFURLRef)appURL, NULL, NULL);
+            openAtLogin = YES;
+        } else {
+            if (appItem)
+                LSSharedFileListItemRemove(loginItems, appItem);
+            openAtLogin = NO;
+        }
+    }
+}
+
 #pragma mark -
 #pragma mark NSMenuDelegate