Krita Source Code Documentation
Loading...
Searching...
No Matches
KisIdleWatcher Class Reference

#include <kis_idle_watcher.h>

+ Inheritance diagram for KisIdleWatcher:

Classes

struct  Private
 

Signals

void imageModified ()
 
void startedIdleMode ()
 

Public Member Functions

void forceImageModified ()
 
bool isCounting () const
 
bool isIdle () const
 
 KisIdleWatcher (int delay=200, QObject *parent=0)
 
void restartCountdown ()
 
void setTrackedImage (KisImageSP image)
 
void setTrackedImages (const QVector< KisImageSP > &images)
 
void triggerCountdownNoDelay ()
 
 ~KisIdleWatcher () override
 

Private Slots

void slotIdleCheckTick ()
 
void slotImageModified ()
 
void startIdleCheck ()
 
void stopIdleCheck ()
 

Private Attributes

const QScopedPointer< Privatem_d
 

Detailed Description

Definition at line 18 of file kis_idle_watcher.h.

Constructor & Destructor Documentation

◆ KisIdleWatcher()

KisIdleWatcher::KisIdleWatcher ( int delay = 200,
QObject * parent = 0 )

Definition at line 44 of file kis_idle_watcher.cpp.

45 : QObject(parent), m_d(new Private(delay, this))
46{
47 connect(&m_d->imageModifiedCompressor, SIGNAL(timeout()), SLOT(startIdleCheck()));
48 connect(&m_d->idleCheckTimer, SIGNAL(timeout()), SLOT(slotIdleCheckTick()));
49}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
const QScopedPointer< Private > m_d

References connect(), m_d, slotIdleCheckTick(), and startIdleCheck().

◆ ~KisIdleWatcher()

KisIdleWatcher::~KisIdleWatcher ( )
override

Definition at line 51 of file kis_idle_watcher.cpp.

52{
53}

Member Function Documentation

◆ forceImageModified()

void KisIdleWatcher::forceImageModified ( )
inline

Definition at line 32 of file kis_idle_watcher.h.

◆ imageModified

void KisIdleWatcher::imageModified ( )
signal

◆ isCounting()

bool KisIdleWatcher::isCounting ( ) const

Definition at line 71 of file kis_idle_watcher.cpp.

72{
73 return m_d->idleCheckTimer.isActive();
74}

References m_d.

◆ isIdle()

bool KisIdleWatcher::isIdle ( ) const

Definition at line 55 of file kis_idle_watcher.cpp.

56{
57 bool idle = true;
58
59 Q_FOREACH (KisImageSP image, m_d->trackedImages) {
60 if (!image) continue;
61
62 if (!image->isIdle()) {
63 idle = false;
64 break;
65 }
66 }
67
68 return idle;
69}
bool isIdle(bool allowLocked=false)
Definition kis_image.cc:788

References KisImage::isIdle(), and m_d.

◆ restartCountdown()

void KisIdleWatcher::restartCountdown ( )

Definition at line 100 of file kis_idle_watcher.cpp.

101{
103 m_d->imageModifiedCompressor.start();
104}

References m_d, and stopIdleCheck().

◆ setTrackedImage()

void KisIdleWatcher::setTrackedImage ( KisImageSP image)

Definition at line 93 of file kis_idle_watcher.cpp.

94{
96 images << image;
97 setTrackedImages(images);
98}
void setTrackedImages(const QVector< KisImageSP > &images)

References setTrackedImages().

◆ setTrackedImages()

void KisIdleWatcher::setTrackedImages ( const QVector< KisImageSP > & images)

Definition at line 76 of file kis_idle_watcher.cpp.

77{
78 m_d->connectionsStore.clear();
79 m_d->trackedImages.clear();
80
81 Q_FOREACH (KisImageSP image, images) {
82 if (image) {
83 m_d->trackedImages << image;
84 m_d->connectionsStore.addConnection(image, SIGNAL(sigImageModified()),
85 this, SLOT(slotImageModified()));
86
87 m_d->connectionsStore.addConnection(image, SIGNAL(sigIsolatedModeChanged()),
88 this, SLOT(slotImageModified()));
89 }
90 }
91}

References m_d, and slotImageModified().

◆ slotIdleCheckTick

void KisIdleWatcher::slotIdleCheckTick ( )
privateslot

Definition at line 133 of file kis_idle_watcher.cpp.

134{
135 if (isIdle()) {
136 if (m_d->idleCheckCounter < 0 ||
137 m_d->idleCheckCounter >= Private::IDLE_CHECK_COUNT) {
138
140 if (!m_d->trackedImages.isEmpty()) {
141 Q_EMIT startedIdleMode();
142 }
143 } else {
144 m_d->idleCheckCounter++;
145 m_d->idleCheckTimer.start();
146 }
147 } else {
148 if (m_d->idleCheckCounter >= 0) {
150 } else {
151 m_d->idleCheckTimer.start();
152 }
153 }
154}
void startedIdleMode()
bool isIdle() const
static const int IDLE_CHECK_COUNT

References KisIdleWatcher::Private::IDLE_CHECK_COUNT, isIdle(), m_d, restartCountdown(), startedIdleMode(), and stopIdleCheck().

◆ slotImageModified

void KisIdleWatcher::slotImageModified ( )
privateslot

Definition at line 113 of file kis_idle_watcher.cpp.

114{
115 if (m_d->idleCheckCounter >= 0) {
117 }
118 Q_EMIT imageModified();
119}
void imageModified()

References imageModified(), m_d, and restartCountdown().

◆ startedIdleMode

void KisIdleWatcher::startedIdleMode ( )
signal

◆ startIdleCheck

void KisIdleWatcher::startIdleCheck ( )
privateslot

Definition at line 121 of file kis_idle_watcher.cpp.

122{
123 m_d->idleCheckCounter = 0;
124 m_d->idleCheckTimer.start();
125}

References m_d.

◆ stopIdleCheck

void KisIdleWatcher::stopIdleCheck ( )
privateslot

Definition at line 127 of file kis_idle_watcher.cpp.

128{
129 m_d->idleCheckTimer.stop();
130 m_d->idleCheckCounter = 0;
131}

References m_d.

◆ triggerCountdownNoDelay()

void KisIdleWatcher::triggerCountdownNoDelay ( )

Definition at line 106 of file kis_idle_watcher.cpp.

107{
109 m_d->idleCheckCounter = -1;
110 m_d->idleCheckTimer.start();
111}

References m_d, and stopIdleCheck().

Member Data Documentation

◆ m_d

const QScopedPointer<Private> KisIdleWatcher::m_d
private

Definition at line 49 of file kis_idle_watcher.h.


The documentation for this class was generated from the following files: