File indexing completed on 2024-05-12 16:01:55

0001 /* This file is part of the KDE project
0002    SPDX-FileCopyrightText: 2000 Werner Trobin <trobin@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "KisTemplateGroup.h"
0008 
0009 #include <KisTemplate.h>
0010 
0011 #include <QFile>
0012 
0013 KisTemplateGroup::KisTemplateGroup(const QString &name, const QString &dir,
0014                                    int _sortingWeight, bool touched)
0015     : m_name(name)
0016     , m_touched(touched)
0017     , m_sortingWeight(_sortingWeight)
0018 {
0019     m_dirs.append(dir);
0020 }
0021 
0022 KisTemplateGroup::~KisTemplateGroup()
0023 {
0024     qDeleteAll(m_templates);
0025 }
0026 
0027 bool KisTemplateGroup::isHidden() const
0028 {
0029 
0030     QList<KisTemplate*>::const_iterator it = m_templates.begin();
0031     bool hidden = true;
0032     while (it != m_templates.end() && hidden) {
0033         hidden = (*it)->isHidden();
0034         ++it;
0035     }
0036     return hidden;
0037 }
0038 
0039 void KisTemplateGroup::setHidden(bool hidden) const
0040 {
0041     Q_FOREACH (KisTemplate* t, m_templates)
0042         t->setHidden(hidden);
0043 
0044     m_touched = true;
0045 }
0046 
0047 bool KisTemplateGroup::add(KisTemplate *t, bool force, bool touch)
0048 {
0049 
0050     KisTemplate *myTemplate = find(t->name());
0051     if (myTemplate == 0) {
0052         m_templates.append(t);
0053         m_touched = touch;
0054         return true;
0055     }
0056     else if (myTemplate && force) {
0057         //dbgUI <<"removing :" << myTemplate->fileName();
0058         QFile::remove(myTemplate->fileName());
0059         QFile::remove(myTemplate->picture());
0060         QFile::remove(myTemplate->file());
0061         m_templates.removeAll(myTemplate);
0062         delete myTemplate;
0063         m_templates.append(t);
0064         m_touched = touch;
0065         return true;
0066     }
0067     return false;
0068 }
0069 
0070 KisTemplate *KisTemplateGroup::find(const QString &name) const
0071 {
0072     QList<KisTemplate*>::const_iterator it = m_templates.begin();
0073     KisTemplate* ret = 0;
0074 
0075     while (it != m_templates.end()) {
0076         if ((*it)->name() == name) {
0077             ret = *it;
0078             break;
0079         }
0080 
0081         ++it;
0082     }
0083 
0084     return ret;
0085 }
0086