File indexing completed on 2024-12-01 13:34:29
0001 /* 0002 SPDX-FileCopyrightText: 1999-2001 Lubos Lunak <l.lunak@kde.org> 0003 SPDX-FileCopyrightText: 2008 Michael Jansen <kde@michael-jansen.biz> 0004 0005 SPDX-License-Identifier: LGPL-2.0-only 0006 */ 0007 0008 #include "conditions/conditions_list_base.h" 0009 #include "conditions/conditions_visitor.h" 0010 0011 #include <KConfig> 0012 #include <KConfigGroup> 0013 0014 namespace KHotKeys 0015 { 0016 Condition_list_base::Condition_list_base(Condition_list_base *parent_P) 0017 : Condition(parent_P) 0018 , QList<Condition *>() 0019 { 0020 } 0021 0022 Condition_list_base::Condition_list_base(const QList<Condition *> &children_P, Condition_list_base *parent_P) 0023 : Condition(parent_P) 0024 , QList<Condition *>(children_P) 0025 { 0026 } 0027 0028 Condition_list_base::Condition_list_base(KConfigGroup &cfg_P, Condition_list_base *parent_P) 0029 : Condition(parent_P) 0030 { 0031 int cnt = cfg_P.readEntry("ConditionsCount", 0); 0032 for (int i = 0; i < cnt; ++i) { 0033 KConfigGroup conditionConfig(cfg_P.config(), cfg_P.name() + QString::number(i)); 0034 (void)Condition::create_cfg_read(conditionConfig, this); 0035 } 0036 } 0037 0038 Condition_list_base::~Condition_list_base() 0039 { 0040 // Carefully delete conditions in a manual loop. Something like qDeleteAll 0041 // would crash because the conditions remove themselves from this list in 0042 // their destructors. 0043 while (!isEmpty()) { 0044 Condition *c = first(); 0045 removeAll(c); 0046 delete c; 0047 } 0048 } 0049 0050 bool Condition_list_base::accepts_children() const 0051 { 0052 return true; 0053 } 0054 0055 void Condition_list_base::append(Condition *cond) 0056 { 0057 if (cond->parent() == this) { 0058 return; 0059 } 0060 0061 cond->reparent(this); 0062 QList<Condition *>::append(cond); 0063 } 0064 0065 Condition_list_base::Iterator Condition_list_base::begin() 0066 { 0067 return QList<Condition *>::begin(); 0068 } 0069 0070 Condition_list_base::ConstIterator Condition_list_base::begin() const 0071 { 0072 return QList<Condition *>::begin(); 0073 } 0074 0075 void Condition_list_base::clear() 0076 { 0077 return QList<Condition *>::clear(); 0078 } 0079 0080 void Condition_list_base::cfg_write(KConfigGroup &cfg_P) const 0081 { 0082 int i = 0; 0083 for (ConstIterator it(begin()); it != end(); ++it, ++i) { 0084 KConfigGroup conditionConfig(cfg_P.config(), cfg_P.name() + QString::number(i)); 0085 (*it)->cfg_write(conditionConfig); 0086 } 0087 cfg_P.writeEntry("ConditionsCount", i); 0088 } 0089 0090 int Condition_list_base::count() const 0091 { 0092 return QList<Condition *>::count(); 0093 } 0094 0095 Condition *Condition_list_base::first() 0096 { 0097 return QList<Condition *>::first(); 0098 } 0099 0100 Condition const *Condition_list_base::first() const 0101 { 0102 return QList<Condition *>::first(); 0103 } 0104 0105 Condition_list_base::Iterator Condition_list_base::end() 0106 { 0107 return QList<Condition *>::end(); 0108 } 0109 0110 Condition_list_base::ConstIterator Condition_list_base::end() const 0111 { 0112 return QList<Condition *>::end(); 0113 } 0114 0115 bool Condition_list_base::isEmpty() const 0116 { 0117 return QList<Condition *>::isEmpty(); 0118 } 0119 0120 int Condition_list_base::removeAll(Condition *const &cond) 0121 { 0122 return QList<Condition *>::removeAll(cond); 0123 } 0124 0125 void Condition_list_base::visit(ConditionsVisitor *visitor) 0126 { 0127 visitor->visitConditionsListBase(this); 0128 } 0129 0130 } // namespace KHotKeys