<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>English.lproj/Slides.xib</filename>
    </added>
    <added>
      <filename>SlidesWindowController.h</filename>
    </added>
    <added>
      <filename>SlidesWindowController.m</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -7,9 +7,10 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
-		1DDD582C0DA1D0D100B32029 /* MyDocument.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58280DA1D0D100B32029 /* MyDocument.xib */; };
+		1DDD582C0DA1D0D100B32029 /* Slides.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58280DA1D0D100B32029 /* Slides.xib */; };
 		1DDD582D0DA1D0D100B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD582A0DA1D0D100B32029 /* MainMenu.xib */; };
 		345BF6AC10668503004BCEE3 /* SpeakerSlidesView.m in Sources */ = {isa = PBXBuildFile; fileRef = 345BF6AB10668503004BCEE3 /* SpeakerSlidesView.m */; };
+		345BF8FE1066A324004BCEE3 /* SlidesWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 345BF8FD1066A324004BCEE3 /* SlidesWindowController.m */; };
 		34E6611E1065E938001B6FE9 /* presenter-notes.xsl in Resources */ = {isa = PBXBuildFile; fileRef = 34E6611D1065E938001B6FE9 /* presenter-notes.xsl */; };
 		34E6612E1065EB97001B6FE9 /* SpeakerNotes.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34E6612D1065EB97001B6FE9 /* SpeakerNotes.xib */; };
 		34E6614E1065EBAE001B6FE9 /* SpeakerNotesWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34E6614D1065EBAE001B6FE9 /* SpeakerNotesWindowController.m */; };
@@ -44,7 +45,7 @@
 		089C1660FE840EACC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = &quot;&lt;group&gt;&quot;; };
 		1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = &quot;&lt;absolute&gt;&quot;; };
 		13E42FBA07B3F13500E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = &quot;&lt;absolute&gt;&quot;; };
-		1DDD58290DA1D0D100B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MyDocument.xib; sourceTree = &quot;&lt;group&gt;&quot;; };
+		1DDD58290DA1D0D100B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/Slides.xib; sourceTree = &quot;&lt;group&gt;&quot;; };
 		1DDD582B0DA1D0D100B32029 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = &quot;&lt;group&gt;&quot;; };
 		2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MyDocument.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MyDocument.h; sourceTree = &quot;&lt;group&gt;&quot;; };
@@ -55,6 +56,8 @@
 		32DBCF750370BD2300C91783 /* Blitz_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Blitz_Prefix.pch; sourceTree = &quot;&lt;group&gt;&quot;; };
 		345BF6AA10668503004BCEE3 /* SpeakerSlidesView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpeakerSlidesView.h; sourceTree = &quot;&lt;group&gt;&quot;; };
 		345BF6AB10668503004BCEE3 /* SpeakerSlidesView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SpeakerSlidesView.m; sourceTree = &quot;&lt;group&gt;&quot;; };
+		345BF8FC1066A324004BCEE3 /* SlidesWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlidesWindowController.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+		345BF8FD1066A324004BCEE3 /* SlidesWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SlidesWindowController.m; sourceTree = &quot;&lt;group&gt;&quot;; };
 		34E6611D1065E938001B6FE9 /* presenter-notes.xsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = &quot;presenter-notes.xsl&quot;; sourceTree = &quot;&lt;group&gt;&quot;; };
 		34E6612D1065EB97001B6FE9 /* SpeakerNotes.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SpeakerNotes.xib; sourceTree = &quot;&lt;group&gt;&quot;; };
 		34E6614C1065EBAE001B6FE9 /* SpeakerNotesWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpeakerNotesWindowController.h; sourceTree = &quot;&lt;group&gt;&quot;; };
@@ -138,6 +141,8 @@
 				34E6614D1065EBAE001B6FE9 /* SpeakerNotesWindowController.m */,
 				345BF6AA10668503004BCEE3 /* SpeakerSlidesView.h */,
 				345BF6AB10668503004BCEE3 /* SpeakerSlidesView.m */,
+				345BF8FC1066A324004BCEE3 /* SlidesWindowController.h */,
+				345BF8FD1066A324004BCEE3 /* SlidesWindowController.m */,
 			);
 			name = Classes;
 			sourceTree = &quot;&lt;group&gt;&quot;;
@@ -160,7 +165,7 @@
 				2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */,
 				8D15AC360486D014006FF6A4 /* Info.plist */,
 				089C165FFE840EACC02AAC07 /* InfoPlist.strings */,
-				1DDD58280DA1D0D100B32029 /* MyDocument.xib */,
+				1DDD58280DA1D0D100B32029 /* Slides.xib */,
 				1DDD582A0DA1D0D100B32029 /* MainMenu.xib */,
 				34E6612D1065EB97001B6FE9 /* SpeakerNotes.xib */,
 			);
@@ -223,7 +228,7 @@
 			files = (
 				8D15AC2C0486D014006FF6A4 /* Credits.rtf in Resources */,
 				8D15AC2F0486D014006FF6A4 /* InfoPlist.strings in Resources */,
-				1DDD582C0DA1D0D100B32029 /* MyDocument.xib in Resources */,
+				1DDD582C0DA1D0D100B32029 /* Slides.xib in Resources */,
 				1DDD582D0DA1D0D100B32029 /* MainMenu.xib in Resources */,
 				79BFE55A0FF7ECDD000668B2 /* dsa_pub.pem in Resources */,
 				79BFE61A0FF81A2C000668B2 /* blitz.icns in Resources */,
@@ -262,6 +267,7 @@
 				376586FD1009A33F00B9BC9B /* MyApplication.m in Sources */,
 				34E6614E1065EBAE001B6FE9 /* SpeakerNotesWindowController.m in Sources */,
 				345BF6AC10668503004BCEE3 /* SpeakerSlidesView.m in Sources */,
+				345BF8FE1066A324004BCEE3 /* SlidesWindowController.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -276,12 +282,12 @@
 			name = InfoPlist.strings;
 			sourceTree = &quot;&lt;group&gt;&quot;;
 		};
-		1DDD58280DA1D0D100B32029 /* MyDocument.xib */ = {
+		1DDD58280DA1D0D100B32029 /* Slides.xib */ = {
 			isa = PBXVariantGroup;
 			children = (
 				1DDD58290DA1D0D100B32029 /* English */,
 			);
-			name = MyDocument.xib;
+			name = Slides.xib;
 			sourceTree = &quot;&lt;group&gt;&quot;;
 		};
 		1DDD582A0DA1D0D100B32029 /* MainMenu.xib */ = {</diff>
      <filename>Blitz.xcodeproj/project.pbxproj</filename>
    </modified>
    <modified>
      <diff>@@ -8,8 +8,9 @@
 	CounterView *counterView;
 }
 @property uint16_t secondsElapsed;
+@property(assign) NSUInteger pageIndex;
+@property(assign) BOOL running;
 
-- (void)atLastPage;
 - (IBAction)updateSecondsElapsed:(id)sender;
 
 @end
\ No newline at end of file</diff>
      <filename>BlitzPDFView.h</filename>
    </modified>
    <modified>
      <diff>@@ -147,21 +147,10 @@ static NSColor* colorFromHexRGB( NSString *inColorString ) {
 @dynamic secondsElapsed;
 
 - (void)drawPagePost:(PDFPage*)page {
-    const CGFloat kSize = 80.0f;
-    const CGFloat kPadding = 20.0f;
-
-    if (counterView == nil) {
-        counterView = [[CounterView alloc] initWithFrame:NSMakeRect(0, 0, kSize, kSize)];
-        [self addSubview: counterView];
-    }
-    
-    NSRect frame = NSMakeRect([self bounds].size.width - kPadding - kSize, kPadding, kSize, kSize);
-    counterView.frame = frame;
-    [counterView setNeedsDisplay: YES];
 }
 
 - (void)dealloc {
-    [self atLastPage];
+    [counterView release];
     [super dealloc];
 }
 
@@ -172,11 +161,36 @@ static NSColor* colorFromHexRGB( NSString *inColorString ) {
 - (void)setSecondsElapsed:(uint16_t)secs {
     secondsElapsed = secs;
     counterView.secondsElapsed = secs;
+    [counterView setNeedsDisplay:YES];
 }
 
-- (void)atLastPage {
-    [[counterView animator] removeFromSuperview];
-    counterView = nil;
+- (BOOL)running;
+{
+    return ([counterView superview] == self);
+}
+- (void)setRunning:(BOOL)running;
+{
+    BOOL wasRunning = (counterView != nil);
+    
+    if (running == wasRunning)
+        return;
+    
+    if (running) {
+        const CGFloat kSize = 80.0f;
+        const CGFloat kPadding = 20.0f;
+        
+        NSRect frame = NSMakeRect([self bounds].size.width - kPadding - kSize, kPadding, kSize, kSize);
+        counterView = [[CounterView alloc] initWithFrame:frame];
+        
+        [self addSubview: counterView];
+        [counterView setNeedsDisplay: YES];
+        
+        [self addSubview:counterView];
+    } else {
+        [[counterView animator] removeFromSuperview];
+        [counterView release];
+        counterView = nil;
+    }
 }
 
 - (IBAction)updateSecondsElapsed:(id)sender {
@@ -184,4 +198,23 @@ static NSColor* colorFromHexRGB( NSString *inColorString ) {
     [self setNeedsDisplay:YES];
 }
 
+- (NSUInteger)pageIndex;
+{
+    if (!self.document)
+        return NSNotFound;
+    return [self.document indexForPage:self.currentPage];
+}
+- (void)setPageIndex:(NSUInteger)pageIndex;
+{
+    NSUInteger pageCount = [self.document pageCount];
+    PDFPage *page = nil;
+    if (pageCount &gt; 0) {
+        if (pageIndex &gt;= pageCount)
+            pageIndex = pageCount - 1;
+        page = [self.document pageAtIndex:pageIndex];
+    }
+    
+    [self goToPage:page];
+}
+
 @end
\ No newline at end of file</diff>
      <filename>BlitzPDFView.m</filename>
    </modified>
    <modified>
      <diff>@@ -5,5 +5,5 @@
 #ifdef __OBJC__
     #import &lt;Cocoa/Cocoa.h&gt;
 
-    #define SECONDS_PER_SLIDE (15)
+    #define SECONDS_PER_SLIDE (2)
 #endif</diff>
      <filename>Blitz_Prefix.pch</filename>
    </modified>
    <modified>
      <diff>@@ -1,20 +1,18 @@
 #import &lt;Cocoa/Cocoa.h&gt;
 #import &lt;Quartz/Quartz.h&gt;
 
-@class BlitzPDFView;
-
-@interface MyDocument : NSDocument &lt;QLPreviewPanelDataSource, QLPreviewPanelDelegate&gt; {
-	IBOutlet BlitzPDFView *pdfView;
+@interface MyDocument : NSDocument {
 	@private PDFDocument *pdfDocument;
 	@private NSTimer *timer;
     @private BOOL isInFullScreenMode;
     
-    QLPreviewPanel *previewPanel;
     
+    NSUInteger secondsElapsed;
     NSUInteger pageIndex;
+    BOOL running;
 }
 
-@property (retain, nonatomic) IBOutlet BlitzPDFView *pdfView;
 @property (readwrite) NSUInteger pageIndex;
+@property (readonly) BOOL running;
 
 @end</diff>
      <filename>MyDocument.h</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 #import &quot;MyDocument.h&quot;
-#import &quot;BlitzPDFView.h&quot;
+#import &quot;SlidesWindowController.h&quot;
 #import &quot;SpeakerNotesWindowController.h&quot;
 
 @interface NSObject (UndocumentedQuickLookUI)
@@ -12,13 +12,16 @@
 @property (retain, nonatomic) PDFDocument *pdfDocument;
 @property (retain, nonatomic) NSTimer *timer;
 @property (nonatomic) BOOL isInFullScreenMode;
+@property(assign) NSUInteger secondsElapsed;
+@property(assign,readwrite) BOOL running;
 @end
 
 @implementation MyDocument
-@synthesize pdfView, pdfDocument, timer, isInFullScreenMode;
+@synthesize pdfDocument, timer, isInFullScreenMode, secondsElapsed, running;
 @synthesize pageIndex;
 
 - (void)toggleFullScreenMode {
+#if 0
 	if (self.isInFullScreenMode) {
 		[self.pdfView exitFullScreenModeWithOptions: nil];
 		self.isInFullScreenMode = NO;
@@ -28,12 +31,12 @@
 		//NSWindow *window = [[[self windowControllers] objectAtIndex:0] window];
 		//self.isInFullScreenMode = [self.pdfView enterFullScreenMode: window.screen withOptions: nil];
 	}
+#endif
 }
 
 - (void)initPDFView {
-    [self.pdfView setDocument:self.pdfDocument];
-    
-    self.pdfView.secondsElapsed = 0;
+    self.running = YES;
+    self.secondsElapsed = 0.0;
     self.timer = [[NSTimer scheduledTimerWithTimeInterval:1.0
                                                    target:self
                                                  selector:@selector(updateElapsedTimer:)
@@ -43,13 +46,6 @@
     [self toggleFullScreenMode];
 }
 
-- (void)windowControllerDidLoadNib:(NSWindowController*)controller_ {
-    [super windowControllerDidLoadNib:controller_];
-    if (self.pdfDocument) {
-        [self initPDFView];
-    }
-}
-
 - (BOOL)writeToURL:(NSURL *)absoluteURL ofType:(NSString *)typeName error:(NSError **)outError {
     //return [self.pdfDocument writeToURL:absoluteURL];
     [self doesNotRecognizeSelector:_cmd]; // Renounce writing the PDF to disk.
@@ -68,7 +64,7 @@
     
     PDFDocument *pdfDisplayBundlePDFDocument = [myQLDisplayBundle pdfDocument];
     
-    [pdfDisplayBundlePDFDocument writeToFile:@&quot;/tmp/key.pdf&quot;];
+    //[pdfDisplayBundlePDFDocument writeToFile:@&quot;/tmp/key.pdf&quot;];
     
     //NSLog(@&quot;pdfDisplayBundlePDFDocument: %@&quot;, pdfDisplayBundlePDFDocument);
     
@@ -103,54 +99,26 @@
 }
 
 - (void)updateElapsedTimer:(NSTimer*)timer_ {
-    if (self.pdfView.secondsElapsed != 0 &amp;&amp; (self.pdfView.secondsElapsed % SECONDS_PER_SLIDE == 0)) {
-        if ([self.pdfView canGoToNextPage]) {
-            [self.pdfView goToNextPage:nil];
-            
-            // Triggers page change in associated speaker notes window controller
-            self.pageIndex = [[self.pdfView document] indexForPage:self.pdfView.currentPage];
-        }
-        else {
-            [self.pdfView atLastPage];
+    if (self.secondsElapsed != 0 &amp;&amp; (self.secondsElapsed % SECONDS_PER_SLIDE == 0)) {
+        // Triggers page change in associated speaker notes window controller
+        self.pageIndex++;
+        if (self.pageIndex &gt;= pdfDocument.pageCount) {
+            self.running = NO;
             [timer_ invalidate];
         }
     }
-    self.pdfView.secondsElapsed += 1;
-    [self.pdfView setNeedsDisplay:YES];
-}
-
-//--
-
-- (BOOL)acceptsPreviewPanelControl:(QLPreviewPanel *)panel {
-    return YES;
-}
-
-- (void)beginPreviewPanelControl:(QLPreviewPanel *)panel {
-    previewPanel = [panel retain];
-    panel.delegate = self;
-    panel.dataSource = self;
-}
-
-- (void)endPreviewPanelControl:(QLPreviewPanel *)panel {
-    [previewPanel release];
-    previewPanel = nil;
-}
-
-- (NSInteger)numberOfPreviewItemsInPreviewPanel:(QLPreviewPanel*)panel {
-    return 1;
-}
-
-- (id &lt;QLPreviewItem&gt;)previewPanel:(QLPreviewPanel *)panel previewItemAtIndex:(NSInteger)index {
-    return [self fileURL];
-    //return [NSURL fileURLWithPath:@&quot;/Users/wolf/code/github/Blitz/blitz-example.pdf&quot;];//[selectedDownloads objectAtIndex:index];
+    
+    self.secondsElapsed += 1;
 }
 
-//--
-
 - (void)makeWindowControllers;
 {
-    [super makeWindowControllers];
-    
+    // Slides
+    {
+        SlidesWindowController *slides = [[SlidesWindowController alloc] initWithWindowNibName:@&quot;Slides&quot;];
+        [self addWindowController:slides];
+        [slides release];
+    }
     
     // Extract the notes from the Keynote file, converting to HTML. Duct tape and bailing wire.
     {
@@ -186,10 +154,6 @@
     }
 }
 
-- (NSString *)windowNibName {
-    return @&quot;MyDocument&quot;;
-}
-
 - (void)dealloc {
     self.pdfDocument = nil;
     [self.timer invalidate];</diff>
      <filename>MyDocument.m</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>English.lproj/MyDocument.xib</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>60296a2f4bb586da8a3d41f24d396937536110ea</id>
    </parent>
  </parents>
  <author>
    <name>Timothy J. Wood</name>
    <email>tjw@omnigroup.com</email>
  </author>
  <url>http://github.com/rentzsch/Blitz/commit/0079b2287ed13dbc2996f288828d905387d1933a</url>
  <id>0079b2287ed13dbc2996f288828d905387d1933a</id>
  <committed-date>2009-09-20T11:36:09-07:00</committed-date>
  <authored-date>2009-09-20T11:36:09-07:00</authored-date>
  <message>Not sure this should be merged yet, fyi:

Split out the slides into their own window controller.
No functional improvements in this commit (and possibly some
regressions), but the idea is that this will make going full screen
and delayed starting easier (so you can open a file, get into full
screen mode and possibly adjust the speaker notes split view before
starting).</message>
  <tree>fc6f77d0643444d03a7878e4ef4aecd71749e895</tree>
  <committer>
    <name>Timothy J. Wood</name>
    <email>tjw@omnigroup.com</email>
  </committer>
</commit>
