From 04908dba2f93842a0008ef1ba8c966621c615f9e Mon Sep 17 00:00:00 2001 From: Olivier CHURLAUD Date: Tue, 26 Jul 2016 01:37:54 +0200 Subject: [PATCH] Adding RTL reading mode feature to okular Commited on behalf of Fahad Al-Saidi REVIEW: 125397 BUG: 325650 --- conf/dlggeneral.cpp | 1 + conf/dlggeneralbase.ui | 86 +++++++++++++++++++++++++++++++++++------- conf/okular.kcfg | 3 ++ ui/pageview.cpp | 31 ++++++++++++--- 4 files changed, 102 insertions(+), 19 deletions(-) diff --git a/conf/dlggeneral.cpp b/conf/dlggeneral.cpp index ad389f392..52abd4350 100644 --- a/conf/dlggeneral.cpp +++ b/conf/dlggeneral.cpp @@ -26,6 +26,7 @@ DlgGeneral::DlgGeneral( QWidget * parent, Okular::EmbedMode embedMode ) m_dlg->kcfg_SyncThumbnailsViewport->setVisible( false ); m_dlg->kcfg_DisplayDocumentTitle->setVisible( false ); m_dlg->kcfg_WatchFile->setVisible( false ); + m_dlg->kcfg_rtlReadingDirection->setVisible(false); } m_dlg->kcfg_ShellOpenFileInTabs->setVisible( embedMode == Okular::NativeShellMode ); } diff --git a/conf/dlggeneralbase.ui b/conf/dlggeneralbase.ui index 1cf6ea955..6486747d2 100755 --- a/conf/dlggeneralbase.ui +++ b/conf/dlggeneralbase.ui @@ -11,7 +11,16 @@ - + + 0 + + + 0 + + + 0 + + 0 @@ -23,7 +32,16 @@ 6 - + + 9 + + + 9 + + + 9 + + 9 @@ -31,7 +49,16 @@ 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -133,7 +160,16 @@ 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -176,7 +212,16 @@ 6 - + + 9 + + + 9 + + + 9 + + 9 @@ -184,7 +229,16 @@ 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -222,16 +276,22 @@ 6 - + + 0 + + + 0 + + + 0 + + 0 - - - - 0 - 0 - + + + Right to left reading direction diff --git a/conf/okular.kcfg b/conf/okular.kcfg index e75861e43..3d60b04a7 100644 --- a/conf/okular.kcfg +++ b/conf/okular.kcfg @@ -96,6 +96,9 @@ true + + false + Name diff --git a/ui/pageview.cpp b/ui/pageview.cpp index 3ebf7dcb0..bb540cbb5 100644 --- a/ui/pageview.cpp +++ b/ui/pageview.cpp @@ -223,7 +223,7 @@ public: KAction * aFitWindowToPage; int setting_viewCols; - + bool rtl_Mode; // Keep track of whether tablet pen is currently pressed down bool penDown; }; @@ -335,6 +335,7 @@ PageView::PageView( QWidget *parent, Okular::Document *document ) d->actionCollection = 0; d->aPageSizes=0; d->setting_viewCols = Okular::Settings::viewColumns(); + d->rtl_Mode = Okular::Settings::rtlReadingDirection(); d->mouseModeActionGroup = 0; d->penDown = false; d->aMouseMagnifier = 0; @@ -803,6 +804,12 @@ void PageView::reparseConfig() slotRelayoutPages(); } + if (Okular::Settings::rtlReadingDirection() != d->rtl_Mode ) + { + d->rtl_Mode = Okular::Settings::rtlReadingDirection(); + slotRelayoutPages(); + } + updatePageStep(); if ( d->annotator ) @@ -4332,15 +4339,27 @@ void PageView::slotRelayoutPages() } else if ( facingPages ) { - // page edges 'touch' the center of the viewport - actualX = ( (centerFirstPage && item->pageNumber() % 2 == 1) || - (!centerFirstPage && item->pageNumber() % 2 == 0) ) ? - (fullWidth / 2) - item->croppedWidth() - 1 : (fullWidth / 2) + 1; + if (Okular::Settings::rtlReadingDirection()){ + // RTL reading mode + actualX = ( (centerFirstPage && item->pageNumber() % 2 == 0) || + (!centerFirstPage && item->pageNumber() % 2 == 1) ) ? + (fullWidth / 2) - item->croppedWidth() - 1 : (fullWidth / 2) + 1; + } else { + // page edges 'touch' the center of the viewport + actualX = ( (centerFirstPage && item->pageNumber() % 2 == 1) || + (!centerFirstPage && item->pageNumber() % 2 == 0) ) ? + (fullWidth / 2) - item->croppedWidth() - 1 : (fullWidth / 2) + 1; + } } else { // page is centered within its virtual column - actualX = insertX + (cWidth - item->croppedWidth()) / 2; + //actualX = insertX + (cWidth - item->croppedWidth()) / 2; + if (Okular::Settings::rtlReadingDirection()){ + actualX = fullWidth - insertX - cWidth +( (cWidth - item->croppedWidth()) / 2); + } else { + actualX = insertX + (cWidth - item->croppedWidth()) / 2; + } } item->moveTo( actualX, (continuousView ? insertY : origInsertY) + (rHeight - item->croppedHeight()) / 2 );