git-svn-id: svn://db.shs.com.ru/libs@919 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2020-03-27 13:26:49 +00:00
parent 22fc859b50
commit fa35235809
2 changed files with 22 additions and 2 deletions

View File

@@ -1,5 +1,6 @@
#include <QDir>
#include <QMouseEvent>
#include <QSortFilterProxyModel>
#include "cdutils_k.h"
#include "cdutils_x.h"
#include "cdutils_c.h"
@@ -16,6 +17,7 @@ using namespace CDUtils;
CDView::CDView(QWidget * parent) : QTreeView(parent) {
type_ = -1;
model_ = 0;
proxy_ = 0;
connect(this, SIGNAL(clicked(QModelIndex)), this, SLOT(indexClicked(QModelIndex)));
connect(this, SIGNAL(_qcd_sendFailed()), this, SLOT(cd_sendFailed()), Qt::QueuedConnection);
connect(this, SIGNAL(_qcd_sendSucceed()), this, SLOT(cd_sendSucceed()), Qt::QueuedConnection);
@@ -27,8 +29,12 @@ CDView::CDView(QWidget * parent) : QTreeView(parent) {
CDView::~CDView() {
if (model_) delete model_;
if (model_) {
delete model_;
delete proxy_;
}
model_ = 0;
proxy_ = 0;
}
@@ -106,7 +112,12 @@ void CDView::refresh() {
if (type_ < 0) return;
if (!model_) {
model_ = new CDItemModel(type_);
setModel(model_);
proxy_ = new QSortFilterProxyModel();
proxy_->setRecursiveFilteringEnabled(true);
proxy_->setFilterKeyColumn(-1);
proxy_->setFilterCaseSensitivity(Qt::CaseInsensitive);
proxy_->setSourceModel(model_);
setModel(proxy_);
setItemDelegateForColumn(type_ == CDType::cdC ? cName_Cmd : cValue, new CDDelegate());
if (type_ == CDType::cdX)
setItemDelegateForColumn(cXMode, new CDDelegate());
@@ -280,6 +291,11 @@ void CDView::calculate() {
}
void CDView::filter(const QString & f) {
proxy_->setFilterRegExp(QRegExp(f, Qt::CaseInsensitive));
}
void CDView::indexClicked(const QModelIndex & i) {
if (!model_ || !i.isValid() || type_ != CDType::cdC || i.column() != cName_Cmd) return;
CDItem * item = model_->getItem(i);