Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Donald Haase
Cockatrice
Commits
5f7d0fe7
Commit
5f7d0fe7
authored
Mar 03, 2015
by
Zach
Browse files
Merge pull request #796 from poixen/search_improvement
Fixed card search
parents
855b7951
cc6b826c
Changes
2
Hide whitespace changes
Inline
Side-by-side
cockatrice/src/carddatabasemodel.cpp
View file @
5f7d0fe7
...
@@ -117,40 +117,43 @@ CardDatabaseDisplayModel::CardDatabaseDisplayModel(QObject *parent)
...
@@ -117,40 +117,43 @@ CardDatabaseDisplayModel::CardDatabaseDisplayModel(QObject *parent)
setSortCaseSensitivity
(
Qt
::
CaseInsensitive
);
setSortCaseSensitivity
(
Qt
::
CaseInsensitive
);
}
}
bool
CardDatabaseDisplayModel
::
lessThan
(
const
QModelIndex
&
left
,
const
QModelIndex
&
right
)
const
{
QString
leftString
=
sourceModel
()
->
data
(
left
).
toString
();
QString
rightString
=
sourceModel
()
->
data
(
right
).
toString
();
if
(
leftString
.
compare
(
cardName
,
Qt
::
CaseInsensitive
)
==
0
)
{
// exact match should be at top
return
true
;
}
if
(
rightString
.
compare
(
cardName
,
Qt
::
CaseInsensitive
)
==
0
)
{
// exact match should be at top
return
false
;
}
bool
isLeftType2
=
leftString
.
startsWith
(
cardName
,
Qt
::
CaseInsensitive
);
bool
isRightType2
=
rightString
.
startsWith
(
cardName
,
Qt
::
CaseInsensitive
);
if
(
isLeftType2
&&
!
isRightType2
)
return
true
;
if
(
isRightType2
&&
!
isLeftType2
)
return
false
;
return
QString
::
localeAwareCompare
(
leftString
,
rightString
)
<
0
;
}
bool
CardDatabaseDisplayModel
::
filterAcceptsRow
(
int
sourceRow
,
const
QModelIndex
&
/*sourceParent*/
)
const
bool
CardDatabaseDisplayModel
::
filterAcceptsRow
(
int
sourceRow
,
const
QModelIndex
&
/*sourceParent*/
)
const
{
{
CardInfo
const
*
info
=
static_cast
<
CardDatabaseModel
*>
(
sourceModel
())
->
getCard
(
sourceRow
);
CardInfo
const
*
info
=
static_cast
<
CardDatabaseModel
*>
(
sourceModel
())
->
getCard
(
sourceRow
);
if
(((
isToken
==
ShowTrue
)
&&
!
info
->
getIsToken
())
||
((
isToken
==
ShowFalse
)
&&
info
->
getIsToken
()))
return
false
;
if
(
!
cardNameBeginning
.
isEmpty
())
if
(
!
info
->
getName
().
startsWith
(
cardNameBeginning
,
Qt
::
CaseInsensitive
))
return
false
;
if
(
!
cardName
.
isEmpty
())
if
(
!
info
->
getName
().
contains
(
cardName
,
Qt
::
CaseInsensitive
))
return
false
;
if
(
!
cardNameSet
.
isEmpty
())
if
(
!
cardNameSet
.
contains
(
info
->
getName
()))
return
false
;
if
(
!
cardText
.
isEmpty
())
bool
show
=
false
;
if
(
!
info
->
getText
().
contains
(
cardText
,
Qt
::
CaseInsensitive
))
if
(
!
cardName
.
isEmpty
())
{
return
false
;
if
(
info
->
getName
().
contains
(
cardName
,
Qt
::
CaseInsensitive
))
show
=
true
;
if
(
!
cardColors
.
isEmpty
())
}
else
if
(
QSet
<
QString
>::
fromList
(
info
->
getColors
()).
intersect
(
cardColors
).
isEmpty
()
&&
!
(
info
->
getColors
().
isEmpty
()
&&
cardColors
.
contains
(
"X"
)))
return
true
;
// search is empty, show all
return
false
;
return
show
;
if
(
!
cardTypes
.
isEmpty
())
if
(
!
cardTypes
.
contains
(
info
->
getMainCardType
()))
return
false
;
if
(
filterTree
!=
NULL
)
return
filterTree
->
acceptsCard
(
info
);
return
true
;
}
}
void
CardDatabaseDisplayModel
::
clearSearch
()
void
CardDatabaseDisplayModel
::
clearSearch
()
...
...
cockatrice/src/carddatabasemodel.h
View file @
5f7d0fe7
...
@@ -37,6 +37,7 @@ public:
...
@@ -37,6 +37,7 @@ public:
private:
private:
FilterBool
isToken
;
FilterBool
isToken
;
QString
cardNameBeginning
,
cardName
,
cardText
;
QString
cardNameBeginning
,
cardName
,
cardText
;
QString
searchTerm
;
QSet
<
QString
>
cardNameSet
,
cardTypes
,
cardColors
;
QSet
<
QString
>
cardNameSet
,
cardTypes
,
cardColors
;
FilterTree
*
filterTree
;
FilterTree
*
filterTree
;
public:
public:
...
@@ -46,11 +47,13 @@ public:
...
@@ -46,11 +47,13 @@ public:
void
setCardNameBeginning
(
const
QString
&
_beginning
)
{
cardNameBeginning
=
_beginning
;
invalidate
();
}
void
setCardNameBeginning
(
const
QString
&
_beginning
)
{
cardNameBeginning
=
_beginning
;
invalidate
();
}
void
setCardName
(
const
QString
&
_cardName
)
{
cardName
=
_cardName
;
invalidate
();
}
void
setCardName
(
const
QString
&
_cardName
)
{
cardName
=
_cardName
;
invalidate
();
}
void
setCardNameSet
(
const
QSet
<
QString
>
&
_cardNameSet
)
{
cardNameSet
=
_cardNameSet
;
invalidate
();
}
void
setCardNameSet
(
const
QSet
<
QString
>
&
_cardNameSet
)
{
cardNameSet
=
_cardNameSet
;
invalidate
();
}
void
setSearchTerm
(
const
QString
&
_searchTerm
)
{
searchTerm
=
_searchTerm
;
}
void
setCardText
(
const
QString
&
_cardText
)
{
cardText
=
_cardText
;
invalidate
();
}
void
setCardText
(
const
QString
&
_cardText
)
{
cardText
=
_cardText
;
invalidate
();
}
void
setCardTypes
(
const
QSet
<
QString
>
&
_cardTypes
)
{
cardTypes
=
_cardTypes
;
invalidate
();
}
void
setCardTypes
(
const
QSet
<
QString
>
&
_cardTypes
)
{
cardTypes
=
_cardTypes
;
invalidate
();
}
void
setCardColors
(
const
QSet
<
QString
>
&
_cardColors
)
{
cardColors
=
_cardColors
;
invalidate
();
}
void
setCardColors
(
const
QSet
<
QString
>
&
_cardColors
)
{
cardColors
=
_cardColors
;
invalidate
();
}
void
clearSearch
();
void
clearSearch
();
protected:
protected:
bool
lessThan
(
const
QModelIndex
&
left
,
const
QModelIndex
&
right
)
const
;
bool
filterAcceptsRow
(
int
sourceRow
,
const
QModelIndex
&
sourceParent
)
const
;
bool
filterAcceptsRow
(
int
sourceRow
,
const
QModelIndex
&
sourceParent
)
const
;
private
slots
:
private
slots
:
void
filterTreeChanged
();
void
filterTreeChanged
();
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment