git-svn-id: svn://db.shs.com.ru/libs@919 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user