diff options
| -rw-r--r-- | Info.plist | 42 | ||||
| -rw-r--r-- | QSThingsPlugin.xcodeproj/project.pbxproj | 1 | ||||
| -rw-r--r-- | QSThingsPlugin/Actions/CreateProjectAction.h | 13 | ||||
| -rw-r--r-- | QSThingsPlugin/Actions/CreateProjectAction.m | 47 |
4 files changed, 103 insertions, 0 deletions
@@ -22,6 +22,48 @@ <string>QSThingsPluginSource</string> <key>QSActions</key> <dict> + <key>CreateProjectInAction</key> + <dict> + <key>actionClass</key> + <string>CreateProjectAction</string> + <key>actionSelector</key> + <string>createProject:in:</string> + <key>directTypes</key> + <array> + <string>*</string> + </array> + <key>indirectTypes</key> + <array> + <string>things.area</string> + </array> + <key>enabled</key> + <true/> + <key>displaysResult</key> + <false/> + <key>name</key> + <string>Create project in...</string> + <key>icon</key> + <string>com.culturedcode.ThingsMac</string> + </dict> + <key>CreateProjectAction</key> + <dict> + <key>actionClass</key> + <string>CreateProjectAction</string> + <key>actionSelector</key> + <string>createProject:</string> + <key>directTypes</key> + <array> + <string>*</string> + </array> + <key>enabled</key> + <true/> + <key>displaysResult</key> + <false/> + <key>name</key> + <string>Create project</string> + <key>icon</key> + <string>com.culturedcode.ThingsMac</string> + </dict> <key>CreateTaskInAction</key> <dict> <key>actionClass</key> diff --git a/QSThingsPlugin.xcodeproj/project.pbxproj b/QSThingsPlugin.xcodeproj/project.pbxproj index fc4c27a..850ab01 100644 --- a/QSThingsPlugin.xcodeproj/project.pbxproj +++ b/QSThingsPlugin.xcodeproj/project.pbxproj @@ -40,6 +40,7 @@ membershipExceptions = ( /Localized/Localizable.strings, Actions/CompleteTaskAction.m, + Actions/CreateProjectAction.m, Actions/CreateTaskAction.m, Actions/SearchThingsAction.m, Actions/SetThingsAuthenticationKeyAction.m, diff --git a/QSThingsPlugin/Actions/CreateProjectAction.h b/QSThingsPlugin/Actions/CreateProjectAction.h new file mode 100644 index 0000000..1b6b290 --- /dev/null +++ b/QSThingsPlugin/Actions/CreateProjectAction.h @@ -0,0 +1,13 @@ +#import "Constants.h" +#import "ThingsHelper.h" +#import "TextParsingHelper.h" +#import <Foundation/Foundation.h> +#import <QSCore/QSCore.h> + +NS_ASSUME_NONNULL_BEGIN + +@interface CreateProjectAction : QSActionProvider + +@end + +NS_ASSUME_NONNULL_END diff --git a/QSThingsPlugin/Actions/CreateProjectAction.m b/QSThingsPlugin/Actions/CreateProjectAction.m new file mode 100644 index 0000000..38a0a5f --- /dev/null +++ b/QSThingsPlugin/Actions/CreateProjectAction.m @@ -0,0 +1,47 @@ +#import "CreateProjectAction.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation CreateProjectAction + +- (QSObject *)createProject:(QSObject *)directObject +{ + NSString *contents = [directObject displayName]; + if (contents) { + NSDictionary *parameters = [TextParsingHelper parseText: contents]; + [ThingsHelper callRoute:ThingsURLRouteAddProject withParameters:parameters]; + } else { + NSLog(@"Could not get the text of the Things object."); + } + return directObject; +} + +- (QSObject *)createProject:(QSObject *)directObject in:(QSObject *)indirectObject +{ + NSString *contents = [directObject displayName]; + + NSDictionary *indirectContents = [indirectObject objectForType:indirectObject.primaryType]; + NSString *areaId = nil; + if (indirectContents) { + areaId = [indirectContents objectForKey:@"uuid"]; + } else { + NSLog(@"Could not read the contents for the indirect object"); + } + + if (contents) { + NSMutableDictionary *parameters = [TextParsingHelper parseText: contents]; + if (areaId) { + [parameters setObject:areaId forKey:@"area-id"]; + } else { + NSLog(@"Could not find a list id"); + } + [ThingsHelper callRoute:ThingsURLRouteAddProject withParameters:parameters]; + } else { + NSLog(@"Could not get the text of the Things object."); + } + return directObject; +} + +@end + +NS_ASSUME_NONNULL_END |