Changeset View
Changeset View
Standalone View
Standalone View
ui/pageview.cpp
Show First 20 Lines • Show All 226 Lines • ▼ Show 20 Line(s) | 196 | #endif | |||
---|---|---|---|---|---|
227 | KToggleAction * aToggleAnnotator; | 227 | KToggleAction * aToggleAnnotator; | ||
228 | KSelectAction * aZoom; | 228 | KSelectAction * aZoom; | ||
229 | QAction * aZoomIn; | 229 | QAction * aZoomIn; | ||
230 | QAction * aZoomOut; | 230 | QAction * aZoomOut; | ||
231 | QAction * aZoomActual; | 231 | QAction * aZoomActual; | ||
232 | KToggleAction * aZoomFitWidth; | 232 | KToggleAction * aZoomFitWidth; | ||
233 | KToggleAction * aZoomFitPage; | 233 | KToggleAction * aZoomFitPage; | ||
234 | KToggleAction * aZoomAutoFit; | 234 | KToggleAction * aZoomAutoFit; | ||
235 | KActionMenu * aViewMode; | 235 | KActionMenu * aViewModeMenu; | ||
236 | QActionGroup * viewModeActionGroup; | ||||
236 | KToggleAction * aViewContinuous; | 237 | KToggleAction * aViewContinuous; | ||
237 | QAction * aPrevAction; | 238 | QAction * aPrevAction; | ||
238 | QAction * aToggleForms; | 239 | QAction * aToggleForms; | ||
239 | QAction * aSpeakDoc; | 240 | QAction * aSpeakDoc; | ||
240 | QAction * aSpeakPage; | 241 | QAction * aSpeakPage; | ||
241 | QAction * aSpeakStop; | 242 | QAction * aSpeakStop; | ||
242 | QAction * aSpeakPauseResume; | 243 | QAction * aSpeakPauseResume; | ||
243 | KActionCollection * actionCollection; | 244 | KActionCollection * actionCollection; | ||
▲ Show 20 Lines • Show All 89 Lines • ▼ Show 20 Line(s) | 332 | PageView::PageView( QWidget *parent, Okular::Document *document ) | |||
333 | , Okular::View( QStringLiteral( "PageView" ) ) | 334 | , Okular::View( QStringLiteral( "PageView" ) ) | ||
334 | { | 335 | { | ||
335 | // create and initialize private storage structure | 336 | // create and initialize private storage structure | ||
336 | d = new PageViewPrivate( this ); | 337 | d = new PageViewPrivate( this ); | ||
337 | d->document = document; | 338 | d->document = document; | ||
338 | d->aRotateClockwise = nullptr; | 339 | d->aRotateClockwise = nullptr; | ||
339 | d->aRotateCounterClockwise = nullptr; | 340 | d->aRotateCounterClockwise = nullptr; | ||
340 | d->aRotateOriginal = nullptr; | 341 | d->aRotateOriginal = nullptr; | ||
341 | d->aViewMode = nullptr; | 342 | d->aViewModeMenu = nullptr; | ||
342 | d->zoomMode = PageView::ZoomFitWidth; | 343 | d->zoomMode = PageView::ZoomFitWidth; | ||
343 | d->zoomFactor = 1.0; | 344 | d->zoomFactor = 1.0; | ||
344 | d->mouseSelecting = false; | 345 | d->mouseSelecting = false; | ||
345 | d->mouseTextSelecting = false; | 346 | d->mouseTextSelecting = false; | ||
346 | d->mouseOnRect = false; | 347 | d->mouseOnRect = false; | ||
347 | d->mouseMode = Okular::Settings::mouseMode(); | 348 | d->mouseMode = Okular::Settings::mouseMode(); | ||
348 | d->mouseAnnotation = new MouseAnnotation( this, document ); | 349 | d->mouseAnnotation = new MouseAnnotation( this, document ); | ||
349 | d->tableDividersGuessed = false; | 350 | d->tableDividersGuessed = false; | ||
Show All 23 Lines | 366 | #endif | |||
373 | d->aTrimToSelection = nullptr; | 374 | d->aTrimToSelection = nullptr; | ||
374 | d->aMouseNormal = nullptr; | 375 | d->aMouseNormal = nullptr; | ||
375 | d->aMouseSelect = nullptr; | 376 | d->aMouseSelect = nullptr; | ||
376 | d->aMouseTextSelect = nullptr; | 377 | d->aMouseTextSelect = nullptr; | ||
377 | d->aToggleAnnotator = nullptr; | 378 | d->aToggleAnnotator = nullptr; | ||
378 | d->aZoomFitWidth = nullptr; | 379 | d->aZoomFitWidth = nullptr; | ||
379 | d->aZoomFitPage = nullptr; | 380 | d->aZoomFitPage = nullptr; | ||
380 | d->aZoomAutoFit = nullptr; | 381 | d->aZoomAutoFit = nullptr; | ||
381 | d->aViewMode = nullptr; | 382 | d->aViewModeMenu = nullptr; | ||
382 | d->aViewContinuous = nullptr; | 383 | d->aViewContinuous = nullptr; | ||
384 | d->viewModeActionGroup = nullptr; | ||||
383 | d->aPrevAction = nullptr; | 385 | d->aPrevAction = nullptr; | ||
384 | d->aToggleForms = nullptr; | 386 | d->aToggleForms = nullptr; | ||
385 | d->aSpeakDoc = nullptr; | 387 | d->aSpeakDoc = nullptr; | ||
386 | d->aSpeakPage = nullptr; | 388 | d->aSpeakPage = nullptr; | ||
387 | d->aSpeakStop = nullptr; | 389 | d->aSpeakStop = nullptr; | ||
388 | d->aSpeakPauseResume = nullptr; | 390 | d->aSpeakPauseResume = nullptr; | ||
389 | d->actionCollection = nullptr; | 391 | d->actionCollection = nullptr; | ||
390 | d->aPageSizes=nullptr; | 392 | d->aPageSizes=nullptr; | ||
▲ Show 20 Lines • Show All 212 Lines • ▼ Show 20 Line(s) | 548 | { | |||
603 | connect( d->aZoomAutoFit, &QAction::toggled, this, &PageView::slotAutoFitToggled ); | 605 | connect( d->aZoomAutoFit, &QAction::toggled, this, &PageView::slotAutoFitToggled ); | ||
604 | 606 | | |||
605 | d->aFitWindowToPage = new QAction(QIcon::fromTheme( QStringLiteral("zoom-fit-width") ), i18n("Fit Wi&ndow to Page"), this); | 607 | d->aFitWindowToPage = new QAction(QIcon::fromTheme( QStringLiteral("zoom-fit-width") ), i18n("Fit Wi&ndow to Page"), this); | ||
606 | d->aFitWindowToPage->setEnabled( Okular::Settings::viewMode() == (int)Okular::Settings::EnumViewMode::Single ); | 608 | d->aFitWindowToPage->setEnabled( Okular::Settings::viewMode() == (int)Okular::Settings::EnumViewMode::Single ); | ||
607 | ac->setDefaultShortcut(d->aFitWindowToPage, QKeySequence(Qt::CTRL + Qt::Key_J) ); | 609 | ac->setDefaultShortcut(d->aFitWindowToPage, QKeySequence(Qt::CTRL + Qt::Key_J) ); | ||
608 | ac->addAction( QStringLiteral("fit_window_to_page"), d->aFitWindowToPage ); | 610 | ac->addAction( QStringLiteral("fit_window_to_page"), d->aFitWindowToPage ); | ||
609 | connect( d->aFitWindowToPage, &QAction::triggered, this, &PageView::slotFitWindowToPage ); | 611 | connect( d->aFitWindowToPage, &QAction::triggered, this, &PageView::slotFitWindowToPage ); | ||
610 | 612 | | |||
611 | // View-Layout actions | 613 | // View Mode action menu (Single Page, Facing Pages,...(choose), and Continuous (on/off)) | ||
612 | d->aViewMode = new KActionMenu( QIcon::fromTheme( QStringLiteral("view-split-left-right") ), i18n( "&View Mode" ), this ); | 614 | d->aViewModeMenu = new KActionMenu( QIcon::fromTheme( QStringLiteral("view-split-left-right") ), i18n( "&View Mode" ), this ); | ||
613 | d->aViewMode->setDelayed( false ); | 615 | d->aViewModeMenu->setDelayed( false ); | ||
614 | #define ADD_VIEWMODE_ACTION( text, name, id ) \ | 616 | ac->addAction( QStringLiteral( "view_render_mode" ), d->aViewModeMenu ); | ||
615 | do { \ | 617 | | ||
616 | QAction *vm = new QAction( text, this ); \ | 618 | d->viewModeActionGroup = new QActionGroup( this ); | ||
617 | vm->setCheckable( true ); \ | 619 | auto addViewMode = [=] ( QAction * a, const QString &name, Okular::Settings::EnumViewMode::type id ) { | ||
618 | vm->setData( QVariant::fromValue( id ) ); \ | 620 | a->setCheckable( true ); | ||
619 | d->aViewMode->addAction( vm ); \ | 621 | a->setData( int( id ) ); | ||
620 | ac->addAction( QStringLiteral(name), vm ); \ | 622 | d->aViewModeMenu->addAction( a ); | ||
621 | vmGroup->addAction( vm ); \ | 623 | ac->addAction( name, a ); | ||
622 | } while( 0 ) | 624 | d->viewModeActionGroup->addAction( a ); | ||
623 | ac->addAction(QStringLiteral("view_render_mode"), d->aViewMode ); | 625 | }; | ||
624 | QActionGroup *vmGroup = new QActionGroup( this ); //d->aViewMode->menu() ); | 626 | addViewMode( new QAction( i18nc( "@item:inmenu", "&Single Page" ), this ), | ||
625 | ADD_VIEWMODE_ACTION( i18n( "Single Page" ), "view_render_mode_single", (int)Okular::Settings::EnumViewMode::Single ); | 627 | QStringLiteral("view_render_mode_single"), | ||
626 | ADD_VIEWMODE_ACTION( i18n( "Facing Pages" ), "view_render_mode_facing", (int)Okular::Settings::EnumViewMode::Facing ); | 628 | Okular::Settings::EnumViewMode::Single ); | ||
627 | ADD_VIEWMODE_ACTION( i18n( "Facing Pages (Center First Page)" ), "view_render_mode_facing_center_first", (int)Okular::Settings::EnumViewMode::FacingFirstCentered ); | 629 | addViewMode( new QAction( i18nc( "@item:inmenu", "&Facing Pages" ), this ), | ||
628 | ADD_VIEWMODE_ACTION( i18n( "Overview" ), "view_render_mode_overview", (int)Okular::Settings::EnumViewMode::Summary ); | 630 | QStringLiteral("view_render_mode_single"), | ||
629 | const QList<QAction *> viewModeActions = d->aViewMode->menu()->actions(); | 631 | Okular::Settings::EnumViewMode::Facing ); | ||
632 | addViewMode( new QAction( i18nc( "@item:inmenu", "Facing Pages (&Center First Page)" ), this ), | ||||
633 | QStringLiteral("view_render_mode_single"), | ||||
634 | Okular::Settings::EnumViewMode::FacingFirstCentered ); | ||||
635 | addViewMode( new QAction( i18nc( "@item:inmenu", "&Overview" ), this ), | ||||
636 | QStringLiteral("view_render_mode_single"), | ||||
637 | Okular::Settings::EnumViewMode::Summary ); | ||||
638 | const QList< QAction* > viewModeActions = d->viewModeActionGroup->actions(); | ||||
630 | for (QAction *viewModeAction : viewModeActions) | 639 | for ( QAction * viewModeAction : viewModeActions ) | ||
631 | { | 640 | { | ||
632 | if (viewModeAction->data().toInt() == Okular::Settings::viewMode()) | 641 | if ( viewModeAction->data().toInt() == Okular::Settings::viewMode() ) | ||
633 | { | 642 | { | ||
634 | viewModeAction->setChecked( true ); | 643 | viewModeAction->setChecked( true ); | ||
644 | break; | ||||
635 | } | 645 | } | ||
636 | } | 646 | } | ||
637 | connect( vmGroup, &QActionGroup::triggered, this, &PageView::slotViewMode ); | 647 | connect( d->viewModeActionGroup, &QActionGroup::triggered, this, &PageView::slotViewMode ); | ||
638 | #undef ADD_VIEWMODE_ACTION | | |||
639 | 648 | | |||
649 | // Continuous view action, add to view mode action menu. | ||||
650 | d->aViewModeMenu->addSeparator(); | ||||
640 | d->aViewContinuous = new KToggleAction(QIcon::fromTheme( QStringLiteral("view-list-text") ), i18n("&Continuous"), this); | 651 | d->aViewContinuous = new KToggleAction(QIcon::fromTheme( QStringLiteral("view-list-text") ), i18n("&Continuous"), this); | ||
652 | d->aViewModeMenu->addAction(d->aViewContinuous); | ||||
641 | ac->addAction(QStringLiteral("view_continuous"), d->aViewContinuous ); | 653 | ac->addAction(QStringLiteral("view_continuous"), d->aViewContinuous ); | ||
642 | connect( d->aViewContinuous, &QAction::toggled, this, &PageView::slotContinuousToggled ); | 654 | connect( d->aViewContinuous, &QAction::toggled, this, &PageView::slotContinuousToggled ); | ||
643 | d->aViewContinuous->setChecked( Okular::Settings::viewContinuous() ); | 655 | d->aViewContinuous->setChecked( Okular::Settings::viewContinuous() ); | ||
644 | 656 | | |||
645 | // Mouse mode actions for viewer mode | 657 | // Mouse mode actions for viewer mode | ||
646 | d->mouseModeActionGroup = new QActionGroup( this ); | 658 | d->mouseModeActionGroup = new QActionGroup( this ); | ||
647 | d->mouseModeActionGroup->setExclusive( true ); | 659 | d->mouseModeActionGroup->setExclusive( true ); | ||
648 | d->aMouseNormal = new QAction( QIcon::fromTheme( QStringLiteral("transform-browse") ), i18n( "&Browse" ), this ); | 660 | d->aMouseNormal = new QAction( QIcon::fromTheme( QStringLiteral("transform-browse") ), i18n( "&Browse" ), this ); | ||
▲ Show 20 Lines • Show All 152 Lines • ▼ Show 20 Line(s) | |||||
801 | void PageView::fitPageWidth( int page ) | 813 | void PageView::fitPageWidth( int page ) | ||
802 | { | 814 | { | ||
803 | // zoom: Fit Width, columns: 1. setActions + relayout + setPage + update | 815 | // zoom: Fit Width, columns: 1. setActions + relayout + setPage + update | ||
804 | d->zoomMode = ZoomFitWidth; | 816 | d->zoomMode = ZoomFitWidth; | ||
805 | Okular::Settings::setViewMode( 0 ); | 817 | Okular::Settings::setViewMode( 0 ); | ||
806 | d->aZoomFitWidth->setChecked( true ); | 818 | d->aZoomFitWidth->setChecked( true ); | ||
807 | d->aZoomFitPage->setChecked( false ); | 819 | d->aZoomFitPage->setChecked( false ); | ||
808 | d->aZoomAutoFit->setChecked( false ); | 820 | d->aZoomAutoFit->setChecked( false ); | ||
809 | d->aViewMode->menu()->actions().at( 0 )->setChecked( true ); | 821 | updateViewMode( 0 ); | ||
810 | viewport()->setUpdatesEnabled( false ); | 822 | viewport()->setUpdatesEnabled( false ); | ||
811 | slotRelayoutPages(); | 823 | slotRelayoutPages(); | ||
812 | viewport()->setUpdatesEnabled( true ); | 824 | viewport()->setUpdatesEnabled( true ); | ||
813 | d->document->setViewportPage( page ); | 825 | d->document->setViewportPage( page ); | ||
814 | updateZoomText(); | 826 | updateZoomText(); | ||
815 | setFocus(); | 827 | setFocus(); | ||
816 | } | 828 | } | ||
817 | 829 | | |||
▲ Show 20 Lines • Show All 418 Lines • ▼ Show 20 Line(s) | 1232 | { | |||
1236 | } | 1248 | } | ||
1237 | 1249 | | |||
1238 | if ( d->aTrimMargins ) | 1250 | if ( d->aTrimMargins ) | ||
1239 | d->aTrimMargins->setEnabled( haspages ); | 1251 | d->aTrimMargins->setEnabled( haspages ); | ||
1240 | 1252 | | |||
1241 | if ( d->aTrimToSelection ) | 1253 | if ( d->aTrimToSelection ) | ||
1242 | d->aTrimToSelection->setEnabled( haspages ); | 1254 | d->aTrimToSelection->setEnabled( haspages ); | ||
1243 | 1255 | | |||
1244 | if ( d->aViewMode ) | 1256 | if ( d->aViewModeMenu ) | ||
1245 | d->aViewMode->setEnabled( haspages ); | 1257 | d->aViewModeMenu->setEnabled( haspages ); | ||
1246 | 1258 | | |||
1247 | if ( d->aViewContinuous ) | 1259 | if ( d->aViewContinuous ) | ||
1248 | d->aViewContinuous->setEnabled( haspages ); | 1260 | d->aViewContinuous->setEnabled( haspages ); | ||
1249 | 1261 | | |||
1250 | if ( d->aZoomFitWidth ) | 1262 | if ( d->aZoomFitWidth ) | ||
1251 | d->aZoomFitWidth->setEnabled( haspages ); | 1263 | d->aZoomFitWidth->setEnabled( haspages ); | ||
1252 | if ( d->aZoomFitPage ) | 1264 | if ( d->aZoomFitPage ) | ||
1253 | d->aZoomFitPage->setEnabled( haspages ); | 1265 | d->aZoomFitPage->setEnabled( haspages ); | ||
▲ Show 20 Lines • Show All 351 Lines • ▼ Show 20 Line(s) | 1616 | { | |||
1605 | case Zoom: | 1617 | case Zoom: | ||
1606 | return d->zoomFactor; | 1618 | return d->zoomFactor; | ||
1607 | case ZoomModality: | 1619 | case ZoomModality: | ||
1608 | return d->zoomMode; | 1620 | return d->zoomMode; | ||
1609 | case Continuous: | 1621 | case Continuous: | ||
1610 | return d->aViewContinuous ? d->aViewContinuous->isChecked() : true; | 1622 | return d->aViewContinuous ? d->aViewContinuous->isChecked() : true; | ||
1611 | case ViewModeModality: | 1623 | case ViewModeModality: | ||
1612 | { | 1624 | { | ||
1613 | const int nActions = d->aViewMode ? d->aViewMode->menu()->actions().size() : 0; | 1625 | if ( d->viewModeActionGroup ) | ||
1614 | for (int i=0; i < nActions; ++i) | 1626 | { | ||
1627 | const QList<QAction*> actions = d->viewModeActionGroup->actions(); | ||||
1628 | for ( const QAction* action : actions ) | ||||
1615 | { | 1629 | { | ||
1616 | const QAction* action = d->aViewMode->menu()->actions().at(i); | | |||
1617 | if ( action->isChecked() ) | 1630 | if (action->isChecked()) | ||
1631 | { | ||||
1618 | return action->data(); | 1632 | return action->data(); | ||
1619 | } | 1633 | } | ||
1634 | } | ||||
1635 | } | ||||
1620 | return QVariant(); | 1636 | return QVariant(); | ||
1621 | } | 1637 | } | ||
1622 | case TrimMargins: | 1638 | case TrimMargins: | ||
1623 | return d->aTrimMargins ? d->aTrimMargins->isChecked() : false; | 1639 | return d->aTrimMargins ? d->aTrimMargins->isChecked() : false; | ||
1624 | } | 1640 | } | ||
1625 | return QVariant(); | 1641 | return QVariant(); | ||
1626 | } | 1642 | } | ||
1627 | 1643 | | |||
▲ Show 20 Lines • Show All 2639 Lines • ▼ Show 20 Line(s) | 4236 | { | |||
4267 | d->aZoom->selectableActionGroup()->setEnabled( true ); | 4283 | d->aZoom->selectableActionGroup()->setEnabled( true ); | ||
4268 | d->aZoom->setCurrentItem( selIdx ); | 4284 | d->aZoom->setCurrentItem( selIdx ); | ||
4269 | d->aZoom->setEnabled( d->items.size() > 0 ); | 4285 | d->aZoom->setEnabled( d->items.size() > 0 ); | ||
4270 | d->aZoom->selectableActionGroup()->setEnabled( d->items.size() > 0 ); | 4286 | d->aZoom->selectableActionGroup()->setEnabled( d->items.size() > 0 ); | ||
4271 | } | 4287 | } | ||
4272 | 4288 | | |||
4273 | void PageView::updateViewMode(const int nr) | 4289 | void PageView::updateViewMode(const int nr) | ||
4274 | { | 4290 | { | ||
4275 | const QList<QAction*> actions = d->aViewMode->menu()->actions(); | 4291 | const QList<QAction*> actions = d->viewModeActionGroup->actions(); | ||
4276 | for ( QAction* action : actions ) { | 4292 | for ( QAction* action : actions ) { | ||
4277 | QVariant mode_id = action->data(); | 4293 | QVariant mode_id = action->data(); | ||
4278 | if (mode_id.toInt() == nr) { | 4294 | if (mode_id.toInt() == nr) { | ||
4279 | action->trigger(); | 4295 | action->trigger(); | ||
4280 | } | 4296 | } | ||
4281 | } | 4297 | } | ||
4282 | } | 4298 | } | ||
4283 | 4299 | | |||
▲ Show 20 Lines • Show All 1476 Lines • Show Last 20 Lines |