From 44aa2d708801dfc3ec54ebb901a81fbef77fa397 Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Mon, 24 Dec 2007 15:02:32 +0000 Subject: [PATCH] Globally store an icon loader different that the global one (eg the KPart one); this way we can load our custom icons when embedded in other shells than ours. svn path=/trunk/KDE/kdegraphics/okular/; revision=752473 --- part.cpp | 3 +++ ui/annotationwidgets.cpp | 6 ++++-- ui/guiutils.cpp | 24 ++++++++++++++++++++++++ ui/guiutils.h | 5 +++++ ui/pagepainter.cpp | 9 +++++---- ui/pageviewutils.cpp | 3 ++- 6 files changed, 43 insertions(+), 7 deletions(-) diff --git a/part.cpp b/part.cpp index 5193bbde8..4bf5f414e 100644 --- a/part.cpp +++ b/part.cpp @@ -75,6 +75,7 @@ #include "ui/findbar.h" #include "ui/sidebar.h" #include "ui/fileprinterpreview.h" +#include "ui/guiutils.h" #include "conf/preferencesdialog.h" #include "settings.h" #include "core/bookmarkmanager.h" @@ -150,6 +151,8 @@ m_cliPresentation(false), m_generatorGuiClient(0) // we need an instance setComponentData(okularPartFactory::componentData()); + GuiUtils::setIconLoader( iconLoader() ); + m_sidebar = new Sidebar( parentWidget ); setWidget( m_sidebar ); diff --git a/ui/annotationwidgets.cpp b/ui/annotationwidgets.cpp index c00488c54..c64a7382c 100644 --- a/ui/annotationwidgets.cpp +++ b/ui/annotationwidgets.cpp @@ -23,6 +23,8 @@ #include #include +#include "guiutils.h" + PixmapPreviewSelector::PixmapPreviewSelector( QWidget * parent ) : QWidget( parent ) { @@ -102,9 +104,9 @@ void PixmapPreviewSelector::iconComboChanged( const QString& icon ) } QString path; - QPixmap pixmap = KIconLoader::global()->loadIcon( m_icon.toLower(), KIconLoader::User, m_previewSize, KIconLoader::DefaultState, QStringList(), &path, true ); + QPixmap pixmap = GuiUtils::iconLoader()->loadIcon( m_icon.toLower(), KIconLoader::User, m_previewSize, KIconLoader::DefaultState, QStringList(), &path, true ); if ( path.isEmpty() ) - pixmap = KIconLoader::global()->loadIcon( m_icon.toLower(), KIconLoader::NoGroup, m_previewSize ); + pixmap = GuiUtils::iconLoader()->loadIcon( m_icon.toLower(), KIconLoader::NoGroup, m_previewSize ); m_iconLabel->setPixmap( pixmap ); emit iconChanged( m_icon ); diff --git a/ui/guiutils.cpp b/ui/guiutils.cpp index 70517371a..46fe81d56 100644 --- a/ui/guiutils.cpp +++ b/ui/guiutils.cpp @@ -10,11 +10,25 @@ #include "guiutils.h" // qt/kde includes +#include +#include #include // local includes #include "core/annotations.h" +struct GuiUtilsHelper +{ + GuiUtilsHelper() + : il( 0 ) + { + } + + KIconLoader * il; +}; + +K_GLOBAL_STATIC( GuiUtilsHelper, s_data ) + namespace GuiUtils { QString captionForAnnotation( const Okular::Annotation * ann ) @@ -124,4 +138,14 @@ bool canBeMoved( const Okular::Annotation * ann ) return false; } +void setIconLoader( KIconLoader * loader ) +{ + s_data->il = loader; +} + +KIconLoader* iconLoader() +{ + return s_data->il ? s_data->il : KIconLoader::global(); +} + } diff --git a/ui/guiutils.h b/ui/guiutils.h index d03821575..876822065 100644 --- a/ui/guiutils.h +++ b/ui/guiutils.h @@ -12,6 +12,8 @@ #include +class KIconLoader; + namespace Okular { class Annotation; } @@ -30,6 +32,9 @@ namespace GuiUtils QString prettyToolTip( const Okular::Annotation * annotation ); bool canBeMoved( const Okular::Annotation * annotation ); + + void setIconLoader( KIconLoader * loader ); + KIconLoader* iconLoader(); } diff --git a/ui/pagepainter.cpp b/ui/pagepainter.cpp index 343a2ccca..e8f345984 100644 --- a/ui/pagepainter.cpp +++ b/ui/pagepainter.cpp @@ -28,6 +28,7 @@ #include "core/page.h" #include "core/annotations.h" #include "core/utils.h" +#include "guiutils.h" #include "settings.h" K_GLOBAL_STATIC_WITH_ARGS( QPixmap, busyPixmap, ( KIconLoader::global()->loadIcon("graphics-viewer-document", KIconLoader::NoGroup, 32, KIconLoader::DefaultState, QStringList(), 0, true) ) ) @@ -529,9 +530,9 @@ void PagePainter::paintPageOnPainter( QPainter * destPainter, const Okular::Page { // get pixmap, colorize and alpha-blend it QString path; - QPixmap pixmap = KIconLoader::global()->loadIcon( text->textIcon().toLower(), KIconLoader::User, 32, KIconLoader::DefaultState, QStringList(), &path, true ); + QPixmap pixmap = GuiUtils::iconLoader()->loadIcon( text->textIcon().toLower(), KIconLoader::User, 32, KIconLoader::DefaultState, QStringList(), &path, true ); if ( path.isEmpty() ) - pixmap = KIconLoader::global()->loadIcon( text->textIcon().toLower(), KIconLoader::NoGroup, 32 ); + pixmap = GuiUtils::iconLoader()->loadIcon( text->textIcon().toLower(), KIconLoader::NoGroup, 32 ); QImage scaledImage; QRect annotBoundary2 = QRect( annotBoundary.topLeft(), QSize( TEXTANNOTATION_ICONSIZE, TEXTANNOTATION_ICONSIZE ) ); QRect annotRect2 = annotBoundary2.intersect( limits ); @@ -559,9 +560,9 @@ void PagePainter::paintPageOnPainter( QPainter * destPainter, const Okular::Page // get pixmap and alpha blend it if needed QString path; - QPixmap pixmap = KIconLoader::global()->loadIcon( stamp->stampIconName().toLower(), KIconLoader::User, qMin( annotBoundary.width(), annotBoundary.height() ), KIconLoader::DefaultState, QStringList(), &path, true ); + QPixmap pixmap = GuiUtils::iconLoader()->loadIcon( stamp->stampIconName().toLower(), KIconLoader::User, qMin( annotBoundary.width(), annotBoundary.height() ), KIconLoader::DefaultState, QStringList(), &path, true ); if ( path.isEmpty() ) - pixmap = KIconLoader::global()->loadIcon( stamp->stampIconName().toLower(), KIconLoader::NoGroup, qMin( annotBoundary.width(), annotBoundary.height() ) ); + pixmap = GuiUtils::iconLoader()->loadIcon( stamp->stampIconName().toLower(), KIconLoader::NoGroup, qMin( annotBoundary.width(), annotBoundary.height() ) ); QImage scaledImage; scalePixmapOnImage( scaledImage, &pixmap, annotBoundary.width(), annotBoundary.height(), innerRect, QImage::Format_ARGB32 ); diff --git a/ui/pageviewutils.cpp b/ui/pageviewutils.cpp index b632421ce..e26580d73 100644 --- a/ui/pageviewutils.cpp +++ b/ui/pageviewutils.cpp @@ -30,6 +30,7 @@ // local includes #include "formwidgets.h" +#include "guiutils.h" #include "core/page.h" #include "settings.h" @@ -348,7 +349,7 @@ ToolBarButton::ToolBarButton( QWidget * parent, const AnnotationToolItem &item ) setAutoRaise( true ); resize( buttonSize, buttonSize ); setIconSize( QSize( iconSize, iconSize ) ); - setIcon( KIcon( item.pixmap ) ); + setIcon( KIcon( item.pixmap, GuiUtils::iconLoader() ) ); // set shortcut if defined if ( !item.shortcut.isEmpty() ) setShortcut( QKeySequence( item.shortcut ) );