okular/core/fontinfo.cpp
Pino Toscano e5037f45b1 Refator a bit the way Document and the generators use to read the font information from a document.
Instead of having a synchronous function that extracts all the information at once, use a function to read the fonts of a single page.
This way, we can get all the result step by step (aka page by page), and possibly in an asynchronous way.
The resuls of the font "scanning" are sent via signals, as well the end of the work.
So, instead of block waiting for the results of all the document at once, the Fonts tab in the properties dialog can have a progress bar with the progress, and the results (the fonts) that are added incrementally to the list.

Only two minor things are left:
- the process is always asynchronous at the moment, as the only generator that can provide this kind of information is the Poppler one (safe)
- there is no check for duplicate fonts
But they should be easy to solve.

svn path=/trunk/KDE/kdegraphics/okular/; revision=685002
2007-07-07 20:35:01 +00:00

112 lines
2.2 KiB
C++

/***************************************************************************
* Copyright (C) 2007 by Pino Toscano <pino@kde.org> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
***************************************************************************/
// local includes
#include "fontinfo.h"
using namespace Okular;
class Okular::FontInfoPrivate
: public QSharedData
{
public:
FontInfoPrivate()
: name( 0 ), type( FontInfo::Unknown ), embedded( true )
{
}
bool operator==( const FontInfoPrivate &rhs ) const
{
return name == rhs.name &&
type == rhs.type &&
embedded == rhs.embedded &&
file == rhs.file;
}
QString name;
FontInfo::FontType type;
bool embedded;
QString file;
};
FontInfo::FontInfo()
: d( new FontInfoPrivate )
{
}
FontInfo::FontInfo( const FontInfo &fi )
: d( fi.d )
{
}
FontInfo::~FontInfo()
{
}
QString FontInfo::name() const
{
return d->name;
}
void FontInfo::setName( const QString& name )
{
d->name = name;
}
FontInfo::FontType FontInfo::type() const
{
return d->type;
}
void FontInfo::setType( FontInfo::FontType type )
{
d->type = type;
}
bool FontInfo::isEmbedded() const
{
return d->embedded;
}
void FontInfo::setEmbedded( bool embedded )
{
d->embedded = embedded;
}
QString FontInfo::file() const
{
return d->file;
}
void FontInfo::setFile( const QString& file )
{
d->file = file;
}
bool FontInfo::operator==( const FontInfo &fi ) const
{
return *d == *fi.d;
}
bool FontInfo::operator!=( const FontInfo &fi ) const
{
return !operator==( fi );
}
FontInfo& FontInfo::operator=( const FontInfo &fi )
{
if ( this == &fi )
return *this;
d = fi.d;
return *this;
}