30 #include <KXMLGUIClient>
33 #include <KActionCollection>
34 #include <KStandardAction>
41 : mModel( 0 ), mZoomControl( 0 )
43 KActionCollection* actionCollection = guiClient->actionCollection();
45 mZoomInAction = KStandardAction::zoomIn(
this, SLOT(zoomIn()), actionCollection );
46 mZoomOutAction = KStandardAction::zoomOut(
this, SLOT(zoomOut()), actionCollection );
49 ZoomToAction =
new KSelectAction( i18n(
"Zoom"),
"viewmag", 0, ActionCollection,
"zoomTo" );
50 ZoomToAction->setEditable(
true );
51 QList<double> mags = DisplayOptions::normalMagnificationValues();
52 QStringList translated;
58 translated << i18nc(
"zoom-factor (percentage)",
"%1%", *first * 100.0 );
59 if ( *first == 1.0 ) idx = cur;
62 ZoomToAction->setItems( translated );
63 ZoomToAction->setCurrentItem( idx );
64 connect( ZoomToAction, SIGNAL(triggered(QString) ), SLOT(zoomTo(QString) ) );
68 FitToWidthAction =
new KAction( i18n(
"&Fit to Width" ), ActionCollection,
"fit_to_width" );
69 connect( FitWidthAction, SIGNAL(triggered(
bool) ), SLOT(fitToWidth()));
70 FitToHeightAction =
new KAction( i18n(
"&Fit to Height" ), ActionCollection,
"fit_to_height" );
71 connect( FitWidthAction, SIGNAL(triggered(
bool) ), SLOT(fitToHeight()));
72 FitToSizeAction =
new KAction( i18n(
"&Fit to Size" ), ActionCollection,
"fit_to_size" );
73 connect( FitToSizeAction, SIGNAL(triggered(
bool) ), SLOT(fitToSize()));
80 if( mModel ) mModel->disconnect(
this );
83 mZoomControl = mModel ? qobject_cast<
If::Zoomable *>( mModel ) : 0;
88 connect( mModel, SIGNAL(zoomLevelChanged(
double)), SLOT(onZoomLevelChange(
double)) );
91 const bool hasView = ( mZoomControl != 0 );
92 mZoomInAction->setEnabled( hasView );
93 mZoomOutAction->setEnabled( hasView );
97 void ZoomController::zoomIn()
102 void ZoomController::zoomOut()
107 void ZoomController::zoomTo(
const QString& nz )
111 z.remove( z.indexOf(
'%' ), 1 );
112 zoom = KGlobal::locale()->readNumber( z ) / 100;
113 kDebug( 4500 ) <<
"ZOOM = " << nz <<
", setting zoom = " << zoom << endl;
115 DisplayOptions options = miniWidget()->displayOptions();
116 options.setMagnification( zoom );
117 miniWidget()->setDisplayOptions( options );
118 miniWidget()->redisplay();
119 _mainWidget->setFocus();
123 void ZoomController::fitToWidth()
125 if( pageView()->page() )
126 miniWidget()->fitWidth( pageView()->viewport()->width() - 16 );
131 void ZoomController::fitToSize()
133 if( pageView()->page() )
134 miniWidget()->fitWidthHeight( pageView()->viewport()->width() - 16,
135 pageView()->viewport()->height() - 16 );
139 void ZoomController::onZoomLevelChange(
double level )
AbstractModel * findBaseModelWithInterface() const
returns the first baseModel which is of type T, or null if none is found.
virtual void setZoomLevel(double Level)=0
ZoomController(KXMLGUIClient *guiClient)
virtual double zoomLevel() const =0
virtual void setTargetModel(AbstractModel *model)