[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