File indexing completed on 2024-05-12 12:20:51
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"