UX: Auto expand port group and allow deselect in PortsWindow
This commit is contained in:
parent
d348229028
commit
abb48a1c12
@ -373,7 +373,22 @@ void PortsWindow::when_portView_currentChanged(const QModelIndex& currentIndex,
|
|||||||
void PortsWindow::when_portModel_dataChanged(const QModelIndex& topLeft,
|
void PortsWindow::when_portModel_dataChanged(const QModelIndex& topLeft,
|
||||||
const QModelIndex& bottomRight)
|
const QModelIndex& bottomRight)
|
||||||
{
|
{
|
||||||
qDebug("In %s", __FUNCTION__);
|
qDebug("In %s %d:(%d, %d) - %d:(%d, %d)", __FUNCTION__,
|
||||||
|
topLeft.parent().isValid(), topLeft.row(), topLeft.column(),
|
||||||
|
bottomRight.parent().isValid(), bottomRight.row(), bottomRight.column());
|
||||||
|
|
||||||
|
if (!topLeft.isValid() || !bottomRight.isValid())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (topLeft.parent() != bottomRight.parent())
|
||||||
|
return;
|
||||||
|
|
||||||
|
// If a port has changed, expand the port group
|
||||||
|
if (topLeft.parent().isValid())
|
||||||
|
tvPortList->expand(proxyPortModel ?
|
||||||
|
proxyPortModel->mapFromSource(topLeft.parent()) :
|
||||||
|
topLeft.parent());
|
||||||
|
|
||||||
#if 0 // not sure why the >= <= operators are not overloaded in QModelIndex
|
#if 0 // not sure why the >= <= operators are not overloaded in QModelIndex
|
||||||
if ((tvPortList->currentIndex() >= topLeft) &&
|
if ((tvPortList->currentIndex() >= topLeft) &&
|
||||||
(tvPortList->currentIndex() <= bottomRight))
|
(tvPortList->currentIndex() <= bottomRight))
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
<property name="childrenCollapsible">
|
<property name="childrenCollapsible">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QTreeView" name="tvPortList">
|
<widget class="XTreeView" name="tvPortList">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||||
<horstretch>1</horstretch>
|
<horstretch>1</horstretch>
|
||||||
@ -368,6 +368,11 @@
|
|||||||
<header>deviceswidget.h</header>
|
<header>deviceswidget.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>XTreeView</class>
|
||||||
|
<extends>QTreeView</extends>
|
||||||
|
<header>xtreeview.h</header>
|
||||||
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="ostinato.qrc"/>
|
<include location="ostinato.qrc"/>
|
||||||
|
50
client/xtreeview.h
Normal file
50
client/xtreeview.h
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2017 Srivats P.
|
||||||
|
|
||||||
|
This file is part of "Ostinato"
|
||||||
|
|
||||||
|
This is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _X_TREE_VIEW_H
|
||||||
|
#define _X_TREE_VIEW_H
|
||||||
|
|
||||||
|
#include <QTreeView>
|
||||||
|
|
||||||
|
#include <QMouseEvent>
|
||||||
|
|
||||||
|
#if QT_VERSION >= 0x050000
|
||||||
|
#error "Do we even need this anymore?"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
class XTreeView : public QTreeView
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
XTreeView(QWidget *parent) : QTreeView(parent) {}
|
||||||
|
virtual ~XTreeView() {}
|
||||||
|
|
||||||
|
private:
|
||||||
|
virtual void mousePressEvent(QMouseEvent *event)
|
||||||
|
{
|
||||||
|
QModelIndex item = indexAt(event->pos());
|
||||||
|
|
||||||
|
if (!item.isValid())
|
||||||
|
setCurrentIndex(QModelIndex());
|
||||||
|
|
||||||
|
QTreeView::mousePressEvent(event);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue
Block a user