-
Notifications
You must be signed in to change notification settings - Fork 2
/
PKQuickLookHelper.m
128 lines (98 loc) · 2.91 KB
/
PKQuickLookHelper.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
//
// Created by Phillip Kessels on 10.06.13.
// Copyright (c) 2013 phikes mobile&desktop. All rights reserved.
//
// To change the template use AppCode | Preferences | File Templates.
//
#import "PKQuickLookHelper.h"
@implementation PKQuickLookHelper
@dynamic responder;
#pragma mark Singleton
+ (PKQuickLookHelper*)sharedHelper
{
return sharedHelper;
}
+ (void)initialize
{
PKLog(@"Initializing the sharedHelper");
sharedHelper = [PKQuickLookHelper new];
sharedHelper.template = @"temp";
sharedHelper.queue = [NSOperationQueue new];
[sharedHelper createPreviewItemArrayIfNotExists];
PKLog(@"To make it work: Set an responder (a window e.g) on the sharedHelper");
}
#pragma mark IBActions, etc.
- (IBAction)toggleQuickLookWindow:(id)sender
{
PKLog(@"Received the toggleQuickLookWindow action");
if([QLPreviewPanel sharedPreviewPanelExists] && [[QLPreviewPanel sharedPreviewPanel] isVisible])
{
[[QLPreviewPanel sharedPreviewPanel] orderOut:self];
PKLog(@"QLPreviewPanel is visible: hiding it");
}
else
{
[[QLPreviewPanel sharedPreviewPanel] makeKeyAndOrderFront:self];
PKLog(@"QLPreviewPanel is not visible: showing it");
}
}
#pragma mark PKQuickLookHelper
- (void)createPreviewItemArrayIfNotExists
{
if(!_previewItems)
{
_previewItems = [NSMutableArray new];
}
}
- (void)addPreviewItem:(id <QLPreviewItem>)item
{
[_previewItems addObject:item];
}
- (void)removePreviewItem:(id <QLPreviewItem>)item
{
[_previewItems removeObject:item];
}
- (void)removeAllPreviewItems
{
[_previewItems removeAllObjects];
}
- (NSResponder*)responder
{
return self.nextResponder;
}
- (void)setResponder:(NSResponder *)responder
{
if(responder.nextResponder != self)
{
self.nextResponder = responder.nextResponder;
responder.nextResponder = self;
}
}
#pragma mark QLPreviewPanel delegate/data source
- (BOOL)acceptsPreviewPanelControl:(QLPreviewPanel *)panel
{
PKLog(@"Received the acceptsPreviewPanelControl delegate message");
return YES;
}
- (void)beginPreviewPanelControl:(QLPreviewPanel *)panel
{
PKLog(@"Gained control over the QLPreviewPanel");
[QLPreviewPanel sharedPreviewPanel].dataSource = self;
[QLPreviewPanel sharedPreviewPanel].delegate = self;
}
- (void)endPreviewPanelControl:(QLPreviewPanel *)panel
{
PKLog(@"Lost control over the QLPreviewPanel");
}
- (NSInteger)numberOfPreviewItemsInPreviewPanel:(QLPreviewPanel *)panel
{
NSUInteger count = self.previewItems.count;
PKLog(@"QLPreviewPanel asked for numberOfPreviewItemsInPreviewPanel. %lu items are present", count);
return count;
}
- (id <QLPreviewItem>)previewPanel:(QLPreviewPanel *)panel previewItemAtIndex:(NSInteger)index1
{
PKLog(@"QLPreviewPanel asked for previewItemAtIndex with index %lu", index1);
return index1 < [self.previewItems count] ? self.previewItems[(NSUInteger) index1] : nil;
}
@end