| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /*============================================================================
- CMake - Cross Platform Makefile Generator
- Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
- Distributed under the OSI-approved BSD License (the "License");
- see accompanying file Copyright.txt for details.
- This software is distributed WITHOUT ANY WARRANTY; without even the
- implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the License for more information.
- ============================================================================*/
- #include "AddCacheEntry.h"
- #include <QMetaProperty>
- #include <QCompleter>
- static const int NumTypes = 4;
- static const QString TypeStrings[NumTypes] =
- { "BOOL", "PATH", "FILEPATH", "STRING" };
- static const QCMakeProperty::PropertyType Types[NumTypes] =
- { QCMakeProperty::BOOL, QCMakeProperty::PATH,
- QCMakeProperty::FILEPATH, QCMakeProperty::STRING};
- AddCacheEntry::AddCacheEntry(QWidget* p, const QStringList& completions)
- : QWidget(p)
- {
- this->setupUi(this);
- for(int i=0; i<NumTypes; i++)
- {
- this->Type->addItem(TypeStrings[i]);
- }
- QWidget* cb = new QCheckBox();
- QWidget* path = new QCMakePathEditor();
- QWidget* filepath = new QCMakeFilePathEditor();
- QWidget* string = new QLineEdit();
- this->StackedWidget->addWidget(cb);
- this->StackedWidget->addWidget(path);
- this->StackedWidget->addWidget(filepath);
- this->StackedWidget->addWidget(string);
- this->setTabOrder(this->Name, this->Type);
- this->setTabOrder(this->Type, cb);
- this->setTabOrder(cb, path);
- this->setTabOrder(path, filepath);
- this->setTabOrder(filepath, string);
- this->setTabOrder(string, this->Description);
- this->Name->setCompleter(new QCompleter(completions, this));
- }
- QString AddCacheEntry::name() const
- {
- return this->Name->text();
- }
- QVariant AddCacheEntry::value() const
- {
- QWidget* w = this->StackedWidget->currentWidget();
- if(qobject_cast<QLineEdit*>(w))
- {
- return static_cast<QLineEdit*>(w)->text();
- }
- else if(qobject_cast<QCheckBox*>(w))
- {
- return static_cast<QCheckBox*>(w)->isChecked();
- }
- return QVariant();
- }
- QString AddCacheEntry::description() const
- {
- return this->Description->text();
- }
- QCMakeProperty::PropertyType AddCacheEntry::type() const
- {
- int idx = this->Type->currentIndex();
- if(idx >= 0 && idx < NumTypes)
- {
- return Types[idx];
- }
- return QCMakeProperty::BOOL;
- }
|