smartlist: add more contextual choices
- choose number to call
- copy number
Tuleap: #57
Change-Id: I18317154af9c50cade4ee8b749d10ac54eb77064
diff --git a/src/SmartViewVC.mm b/src/SmartViewVC.mm
index 77cf1eb..b2be8bb 100644
--- a/src/SmartViewVC.mm
+++ b/src/SmartViewVC.mm
@@ -345,6 +345,20 @@
}
}
+- (void) copyNumberToPasteboard:(id) sender
+{
+ NSPasteboard *pasteBoard = [NSPasteboard generalPasteboard];
+ [pasteBoard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil];
+ [pasteBoard setString:[sender representedObject] forType:NSStringPboardType];
+}
+
+- (void) callNumber:(id) sender
+{
+ Call* c = CallModel::instance().dialingCall();
+ c->setDialNumber(QString::fromNSString([sender representedObject]));
+ c << Call::Action::ACCEPT;
+}
+
#pragma NSTextFieldDelegate
- (BOOL)control:(NSControl *)control textView:(NSTextView *)fieldEditor doCommandBySelector:(SEL)commandSelector
@@ -411,17 +425,49 @@
if (contactmethods.isEmpty())
return nil;
- auto cm = contactmethods.first();
- if (!cm->contact() || cm->contact()->isPlaceHolder()) {
- NSMenu *theMenu = [[NSMenu alloc]
- initWithTitle:@""];
+ NSMenu *theMenu = [[NSMenu alloc] initWithTitle:@""];
+
+ if (contactmethods.size() == 1
+ && !contactmethods.first()->contact()
+ || contactmethods.first()->contact()->isPlaceHolder()) {
+
[theMenu insertItemWithTitle:NSLocalizedString(@"Add to contacts", @"Contextual menu action")
action:@selector(addToContact)
keyEquivalent:@"a"
- atIndex:0];
- return theMenu;
+ atIndex:theMenu.itemArray.count];
}
- return nil;
+
+ NSMenu* copySubmenu = [[NSMenu alloc] init];
+ NSMenu* callSubmenu = [[NSMenu alloc] init];
+
+ for(auto cm : contactmethods) {
+ NSMenuItem* tmpCopyItem = [[NSMenuItem alloc] initWithTitle:cm->uri().toNSString()
+ action:@selector(copyNumberToPasteboard:)
+ keyEquivalent:@""];
+
+ [tmpCopyItem setRepresentedObject:cm->uri().toNSString()];
+ [copySubmenu addItem:tmpCopyItem];
+
+ NSMenuItem* tmpCallItem = [[NSMenuItem alloc] initWithTitle:cm->uri().toNSString()
+ action:@selector(callNumber:)
+ keyEquivalent:@""];
+ [tmpCallItem setRepresentedObject:cm->uri().toNSString()];
+ [callSubmenu addItem:tmpCallItem];
+ }
+
+ NSMenuItem* copyItems = [[NSMenuItem alloc] init];
+ [copyItems setTitle:NSLocalizedString(@"Copy number", @"Contextual menu action")];
+ [copyItems setSubmenu:copySubmenu];
+
+ NSMenuItem* callItems = [[NSMenuItem alloc] init];
+ [callItems setTitle:NSLocalizedString(@"Call number", @"Contextual menu action")];
+ [callItems setSubmenu:callSubmenu];
+
+ [theMenu insertItem:copyItems atIndex:theMenu.itemArray.count];
+ [theMenu insertItem:[NSMenuItem separatorItem] atIndex:theMenu.itemArray.count];
+ [theMenu insertItem:callItems atIndex:theMenu.itemArray.count];
+
+ return theMenu;
}
@end