[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdegraphics/kviewshell/shell
From: Wilfried Huss <Wilfried.Huss () gmx ! at>
Date: 2006-10-19 19:55:45
Message-ID: 1161287745.709991.24517.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 597274 by whuss:
port of commit 593565:
Double clicking on a page in overview mode now switches to to this
page in continuous viewmode.
Add two keyboard shortcuts to cycle through the viewmodes
(CTRL+M, CTRL+SHIFT+M)
M +11 -1 dataModel.cpp
M +4 -0 dataModel.h
M +12 -0 documentWidget.cpp
M +5 -3 documentWidget.h
M +76 -4 kviewpart.cpp
M +4 -0 kviewpart.h
M +7 -5 pageView.cpp
M +1 -1 pageView.h
--- trunk/KDE/kdegraphics/kviewshell/shell/dataModel.cpp #597273:597274
@@ -69,7 +69,7 @@
kError(kvs::shell) << "DataModel::setCurrentPageNumber called with pageNumber \
higher than the number of pages in the document, anchor is " << anc << endl; return;
}
-
+
if (anc.page != _currentPageNumber) {
_currentPageNumber = anc.page;
emit currentPageNumberChanged();
@@ -115,6 +115,16 @@
}
+void DataModel::setViewMode(int viewmode)
+{
+ if (viewmode != preferences()->viewMode())
+ {
+ preferences()->setViewMode(viewmode);
+ }
+ emit viewModeChanged();
+}
+
+
void DataModel::deletePages(const PageNumber& from, const PageNumber& to)
{
// Paranoid safety checks
--- trunk/KDE/kdegraphics/kviewshell/shell/dataModel.h #597273:597274
@@ -87,6 +87,8 @@
double resolution() const { return resolutionInDPI; }
void setResolution(double resolution);
+ void setViewMode(int viewmode);
+
/** @brief delete pages from the document
This method should be called whenever pages have been removed from
@@ -209,6 +211,8 @@
void numberOfPagesChanged();
void layoutChanged();
+ void viewModeChanged();
+
/** This signal is emitted whenever the selected text changes.
The argument is false if no text is selected, true otherwise.
--- trunk/KDE/kdegraphics/kviewshell/shell/documentWidget.cpp #597273:597274
@@ -660,6 +660,18 @@
}
+void DocumentWidget::mouseDoubleClickEvent(QMouseEvent* e)
+{
+ if (dataModel->preferences()->viewMode() == KVSPrefs::EnumViewMode::Overview)
+ {
+ kdDebug() << "double click on page " << pageNumber << endl;
+ PageNumber currentPageNumber = pageNumber;
+ dataModel->setViewMode(KVSPrefs::EnumViewMode::Continuous);
+ dataModel->setCurrentPageNumber(Anchor(currentPageNumber));
+ }
+}
+
+
void DocumentWidget::measureLength(bool restrictAxis)
{
QPoint delta = measuringOrigin - measuringPoint;
--- trunk/KDE/kdegraphics/kviewshell/shell/documentWidget.h #597273:597274
@@ -101,10 +101,12 @@
void slotShowPopupMenu(const PageNumber& pageNumber, const QPoint& position);
protected:
- virtual void paintEvent (QPaintEvent *);
- virtual void mousePressEvent ( QMouseEvent * e );
- virtual void mouseReleaseEvent (QMouseEvent *);
+ virtual void paintEvent(QPaintEvent*);
+ virtual void mousePressEvent(QMouseEvent*);
+ virtual void mouseReleaseEvent(QMouseEvent*);
+ virtual void mouseDoubleClickEvent(QMouseEvent*);
+
/** This method is used by the DocumentWidget to find out of the
mouse pointer hovers over a hyperlink, and to update the
statusbar accordingly. Scrolling with the left mouse button
--- trunk/KDE/kdegraphics/kviewshell/shell/kviewpart.cpp #597273:597274
@@ -114,6 +114,7 @@
connect(dataModel, SIGNAL(currentPageNumberChanged()), this, \
SLOT(setCurrentPageNumber())); connect(dataModel, SIGNAL(numberOfPagesChanged()), \
this, SLOT(setCurrentPageNumber())); connect(dataModel, \
SIGNAL(selectionChanged(bool)), this, SLOT(textSelected(bool))); + \
connect(dataModel, SIGNAL(viewModeChanged()), this, SLOT(setViewMode()));
pageCache->setupObservers(dataModel);
@@ -419,6 +420,16 @@
scrollRightPageAction->setShortcut(Qt::SHIFT + Qt::Key_Right);
pageView()->addAction(scrollRightPageAction);
connect(scrollRightPageAction, SIGNAL(triggered(bool)), pageView(), \
SLOT(scrollRightPage())); +
+ KAction* nextViewModeAction = new KAction(i18n("Next View Mode"), \
actionCollection(), "next_view_mode_action"); + \
nextViewModeAction->setShortcut(Qt::CTRL+Qt::Key_M); + \
pageView()->addAction(nextViewModeAction); + connect(nextViewModeAction, \
SIGNAL(triggered(bool)), this, SLOT(slotNextViewMode())); +
+ KAction* previousViewModeAction = new KAction(i18n("Previous View Mode"), \
actionCollection(), "previous_view_mode_action"); + \
previousViewModeAction->setShortcut(Qt::CTRL+Qt::SHIFT+Qt::Key_M); + \
pageView()->addAction(previousViewModeAction); + connect(previousViewModeAction, \
SIGNAL(triggered(bool)), this, SLOT(slotPreviousViewMode()));
//
// Read Settings
@@ -996,7 +1007,7 @@
}
// Set the multipage to the current viewmode.
- slotSetViewMode(viewModeAction->currentItem());
+ slotSetViewMode(dataModel->preferences()->viewMode());
// Load the URL
dataModel->deselectText();
@@ -1631,7 +1642,7 @@
renderModeChanged();
if (multiPage)
multiPage->preferencesChanged();
- updateZoomLevel();
+ slotSetViewMode(dataModel->preferences()->viewMode());
}
void KViewPart::partActivateEvent( KParts::PartActivateEvent *ev )
@@ -1709,9 +1720,70 @@
void KViewPart::slotSetViewMode(int mode)
{
- dataModel->preferences()->setViewMode(mode);
- pageView()->setViewMode(mode);
+ dataModel->setViewMode(mode);
+}
+
+
+void KViewPart::slotNextViewMode()
+{
+ int viewmode = dataModel->preferences()->viewMode();
+ int newmode;
+ switch (viewmode)
+ {
+ case KVSPrefs::EnumViewMode::SinglePage:
+ newmode = KVSPrefs::EnumViewMode::Continuous;
+ break;
+ case KVSPrefs::EnumViewMode::Continuous:
+ newmode = KVSPrefs::EnumViewMode::ContinuousFacing;
+ break;
+ case KVSPrefs::EnumViewMode::ContinuousFacing:
+ newmode = KVSPrefs::EnumViewMode::Overview;
+ break;
+ default:
+ case KVSPrefs::EnumViewMode::Overview:
+ newmode = KVSPrefs::EnumViewMode::SinglePage;
+ break;
+ }
+ slotSetViewMode(newmode);
+}
+
+
+void KViewPart::slotPreviousViewMode()
+{
+ int viewmode = dataModel->preferences()->viewMode();
+ int newmode;
+ switch (viewmode)
+ {
+ case KVSPrefs::EnumViewMode::SinglePage:
+ newmode = KVSPrefs::EnumViewMode::Overview;
+ break;
+ case KVSPrefs::EnumViewMode::Continuous:
+ newmode = KVSPrefs::EnumViewMode::SinglePage;
+ break;
+ case KVSPrefs::EnumViewMode::ContinuousFacing:
+ newmode = KVSPrefs::EnumViewMode::Continuous;
+ break;
+ default:
+ case KVSPrefs::EnumViewMode::Overview:
+ newmode = KVSPrefs::EnumViewMode::ContinuousFacing;
+ break;
+ }
+ slotSetViewMode(newmode);
+}
+
+
+void KViewPart::setViewMode()
+{
+ // Temporarely disable smooth scrolling during the viewmode change
+ bool smooth = dataModel->preferences()->smoothScrolling();
+ dataModel->preferences()->setSmoothScrolling(false);
+
+ int viewmode = dataModel->preferences()->viewMode();
+ viewModeAction->setCurrentItem(viewmode);
+ pageView()->setViewMode();
updateZoomLevel();
+
+ dataModel->preferences()->setSmoothScrolling(smooth);
}
--- trunk/KDE/kdegraphics/kviewshell/shell/kviewpart.h #597273:597274
@@ -174,7 +174,11 @@
void slotEnableRulerTool();
void slotSetViewMode(int mode);
+ void slotNextViewMode();
+ void slotPreviousViewMode();
+ void setViewMode();
+
void textSelected(bool selected);
/** Re-implementation of the setModified() method from the
--- trunk/KDE/kdegraphics/kviewshell/shell/pageView.cpp #597273:597274
@@ -171,7 +171,7 @@
}
}
-void PageView::contentsMouseReleaseEvent( QMouseEvent* )
+void PageView::contentsMouseReleaseEvent(QMouseEvent* e)
{
setCursor(Qt::ArrowCursor);
}
@@ -796,12 +796,13 @@
}
-void PageView::setViewMode(int viewmode)
+void PageView::setViewMode()
{
//FIXME might not be needed anymore
// Save the current page number because when we are changing the columns
// and rows in the scrollview the currently shown Page probably out of view.
PageNumber currentPage = dataModel->currentPageNumber();
+ int viewmode = dataModel->preferences()->viewMode();
switch (viewmode)
{
@@ -1081,13 +1082,14 @@
return;
}
- PageNumber page = a.page;
+ PageNumber page = a.page;
+
int y = (int)(a.distance_from_top.getLength_in_inch() * dataModel->resolution() + \
0.5); if (a.isLinkTarget)
dataModel->history()->add(page, y);
-
+
DocumentWidget* _pageWidget;
-
+
// If we are in overview viewmode
if (dataModel->preferences()->viewMode() == KVSPrefs::EnumViewMode::Overview) {
unsigned int visiblePages = dataModel->preferences()->overviewModeColumns() * \
dataModel->preferences()->overviewModeRows();
--- trunk/KDE/kdegraphics/kviewshell/shell/pageView.h #597273:597274
@@ -72,7 +72,7 @@
*/
void clear();
- void setViewMode(int viewmode);
+ void setViewMode();
/** Return true if the top resp. bottom of the page is visible. */
bool atTop() const;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic