[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdepim/akregator/src
From:       Frank Osterfeld <frank.osterfeld () kdemail ! net>
Date:       2009-12-05 20:12:01
Message-ID: 1260043921.296936.13037.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1059107 by osterfeld:

merge from 4.3 branch
------------------------------------------------------------------------
r1005313 | osterfeld | 2009-07-31 21:19:26 +0200 (Fri, 31 Jul 2009) | 6 lines

- Move zoom action into tabwidget and send zoom in/out signals to all tabs. I didn't \
find out how to tell a readonly part to zoom, so I casted it to khtmlpart (if the \
                part is khtml). Could be extended for other types.
- Tabs load/save zoom factor
- Add zoom in/out entries in popup menu for tabs.
- Remove dead code (scroll up/down)

Patch by Alexander Elbs plus some minor changes from me
------------------------------------------------------------------------


 M  +14 -11    actionmanagerimpl.cpp  
 M  +7 -21     articleviewer.cpp  
 M  +2 -4      articleviewer.h  
 M  +72 -2     browserframe.cpp  
 M  +6 -0      browserframe.h  
 M  +4 -0      mainwidget.cpp  
 M  +15 -0     tabwidget.cpp  
 M  +4 -0      tabwidget.h  


--- trunk/KDE/kdepim/akregator/src/actionmanagerimpl.cpp #1059106:1059107
@@ -419,17 +419,8 @@
     action = KStandardAction::copy(articleViewer, SLOT(slotCopy()), coll);
     coll->addAction("viewer_copy", action);
 
-    action = coll->addAction("inc_font_sizes");
-    action->setIcon(KIcon("zoom-in"));
-    action->setText(i18n("&Increase Font Sizes"));
-    connect(action, SIGNAL(triggered(bool)), articleViewer, SLOT(slotZoomIn()));
-    action->setShortcut( QKeySequence::ZoomIn );
-
-    action = coll->addAction("dec_font_sizes");
-    action->setIcon(KIcon("zoom-out"));
-    action->setText(i18n("&Decrease Font Sizes"));
-    connect(action, SIGNAL(triggered(bool)), articleViewer, SLOT(slotZoomOut()));
-    action->setShortcut( QKeySequence::ZoomOut );
+    connect(d->tabWidget, SIGNAL(signalZoomInFrame(int)), d->articleViewer, \
SLOT(slotZoomIn(int))); +    connect(d->tabWidget, SIGNAL(signalZoomOutFrame(int)), \
d->articleViewer, SLOT(slotZoomOut(int)));  }
 
 void ActionManagerImpl::initArticleListView(ArticleListView* articleList)
@@ -545,6 +536,18 @@
     action->setText(i18n("&Close Tab"));
     connect(action, SIGNAL(triggered(bool)), d->tabWidget, SLOT(slotCloseTab()));
     action->setShortcuts(KStandardShortcut::close());
+
+    action = coll->addAction("inc_font_sizes");
+    action->setIcon(KIcon("zoom-in"));
+    action->setText(i18n("&Increase Font Sizes"));
+    connect(action, SIGNAL(triggered(bool)), d->tabWidget, SLOT(slotFrameZoomIn()));
+    action->setShortcut( QKeySequence::ZoomIn );
+
+    action = coll->addAction("dec_font_sizes");
+    action->setIcon(KIcon("zoom-out"));
+    action->setText(i18n("&Decrease Font Sizes"));
+    connect(action, SIGNAL(triggered(bool)), d->tabWidget, \
SLOT(slotFrameZoomOut())); +    action->setShortcut( QKeySequence::ZoomOut );
 }
 
 void ActionManagerImpl::initFrameManager(FrameManager* frameManager)
--- trunk/KDE/kdepim/akregator/src/articleviewer.cpp #1059106:1059107
@@ -137,16 +137,6 @@
     action->setText(i18n("&Save Link As..."));
     connect(action, SIGNAL(triggered(bool) ), SLOT(slotSaveLinkAs()));
 
-    action = m_part->actionCollection()->addAction("articleviewer_scroll_up");
-    action->setText(i18n("&Scroll Up"));
-    connect(action, SIGNAL(triggered(bool)), SLOT(slotScrollUp()));
-    action->setShortcuts(KShortcut( "Up" ));
-
-    action = m_part->actionCollection()->addAction("articleviewer_scroll_down");
-    action->setText(i18n("&Scroll Down"));
-    connect(action, SIGNAL(triggered(bool)), SLOT(slotScrollDown()));
-    action->setShortcuts(KShortcut( "Down" ));
-
     updateCss();
 
     connect(this, SIGNAL(selectionChanged()), this, SLOT(slotSelectionChanged()));
@@ -337,18 +327,11 @@
     emit completed();
 }
 
-void ArticleViewer::slotScrollUp()
+void ArticleViewer::slotZoomIn(int id)
 {
-    m_part->view()->scrollBy(0,-10);
-}
+    if (id != 0)
+        return;
 
-void ArticleViewer::slotScrollDown()
-{
-    m_part->view()->scrollBy(0,10);
-}
-
-void ArticleViewer::slotZoomIn()
-{
     int zf = m_part->fontScaleFactor();
     if (zf < 100)
     {
@@ -362,8 +345,11 @@
     }
 }
 
-void ArticleViewer::slotZoomOut()
+void ArticleViewer::slotZoomOut(int id)
 {
+    if (id != 0)
+        return;
+
     int zf = m_part->fontScaleFactor();
     if (zf <= 100)
     {
--- trunk/KDE/kdepim/akregator/src/articleviewer.h #1059106:1059107
@@ -80,10 +80,8 @@
 
     public slots:
 
-        void slotScrollUp();
-        void slotScrollDown();
-        void slotZoomIn();
-        void slotZoomOut();
+        void slotZoomIn(int);
+        void slotZoomOut(int);
         void slotSetZoomFactor(int percent);
         void slotPrint();
 
--- trunk/KDE/kdepim/akregator/src/browserframe.cpp #1059106:1059107
@@ -47,6 +47,7 @@
 #include <kxmlguiclient.h>
 #include <kparts/browserextension.h>
 #include <kparts/part.h>
+#include <khtml_part.h>
 
 #include <cassert>
 
@@ -131,6 +132,65 @@
     emit signalOpenUrlRequest( req );
 }
 
+bool BrowserFrame::hasZoom() const
+{
+    return qobject_cast<KHTMLPart *>( d->part ) != 0;
+}
+
+void BrowserFrame::slotZoomIn(int zoomid)
+{
+    if ( zoomid != id() )
+        return;
+
+    if ( !d->part )
+        return;
+
+    if ( KHTMLPart * const khtml_part = qobject_cast<KHTMLPart *>( d->part ) ) {
+        int zf = khtml_part->fontScaleFactor();
+        if (zf < 100) {
+            zf = zf - (zf % 20) + 20;
+            khtml_part->setFontScaleFactor(zf);
+        } else {
+            zf = zf - (zf % 50) + 50;
+            khtml_part->setFontScaleFactor(zf < 300 ? zf : 300);
+        }
+    }
+}
+
+void BrowserFrame::slotZoomOut(int zoomid)
+{
+    if ( zoomid != id() )
+        return;
+
+    if ( !d->part )
+        return;
+
+    if (  KHTMLPart * const khtml_part = qobject_cast<KHTMLPart *>( d->part ) ) {
+        int zf = khtml_part->fontScaleFactor();
+        if (zf <= 100) {
+            zf = zf - (zf % 20) - 20;
+            khtml_part->setFontScaleFactor(zf > 20 ? zf : 20);
+        } else {
+            zf = zf - (zf % 50) - 50;
+            khtml_part->setFontScaleFactor(zf);
+        }
+    }
+}
+
+int BrowserFrame::getZoomFactor() const
+{
+    if ( KHTMLPart * const khtml_part = qobject_cast<KHTMLPart *>( d->part ) )
+        return khtml_part->fontScaleFactor();
+
+    return -1;
+}
+
+void BrowserFrame::setZoomFactor( int zf )
+{
+    if (KHTMLPart* const khtml_part = qobject_cast<KHTMLPart *>( d->part ) )
+        khtml_part->setFontScaleFactor( zf );
+}
+
 namespace {
 
 enum SeparatorOption {
@@ -198,6 +258,13 @@
         addActionsToMenu( popup, actionGroups.value( "editactions" ), NoSeparator );
     }
 
+    if (hasZoom())
+    {
+        addSeparatorIfNotFirst();
+        popup->addAction( ActionManager::getInstance()->action("inc_font_sizes") );
+        popup->addAction( ActionManager::getInstance()->action("dec_font_sizes") );
+    }
+
     addSeparatorIfNotFirst();
     addActionsToMenu( popup, actionGroups.value( "part" ), NoSeparator );
 
@@ -367,19 +434,22 @@
 
 void BrowserFrame::loadConfig( const KConfigGroup& config, const QString& prefix)
 {
-    QString url = config.readEntry( QString::fromLatin1( "url" ).prepend( prefix ), \
                QString() );
-    QString mimetype = config.readEntry( QString::fromLatin1( "mimetype" ).prepend( \
prefix ), QString() ); +    const QString url = config.readEntry( \
QString::fromLatin1( "url" ).prepend( prefix ), QString() ); +    const QString \
mimetype = config.readEntry( QString::fromLatin1( "mimetype" ).prepend( prefix ), \
QString() ); +    const int zf = config.readEntry( QString::fromLatin1( "zoom" \
).prepend( prefix ), 100 );  OpenUrlRequest req(url);
     KParts::OpenUrlArguments args;
     args.setMimeType(mimetype);
     req.setArgs(args);
     openUrl(req);
+    setZoomFactor( zf );
 }
 
 void BrowserFrame::saveConfig( KConfigGroup& config, const QString& prefix)
 {
     config.writeEntry( QString::fromLatin1( "url" ).prepend( prefix ), url().url() \
                );
     config.writeEntry( QString::fromLatin1( "mimetype" ).prepend( prefix ), \
d->mimetype ); +    config.writeEntry( QString::fromLatin1( "zoom" ).prepend( prefix \
), getZoomFactor() );  }
 
 #include "browserframe.moc"
--- trunk/KDE/kdepim/akregator/src/browserframe.h #1059106:1059107
@@ -68,6 +68,10 @@
 
         void loadConfig( const KConfigGroup& config, const QString& prefix);
         void saveConfig( KConfigGroup& config, const QString& prefix);
+
+        bool hasZoom() const;
+        int  getZoomFactor() const;
+        void setZoomFactor(int);
     public slots:
 
         void slotHistoryForward();
@@ -80,6 +84,8 @@
         void slotPaletteOrFontChanged();
         void slotOpenLinkInBrowser();
         void slotOpenLinkInNewTab();
+        void slotZoomIn(int);
+        void slotZoomOut(int);
 
     private slots:
 
--- trunk/KDE/kdepim/akregator/src/mainwidget.cpp #1059106:1059107
@@ -343,6 +343,8 @@
     BrowserFrame* frame = new BrowserFrame(m_tabWidget);
 
     connect( m_part, SIGNAL(signalSettingsChanged()), frame, \
SLOT(slotPaletteOrFontChanged())); +    connect( m_tabWidget, \
SIGNAL(signalZoomInFrame(int)), frame, SLOT(slotZoomIn(int))); +    connect( \
m_tabWidget, SIGNAL(signalZoomOutFrame(int)), frame, SLOT(slotZoomOut(int)));  
     Kernel::self()->frameManager()->slotAddFrame(frame);
 
@@ -1114,6 +1116,8 @@
         frame->loadConfig( config, framePrefix + QLatin1Char( '_' ) );
 
         connect( m_part, SIGNAL(signalSettingsChanged()), frame, \
SLOT(slotPaletteOrFontChanged())); +        connect( m_tabWidget, \
SIGNAL(signalZoomInFrame(int)), frame, SLOT(slotZoomIn(int))); +        connect( \
m_tabWidget, SIGNAL(signalZoomOutFrame(int)), frame, SLOT(slotZoomOut(int)));  
         Kernel::self()->frameManager()->slotAddFrame(frame);
 
--- trunk/KDE/kdepim/akregator/src/tabwidget.cpp #1059106:1059107
@@ -179,6 +179,21 @@
     return w ? frames.value(w) : 0;
 }
 
+void TabWidget::slotFrameZoomIn()
+{
+    if ( !d->currentFrame() )
+        return;
+    emit signalZoomInFrame( d->currentFrame()->id() );
+}
+
+void TabWidget::slotFrameZoomOut()
+{
+    if ( !d->currentFrame() )
+        return;
+    emit signalZoomOutFrame( d->currentFrame()->id() );
+}
+
+
 void TabWidget::slotTabChanged(int index)
 {
 
--- trunk/KDE/kdepim/akregator/src/tabwidget.h #1059106:1059107
@@ -54,11 +54,15 @@
         void slotAddFrame(Akregator::Frame* f);
         void slotRemoveFrame(int frameId);
         void slotSelectFrame(int frameId);
+        void slotFrameZoomIn();
+        void slotFrameZoomOut();
 
     Q_SIGNALS:
         void signalCurrentFrameChanged(int);
         void signalRemoveFrameRequest(int);
         void signalOpenUrlRequest(Akregator::OpenUrlRequest&);
+        void signalZoomInFrame(int);
+        void signalZoomOutFrame(int);
 
     private:
         /*reimpl*/ void tabInserted( int );


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic