Skip to content
Browse files

Basic interface for adding a contact

  • Loading branch information...
1 parent 14284b6 commit bf104fb84cad4231077b029d7a00f1fa03316eb9 @benlangfeld committed Nov 7, 2010
Showing with 109 additions and 0 deletions.
  1. +27 −0 Controllers/AccountsController.j
  2. +81 −0 Controllers/AddContactController.j
  3. +1 −0 Resources/AddContact.cib
View
27 Controllers/AccountsController.j
@@ -25,6 +25,7 @@
@import "../Models/Account.j"
@import "ContactViewController.j"
@import "ChatWindowController.j"
+@import "AddContactController.j"
var SharedController = nil;
@@ -118,6 +119,16 @@ var SharedController = nil;
selector:@selector(reload)
name:TNStropheContactMessageTreatedNotification
object:nil];
+ [[CPNotificationCenter defaultCenter]
+ addObserver:self
+ selector:@selector(reload)
+ name:TNStropheRosterAddedContactNotification
+ object:nil];
+ [[CPNotificationCenter defaultCenter]
+ addObserver:self
+ selector:@selector(reload)
+ name:TNStropheRosterRemovedContactNotification
+ object:nil];
}
- (void)setupStoredAccounts
@@ -297,6 +308,22 @@ var SharedController = nil;
- (@action)promptForNewContact:(id)aSender
{
CPLog.debug("Adding a contact");
+
+ var selected = [self selectedItem],
+ account;
+
+ if ([selected isKindOfClass:[TNStropheContact class]])
+ account = [self accountForContact:selected];
+ else if ([selected isKindOfClass:[Account class]])
+ account = selected;
+ else
+ {
+ CPLog.error("Must select an account to add a contact to!");
+ return;
+ }
+
+ var controller = [[AddContactController alloc] initWithAccount:account];
+ [controller showWindow:aSender];
}
- (@action)removeContact:(id)aSender
View
81 Controllers/AddContactController.j
@@ -0,0 +1,81 @@
+/*
+ * AddContactController.j
+ * CappuccinoTalk
+ *
+ * Copyright (C) 2010 Ben Langfeld <ben@langfeld.me>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+@import <AppKit/CPWindowController.j>
+
+@import "AccountsController.j"
+@import "../Models/Account.j"
+
+@implementation AddContactController : CPWindowController
+{
+ @outlet CPButton addButton;
+ @outlet CPTextField jidField;
+ @outlet CPTextField nameField;
+ @outlet CPPopUpButton groupPicker;
+ Account account;
+}
+
+- (id)initWithAccount:(Account)anAccount
+{
+ if (self = [super initWithWindowCibName:@"AddContact"])
+ {
+ account = anAccount;
+ }
+ return self;
+}
+
+- (void)awakeFromCib
+{
+ // This is called when the cib is done loading.
+ // You can implement this method on any object instantiated from a Cib.
+ // It's a useful hook for setting up current UI values, and other things.
+ [super awakeFromCib];
+ [[self window] setDefaultButton:addButton];
+
+ [jidField becomeFirstResponder];
+ [jidField setValue:[CPColor grayColor] forThemeAttribute:"text-color" inState:CPTextFieldStatePlaceholder];
+ [nameField setValue:[CPColor grayColor] forThemeAttribute:"text-color" inState:CPTextFieldStatePlaceholder];
+
+ [groupPicker removeAllItems];
+
+ for (var i = 0; i < [[[account roster] groups] count]; i++)
+ {
+ var group = [[[account roster] groups] objectAtIndex:i],
+ item = [CPMenuItem new];
+ [item setTag:[group name]];
+ [item setTitle:[group name]];
+ [groupPicker addItem:item];
+ }
+
+ [groupPicker selectItemAtIndex:0];
+}
+
+- (@action)add:(id)aSender
+{
+ [[account roster] addContact:[jidField objectValue] withName:[nameField objectValue] inGroupWithName:[[groupPicker selectedItem] tag]];
+ [self close];
+}
+
+- (@action)cancel:(id)aSender
+{
+ [self close];
+}
+
+@end
View
1 Resources/AddContact.cib
@@ -0,0 +1 @@
+280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;4E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;7E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;9E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;10E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;11E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;12E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;13E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;16E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;18E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;46E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;E;E;S;16;IBCocoaFrameworkd;3;461D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;33E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;55E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;56E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;57E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;58E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;59E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;60E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;61E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;62E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;23E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;63E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;64E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;65E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;66E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;67E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;63E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;68E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;69E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;23E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;70E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;71E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;72E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;66E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;23E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;73E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;74E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;75E;K;16;$aimage-positionD;K;6;CP$UIDd;2;76E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;70E;K;11;$aalignmentD;K;6;CP$UIDd;2;76E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;70E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;77E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;2;78E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;79E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;2;79E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;76E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;70E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;23E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;70E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;80E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;72E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;66E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;23E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;74E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;75E;K;16;$aimage-positionD;K;6;CP$UIDd;2;76E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;70E;K;11;$aalignmentD;K;6;CP$UIDd;2;76E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;70E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;77E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;2;82E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;79E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;2;79E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;76E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;70E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;27E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;23E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;70E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;83E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;84E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;66E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;23E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;85E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;86E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;87E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;76E;K;11;$aalignmentD;K;6;CP$UIDd;2;77E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;88E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;89E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;90E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;90E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;90E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;2;92E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;76E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;77E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;2;93E;E;D;K;6;$classD;K;6;CP$UIDd;2;27E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;23E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;70E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;94E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;84E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;66E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;23E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;85E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;86E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;87E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;76E;K;11;$aalignmentD;K;6;CP$UIDd;2;77E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;88E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;89E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;90E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;90E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;90E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;2;95E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;76E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;77E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;2;96E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;23E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;33E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;70E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;97E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;98E;K;15;CPViewWindowKeyD;K;6;CP$UIDd;2;66E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;23E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;85E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;75E;K;16;$aimage-positionD;K;6;CP$UIDd;2;76E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;77E;K;11;$aalignmentD;K;6;CP$UIDd;2;70E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;77E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;2;88E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;79E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;2;79E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;76E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;K;20;CPPopUpButtonMenuKeyD;K;6;CP$UIDd;2;33E;K;29;CPPopUpButtonSelectedIndexKeyD;K;6;CP$UIDd;3;100E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;32E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;101E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;102E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;103E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;31E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;104E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;33E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;105E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;106E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;31E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;104E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;33E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;105E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;107E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;31E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;104E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;33E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;105E;E;S;12;File's OwnerS;11;ApplicationS;6;WindowS;4;ViewS;6;ButtonS;10;Text fieldS;13;Pop up buttonS;4;MenuS;9;Menu ItemD;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;47E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;26E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;16E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;108E;E;D;K;6;$classD;K;6;CP$UIDd;2;47E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;25E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;16E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;109E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;26E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;110E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;28E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;111E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;21E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;112E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;31E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;113E;E;S;20;AddContactControllerD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;114E;E;E;S;13;CPApplicationS;26;{3.40282e+38, 3.40282e+38}S;8;CPWindowS;24;{{235, 235}, {251, 156}}d;1;7S;13;Add a ContactS;5;$nullS;21;{{0, 26}, {251, 156}}S;20;{{0, 0}, {251, 156}}S;5;$nullD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;31E;E;E;d;2;18S;6;normald;1;0S;21;{{16, 117}, {98, 24}}S;18;{{0, 0}, {98, 24}}d;2;12S;6;buttonS;8;borderedd;1;2d;1;4S;6;CancelF;S;22;{{137, 117}, {98, 24}}d;1;9S;11;Add ContactS;21;{{12, 12}, {227, 28}}S;19;{{0, 0}, {227, 28}}d;2;34S;9;textfieldS;19;bezeled+placeholderS;0;d;4;3072T;D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;91E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;115E;E;S;17;Contact Jabber IDS;21;{{12, 41}, {227, 28}}D;K;6;$classD;K;6;CP$UIDd;2;91E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;116E;E;S;23;Contact Name (optional)S;21;{{16, 74}, {219, 24}}S;19;{{0, 0}, {219, 24}}S;12;popup-buttond;1;3S;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;3;117E;E;E;S;6;Item 1S;17;_popUpItemAction:d;7;1048576S;6;Item 2S;6;Item 3S;4;add:S;7;cancel:S;9;addButtonS;8;jidFieldS;6;windowS;11;groupPickerD;K;6;$classD;K;6;CP$UIDd;2;20E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;58E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;59E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;118E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;61E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;40E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;3;119E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;2;88E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;21;CPMenuItemIsHiddenKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;120E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;33E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;105E;E;S;22;{{-59, 5}, {480, 360}}D;K;6;$classD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;121E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;122E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;68E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;69E;E;d;1;1S;21;{{0, 26}, {480, 360}}S;20;{{0, 0}, {480, 360}}E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E;

0 comments on commit bf104fb

Please sign in to comment.
Something went wrong with that request. Please try again.