55 lines
1.2 KiB
C++
55 lines
1.2 KiB
C++
|
|
#include "dirtystatemanager.h"
|
||
|
|
#include <QWidget>
|
||
|
|
|
||
|
|
DirtyStateManager& DirtyStateManager::instance() {
|
||
|
|
static DirtyStateManager instance;
|
||
|
|
return instance;
|
||
|
|
}
|
||
|
|
|
||
|
|
void DirtyStateManager::markDirty(QWidget* tab) {
|
||
|
|
if (!tab) return;
|
||
|
|
|
||
|
|
if (!m_dirtyTabs.contains(tab)) {
|
||
|
|
m_dirtyTabs.insert(tab);
|
||
|
|
emit dirtyStateChanged(tab, true);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void DirtyStateManager::markClean(QWidget* tab) {
|
||
|
|
if (!tab) return;
|
||
|
|
|
||
|
|
if (m_dirtyTabs.contains(tab)) {
|
||
|
|
m_dirtyTabs.remove(tab);
|
||
|
|
emit dirtyStateChanged(tab, false);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
bool DirtyStateManager::isDirty(QWidget* tab) const {
|
||
|
|
return m_dirtyTabs.contains(tab);
|
||
|
|
}
|
||
|
|
|
||
|
|
QList<QWidget*> DirtyStateManager::dirtyTabs() const {
|
||
|
|
return m_dirtyTabs.values();
|
||
|
|
}
|
||
|
|
|
||
|
|
bool DirtyStateManager::hasDirtyTabs() const {
|
||
|
|
return !m_dirtyTabs.isEmpty();
|
||
|
|
}
|
||
|
|
|
||
|
|
void DirtyStateManager::setFilePath(QWidget* tab, const QString& path) {
|
||
|
|
if (tab) {
|
||
|
|
m_filePaths[tab] = path;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
QString DirtyStateManager::filePath(QWidget* tab) const {
|
||
|
|
return m_filePaths.value(tab);
|
||
|
|
}
|
||
|
|
|
||
|
|
void DirtyStateManager::removeTab(QWidget* tab) {
|
||
|
|
if (!tab) return;
|
||
|
|
|
||
|
|
m_dirtyTabs.remove(tab);
|
||
|
|
m_filePaths.remove(tab);
|
||
|
|
}
|