[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