[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/work/kviewshell-0.7/kviewshell/shell
From: Wilfried Huss <Wilfried.Huss () gmx ! at>
Date: 2006-10-08 9:35:44
Message-ID: 1160300144.466850.28122.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 593565 by whuss:
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 +7 -3 dataModel.h
M +12 -0 documentWidget.cpp
M +5 -3 documentWidget.h
M +68 -4 kviewpart.cpp
M +4 -0 kviewpart.h
M +7 -6 pageView.cpp
M +2 -2 pageView.h
--- branches/work/kviewshell-0.7/kviewshell/shell/dataModel.cpp #593564:593565
@@ -60,7 +60,7 @@
kdError(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();
@@ -106,6 +106,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
--- branches/work/kviewshell-0.7/kviewshell/shell/dataModel.h #593564:593565
@@ -49,7 +49,7 @@
DataModel(QObject* parent = 0);
virtual ~DataModel();
-
+
/** @brief get the current page number
*/
PageNumber currentPageNumber();
@@ -72,9 +72,9 @@
unsigned int numberOfPages();
void setNumberOfPages(unsigned int);
-
+
/** @brief get the resolution currently used for drawing.
-
+
@returns the resolution of the display device. In
principle. In fact, kviewshell implements zooming by calling the
setResolution()-method with values that are not exactly the
@@ -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.
--- branches/work/kviewshell-0.7/kviewshell/shell/documentWidget.cpp #593564:593565
@@ -647,6 +647,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;
--- branches/work/kviewshell-0.7/kviewshell/shell/documentWidget.h #593564:593565
@@ -100,10 +100,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
--- branches/work/kviewshell-0.7/kviewshell/shell/kviewpart.cpp #593564:593565
@@ -110,6 +110,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);
@@ -205,6 +206,8 @@
accel->insert(I18N_NOOP("Scroll Down Page"), SHIFT+Key_Down, pageView(), \
SLOT(scrollDownPage())); accel->insert(I18N_NOOP("Scroll Left Page"), \
SHIFT+Key_Left, pageView(), SLOT(scrollLeftPage())); accel->insert(I18N_NOOP("Scroll \
Right Page"), SHIFT+Key_Right, pageView(), SLOT(scrollRightPage())); + \
accel->insert(I18N_NOOP("Next View Mode"), Qt::CTRL+Qt::Key_M, this, \
SLOT(slotNextViewMode())); + accel->insert(I18N_NOOP("Previous View Mode"), \
Qt::CTRL+Qt::SHIFT+Qt::Key_M, this, SLOT(slotPreviousViewMode())); \
accel->readSettings();
@@ -937,7 +940,7 @@
}
// Set the multipage to the current viewmode.
- slotSetViewMode(viewModeAction->currentItem());
+ slotSetViewMode(dataModel->preferences()->viewMode());
// Load the URL
dataModel->deselectText();
@@ -1556,7 +1559,7 @@
renderModeChanged();
if (multiPage)
multiPage->preferencesChanged();
- slotSetViewMode(viewModeAction->currentItem());
+ slotSetViewMode(dataModel->preferences()->viewMode());
}
void KViewPart::partActivateEvent( KParts::PartActivateEvent *ev )
@@ -1634,9 +1637,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);
}
--- branches/work/kviewshell-0.7/kviewshell/shell/kviewpart.h #593564:593565
@@ -179,7 +179,11 @@
void slotEnableRulerTool();
void slotSetViewMode(int mode);
+ void slotNextViewMode();
+ void slotPreviousViewMode();
+ void setViewMode();
+
void textSelected(bool selected);
void speakSelection();
--- branches/work/kviewshell-0.7/kviewshell/shell/pageView.cpp #593564:593565
@@ -171,7 +171,7 @@
}
}
-void PageView::contentsMouseReleaseEvent( QMouseEvent* )
+void PageView::contentsMouseReleaseEvent(QMouseEvent* e)
{
setCursor(Qt::arrowCursor);
}
@@ -791,12 +791,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)
{
@@ -1035,15 +1036,15 @@
kdError(kvs::shell) << "PageView::gotoAnchor() called, but widgetList is empty" \
<< endl; return;
}
-
+
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();
--- branches/work/kviewshell-0.7/kviewshell/shell/pageView.h #593564:593565
@@ -54,10 +54,10 @@
/** Make the selection visible */
void gotoSelection(const TextSelection&);
+ void setViewMode();
+
void clear();
- void setViewMode(int viewmode);
-
/** Return true if the top resp. bottom of the page is visible. */
bool atTop() const;
bool atBottom() const;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic