ElementWidget: Fix extended naming settings not initializing. Adds 'Collapse filter' option.

This commit is contained in:
Paddle
2022-10-25 11:15:10 +02:00
committed by abdullahtahiriyo
parent d8b89b2253
commit 3f87aa90b1
2 changed files with 32 additions and 8 deletions

View File

@@ -499,6 +499,7 @@ TaskSketcherElements::TaskSketcherElements(ViewProviderSketch *sketchView)
, previouslyHoveredItemIndex(-1)
, previouslyHoveredType(SubElementType::none)
, isNamingBoxChecked(false)
, collapseFilter(true)
{
// we need a separate container widget to add all controls to
proxy = new QWidget(this);
@@ -547,6 +548,10 @@ TaskSketcherElements::TaskSketcherElements(ViewProviderSketch *sketchView)
qAsConst(ui->settingsButton)->actions()[0], SIGNAL(changed()),
this, SLOT(on_settings_extendedInformation_changed())
);
QObject::connect(
qAsConst(ui->settingsButton)->actions()[1], SIGNAL(changed()),
this, SLOT(on_settings_autoCollapseFilter_changed())
);
connectionElementsChanged = sketchView->signalElementsChanged.connect(
boost::bind(&SketcherGui::TaskSketcherElements::slotElementsChanged, this));
@@ -591,14 +596,16 @@ void TaskSketcherElements::on_filterBox_stateChanged(int val){
bool TaskSketcherElements::eventFilter(QObject* obj, QEvent* event)
{
if (obj == qobject_cast<QObject*>(ui->filterBox) && event->type() == QEvent::Enter && ui->filterBox->checkState() == Qt::Checked) {
ui->listMultiFilter->show();
}
else if (obj == qobject_cast<QObject*>(ui->listMultiFilter) && event->type() == QEvent::Leave) {
ui->listMultiFilter->hide();
}
else if (obj == this && event->type() == QEvent::Leave) {
ui->listMultiFilter->hide();
if (collapseFilter) {
if (obj == qobject_cast<QObject*>(ui->filterBox) && event->type() == QEvent::Enter && ui->filterBox->checkState() == Qt::Checked) {
ui->listMultiFilter->show();
}
else if (obj == qobject_cast<QObject*>(ui->listMultiFilter) && event->type() == QEvent::Leave) {
ui->listMultiFilter->hide();
}
else if (obj == this && event->type() == QEvent::Leave) {
ui->listMultiFilter->hide();
}
}
return TaskBox::eventFilter(obj, event);
}
@@ -1137,16 +1144,23 @@ void TaskSketcherElements::changeEvent(QEvent *e)
void TaskSketcherElements::createSettingsButtonActions()
{
QAction* action = new QAction(QString::fromLatin1("Extended information"), this);
QAction* action2 = new QAction(QString::fromLatin1("Auto collapse filter"), this);
action->setCheckable(true);
action2->setCheckable(true);
ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher/Elements");
{
QSignalBlocker block(this);
action->setChecked(hGrp->GetBool("ExtendedNaming", false));
action2->setChecked(hGrp->GetBool("AutoCollapseFilter", false));
}
ui->settingsButton->addAction(action);
ui->settingsButton->addAction(action2);
isNamingBoxChecked = hGrp->GetBool("ExtendedNaming", false);
collapseFilter = hGrp->GetBool("AutoCollapseFilter", false);
}
void TaskSketcherElements::on_settings_extendedInformation_changed()
@@ -1158,6 +1172,14 @@ void TaskSketcherElements::on_settings_extendedInformation_changed()
slotElementsChanged();
}
void TaskSketcherElements::on_settings_autoCollapseFilter_changed()
{
ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher/Elements");
hGrp->SetBool("AutoCollapseFilter", ui->settingsButton->actions()[1]->isChecked());
collapseFilter = ui->settingsButton->actions()[1]->isChecked();
}
void TaskSketcherElements::on_settingsButton_clicked(bool)
{
ui->settingsButton->showMenu();

View File

@@ -202,6 +202,7 @@ public Q_SLOTS:
void on_listWidgetElements_itemEntered(QListWidgetItem *item);
void on_listWidgetElements_mouseMoveOnItem(QListWidgetItem* item);
void on_settings_extendedInformation_changed();
void on_settings_autoCollapseFilter_changed();
void on_settingsButton_clicked(bool);
void on_filterBox_stateChanged(int val);
void on_listMultiFilter_itemChanged(QListWidgetItem* item);
@@ -223,6 +224,7 @@ private:
SubElementType previouslyHoveredType;
bool isNamingBoxChecked;
bool collapseFilter;
};
} //namespace SketcherGui