Skip to content
Snippets Groups Projects
Commit d67d79cb authored by Matthias Puchner's avatar Matthias Puchner
Browse files

minor refactoring

* make Qt connections compile-time-safe (do not use SIGNAL/SLOT macros)
* rename "category" to the more appropriate "group", to eliminate QtDesigner residuals
parent def1b0e3
No related branches found
No related tags found
1 merge request!245More simplifications for SampleDesigner Toolbox
......@@ -43,15 +43,14 @@ SampleToolBoxTreeWidget::SampleToolBoxTreeWidget(QWidget* parent)
setItemDelegate(new qdesigner_internal::SheetDelegate(this, this));
connect(this, SIGNAL(itemPressed(QTreeWidgetItem*, int)), this,
SLOT(handleMousePress(QTreeWidgetItem*)));
connect(this, &QTreeWidget::itemPressed, this, &SampleToolBoxTreeWidget::handleMousePress);
}
SampleToolBoxGroupView* SampleToolBoxTreeWidget::categoryViewAt(int idx) const
SampleToolBoxGroupView* SampleToolBoxTreeWidget::groupViewAt(int idx) const
{
SampleToolBoxGroupView* rc = nullptr;
if (QTreeWidgetItem* cat_item = topLevelItem(idx))
if (QTreeWidgetItem* embedItem = cat_item->child(0))
if (QTreeWidgetItem* groupItem = topLevelItem(idx))
if (QTreeWidgetItem* embedItem = groupItem->child(0))
rc = qobject_cast<SampleToolBoxGroupView*>(itemWidget(embedItem, 0));
ASSERT(rc);
return rc;
......@@ -75,22 +74,20 @@ void SampleToolBoxTreeWidget::handleMousePress(QTreeWidgetItem* item)
}
}
SampleToolBoxGroupView* SampleToolBoxTreeWidget::addCategoryView(QTreeWidgetItem* parent,
bool iconMode)
void SampleToolBoxTreeWidget::addGroupView(QTreeWidgetItem* parent, bool iconMode)
{
QTreeWidgetItem* embed_item = new QTreeWidgetItem(parent);
embed_item->setFlags(Qt::ItemIsEnabled);
SampleToolBoxGroupView* categoryView = new SampleToolBoxGroupView(this);
categoryView->setViewMode(iconMode ? QListView::IconMode : QListView::ListMode);
connect(categoryView, SIGNAL(pressed(QString, QString, QPoint)), this,
SampleToolBoxGroupView* view = new SampleToolBoxGroupView(this);
view->setViewMode(iconMode ? QListView::IconMode : QListView::ListMode);
connect(view, SIGNAL(pressed(QString, QString, QPoint)), this,
SIGNAL(pressed(QString, QString, QPoint)));
setItemWidget(embed_item, 0, categoryView);
return categoryView;
setItemWidget(embed_item, 0, view);
}
void SampleToolBoxTreeWidget::adjustSubListSize(QTreeWidgetItem* cat_item)
void SampleToolBoxTreeWidget::adjustSubListSize(QTreeWidgetItem* groupItem)
{
QTreeWidgetItem* embedItem = cat_item->child(0);
QTreeWidgetItem* embedItem = groupItem->child(0);
if (embedItem == nullptr)
return;
......@@ -121,9 +118,9 @@ void SampleToolBoxTreeWidget::updateViewMode()
for (int i = numTopLevels - 1; i >= 0; --i) {
const QListView::ViewMode viewMode =
m_iconMode ? QListView::IconMode : QListView::ListMode;
SampleToolBoxGroupView* categoryView = categoryViewAt(i);
if (viewMode != categoryView->viewMode()) {
categoryView->setViewMode(viewMode);
SampleToolBoxGroupView* view = groupViewAt(i);
if (viewMode != view->viewMode()) {
view->setViewMode(viewMode);
adjustSubListSize(topLevelItem(i));
}
}
......@@ -160,8 +157,8 @@ void SampleToolBoxTreeWidget::contextMenuEvent(QContextMenuEvent* e)
iconModeAction->setChecked(true);
else
listModeAction->setChecked(true);
connect(listModeAction, SIGNAL(triggered()), SLOT(slotListMode()));
connect(iconModeAction, SIGNAL(triggered()), SLOT(slotIconMode()));
connect(listModeAction, &QAction::triggered, this, &SampleToolBoxTreeWidget::slotListMode);
connect(iconModeAction, &QAction::triggered, this, &SampleToolBoxTreeWidget::slotIconMode);
e->accept();
menu.exec(mapToGlobal(e->pos()));
......@@ -175,19 +172,19 @@ void SampleToolBoxTreeWidget::filter(const QString& f)
bool changed = false;
for (int i = 0; i < numTopLevels; i++) {
QTreeWidgetItem* tl = topLevelItem(i);
SampleToolBoxGroupView* categoryView = categoryViewAt(i);
// Anything changed? -> Enable the category
const int oldCount = categoryView->count(SampleToolBoxGroupView::FILTERED);
categoryView->filter(re);
const int newCount = categoryView->count(SampleToolBoxGroupView::FILTERED);
SampleToolBoxGroupView* groupView = groupViewAt(i);
// Anything changed? -> Enable the group
const int oldCount = groupView->count(SampleToolBoxGroupView::FILTERED);
groupView->filter(re);
const int newCount = groupView->count(SampleToolBoxGroupView::FILTERED);
if (oldCount != newCount) {
changed = true;
const bool categoryEnabled = newCount > 0 || empty;
if (categoryEnabled) {
categoryView->adjustSize();
const bool groupEnabled = newCount > 0 || empty;
if (groupEnabled) {
groupView->adjustSize();
adjustSubListSize(tl);
}
setRowHidden(i, QModelIndex(), !categoryEnabled);
setRowHidden(i, QModelIndex(), !groupEnabled);
}
}
if (changed)
......@@ -196,27 +193,23 @@ void SampleToolBoxTreeWidget::filter(const QString& f)
void SampleToolBoxTreeWidget::addGroup(const QString& title)
{
QTreeWidgetItem* cat_item = new QTreeWidgetItem();
cat_item->setText(0, title);
addTopLevelItem(cat_item);
QTreeWidgetItem* groupItem = new QTreeWidgetItem();
groupItem->setText(0, title);
addTopLevelItem(groupItem);
#if QT_VERSION >= QT_VERSION_CHECK(5, 13, 0)
cat_item->setExpanded(true);
groupItem->setExpanded(true);
#else
setItemExpanded(cat_item, true);
setItemExpanded(groupItem, true);
#endif
addCategoryView(cat_item, m_iconMode);
adjustSubListSize(cat_item);
addGroupView(groupItem, m_iconMode);
adjustSubListSize(groupItem);
}
void SampleToolBoxTreeWidget::addEntry(const QString& title, const QIcon& icon,
const QString& className, const QString& tooltip)
{
const auto cat_idx = topLevelItemCount() - 1;
QTreeWidgetItem* cat_item = topLevelItem(cat_idx);
SampleToolBoxGroupView* categoryView = categoryViewAt(cat_idx);
categoryView->addEntry(title, icon, className, tooltip);
adjustSubListSize(cat_item);
const auto groupIndex = topLevelItemCount() - 1;
groupViewAt(groupIndex)->addEntry(title, icon, className, tooltip);
adjustSubListSize(topLevelItem(groupIndex));
}
......@@ -34,24 +34,22 @@ public:
void addEntry(const QString& title, const QIcon& icon, const QString& className,
const QString& tooltip);
void filter(const QString&);
signals:
void pressed(const QString name, const QString dom_xml, const QPoint& global_mouse_pos);
public slots:
void filter(const QString&);
protected:
virtual void contextMenuEvent(QContextMenuEvent* e);
virtual void resizeEvent(QResizeEvent* e);
virtual void contextMenuEvent(QContextMenuEvent* e) override;
virtual void resizeEvent(QResizeEvent* e) override;
private slots:
private:
void handleMousePress(QTreeWidgetItem* item);
void slotListMode();
void slotIconMode();
private:
SampleToolBoxGroupView* addCategoryView(QTreeWidgetItem* parent, bool iconMode);
SampleToolBoxGroupView* categoryViewAt(int idx) const;
void addGroupView(QTreeWidgetItem* parent, bool iconMode);
SampleToolBoxGroupView* groupViewAt(int idx) const;
void adjustSubListSize(QTreeWidgetItem* cat_item);
void updateViewMode();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment