Fixed the version combobox
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
parent
55946c8923
commit
6883c19579
@ -39,17 +39,17 @@ class CheckComboModel : public QIdentityProxyModel {
|
|||||||
virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const
|
virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const
|
||||||
{
|
{
|
||||||
if (role == Qt::CheckStateRole) {
|
if (role == Qt::CheckStateRole) {
|
||||||
auto txt = QIdentityProxyModel::data(index, BaseVersionList::VersionIdRole).toString();
|
auto txt = QIdentityProxyModel::data(index, Qt::DisplayRole).toString();
|
||||||
return checked.contains(txt) ? Qt::Checked : Qt::Unchecked;
|
return checked.contains(txt) ? Qt::Checked : Qt::Unchecked;
|
||||||
}
|
}
|
||||||
if (role == Qt::DisplayRole)
|
if (role == Qt::DisplayRole)
|
||||||
return QIdentityProxyModel::data(index, BaseVersionList::VersionIdRole);
|
return QIdentityProxyModel::data(index, Qt::DisplayRole);
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
virtual bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole)
|
virtual bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole)
|
||||||
{
|
{
|
||||||
if (role == Qt::CheckStateRole) {
|
if (role == Qt::CheckStateRole) {
|
||||||
auto txt = QIdentityProxyModel::data(index, BaseVersionList::VersionIdRole).toString();
|
auto txt = QIdentityProxyModel::data(index, Qt::DisplayRole).toString();
|
||||||
if (checked.contains(txt)) {
|
if (checked.contains(txt)) {
|
||||||
checked.removeOne(txt);
|
checked.removeOne(txt);
|
||||||
} else {
|
} else {
|
||||||
@ -72,11 +72,10 @@ class CheckComboModel : public QIdentityProxyModel {
|
|||||||
|
|
||||||
CheckComboBox::CheckComboBox(QWidget* parent) : QComboBox(parent), m_separator(",")
|
CheckComboBox::CheckComboBox(QWidget* parent) : QComboBox(parent), m_separator(",")
|
||||||
{
|
{
|
||||||
// read-only contents
|
QLineEdit* lineEdit = new QLineEdit(this);
|
||||||
// QLineEdit* lineEdit = new QLineEdit(this);
|
lineEdit->setReadOnly(false);
|
||||||
// lineEdit->setReadOnly(false);
|
setLineEdit(lineEdit);
|
||||||
// setLineEdit(lineEdit);
|
lineEdit->disconnect(this);
|
||||||
// lineEdit->disconnect(this);
|
|
||||||
setInsertPolicy(QComboBox::NoInsert);
|
setInsertPolicy(QComboBox::NoInsert);
|
||||||
|
|
||||||
view()->installEventFilter(this);
|
view()->installEventFilter(this);
|
||||||
@ -150,7 +149,6 @@ bool CheckComboBox::eventFilter(QObject* receiver, QEvent* event)
|
|||||||
showPopup();
|
showPopup();
|
||||||
return true;
|
return true;
|
||||||
} else if (keyEvent->key() == Qt::Key_Enter || keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Escape) {
|
} else if (keyEvent->key() == Qt::Key_Enter || keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Escape) {
|
||||||
// it is important to call QComboBox implementation
|
|
||||||
QComboBox::hidePopup();
|
QComboBox::hidePopup();
|
||||||
return (keyEvent->key() != Qt::Key_Escape);
|
return (keyEvent->key() != Qt::Key_Escape);
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,20 @@ unique_qobject_ptr<ModFilterWidget> ModFilterWidget::create(MinecraftInstance* i
|
|||||||
return unique_qobject_ptr<ModFilterWidget>(new ModFilterWidget(instance, parent));
|
return unique_qobject_ptr<ModFilterWidget>(new ModFilterWidget(instance, parent));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class VersionBasicModel : public QIdentityProxyModel {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit VersionBasicModel(QObject* parent = nullptr) : QIdentityProxyModel(parent) {}
|
||||||
|
|
||||||
|
virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override
|
||||||
|
{
|
||||||
|
if (role == Qt::DisplayRole)
|
||||||
|
return QIdentityProxyModel::data(index, BaseVersionList::VersionIdRole);
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
ModFilterWidget::ModFilterWidget(MinecraftInstance* instance, QWidget* parent)
|
ModFilterWidget::ModFilterWidget(MinecraftInstance* instance, QWidget* parent)
|
||||||
: QTabWidget(parent), ui(new Ui::ModFilterWidget), m_instance(instance), m_filter(new Filter())
|
: QTabWidget(parent), ui(new Ui::ModFilterWidget), m_instance(instance), m_filter(new Filter())
|
||||||
{
|
{
|
||||||
@ -21,7 +35,10 @@ ModFilterWidget::ModFilterWidget(MinecraftInstance* instance, QWidget* parent)
|
|||||||
|
|
||||||
m_versions_proxy = new VersionProxyModel(this);
|
m_versions_proxy = new VersionProxyModel(this);
|
||||||
|
|
||||||
ui->versionsCb->setModel(m_versions_proxy);
|
auto proxy = new VersionBasicModel(this);
|
||||||
|
proxy->setSourceModel(m_versions_proxy);
|
||||||
|
ui->versionsCb->setModel(proxy);
|
||||||
|
ui->versionsCb->setSeparator("| ");
|
||||||
|
|
||||||
m_versions_proxy->setFilter(BaseVersionList::TypeRole, new RegexpFilter("(release)", false));
|
m_versions_proxy->setFilter(BaseVersionList::TypeRole, new RegexpFilter("(release)", false));
|
||||||
|
|
||||||
@ -178,3 +195,5 @@ void ModFilterWidget::onHideInstalledFilterChanged()
|
|||||||
else
|
else
|
||||||
emit filterUnchanged();
|
emit filterUnchanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include "ModFilterWidget.moc"
|
||||||
|
Loading…
Reference in New Issue
Block a user