File indexing completed on 2024-05-05 04:39:24
0001 /* 0002 SPDX-FileCopyrightText: 2016 René J.V. Bertin <rjvbertin@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "cmakeextraargumentshistory.h" 0008 0009 #include <KSharedConfig> 0010 #include <KConfigGroup> 0011 0012 namespace { 0013 0014 const int maxExtraArgumentsInHistory = 15; 0015 0016 } 0017 0018 CMakeExtraArgumentsHistory::CMakeExtraArgumentsHistory(KComboBox* widget) 0019 : m_arguments(widget) 0020 { 0021 if (m_arguments) { 0022 KConfigGroup config = KSharedConfig::openConfig()->group("CMakeBuildDirChooser"); 0023 QStringList lastExtraArguments = config.readEntry("LastExtraArguments", QStringList()); 0024 m_arguments->addItem(QString()); 0025 m_arguments->addItems(lastExtraArguments); 0026 m_arguments->setInsertPolicy(QComboBox::InsertAtTop); 0027 KCompletion *comp = m_arguments->completionObject(); 0028 QObject::connect(m_arguments, QOverload<const QString&>::of(&KComboBox::returnPressed), 0029 comp, QOverload<const QString&>::of(&KCompletion::addItem)); 0030 comp->insertItems(lastExtraArguments); 0031 } else { 0032 qFatal("CMakeExtraArgumentsHistory initialised with invalid widget"); 0033 } 0034 } 0035 0036 CMakeExtraArgumentsHistory::~CMakeExtraArgumentsHistory() 0037 { 0038 KConfigGroup config = KSharedConfig::openConfig()->group("CMakeBuildDirChooser"); 0039 config.writeEntry("LastExtraArguments", list()); 0040 config.sync(); 0041 } 0042 0043 QStringList CMakeExtraArgumentsHistory::list() const 0044 { 0045 QStringList list; 0046 if (!m_arguments->currentText().isEmpty()) { 0047 list << m_arguments->currentText(); 0048 } 0049 for (int i = 0; i < qMin(maxExtraArgumentsInHistory, m_arguments->count()); ++i) { 0050 if (!m_arguments->itemText(i).isEmpty() && 0051 (m_arguments->currentText() != m_arguments->itemText(i))) { 0052 list << m_arguments->itemText(i); 0053 } 0054 } 0055 return list; 0056 }