summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-09-29 18:16:13 +0200
committerRoberto Raggi <roberto.raggi@nokia.com>2009-09-29 18:19:36 +0200
commit331effc2fd5e25eae4243c517e0047d864fd94a5 (patch)
tree9f8c3ce003b1732c98d1a68635f4f3a7554e4a30 /src
parent3d62363fee4e9b0416ab9a9f6e36deeffdaea505 (diff)
downloadqt-creator-331effc2fd5e25eae4243c517e0047d864fd94a5.tar.gz
Introduced checkable results.
Diffstat (limited to 'src')
-rw-r--r--src/plugins/cpptools/cppfindreferences.cpp2
-rw-r--r--src/plugins/find/searchresulttreeitemdelegate.cpp13
-rw-r--r--src/plugins/find/searchresulttreeitems.cpp28
-rw-r--r--src/plugins/find/searchresulttreeitems.h10
-rw-r--r--src/plugins/find/searchresulttreemodel.cpp49
-rw-r--r--src/plugins/find/searchresulttreemodel.h4
-rw-r--r--src/plugins/find/searchresultwindow.cpp1
7 files changed, 104 insertions, 3 deletions
diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp
index 2f6964cbe3..fce5d3451d 100644
--- a/src/plugins/cpptools/cppfindreferences.cpp
+++ b/src/plugins/cpptools/cppfindreferences.cpp
@@ -439,7 +439,9 @@ static void find_helper(QFutureInterface<Core::Utils::FileSearchResult> &future,
void CppFindReferences::findAll(Symbol *symbol)
{
+ const bool wasInReplaceMode = _resultWindow->isShowingReplaceUI();
_resultWindow->clearContents();
+ _resultWindow->setShowReplaceUI(true);
_resultWindow->popup(true);
const Snapshot snapshot = _modelManager->snapshot();
diff --git a/src/plugins/find/searchresulttreeitemdelegate.cpp b/src/plugins/find/searchresulttreeitemdelegate.cpp
index 35eab26cad..84d230d4b3 100644
--- a/src/plugins/find/searchresulttreeitemdelegate.cpp
+++ b/src/plugins/find/searchresulttreeitemdelegate.cpp
@@ -35,6 +35,7 @@
#include <QPainter>
#include <QAbstractTextDocumentLayout>
#include <QApplication>
+#include <QDebug>
#include <math.h>
@@ -67,6 +68,18 @@ void SearchResultTreeItemDelegate::paint(QPainter *painter, const QStyleOptionVi
QItemDelegate::drawDisplay(painter, opt, resultRowRect, displayString);
QItemDelegate::drawFocus(painter, opt, opt.rect);
+ QVariant value = index.data(Qt::CheckStateRole);
+ if (value.isValid()) {
+ Qt::CheckState checkState = Qt::Unchecked;
+ checkState = static_cast<Qt::CheckState>(value.toInt());
+ QRect checkRect = check(opt, opt.rect, value);
+
+ QRect emptyRect;
+ doLayout(opt, &checkRect, &emptyRect, &emptyRect, false);
+
+ QItemDelegate::drawCheck(painter, opt, opt.rect, checkState);
+ }
+
painter->restore();
}
}
diff --git a/src/plugins/find/searchresulttreeitems.cpp b/src/plugins/find/searchresulttreeitems.cpp
index e4ea18539f..b2c19ec9ca 100644
--- a/src/plugins/find/searchresulttreeitems.cpp
+++ b/src/plugins/find/searchresulttreeitems.cpp
@@ -32,7 +32,7 @@
using namespace Find::Internal;
SearchResultTreeItem::SearchResultTreeItem(SearchResultTreeItem::ItemType type, const SearchResultTreeItem *parent)
- : m_type(type), m_parent(parent)
+ : m_type(type), m_parent(parent), m_isUserCheckable(false), m_checkState(Qt::Unchecked)
{
}
@@ -41,6 +41,26 @@ SearchResultTreeItem::~SearchResultTreeItem()
clearChildren();
}
+bool SearchResultTreeItem::isUserCheckable() const
+{
+ return m_isUserCheckable;
+}
+
+void SearchResultTreeItem::setIsUserCheckable(bool isUserCheckable)
+{
+ m_isUserCheckable = isUserCheckable;
+}
+
+Qt::CheckState SearchResultTreeItem::checkState() const
+{
+ return m_checkState;
+}
+
+void SearchResultTreeItem::setCheckState(Qt::CheckState checkState)
+{
+ m_checkState = checkState;
+}
+
void SearchResultTreeItem::clearChildren()
{
qDeleteAll(m_children);
@@ -62,7 +82,7 @@ int SearchResultTreeItem::rowOfItem() const
return (m_parent ? m_parent->m_children.indexOf(const_cast<SearchResultTreeItem*>(this)):0);
}
-const SearchResultTreeItem* SearchResultTreeItem::childAt(int index) const
+SearchResultTreeItem* SearchResultTreeItem::childAt(int index) const
{
return m_children.at(index);
}
@@ -131,5 +151,9 @@ void SearchResultFile::appendResultLine(int index, int lineNumber, const QString
{
SearchResultTreeItem *child = new SearchResultTextRow(index, lineNumber, rowText,
searchTermStart, searchTermLength, this);
+ if (isUserCheckable()) {
+ child->setIsUserCheckable(true);
+ child->setCheckState(Qt::Checked);
+ }
appendChild(child);
}
diff --git a/src/plugins/find/searchresulttreeitems.h b/src/plugins/find/searchresulttreeitems.h
index ccad626b8a..6db2efbe0f 100644
--- a/src/plugins/find/searchresulttreeitems.h
+++ b/src/plugins/find/searchresulttreeitems.h
@@ -54,16 +54,24 @@ public:
ItemType itemType() const;
const SearchResultTreeItem *parent() const;
- const SearchResultTreeItem *childAt(int index) const;
+ SearchResultTreeItem *childAt(int index) const;
void appendChild(SearchResultTreeItem *child);
int childrenCount() const;
int rowOfItem() const;
void clearChildren();
+ bool isUserCheckable() const;
+ void setIsUserCheckable(bool isUserCheckable);
+
+ Qt::CheckState checkState() const;
+ void setCheckState(Qt::CheckState checkState);
+
private:
ItemType m_type;
const SearchResultTreeItem *m_parent;
QList<SearchResultTreeItem *> m_children;
+ bool m_isUserCheckable;
+ Qt::CheckState m_checkState;
};
class SearchResultTextRow : public SearchResultTreeItem
diff --git a/src/plugins/find/searchresulttreemodel.cpp b/src/plugins/find/searchresulttreemodel.cpp
index 5c3d5eb36a..b711e8c110 100644
--- a/src/plugins/find/searchresulttreemodel.cpp
+++ b/src/plugins/find/searchresulttreemodel.cpp
@@ -36,12 +36,14 @@
#include <QtGui/QColor>
#include <QtGui/QPalette>
#include <QtCore/QDir>
+#include <QtCore/QDebug>
using namespace Find::Internal;
SearchResultTreeModel::SearchResultTreeModel(QObject *parent)
: QAbstractItemModel(parent)
, m_lastAppendedResultFile(0)
+ , m_showReplaceUI(false)
{
m_rootItem = new SearchResultTreeItem();
m_textEditorFont = QFont("Courier");
@@ -52,11 +54,31 @@ SearchResultTreeModel::~SearchResultTreeModel()
delete m_rootItem;
}
+void SearchResultTreeModel::setShowReplaceUI(bool show)
+{
+ m_showReplaceUI = show;
+}
+
void SearchResultTreeModel::setTextEditorFont(const QFont &font)
{
m_textEditorFont = font;
}
+Qt::ItemFlags SearchResultTreeModel::flags(const QModelIndex &index) const
+{
+ Qt::ItemFlags flags = QAbstractItemModel::flags(index);
+
+ if (index.isValid()) {
+ if (const SearchResultTreeItem *item = static_cast<const SearchResultTreeItem*>(index.internalPointer())) {
+ if (item->itemType() == SearchResultTreeItem::ResultRow && item->isUserCheckable()) {
+ flags |= Qt::ItemIsUserCheckable;
+ }
+ }
+ }
+
+ return flags;
+}
+
QModelIndex SearchResultTreeModel::index(int row, int column,
const QModelIndex &parent) const
{
@@ -135,12 +157,28 @@ QVariant SearchResultTreeModel::data(const QModelIndex &index, int role) const
return result;
}
+bool SearchResultTreeModel::setData(const QModelIndex &index, const QVariant &value, int role)
+{
+ if (role == Qt::CheckStateRole) {
+ SearchResultTreeItem *item = static_cast<SearchResultTreeItem*>(index.internalPointer());
+ SearchResultTextRow *row = static_cast<SearchResultTextRow *>(item);
+ Qt::CheckState checkState = static_cast<Qt::CheckState>(value.toInt());
+ row->setCheckState(checkState);
+ return true;
+ }
+ return QAbstractItemModel::setData(index, value, role);
+}
+
QVariant SearchResultTreeModel::data(const SearchResultTextRow *row, int role) const
{
QVariant result;
switch (role)
{
+ case Qt::CheckStateRole:
+ if (row->isUserCheckable())
+ result = row->checkState();
+ break;
case Qt::ToolTipRole:
result = row->rowText().trimmed();
break;
@@ -188,6 +226,12 @@ QVariant SearchResultTreeModel::data(const SearchResultFile *file, int role) con
switch (role)
{
+#if 0
+ case Qt::CheckStateRole:
+ if (file->isUserCheckable())
+ result = file->checkState();
+ break;
+#endif
case Qt::BackgroundRole: {
const QColor baseColor = QApplication::palette().base().color();
result = baseColor.darker(105);
@@ -228,6 +272,11 @@ void SearchResultTreeModel::appendResultFile(const QString &fileName)
{
m_lastAppendedResultFile = new SearchResultFile(fileName, m_rootItem);
+ if (m_showReplaceUI) {
+ m_lastAppendedResultFile->setIsUserCheckable(true);
+ m_lastAppendedResultFile->setCheckState(Qt::Checked);
+ }
+
const int childrenCount = m_rootItem->childrenCount();
beginInsertRows(QModelIndex(), childrenCount, childrenCount);
m_rootItem->appendChild(m_lastAppendedResultFile);
diff --git a/src/plugins/find/searchresulttreemodel.h b/src/plugins/find/searchresulttreemodel.h
index 544ad01a5a..f5b0fea20d 100644
--- a/src/plugins/find/searchresulttreemodel.h
+++ b/src/plugins/find/searchresulttreemodel.h
@@ -48,13 +48,16 @@ public:
SearchResultTreeModel(QObject *parent = 0);
~SearchResultTreeModel();
+ void setShowReplaceUI(bool show);
void setTextEditorFont(const QFont &font);
+ Qt::ItemFlags flags(const QModelIndex &index) const;
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
QModelIndex parent(const QModelIndex &child) const;
int rowCount(const QModelIndex &parent = QModelIndex()) const;
int columnCount(const QModelIndex &parent = QModelIndex()) const;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+ bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
QModelIndex next(const QModelIndex &idx) const;
@@ -81,6 +84,7 @@ private:
SearchResultTreeItem *m_rootItem;
SearchResultFile *m_lastAppendedResultFile;
QFont m_textEditorFont;
+ bool m_showReplaceUI;
};
} // namespace Internal
diff --git a/src/plugins/find/searchresultwindow.cpp b/src/plugins/find/searchresultwindow.cpp
index 728687ba1a..1fe0b1c7e3 100644
--- a/src/plugins/find/searchresultwindow.cpp
+++ b/src/plugins/find/searchresultwindow.cpp
@@ -109,6 +109,7 @@ SearchResultWindow::~SearchResultWindow()
void SearchResultWindow::setShowReplaceUI(bool show)
{
+ m_searchResultTreeView->model()->setShowReplaceUI(show);
m_replaceLabel->setVisible(show);
m_replaceTextEdit->setVisible(show);
m_replaceButton->setVisible(show);