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
af33ff5b
Commit
af33ff5b
authored
Apr 16, 2015
by
ctrlaltca
Browse files
Merge pull request #974 from ctrlaltca/deckeditor
Speed up deck editor filtering
parents
feeaa9c9
eb6d067a
Changes
3
Show whitespace changes
Inline
Side-by-side
cockatrice/src/carddatabase.cpp
View file @
af33ff5b
...
...
@@ -407,6 +407,7 @@ CardInfo::CardInfo(CardDatabase *_db,
tableRow
(
_tableRow
)
{
pixmapCacheKey
=
QLatin1String
(
"card_"
)
+
name
;
simpleName
=
CardInfo
::
simplifyName
(
name
);
for
(
int
i
=
0
;
i
<
sets
.
size
();
i
++
)
sets
[
i
]
->
append
(
this
);
...
...
@@ -660,14 +661,14 @@ void CardDatabase::clear()
void
CardDatabase
::
addCard
(
CardInfo
*
card
)
{
cards
.
insert
(
card
->
getName
(),
card
);
simpleNameCards
.
insert
(
CardInfo
::
simplifyName
(
card
->
getName
()
)
,
card
);
simpleNameCards
.
insert
(
card
->
get
Simple
Name
(),
card
);
emit
cardAdded
(
card
);
}
void
CardDatabase
::
removeCard
(
CardInfo
*
card
)
{
cards
.
remove
(
card
->
getName
());
simpleNameCards
.
remove
(
CardInfo
::
simplifyName
(
card
->
getName
())
)
;
simpleNameCards
.
remove
(
card
->
get
Simple
Name
());
emit
cardRemoved
(
card
);
}
...
...
cockatrice/src/carddatabase.h
View file @
af33ff5b
...
...
@@ -142,6 +142,7 @@ public:
MuidMap
muids
=
MuidMap
());
~
CardInfo
();
const
QString
&
getName
()
const
{
return
name
;
}
const
QString
&
getSimpleName
()
const
{
return
simpleName
;
}
bool
getIsToken
()
const
{
return
isToken
;
}
const
SetList
&
getSets
()
const
{
return
sets
;
}
const
QString
&
getManaCost
()
const
{
return
manacost
;
}
...
...
cockatrice/src/carddatabasemodel.cpp
View file @
af33ff5b
...
...
@@ -125,19 +125,16 @@ bool CardDatabaseDisplayModel::lessThan(const QModelIndex &left, const QModelInd
if
(
!
cardName
.
isEmpty
())
{
// exact match should be at top
if
(
leftString
.
compare
(
cardName
,
Qt
::
CaseInsensitive
)
==
0
)
return
true
;
// exact match should be at top
if
(
rightString
.
compare
(
cardName
,
Qt
::
CaseInsensitive
)
==
0
)
return
false
;
bool
isLeftType
=
leftString
.
startsWith
(
cardName
,
Qt
::
CaseInsensitive
);
bool
isRightType
=
rightString
.
startsWith
(
cardName
,
Qt
::
CaseInsensitive
);
bool
isLeftType
2
=
leftString
.
s
tartsWith
(
cardName
,
Qt
::
CaseInsensitive
);
bool
isRightType2
=
rightString
.
startsWith
(
cardName
,
Qt
::
CaseInsensitive
);
if
(
isLeftType
2
&&
!
isRightType
2
)
// test for an exact match:
isLeftType
&&
leftString.s
ize() == cardName.size()
// or an exclusive start match: isLeftType && !isRightType
if
(
isLeftType
&&
(
!
isRightType
||
leftString
.
size
()
==
cardName
.
size
())
)
return
true
;
if
(
isRightType2
&&
!
isLeftType2
)
// same checks for the right string
if
(
isRightType
&&
(
!
isLeftType
||
rightString
.
size
()
==
cardName
.
size
()))
return
false
;
}
return
QString
::
localeAwareCompare
(
leftString
,
rightString
)
<
0
;
...
...
@@ -150,11 +147,10 @@ bool CardDatabaseDisplayModel::filterAcceptsRow(int sourceRow, const QModelIndex
if
(((
isToken
==
ShowTrue
)
&&
!
info
->
getIsToken
())
||
((
isToken
==
ShowFalse
)
&&
info
->
getIsToken
()))
return
false
;
if
(
!
C
ard
Info
::
simplifyName
(
info
->
getName
()
)
.
contains
(
cardName
,
Qt
::
CaseInsensitive
))
if
(
!
c
ard
Name
.
isEmpty
()
&&
!
info
->
get
Simple
Name
().
contains
(
cardName
,
Qt
::
CaseInsensitive
))
return
false
;
if
(
!
cardNameSet
.
isEmpty
())
if
(
!
cardNameSet
.
contains
(
info
->
getName
()))
if
(
!
cardNameSet
.
isEmpty
()
&&
!
cardNameSet
.
contains
(
info
->
getName
()))
return
false
;
if
(
filterTree
!=
NULL
)
...
...
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