forked from qt-creator/qt-creator
Merge branch 'master' of git@scm.dev.nokia.troll.no:creator/mainline
This commit is contained in:
@@ -2744,6 +2744,9 @@ static void qDumpQTextCodec(QDumper &d)
|
|||||||
|
|
||||||
static void qDumpQVector(QDumper &d)
|
static void qDumpQVector(QDumper &d)
|
||||||
{
|
{
|
||||||
|
QVectorTypedData<int> *dummy = 0;
|
||||||
|
const unsigned typeddatasize = (char*)(&dummy->array) - (char*)dummy;
|
||||||
|
|
||||||
QVectorData *v = *reinterpret_cast<QVectorData *const*>(d.data);
|
QVectorData *v = *reinterpret_cast<QVectorData *const*>(d.data);
|
||||||
|
|
||||||
// Try to provoke segfaults early to prevent the frontend
|
// Try to provoke segfaults early to prevent the frontend
|
||||||
@@ -2756,8 +2759,7 @@ static void qDumpQVector(QDumper &d)
|
|||||||
//qCheckAccess(&vec.back());
|
//qCheckAccess(&vec.back());
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned innersize = d.extraInt[0];
|
const unsigned innersize = d.extraInt[0];
|
||||||
unsigned typeddatasize = d.extraInt[1];
|
|
||||||
|
|
||||||
int n = nn;
|
int n = nn;
|
||||||
d.putItemCount("value", n);
|
d.putItemCount("value", n);
|
||||||
@@ -3348,7 +3350,8 @@ void *watchPoint(int x, int y)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Helper to write out common expression values for CDB:
|
// Helpers to write out common expression values for CDB
|
||||||
|
#ifdef Q_CC_MSVC
|
||||||
// Offsets of a map node value which looks like
|
// Offsets of a map node value which looks like
|
||||||
// "(size_t)&(('QMapNode<QString,QString >'*)0)->value")" in gdb syntax
|
// "(size_t)&(('QMapNode<QString,QString >'*)0)->value")" in gdb syntax
|
||||||
|
|
||||||
@@ -3394,6 +3397,8 @@ template <class Key, class Value>
|
|||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // Q_CC_MSVC
|
||||||
|
|
||||||
extern "C" Q_DECL_EXPORT
|
extern "C" Q_DECL_EXPORT
|
||||||
void *qDumpObjectData440(
|
void *qDumpObjectData440(
|
||||||
int protocolVersion,
|
int protocolVersion,
|
||||||
@@ -3515,6 +3520,7 @@ void *qDumpObjectData440(
|
|||||||
.put(NS"QMapNode<"NS"QString,"NS"QVariant>=\"").put(sizeof(QMapNode<QString, QVariant>))
|
.put(NS"QMapNode<"NS"QString,"NS"QVariant>=\"").put(sizeof(QMapNode<QString, QVariant>))
|
||||||
.put("\"}");
|
.put("\"}");
|
||||||
// Write out common expression values for CDB
|
// Write out common expression values for CDB
|
||||||
|
#ifdef Q_CC_MSVC
|
||||||
d.put(",expressions={");
|
d.put(",expressions={");
|
||||||
putQMapNodeOffsetExpression<int,int>("int", "int", d).put(',');
|
putQMapNodeOffsetExpression<int,int>("int", "int", d).put(',');
|
||||||
putQMapNodeOffsetExpression<int,QString>("int", NS"QString", d).put(',');
|
putQMapNodeOffsetExpression<int,QString>("int", NS"QString", d).put(',');
|
||||||
@@ -3534,6 +3540,7 @@ void *qDumpObjectData440(
|
|||||||
putStdPairValueOffsetExpression<int,std::wstring>("int", stdWideStringTypeUShortC, d).put(',');
|
putStdPairValueOffsetExpression<int,std::wstring>("int", stdWideStringTypeUShortC, d).put(',');
|
||||||
putStdPairValueOffsetExpression<std::wstring,int>(stdWideStringTypeUShortC, "int", d);
|
putStdPairValueOffsetExpression<std::wstring,int>(stdWideStringTypeUShortC, "int", d);
|
||||||
d.put('}');
|
d.put('}');
|
||||||
|
#endif // Q_CC_MSVC
|
||||||
d.disarm();
|
d.disarm();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ static int dumpQIntList()
|
|||||||
|
|
||||||
static int dumpQIntVector()
|
static int dumpQIntVector()
|
||||||
{
|
{
|
||||||
QVector<int> test = QVector<int>() << 1 << 2;
|
QVector<int> test = QVector<int>() << 42 << 43;
|
||||||
prepareInBuffer("QVector", "local.qintvector", "local.qintvector", "int");
|
prepareInBuffer("QVector", "local.qintvector", "local.qintvector", "int");
|
||||||
qDumpObjectData440(2, 42, testAddress(&test), 1, sizeof(int), 0, 0, 0);
|
qDumpObjectData440(2, 42, testAddress(&test), 1, sizeof(int), 0, 0, 0);
|
||||||
fputs(qDumpOutBuffer, stdout);
|
fputs(qDumpOutBuffer, stdout);
|
||||||
|
|||||||
@@ -798,7 +798,6 @@ QtDumperHelper::ExpressionRequirement QtDumperHelper::expressionRequirements(Typ
|
|||||||
|
|
||||||
switch (t) {
|
switch (t) {
|
||||||
case QAbstractItemType:
|
case QAbstractItemType:
|
||||||
case QVectorType:
|
|
||||||
return NeedsComplexExpression;
|
return NeedsComplexExpression;
|
||||||
case QMapType:
|
case QMapType:
|
||||||
case QMultiMapType:
|
case QMultiMapType:
|
||||||
@@ -1353,14 +1352,6 @@ void QtDumperHelper::evaluationParameters(const WatchData &data,
|
|||||||
case QAbstractItemType:
|
case QAbstractItemType:
|
||||||
inner = data.addr.mid(1);
|
inner = data.addr.mid(1);
|
||||||
break;
|
break;
|
||||||
case QVectorType:
|
|
||||||
if (m_qtVersion >= 0x040600)
|
|
||||||
extraArgs[1] = QString("(char*)&((%1).p->array)-(char*)((%2).p)")
|
|
||||||
.arg(data.exp).arg(data.exp);
|
|
||||||
else
|
|
||||||
extraArgs[1] = QString("(char*)&((%1).d->array)-(char*)((%2).d)")
|
|
||||||
.arg(data.exp).arg(data.exp);
|
|
||||||
break;
|
|
||||||
case QObjectSlotType:
|
case QObjectSlotType:
|
||||||
case QObjectSignalType: {
|
case QObjectSignalType: {
|
||||||
// we need the number out of something like
|
// we need the number out of something like
|
||||||
@@ -1453,6 +1444,7 @@ void QtDumperHelper::evaluationParameters(const WatchData &data,
|
|||||||
qWarning("Unknown type encountered in %s.\n", Q_FUNC_INFO);
|
qWarning("Unknown type encountered in %s.\n", Q_FUNC_INFO);
|
||||||
break;
|
break;
|
||||||
case SupportedType:
|
case SupportedType:
|
||||||
|
case QVectorType:
|
||||||
case QObjectType:
|
case QObjectType:
|
||||||
case QWidgetType:
|
case QWidgetType:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ void GenericProjectNode::refresh()
|
|||||||
QFileInfo fileInfo(absoluteFileName);
|
QFileInfo fileInfo(absoluteFileName);
|
||||||
const QString absoluteFilePath = fileInfo.path();
|
const QString absoluteFilePath = fileInfo.path();
|
||||||
|
|
||||||
QString baseDir(QFileInfo(path()).absolutePath());
|
QString baseDir = QFileInfo(path()).absolutePath();
|
||||||
if (! absoluteFilePath.startsWith(baseDir))
|
if (! absoluteFilePath.startsWith(baseDir))
|
||||||
continue; // `file' is not part of the project.
|
continue; // `file' is not part of the project.
|
||||||
|
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
#include <QtGui/QListView>
|
#include <QtGui/QListView>
|
||||||
#include <QtGui/QPainter>
|
#include <QtGui/QPainter>
|
||||||
#include <QtCore/QAbstractItemModel>
|
#include <QtCore/QAbstractItemModel>
|
||||||
|
#include <QtGui/QSortFilterProxyModel>
|
||||||
#include <QtGui/QApplication>
|
#include <QtGui/QApplication>
|
||||||
#include <QtGui/QClipboard>
|
#include <QtGui/QClipboard>
|
||||||
#include <QtGui/QFont>
|
#include <QtGui/QFont>
|
||||||
@@ -93,6 +94,32 @@ private:
|
|||||||
QIcon m_unspecifiedIcon;
|
QIcon m_unspecifiedIcon;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class ProjectExplorer::Internal::TaskFilterModel : public QSortFilterProxyModel
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TaskFilterModel(TaskModel *sourceModel, QObject *parent = 0);
|
||||||
|
|
||||||
|
TaskModel *taskModel() const;
|
||||||
|
|
||||||
|
bool filterIncludesUnknowns() const { return m_includeUnknowns; }
|
||||||
|
void setFilterIncludesUnknowns(bool b) { m_includeUnknowns = b; invalidateFilter(); }
|
||||||
|
|
||||||
|
bool filterIncludesWarnings() const { return m_includeWarnings; }
|
||||||
|
void setFilterIncludesWarnings(bool b) { m_includeWarnings = b; invalidateFilter(); }
|
||||||
|
|
||||||
|
bool filterIncludesErrors() const { return m_includeErrors; }
|
||||||
|
void setFilterIncludesErrors(bool b) { m_includeErrors = b; invalidateFilter(); }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
// These correspond to ProjectExplorer::BuildParserInterface::PatternType.
|
||||||
|
bool m_includeUnknowns;
|
||||||
|
bool m_includeWarnings;
|
||||||
|
bool m_includeErrors;
|
||||||
|
};
|
||||||
|
|
||||||
////
|
////
|
||||||
// TaskView
|
// TaskView
|
||||||
////
|
////
|
||||||
@@ -241,18 +268,71 @@ void TaskModel::setFileNotFound(const QModelIndex &idx, bool b)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/////
|
||||||
|
// TaskFilterModel
|
||||||
|
/////
|
||||||
|
|
||||||
|
TaskFilterModel::TaskFilterModel(TaskModel *sourceModel, QObject *parent)
|
||||||
|
: QSortFilterProxyModel(parent)
|
||||||
|
{
|
||||||
|
setSourceModel(sourceModel);
|
||||||
|
setDynamicSortFilter(true);
|
||||||
|
m_includeUnknowns = m_includeWarnings = m_includeErrors = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
TaskModel *TaskFilterModel::taskModel() const
|
||||||
|
{
|
||||||
|
return static_cast<TaskModel*>(sourceModel());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TaskFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
|
||||||
|
{
|
||||||
|
QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent);
|
||||||
|
ProjectExplorer::BuildParserInterface::PatternType type = ProjectExplorer::BuildParserInterface::PatternType(index.data(TaskModel::Type).toInt());
|
||||||
|
switch (type) {
|
||||||
|
case ProjectExplorer::BuildParserInterface::Unknown:
|
||||||
|
return m_includeUnknowns;
|
||||||
|
|
||||||
|
case ProjectExplorer::BuildParserInterface::Warning:
|
||||||
|
return m_includeWarnings;
|
||||||
|
|
||||||
|
case ProjectExplorer::BuildParserInterface::Error:
|
||||||
|
return m_includeErrors;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Not one of the three supported types -- shouldn't happen, but we'll let it slide.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/////
|
/////
|
||||||
// TaskWindow
|
// TaskWindow
|
||||||
/////
|
/////
|
||||||
|
|
||||||
|
static QToolButton *createFilterButton(ProjectExplorer::BuildParserInterface::PatternType type,
|
||||||
|
const QString &toolTip, TaskModel *model,
|
||||||
|
QObject *receiver, const char *slot)
|
||||||
|
{
|
||||||
|
QToolButton *button = new QToolButton;
|
||||||
|
button->setIcon(model->iconFor(type));
|
||||||
|
button->setProperty("type", "dockbutton");
|
||||||
|
button->setToolTip(toolTip);
|
||||||
|
button->setCheckable(true);
|
||||||
|
button->setChecked(true);
|
||||||
|
button->setAutoRaise(true);
|
||||||
|
button->setEnabled(true);
|
||||||
|
QObject::connect(button, SIGNAL(toggled(bool)), receiver, slot);
|
||||||
|
return button;
|
||||||
|
}
|
||||||
|
|
||||||
TaskWindow::TaskWindow()
|
TaskWindow::TaskWindow()
|
||||||
{
|
{
|
||||||
Core::ICore *core = Core::ICore::instance();
|
Core::ICore *core = Core::ICore::instance();
|
||||||
|
|
||||||
m_model = new TaskModel;
|
m_model = new TaskModel;
|
||||||
|
m_filter = new TaskFilterModel(m_model);
|
||||||
m_listview = new TaskView;
|
m_listview = new TaskView;
|
||||||
|
|
||||||
m_listview->setModel(m_model);
|
m_listview->setModel(m_filter);
|
||||||
m_listview->setFrameStyle(QFrame::NoFrame);
|
m_listview->setFrameStyle(QFrame::NoFrame);
|
||||||
m_listview->setWindowTitle(tr("Build Issues"));
|
m_listview->setWindowTitle(tr("Build Issues"));
|
||||||
m_listview->setSelectionMode(QAbstractItemView::SingleSelection);
|
m_listview->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||||
@@ -280,6 +360,10 @@ TaskWindow::TaskWindow()
|
|||||||
|
|
||||||
connect(m_copyAction, SIGNAL(triggered()), SLOT(copy()));
|
connect(m_copyAction, SIGNAL(triggered()), SLOT(copy()));
|
||||||
|
|
||||||
|
m_filterWarningsButton = createFilterButton(ProjectExplorer::BuildParserInterface::Warning,
|
||||||
|
tr("Show Warnings"), m_model,
|
||||||
|
this, SLOT(setShowWarnings(bool)));
|
||||||
|
|
||||||
m_errorCount = 0;
|
m_errorCount = 0;
|
||||||
m_currentTask = -1;
|
m_currentTask = -1;
|
||||||
}
|
}
|
||||||
@@ -287,13 +371,15 @@ TaskWindow::TaskWindow()
|
|||||||
TaskWindow::~TaskWindow()
|
TaskWindow::~TaskWindow()
|
||||||
{
|
{
|
||||||
Core::ICore::instance()->removeContextObject(m_taskWindowContext);
|
Core::ICore::instance()->removeContextObject(m_taskWindowContext);
|
||||||
|
delete m_filterWarningsButton;
|
||||||
delete m_listview;
|
delete m_listview;
|
||||||
|
delete m_filter;
|
||||||
delete m_model;
|
delete m_model;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<QWidget*> TaskWindow::toolBarWidgets() const
|
QList<QWidget*> TaskWindow::toolBarWidgets() const
|
||||||
{
|
{
|
||||||
return QList<QWidget*>();
|
return QList<QWidget*>() << m_filterWarningsButton;
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *TaskWindow::outputWidget(QWidget *)
|
QWidget *TaskWindow::outputWidget(QWidget *)
|
||||||
@@ -366,6 +452,12 @@ void TaskWindow::copy()
|
|||||||
QApplication::clipboard()->setText(file + ':' + line + ": " + type + description);
|
QApplication::clipboard()->setText(file + ':' + line + ": " + type + description);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TaskWindow::setShowWarnings(bool show)
|
||||||
|
{
|
||||||
|
m_filter->setFilterIncludesWarnings(show);
|
||||||
|
m_filter->setFilterIncludesUnknowns(show); // "Unknowns" are often associated with warnings
|
||||||
|
}
|
||||||
|
|
||||||
int TaskWindow::numberOfTasks() const
|
int TaskWindow::numberOfTasks() const
|
||||||
{
|
{
|
||||||
return m_model->rowCount(QModelIndex());
|
return m_model->rowCount(QModelIndex());
|
||||||
@@ -388,41 +480,41 @@ bool TaskWindow::hasFocus()
|
|||||||
|
|
||||||
bool TaskWindow::canFocus()
|
bool TaskWindow::canFocus()
|
||||||
{
|
{
|
||||||
return m_model->rowCount();
|
return m_filter->rowCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskWindow::setFocus()
|
void TaskWindow::setFocus()
|
||||||
{
|
{
|
||||||
if (m_model->rowCount()) {
|
if (m_filter->rowCount()) {
|
||||||
m_listview->setFocus();
|
m_listview->setFocus();
|
||||||
if (m_listview->currentIndex() == QModelIndex()) {
|
if (m_listview->currentIndex() == QModelIndex()) {
|
||||||
m_listview->setCurrentIndex(m_model->index(0,0, QModelIndex()));
|
m_listview->setCurrentIndex(m_filter->index(0,0, QModelIndex()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TaskWindow::canNext()
|
bool TaskWindow::canNext()
|
||||||
{
|
{
|
||||||
return m_model->rowCount();
|
return m_filter->rowCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TaskWindow::canPrevious()
|
bool TaskWindow::canPrevious()
|
||||||
{
|
{
|
||||||
return m_model->rowCount();
|
return m_filter->rowCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TaskWindow::goToNext()
|
void TaskWindow::goToNext()
|
||||||
{
|
{
|
||||||
if (!m_model->rowCount())
|
if (!m_filter->rowCount())
|
||||||
return;
|
return;
|
||||||
QModelIndex currentIndex = m_listview->currentIndex();
|
QModelIndex currentIndex = m_listview->currentIndex();
|
||||||
if (currentIndex.isValid()) {
|
if (currentIndex.isValid()) {
|
||||||
int row = currentIndex.row() + 1;
|
int row = currentIndex.row() + 1;
|
||||||
if (row == m_model->rowCount())
|
if (row == m_filter->rowCount())
|
||||||
row = 0;
|
row = 0;
|
||||||
currentIndex = m_model->index(row, 0);
|
currentIndex = m_filter->index(row, 0);
|
||||||
} else {
|
} else {
|
||||||
currentIndex = m_model->index(0, 0);
|
currentIndex = m_filter->index(0, 0);
|
||||||
}
|
}
|
||||||
m_listview->setCurrentIndex(currentIndex);
|
m_listview->setCurrentIndex(currentIndex);
|
||||||
showTaskInFile(currentIndex);
|
showTaskInFile(currentIndex);
|
||||||
@@ -430,16 +522,16 @@ void TaskWindow::goToNext()
|
|||||||
|
|
||||||
void TaskWindow::goToPrev()
|
void TaskWindow::goToPrev()
|
||||||
{
|
{
|
||||||
if (!m_model->rowCount())
|
if (!m_filter->rowCount())
|
||||||
return;
|
return;
|
||||||
QModelIndex currentIndex = m_listview->currentIndex();
|
QModelIndex currentIndex = m_listview->currentIndex();
|
||||||
if (currentIndex.isValid()) {
|
if (currentIndex.isValid()) {
|
||||||
int row = currentIndex.row() -1;
|
int row = currentIndex.row() -1;
|
||||||
if (row < 0)
|
if (row < 0)
|
||||||
row = m_model->rowCount() - 1;
|
row = m_filter->rowCount() - 1;
|
||||||
currentIndex = m_model->index(row, 0);
|
currentIndex = m_filter->index(row, 0);
|
||||||
} else {
|
} else {
|
||||||
currentIndex = m_model->index(m_model->rowCount()-1, 0);
|
currentIndex = m_filter->index(m_filter->rowCount()-1, 0);
|
||||||
}
|
}
|
||||||
m_listview->setCurrentIndex(currentIndex);
|
m_listview->setCurrentIndex(currentIndex);
|
||||||
showTaskInFile(currentIndex);
|
showTaskInFile(currentIndex);
|
||||||
@@ -475,7 +567,7 @@ QSize TaskDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelInd
|
|||||||
QSize s;
|
QSize s;
|
||||||
s.setWidth(option.rect.width());
|
s.setWidth(option.rect.width());
|
||||||
const QAbstractItemView * view = qobject_cast<const QAbstractItemView *>(opt.widget);
|
const QAbstractItemView * view = qobject_cast<const QAbstractItemView *>(opt.widget);
|
||||||
TaskModel *model = static_cast<TaskModel *>(view->model());
|
TaskModel *model = static_cast<TaskFilterModel *>(view->model())->taskModel();
|
||||||
int width = opt.rect.width() - model->sizeOfFile() - model->sizeOfLineNumber() - 12 - 22;
|
int width = opt.rect.width() - model->sizeOfFile() - model->sizeOfLineNumber() - 12 - 22;
|
||||||
if (view->selectionModel()->currentIndex() == index) {
|
if (view->selectionModel()->currentIndex() == index) {
|
||||||
QString description = index.data(TaskModel::Description).toString();
|
QString description = index.data(TaskModel::Description).toString();
|
||||||
@@ -544,7 +636,7 @@ void TaskDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
|
|||||||
|
|
||||||
painter->setPen(textColor);
|
painter->setPen(textColor);
|
||||||
|
|
||||||
TaskModel *model = static_cast<TaskModel *>(view->model());
|
TaskModel *model = static_cast<TaskFilterModel *>(view->model())->taskModel();
|
||||||
ProjectExplorer::BuildParserInterface::PatternType type = ProjectExplorer::BuildParserInterface::PatternType(index.data(TaskModel::Type).toInt());
|
ProjectExplorer::BuildParserInterface::PatternType type = ProjectExplorer::BuildParserInterface::PatternType(index.data(TaskModel::Type).toInt());
|
||||||
QIcon icon = model->iconFor(type);
|
QIcon icon = model->iconFor(type);
|
||||||
painter->drawPixmap(2, opt.rect.top() + 2, icon.pixmap(16, 16));
|
painter->drawPixmap(2, opt.rect.top() + 2, icon.pixmap(16, 16));
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ namespace ProjectExplorer {
|
|||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class TaskModel;
|
class TaskModel;
|
||||||
|
class TaskFilterModel;
|
||||||
class TaskView;
|
class TaskView;
|
||||||
class TaskWindowContext;
|
class TaskWindowContext;
|
||||||
|
|
||||||
@@ -85,6 +86,7 @@ signals:
|
|||||||
private slots:
|
private slots:
|
||||||
void showTaskInFile(const QModelIndex &index);
|
void showTaskInFile(const QModelIndex &index);
|
||||||
void copy();
|
void copy();
|
||||||
|
void setShowWarnings(bool);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int sizeHintForColumn(int column) const;
|
int sizeHintForColumn(int column) const;
|
||||||
@@ -93,9 +95,11 @@ private:
|
|||||||
int m_currentTask;
|
int m_currentTask;
|
||||||
|
|
||||||
TaskModel *m_model;
|
TaskModel *m_model;
|
||||||
|
TaskFilterModel *m_filter;
|
||||||
TaskView *m_listview;
|
TaskView *m_listview;
|
||||||
TaskWindowContext *m_taskWindowContext;
|
TaskWindowContext *m_taskWindowContext;
|
||||||
QAction *m_copyAction;
|
QAction *m_copyAction;
|
||||||
|
QToolButton *m_filterWarningsButton;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TaskView : public QListView
|
class TaskView : public QListView
|
||||||
|
|||||||
Reference in New Issue
Block a user