30
30
#include <lib/document/documentfactory.h>
31
31
#include <lib/semanticinfo/sorteddirmodel.h>
36
36
struct DocumentInfoProviderPrivate {
37
SortedDirModel* mDirModel;
37
SortedDirModel* mDirModel;
41
40
DocumentInfoProvider::DocumentInfoProvider(SortedDirModel* model)
42
41
: AbstractDocumentInfoProvider(model)
43
, d(new DocumentInfoProviderPrivate) {
45
connect(DocumentFactory::instance(), SIGNAL(documentBusyStateChanged(const KUrl&, bool)),
46
SLOT(emitBusyStateChanged(const KUrl&, bool)) );
48
connect(DocumentFactory::instance(), SIGNAL(documentChanged(const KUrl&)),
49
SLOT(emitDocumentChanged(const KUrl&)) );
53
DocumentInfoProvider::~DocumentInfoProvider() {
58
void DocumentInfoProvider::thumbnailForDocument(const KUrl& url, ThumbnailGroup::Enum group, QPixmap* outPix, QSize* outFullSize) const {
60
Q_ASSERT(outFullSize);
62
*outFullSize = QSize();
63
DocumentFactory* factory = DocumentFactory::instance();
64
const int pixelSize = ThumbnailGroup::pixelSize(group);
66
if (!factory->hasUrl(url)) {
70
Document::Ptr doc = factory->load(url);
71
if (doc->loadingState() != Document::Loaded) {
75
QImage image = doc->image();
76
if (image.width() > pixelSize || image.height() > pixelSize) {
77
image = image.scaled(pixelSize, pixelSize, Qt::KeepAspectRatio);
79
*outPix = QPixmap::fromImage(image);
80
*outFullSize = doc->size();
84
bool DocumentInfoProvider::isModified(const KUrl& url) {
85
DocumentFactory* factory = DocumentFactory::instance();
87
if (factory->hasUrl(url)) {
88
Document::Ptr doc = factory->load(url);
89
return doc->loadingState() == Document::Loaded && doc->isModified();
96
bool DocumentInfoProvider::isBusy(const KUrl& url) {
97
DocumentFactory* factory = DocumentFactory::instance();
99
if (factory->hasUrl(url)) {
100
Document::Ptr doc = factory->load(url);
101
return doc->isBusy();
108
void DocumentInfoProvider::emitBusyStateChanged(const KUrl& url, bool busy) {
109
QModelIndex index = d->mDirModel->indexForUrl(url);
110
if (!index.isValid()) {
113
busyStateChanged(index, busy);
117
void DocumentInfoProvider::emitDocumentChanged(const KUrl& url) {
118
QModelIndex index = d->mDirModel->indexForUrl(url);
119
if (!index.isValid()) {
122
documentChanged(index);
42
, d(new DocumentInfoProviderPrivate)
45
connect(DocumentFactory::instance(), SIGNAL(documentBusyStateChanged(KUrl, bool)),
46
SLOT(emitBusyStateChanged(KUrl, bool)));
48
connect(DocumentFactory::instance(), SIGNAL(documentChanged(KUrl)),
49
SLOT(emitDocumentChanged(KUrl)));
52
DocumentInfoProvider::~DocumentInfoProvider()
57
void DocumentInfoProvider::thumbnailForDocument(const KUrl& url, ThumbnailGroup::Enum group, QPixmap* outPix, QSize* outFullSize) const
60
Q_ASSERT(outFullSize);
62
*outFullSize = QSize();
63
DocumentFactory* factory = DocumentFactory::instance();
64
const int pixelSize = ThumbnailGroup::pixelSize(group);
66
if (!factory->hasUrl(url)) {
70
Document::Ptr doc = factory->load(url);
71
if (doc->loadingState() != Document::Loaded) {
75
QImage image = doc->image();
76
if (image.width() > pixelSize || image.height() > pixelSize) {
77
image = image.scaled(pixelSize, pixelSize, Qt::KeepAspectRatio);
79
*outPix = QPixmap::fromImage(image);
80
*outFullSize = doc->size();
83
bool DocumentInfoProvider::isModified(const KUrl& url)
85
DocumentFactory* factory = DocumentFactory::instance();
87
if (factory->hasUrl(url)) {
88
Document::Ptr doc = factory->load(url);
89
return doc->loadingState() == Document::Loaded && doc->isModified();
95
bool DocumentInfoProvider::isBusy(const KUrl& url)
97
DocumentFactory* factory = DocumentFactory::instance();
99
if (factory->hasUrl(url)) {
100
Document::Ptr doc = factory->load(url);
101
return doc->isBusy();
107
void DocumentInfoProvider::emitBusyStateChanged(const KUrl& url, bool busy)
109
QModelIndex index = d->mDirModel->indexForUrl(url);
110
if (!index.isValid()) {
113
busyStateChanged(index, busy);
116
void DocumentInfoProvider::emitDocumentChanged(const KUrl& url)
118
QModelIndex index = d->mDirModel->indexForUrl(url);
119
if (!index.isValid()) {
122
documentChanged(index);