okular
pagecontroller.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "pagecontroller_p.h"
00011
00012
00013 #include <kglobal.h>
00014 #include <threadweaver/ThreadWeaver.h>
00015
00016
00017 #include "page_p.h"
00018 #include "rotationjob_p.h"
00019
00020 K_GLOBAL_STATIC( Okular::PageController, page_controller_self )
00021
00022 using namespace Okular;
00023
00024 PageController::PageController()
00025 : QObject()
00026 {
00027 }
00028
00029 PageController::~PageController()
00030 {
00031 }
00032
00033 PageController * PageController::self()
00034 {
00035 return page_controller_self;
00036 }
00037
00038 void PageController::addRotationJob(RotationJob *job)
00039 {
00040 initWeaver();
00041 ThreadWeaver::Weaver::instance()->enqueue(job);
00042 }
00043
00044 void PageController::imageRotationDone(ThreadWeaver::Job *j)
00045 {
00046 RotationJob *job = qobject_cast< RotationJob * >(j);
00047
00048 if ( !job )
00049 return;
00050
00051 if ( job->page() )
00052 {
00053 job->page()->imageRotationDone( job );
00054
00055 emit rotationFinished( job->page()->m_number );
00056 }
00057
00058 job->deleteLater();
00059 }
00060
00061 void PageController::initWeaver()
00062 {
00063 static bool weaverInited = false;
00064 if ( weaverInited )
00065 return;
00066
00067 connect( ThreadWeaver::Weaver::instance(), SIGNAL( jobDone(ThreadWeaver::Job*) ),
00068 this, SLOT( imageRotationDone(ThreadWeaver::Job*) ) );
00069
00070 weaverInited = true;
00071 }
00072
00073 #include "pagecontroller_p.moc"