aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Info.plist42
-rw-r--r--QSThingsPlugin.xcodeproj/project.pbxproj1
-rw-r--r--QSThingsPlugin/Actions/CreateProjectAction.h13
-rw-r--r--QSThingsPlugin/Actions/CreateProjectAction.m47
4 files changed, 103 insertions, 0 deletions
diff --git a/Info.plist b/Info.plist
index edc9527..3b2b7fd 100644
--- a/Info.plist
+++ b/Info.plist
@@ -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