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

#include <kis_delayed_save_dialog.h>

+ Inheritance diagram for KisDelayedSaveDialog:

Public Types

enum  ResultType { Rejected = QDialog::Rejected , Accepted = QDialog::Accepted , Ignored = 2 }
 
enum  Type { SaveDialog , GeneralDialog , ForcedDialog }
 
- Public Types inherited from KoDialog
enum  ButtonCode {
  None = 0x00000000 , Help = 0x00000001 , Default = 0x00000002 , Ok = 0x00000004 ,
  Apply = 0x00000008 , Try = 0x00000010 , Cancel = 0x00000020 , Close = 0x00000040 ,
  No = 0x00000080 , Yes = 0x00000100 , Reset = 0x00000200 , Details = 0x00000400 ,
  User1 = 0x00001000 , User2 = 0x00002000 , User3 = 0x00004000 , NoDefault = 0x00008000
}
 
enum  ButtonPopupMode { InstantPopup = 0 , DelayedPopup = 1 }
 
enum  CaptionFlag { NoCaptionFlags = 0 , AppNameCaption = 1 , ModifiedCaption = 2 , HIGCompliantCaption = AppNameCaption }
 

Public Member Functions

void blockIfImageIsBusy ()
 
bool checkImageIdle ()
 
 KisDelayedSaveDialog (KisImageSP image, Type type, int busyWait, QWidget *parent=nullptr)
 
 Private (KisImageSP _image, int _busyWait, Type _type)
 
 ~KisDelayedSaveDialog () override
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 
- Public Member Functions inherited from KoDialog
QPushButton * button (ButtonCode id) const
 
QIcon buttonIcon (ButtonCode id) const
 
QString buttonText (ButtonCode id) const
 
QString buttonToolTip (ButtonCode id) const
 
QString buttonWhatsThis (ButtonCode id) const
 
ButtonCode defaultButton () const
 
QString helpLinkText () const
 
void incrementInitialSize (const QSize &size)
 
bool isButtonEnabled (ButtonCode id) const
 
 KoDialog (QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags())
 
QWidget * mainWidget ()
 
QSize minimumSizeHint () const override
 
void setButtonFocus (ButtonCode id)
 
void setButtonGuiItem (ButtonCode id, const KGuiItem &item)
 
void setButtonIcon (ButtonCode id, const QIcon &icon)
 
void setButtons (ButtonCodes buttonMask)
 
void setButtonsOrientation (Qt::Orientation orientation)
 
void setButtonText (ButtonCode id, const QString &text)
 
void setButtonToolTip (ButtonCode id, const QString &text)
 
void setButtonWhatsThis (ButtonCode id, const QString &text)
 
void setDefaultButton (ButtonCode id)
 
void setEscapeButton (ButtonCode id)
 
void setInitialSize (const QSize &size)
 
void setMainWidget (QWidget *widget)
 
void showButton (ButtonCode id, bool state)
 
void showButtonSeparator (bool state)
 
QSize sizeHint () const override
 
 ~KoDialog () override
 

Public Attributes

int busyWait
 
KisImageSP image
 
Type type
 
QTimer updateTimer
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 

Private Slots

void slotCancelRequested ()
 
void slotIgnoreRequested ()
 
void slotTimerTimeout ()
 

Private Attributes

const QScopedPointer< Privatem_d
 
WdgDelayedSaveDialogui
 

Additional Inherited Members

- Public Slots inherited from KoDialog
void delayedDestruct ()
 
void enableButton (ButtonCode id, bool state)
 
void enableButtonApply (bool state)
 
void enableButtonCancel (bool state)
 
void enableButtonOk (bool state)
 
void enableLinkedHelp (bool state)
 
bool isDetailsWidgetVisible () const
 
virtual void setCaption (const QString &caption)
 
virtual void setCaption (const QString &caption, bool modified)
 
void setDetailsWidget (QWidget *detailsWidget)
 
void setDetailsWidgetVisible (bool visible)
 
void setHelp (const QString &anchor, const QString &appname=QString())
 
void setHelpLinkText (const QString &text)
 
virtual void setPlainCaption (const QString &caption)
 
- Signals inherited from KoDialog
void aboutToShowDetails ()
 
void applyClicked ()
 
void buttonClicked (KoDialog::ButtonCode button)
 
void cancelClicked ()
 
void closeClicked ()
 
void defaultClicked ()
 
void finished ()
 
void helpClicked ()
 
void hidden ()
 
void layoutHintChanged ()
 
void noClicked ()
 
void okClicked ()
 
void resetClicked ()
 
void tryClicked ()
 
void user1Clicked ()
 
void user2Clicked ()
 
void user3Clicked ()
 
void yesClicked ()
 
- Static Public Member Functions inherited from KoDialog
static int groupSpacingHint ()
 
static QString makeStandardCaption (const QString &userCaption, QWidget *window=0, CaptionFlags flags=HIGCompliantCaption)
 
static int marginHint ()
 
static void resizeLayout (QLayout *lay, int margin, int spacing)
 
static void resizeLayout (QWidget *widget, int margin, int spacing)
 
static int spacingHint ()
 
- Protected Slots inherited from KoDialog
virtual void slotButtonClicked (int button)
 
- Protected Member Functions inherited from KoDialog
void closeEvent (QCloseEvent *e) override
 
void hideEvent (QHideEvent *) override
 
void keyPressEvent (QKeyEvent *) override
 
void showEvent (QShowEvent *e) override
 

Detailed Description

Definition at line 19 of file kis_delayed_save_dialog.cpp.

Member Enumeration Documentation

◆ ResultType

Enumerator
Rejected 
Accepted 
Ignored 

Definition at line 22 of file kis_delayed_save_dialog.h.

22 {
23 Rejected = QDialog::Rejected,
24 Accepted = QDialog::Accepted,
25 Ignored = 2
26 };

◆ Type

Enumerator
SaveDialog 
GeneralDialog 
ForcedDialog 

Definition at line 28 of file kis_delayed_save_dialog.h.

Constructor & Destructor Documentation

◆ KisDelayedSaveDialog()

KisDelayedSaveDialog::KisDelayedSaveDialog ( KisImageSP image,
Type type,
int busyWait,
QWidget * parent = nullptr )
explicit

Definition at line 46 of file kis_delayed_save_dialog.cpp.

47 : KoDialog(parent)
49 , m_d(new Private(image, busyWait, type))
50{
52
54
55 if (type == SaveDialog) {
57 setButtonText(KoDialog::Ok, i18n("Save without waiting"));
58 setButtonText(KoDialog::Cancel, i18n("Cancel operation and save"));
59 setButtonText(KoDialog::User1, i18n("Close, do not save"));
60
62
64
65 connect(this, &KoDialog::user1Clicked, this, &KisDelayedSaveDialog::reject);
66 } else if (type == GeneralDialog) {
68 connect(this, &KoDialog::cancelClicked, &KisDelayedSaveDialog::reject);
69 } else { // type == ForcedDialog, disable closing
71 setWindowFlags(windowFlags() & ~Qt::WindowCloseButtonHint);
72 }
73
74 connect(&m_d->updateTimer, &QTimer::timeout, this, &KisDelayedSaveDialog::slotTimerTimeout);
75
76 m_d->image->compositeProgressProxy()->addProxy(ui->progressBar);
77
78 resize(sizeHint());
79}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void user1Clicked()
void setMainWidget(QWidget *widget)
Definition KoDialog.cpp:354
void setButtonText(ButtonCode id, const QString &text)
Definition KoDialog.cpp:648
QSize sizeHint() const override
Definition KoDialog.cpp:377
void setButtons(ButtonCodes buttonMask)
Definition KoDialog.cpp:195
void cancelClicked()
@ Ok
Show Ok button. (this button accept()s the dialog; result set to QDialog::Accepted)
Definition KoDialog.h:127
@ User1
Show User defined button 1.
Definition KoDialog.h:136
@ Cancel
Show Cancel-button. (this button reject()s the dialog; result set to QDialog::Rejected)
Definition KoDialog.h:130
KoDialog(QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags())
Definition KoDialog.cpp:176
void okClicked()
#define KIS_ASSERT_RECOVER_NOOP(cond)
Definition kis_assert.h:97
const QScopedPointer< Private > m_d
WdgDelayedSaveDialog * ui

References KoDialog::Cancel, KoDialog::cancelClicked(), connect(), GeneralDialog, image, KIS_ASSERT_RECOVER_NOOP, m_d, KoDialog::None, KoDialog::Ok, KoDialog::okClicked(), SaveDialog, KoDialog::setButtons(), KoDialog::setButtonText(), KoDialog::setMainWidget(), KoDialog::sizeHint(), slotCancelRequested(), slotIgnoreRequested(), slotTimerTimeout(), type, ui, KoDialog::User1, and KoDialog::user1Clicked().

◆ ~KisDelayedSaveDialog()

KisDelayedSaveDialog::~KisDelayedSaveDialog ( )
override

Definition at line 81 of file kis_delayed_save_dialog.cpp.

82{
83 m_d->image->compositeProgressProxy()->removeProxy(ui->progressBar);
84 delete ui;
85}

References m_d, and ui.

Member Function Documentation

◆ blockIfImageIsBusy()

void KisDelayedSaveDialog::blockIfImageIsBusy ( )

Definition at line 87 of file kis_delayed_save_dialog.cpp.

88{
89 if (m_d->checkImageIdle()) {
90 setResult(Accepted);
91 return;
92 }
93
94 m_d->image->requestStrokeEnd();
95
96 QElapsedTimer t;
97 t.start();
98
99 while (t.elapsed() < m_d->busyWait) {
100 QApplication::processEvents(QEventLoop::ExcludeUserInputEvents);
101
102 if (m_d->checkImageIdle()) {
103 setResult(Accepted);
104 return;
105 }
106
107 QThread::yieldCurrentThread();
108 }
109
110 m_d->updateTimer.start(200);
111 exec();
112 m_d->updateTimer.stop();
113}

References Accepted, and m_d.

◆ checkImageIdle()

bool KisDelayedSaveDialog::checkImageIdle ( )
inline

Definition at line 26 of file kis_delayed_save_dialog.cpp.

26 {
27 const bool allowLocked = type != SaveDialog;
28 return image->isIdle(allowLocked);
29 }
bool isIdle(bool allowLocked=false)
Definition kis_image.cc:788

References KisImage::isIdle().

◆ Private()

KisDelayedSaveDialog::Private ( KisImageSP _image,
int _busyWait,
Type _type )
inline

Definition at line 20 of file kis_delayed_save_dialog.cpp.

20: image(_image), busyWait(_busyWait), type(_type) {}

◆ slotCancelRequested

void KisDelayedSaveDialog::slotCancelRequested ( )
privateslot

Definition at line 122 of file kis_delayed_save_dialog.cpp.

123{
124 m_d->image->requestStrokeCancellation();
125}

References m_d.

◆ slotIgnoreRequested

void KisDelayedSaveDialog::slotIgnoreRequested ( )
privateslot

Definition at line 127 of file kis_delayed_save_dialog.cpp.

128{
129 done(Ignored);
130}

References Ignored.

◆ slotTimerTimeout

void KisDelayedSaveDialog::slotTimerTimeout ( )
privateslot

Definition at line 115 of file kis_delayed_save_dialog.cpp.

116{
117 if (m_d->checkImageIdle()) {
118 accept();
119 }
120}

References m_d.

Member Data Documentation

◆ busyWait

int KisDelayedSaveDialog::busyWait

Definition at line 24 of file kis_delayed_save_dialog.cpp.

◆ image

KisImageSP KisDelayedSaveDialog::image

Definition at line 22 of file kis_delayed_save_dialog.cpp.

◆ m_d

const QScopedPointer<Private> KisDelayedSaveDialog::m_d
private

Definition at line 48 of file kis_delayed_save_dialog.h.

◆ type

Type KisDelayedSaveDialog::type

Definition at line 31 of file kis_delayed_save_dialog.cpp.

◆ ui

WdgDelayedSaveDialog* KisDelayedSaveDialog::ui
private

Definition at line 46 of file kis_delayed_save_dialog.h.

◆ updateTimer

QTimer KisDelayedSaveDialog::updateTimer

Definition at line 23 of file kis_delayed_save_dialog.cpp.


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