Description: class implementing a protocol of report viewer delegate and a protocol for views that open by means of popup windows.
#import <Foundation/Foundation.h> #import "MAProceduralDelegate.h" #import "MANotesViewController.h" #import "MAProceduralReportDataViewController.h" // Class implementing a protocol of report viewer delegate and a protocol for views that open by means of popup windows @interface ProceduralDelegateImpl : NSObject<ProceduralDelegate, PopoverContainedControllerProtocol> // Regular report sheet viewer view @property (nonatomic, retain) MAProceduralReportDataViewController *dataViewController; // Popup window @property (nonatomic, assign) UIPopoverController *popover; // Create an initializes class instance and sets value of regular report sheet viewer view - (id) initWithProceduralReportDataViewController: (MAProceduralReportDataViewController *)dataViewController; // Hides note without saving changes - (void)cancelNote; // Opens note for edit // index - note index - (void)openNoteAtIndex:(int)index; @end
#import "ProceduralDelegateImpl.h" @implementation ProceduralDelegateImpl // Creates a initializes class instance and sets value of regular report sheet viewer view - (id) initWithProceduralReportDataViewController: (MAProceduralReportDataViewController *)dataViewController { self = [super init]; if (self) { // Set value of regular report sheet viewer view _dataViewController = dataViewController; // Set empty value for popup window _popover = nil; } return self; } // Opens note for edit // index - note index - (void)openNoteAtIndex:(int)index { // Get note by its index Note *note = [_dataViewController noteByIndex:index]; // Determine dialog for saving and editing note AddNoteDialog *noteDialog = [[AddNoteDialog alloc] init]; [noteDialog setDelegate:_dataViewController]; // Delegate [noteDialog setPoint: [note offset]]; // Note location [noteDialog setTimestamp:[note timestamp]]; // Note creation time [noteDialog setText:[note text]]; // Note text [noteDialog setMode: kNoteDialogNewNote]; // Edit note [noteDialog setNoteIndex:index]; // Note index in array of all notes // Refresh dialog [noteDialog refresh]; // Set contents size in popup window [noteDialog setContentSizeForViewInPopover:CGSizeMake(300.0, 200.0)]; // Create a popup window UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:noteDialog] autorelease]; UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:navController]; popoverController.delegate = _dataViewController; // Display popup window [popoverController presentPopoverFromRect:CGRectMake([note offset].x, [note offset].y, 1, 1) inView:[_dataViewController pdfView].scrollView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; // Save popup window in the "popover" property _popover = popoverController; } // Hides note without saving changes - (void)cancelNote { // Check if popup window is displayed if(_popover != nil) { // Hide popup window [_popover dismissPopoverAnimated:NO]; // Set empty value for popup window _popover = nil; } } @end
See also: