File indexing completed on 2024-05-05 04:39:48
0001 /* 0002 SPDX-FileCopyrightText: 2012 Miha Čančula <miha@noughmad.eu> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "classmemberspage.h" 0008 #include "debug.h" 0009 0010 #include <KEditListWidget> 0011 #include <QLineEdit> 0012 #include <KLocalizedString> 0013 0014 #include <QVBoxLayout> 0015 0016 using namespace KDevelop; 0017 0018 class KDevelop::ClassMembersPagePrivate 0019 { 0020 public: 0021 KEditListWidget* editListWidget; 0022 }; 0023 0024 ClassMembersPage::ClassMembersPage(QWidget* parent) 0025 : QWidget(parent) 0026 , d(new ClassMembersPagePrivate) 0027 { 0028 d->editListWidget = new KEditListWidget(this); 0029 d->editListWidget->lineEdit()->setPlaceholderText(i18nc("@info:placeholder", "Variable type and identifier")); 0030 0031 auto* layout = new QVBoxLayout(this); 0032 layout->setContentsMargins(0, 0, 0, 0); 0033 layout->addWidget(d->editListWidget); 0034 setLayout(layout); 0035 } 0036 0037 ClassMembersPage::~ClassMembersPage() 0038 { 0039 delete d; 0040 } 0041 0042 void ClassMembersPage::setMembers(const VariableDescriptionList& members) 0043 { 0044 QStringList memberItems; 0045 memberItems.reserve(members.size()); 0046 for (const VariableDescription& variable : members) { 0047 QStringList items; 0048 items.reserve(3); 0049 if (!variable.access.isEmpty()) 0050 { 0051 items << variable.access; 0052 } 0053 if (!variable.type.isEmpty()) 0054 { 0055 items << variable.type; 0056 } 0057 items << variable.name; 0058 memberItems << items.join(QLatin1Char(' ')); 0059 } 0060 d->editListWidget->setItems(memberItems); 0061 } 0062 0063 VariableDescriptionList ClassMembersPage::members() const 0064 { 0065 VariableDescriptionList list; 0066 const auto items = d->editListWidget->items(); 0067 for (const QString& item : items) { 0068 VariableDescription var; 0069 QStringList parts = item.split(QLatin1Char(' ')); 0070 switch (parts.size()) 0071 { 0072 case 1: 0073 var.name = parts[0]; 0074 break; 0075 0076 case 2: 0077 var.type = parts[0]; 0078 var.name = parts[1]; 0079 break; 0080 0081 case 3: 0082 var.access = parts[0]; 0083 var.type = parts[1]; 0084 var.name = parts[2]; 0085 break; 0086 0087 default: 0088 qCDebug(PLUGIN_FILETEMPLATES) << "Malformed class member" << item; 0089 break; 0090 } 0091 0092 if (!var.name.isEmpty()) 0093 { 0094 list << var; 0095 } 0096 } 0097 return list; 0098 } 0099 0100 void ClassMembersPage::setFocusToFirstEditWidget() 0101 { 0102 d->editListWidget->lineEdit()->setFocus(); 0103 } 0104 0105 #include "moc_classmemberspage.cpp"