@@ -378,20 +378,42 @@ - (void)updateToolbar {
378378 label.font = [UIFont systemFontOfSize: 16 ];
379379 label.textColor = [UIColor blackColor ];
380380
381- if (m_currentPageCount == 0 ) {
381+ BOOL canGoNext = m_currentPageProgressionIsLTR ? m_currentPageCanGoRight : m_currentPageCanGoLeft;
382+ BOOL canGoPrevious = m_currentPageProgressionIsLTR ? m_currentPageCanGoLeft : m_currentPageCanGoRight;
383+
384+ itemNext.enabled = canGoNext;
385+ itemPrev.enabled = canGoPrevious;
386+
387+ if (m_currentPageOpenPagesArray == nil || [m_currentPageOpenPagesArray count ] <= 0 ) {
382388 label.text = @" " ;
383- itemNext.enabled = NO ;
384- itemPrev.enabled = NO ;
385389 }
386390 else {
387- label.text = LocStr (@" PAGE_X_OF_Y" , m_currentPageIndex + 1 , m_currentPageCount);
388391
389- itemNext.enabled = !(
390- (m_currentSpineItemIndex + 1 == m_package.spineItems .count ) &&
391- (m_currentPageIndex + m_currentOpenPageCount + 1 > m_currentPageCount)
392- );
392+ NSMutableArray *pageNumbers = [NSMutableArray array ];
393+
394+ for (NSDictionary *pageDict in m_currentPageOpenPagesArray) {
395+
396+ NSNumber *spineItemIndex = [pageDict valueForKey: @" spineItemIndex" ];
397+ NSNumber *spineItemPageIndex = [pageDict valueForKey: @" spineItemPageIndex" ];
398+
399+ int pageIndex = m_currentPageIsFixedLayout ? spineItemIndex.intValue : spineItemPageIndex.intValue ;
400+
401+ [pageNumbers addObject: [NSNumber numberWithInt: pageIndex + 1 ]];
402+ }
403+
404+ NSString * currentPages = [NSString stringWithFormat: @" %@ " , [pageNumbers componentsJoinedByString: @" -" ]];
405+
406+ int pageCount = 0 ;
407+ if ([m_currentPageOpenPagesArray count ] > 0 )
408+ {
409+ NSDictionary *firstOpenPageDict = [m_currentPageOpenPagesArray objectAtIndex: 0 ];
410+ NSNumber *number = [firstOpenPageDict valueForKey: @" spineItemPageCount" ];
393411
394- itemPrev.enabled = !(m_currentSpineItemIndex == 0 && m_currentPageIndex == 0 );
412+ pageCount = m_currentPageIsFixedLayout ? m_currentPageSpineItemCount: number.intValue ;
413+ }
414+ NSString * totalPages = [NSString stringWithFormat: @" %d " , pageCount];
415+
416+ label.text = LocStr (@" PAGE_X_OF_Y" , [currentPages UTF8String ], [totalPages UTF8String ], m_currentPageIsFixedLayout?[@" FXL" UTF8String ]:[@" reflow" UTF8String ]);
395417 }
396418
397419 [label sizeToFit ];
@@ -557,31 +579,16 @@ - (void)viewWillDisappear:(BOOL)animated {
557579 NSDictionary *dict = [NSJSONSerialization JSONObjectWithData: data
558580 options: 0 error: &error];
559581
560- NSString *direction = [dict objectForKey: @" pageProgressionDirection" ];
582+ m_currentPageCanGoLeft = ([[dict valueForKey: @" canGoLeft_" ] isEqual: [NSNumber numberWithBool: YES ]] ? YES : NO );
583+ m_currentPageCanGoRight = ([[dict valueForKey: @" canGoRight_" ] isEqual: [NSNumber numberWithBool: YES ]] ? YES : NO );
561584
562- if ([direction isKindOfClass: [NSString class ]]) {
563- m_currentPageProgressionIsLTR = ![direction isEqualToString: @" rtl" ];
564- }
565- else {
566- m_currentPageProgressionIsLTR = YES ;
567- }
585+ m_currentPageProgressionIsLTR = ([[dict valueForKey: @" isRightToLeft" ] isEqual: [NSNumber numberWithBool: YES ]] ? NO : YES );
568586
569- m_currentOpenPageCount = 0 ;
587+ m_currentPageIsFixedLayout = ([[dict valueForKey: @" isFixedLayout " ] isEqual: [ NSNumber numberWithBool: YES ]] ? YES : NO ) ;
570588
571- for (NSDictionary *pageDict in [dict objectForKey: @" openPages" ]) {
572- m_currentOpenPageCount++;
589+ m_currentPageSpineItemCount = [((NSNumber *)[dict valueForKey: @" spineItemCount" ]) intValue ];
573590
574- if (m_currentOpenPageCount == 1 ) {
575- NSNumber *number = [pageDict objectForKey: @" spineItemPageCount" ];
576- m_currentPageCount = number.intValue ;
577-
578- number = [pageDict objectForKey: @" spineItemPageIndex" ];
579- m_currentPageIndex = number.intValue ;
580-
581- number = [pageDict objectForKey: @" spineItemIndex" ];
582- m_currentSpineItemIndex = number.intValue ;
583- }
584- }
591+ m_currentPageOpenPagesArray = (NSArray *)[dict objectForKey: @" openPages" ];
585592
586593 m_webView.hidden = NO ;
587594 [self updateToolbar ];
0 commit comments