00001 #include <QDebug>
00002 #include <QStringList>
00003
00004 #include "accountstablefiltermodel.h"
00005 #include "accountstablemodel.h"
00006 #include "../Data/datadefinitions.h"
00007
00008 AccountsTableFilterModel::AccountsTableFilterModel(QObject *parent) : QSortFilterProxyModel(parent)
00009 {
00010 }
00011
00012 bool AccountsTableFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
00013 {
00014
00015
00016
00017
00018 QString accountNumber = sourceModel()->index(sourceRow, AccountsTableHeaders::AccountNumber, sourceParent).data(Qt::DisplayRole).toString();
00019 QString accountName = sourceModel()->index(sourceRow, AccountsTableHeaders::Name, sourceParent).data(Qt::DisplayRole).toString();
00020 QString description = sourceModel()->index(sourceRow, AccountsTableHeaders::Description, sourceParent).data(Qt::DisplayRole).toString();
00021
00022 QString filter = filterRegExp().pattern();
00023 if(accountNumber.contains(filter, Qt::CaseInsensitive) || accountName.contains(filter, Qt::CaseInsensitive) || description.contains(filter, Qt::CaseInsensitive))
00024 {
00025 return true;
00026 }
00027 return false;
00028 }
00029
00030
00031 bool AccountsTableFilterModel::filterAcceptsColumn(int sourceColumn, const QModelIndex &sourceParent) const
00032 {
00033 return true;
00034 }
00035
00036 bool AccountsTableFilterModel::lessThan(const QModelIndex &left, const QModelIndex &right) const
00037 {
00038 QVariant leftData = sourceModel()->data(left);
00039 QVariant rightData = sourceModel()->data(right);
00040
00041 QString leftString = leftData.toString();
00042 QString rightString = rightData.toString();
00043
00044 return QString::localeAwareCompare(leftString, rightString) < 0;
00045 }