File indexing completed on 2024-04-28 15:40:12

0001 // SPDX-FileCopyrightText: 2003-2022 The KPhotoAlbum Development Team
0002 //
0003 // SPDX-License-Identifier: GPL-2.0-or-later
0004 
0005 #include "DirtyIndicator.h"
0006 
0007 #include <QIcon>
0008 #include <QLabel>
0009 #include <QPixmap>
0010 #include <kiconloader.h>
0011 
0012 static MainWindow::DirtyIndicator *s_instance = nullptr;
0013 bool MainWindow::DirtyIndicator::s_autoSaveDirty = false;
0014 bool MainWindow::DirtyIndicator::s_saveDirty = false;
0015 bool MainWindow::DirtyIndicator::s_suppressMarkDirty = false;
0016 
0017 MainWindow::DirtyIndicator::DirtyIndicator(QWidget *parent)
0018     : QLabel(parent)
0019 {
0020     m_dirtyPix = QIcon::fromTheme(QString::fromLatin1("media-floppy"))
0021                      .pixmap(KIconLoader::StdSizes::SizeSmall);
0022     setFixedWidth(m_dirtyPix.width() + 10);
0023     s_instance = this;
0024 
0025     // Might have been marked dirty even before the indicator had been created, by the database searching during loading.
0026     if (s_saveDirty)
0027         markDirty();
0028 }
0029 
0030 void MainWindow::DirtyIndicator::suppressMarkDirty(bool state)
0031 {
0032     MainWindow::DirtyIndicator::s_suppressMarkDirty = state;
0033 }
0034 
0035 void MainWindow::DirtyIndicator::markDirty()
0036 {
0037     if (MainWindow::DirtyIndicator::s_suppressMarkDirty) {
0038         return;
0039     }
0040 
0041     if (s_instance) {
0042         s_instance->markDirtySlot();
0043     } else {
0044         s_saveDirty = true;
0045         s_autoSaveDirty = true;
0046     }
0047 }
0048 
0049 void MainWindow::DirtyIndicator::markDirtySlot()
0050 {
0051     if (MainWindow::DirtyIndicator::s_suppressMarkDirty) {
0052         return;
0053     }
0054 
0055     s_saveDirty = true;
0056     s_autoSaveDirty = true;
0057     setPixmap(m_dirtyPix);
0058     Q_EMIT dirty();
0059 }
0060 
0061 void MainWindow::DirtyIndicator::autoSaved()
0062 {
0063     s_autoSaveDirty = false;
0064 }
0065 
0066 void MainWindow::DirtyIndicator::saved()
0067 {
0068     s_autoSaveDirty = false;
0069     s_saveDirty = false;
0070     setPixmap(QPixmap());
0071 }
0072 
0073 bool MainWindow::DirtyIndicator::isSaveDirty() const
0074 {
0075     return s_saveDirty;
0076 }
0077 
0078 bool MainWindow::DirtyIndicator::isAutoSaveDirty() const
0079 {
0080     return s_autoSaveDirty;
0081 }
0082 
0083 // vi:expandtab:tabstop=4 shiftwidth=4:
0084 
0085 #include "moc_DirtyIndicator.cpp"