support for women
This commit is contained in:
parent
4777d18fe3
commit
b7ab2d97bd
29 changed files with 5743 additions and 1965 deletions
|
@ -38,6 +38,10 @@
|
||||||
<file>resources/icon_player.svg</file>
|
<file>resources/icon_player.svg</file>
|
||||||
<file>resources/icon_spectator.svg</file>
|
<file>resources/icon_spectator.svg</file>
|
||||||
|
|
||||||
|
<file>resources/genders/male.svg</file>
|
||||||
|
<file>resources/genders/female.svg</file>
|
||||||
|
<file>resources/genders/unknown.svg</file>
|
||||||
|
|
||||||
<file>translations/cockatrice_de.qm</file>
|
<file>translations/cockatrice_de.qm</file>
|
||||||
<file>translations/cockatrice_en.qm</file>
|
<file>translations/cockatrice_en.qm</file>
|
||||||
<file>translations/cockatrice_es.qm</file>
|
<file>translations/cockatrice_es.qm</file>
|
||||||
|
@ -103,7 +107,7 @@
|
||||||
|
|
||||||
<file>resources/userlevels/normal.svg</file>
|
<file>resources/userlevels/normal.svg</file>
|
||||||
<file>resources/userlevels/registered.svg</file>
|
<file>resources/userlevels/registered.svg</file>
|
||||||
<file>resources/userlevels/judge.svg</file>
|
<file>resources/userlevels/moderator.svg</file>
|
||||||
<file>resources/userlevels/admin.svg</file>
|
<file>resources/userlevels/admin.svg</file>
|
||||||
|
|
||||||
<file>resources/news/exclamation_mark.svg</file>
|
<file>resources/news/exclamation_mark.svg</file>
|
||||||
|
|
33
cockatrice/resources/genders/female.svg
Normal file
33
cockatrice/resources/genders/female.svg
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<svg
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
version="1.0"
|
||||||
|
width="75"
|
||||||
|
height="75"
|
||||||
|
id="svg34864">
|
||||||
|
<defs
|
||||||
|
id="defs34866" />
|
||||||
|
<g
|
||||||
|
transform="translate(-348.7552,-478.0905)"
|
||||||
|
id="layer1">
|
||||||
|
<g
|
||||||
|
transform="matrix(1.071197,0,0,1.075147,-13.30677,-36.99488)"
|
||||||
|
id="g3773">
|
||||||
|
<path
|
||||||
|
d="M 176 33 A 11 11 0 1 1 154,33 A 11 11 0 1 1 176 33 z"
|
||||||
|
transform="matrix(1.540096,0,0,1.5384,118.8893,454.0543)"
|
||||||
|
style="color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:black;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||||
|
id="path3939" />
|
||||||
|
<path
|
||||||
|
d="M 373.00525,521.74399 L 373.00525,543.28159"
|
||||||
|
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:4.61774349;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path3941" />
|
||||||
|
<path
|
||||||
|
d="M 363.76467,534.05119 L 382.24582,534.05119"
|
||||||
|
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:black;stroke-width:4.61774349;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path4816" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
12
cockatrice/resources/genders/male.svg
Normal file
12
cockatrice/resources/genders/male.svg
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.0" width="75" height="75" id="svg34864">
|
||||||
|
<defs id="defs34866"/>
|
||||||
|
<g transform="translate(-348.755, -478.091)" id="layer1">
|
||||||
|
<g transform="matrix(1.94812, 0, 0, 1.93731, -342.43, -460.01)" id="g1872">
|
||||||
|
<path d="M 387.95009,489.60348 L 378.66214,498.89143" style="opacity: 1; color: black; fill: none; fill-opacity: 0.75; fill-rule: evenodd; stroke: black; stroke-width: 3; stroke-linecap: butt; stroke-linejoin: miter; marker: none; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline; overflow: visible;" id="path26867"/>
|
||||||
|
<path d="M 49.396475 36.70454 A 15.623922 16.319134 0 1 1 18.14863,36.70454 A 15.623922 16.319134 0 1 1 49.396475 36.70454 z" transform="matrix(0.48802, 0.48802, -0.467594, 0.467594, 371.609, 473.136)" style="opacity: 1; color: black; fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: black; stroke-width: 4.44072; stroke-linecap: butt; stroke-linejoin: miter; marker: none; stroke-miterlimit: 4; stroke-dasharray: none; stroke-dashoffset: 0pt; stroke-opacity: 1; visibility: visible; display: inline; overflow: visible;" id="path26871"/>
|
||||||
|
<path d="M 379.92823,489.70212 C 387.842,489.70212 387.842,489.70212 387.842,489.70212 L 387.842,497.61589" style="fill: none; fill-rule: evenodd; stroke: black; stroke-width: 3; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path27759"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
10
cockatrice/resources/genders/unknown.svg
Normal file
10
cockatrice/resources/genders/unknown.svg
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Intersexual/Transgendered symbol by Gregory Maxwell. Copyright 2005. GFDL-1.2 only -->
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
version="1.1"
|
||||||
|
width="210"
|
||||||
|
height="280">
|
||||||
|
<path d="M 188,38 v 20 l 14,-8 v -42 h -42 l -8,14 h 20 l -37,37 a 79,79 0 1,0 -59,141 v 22 h -27 v 23 h 27 v 27 h 23 v -27 h 27 v -23 h -27 v -22 a 79,79 0 0,0 52,-125 zm -100,27 a 57,57 0 1,1 0,114 a 57,57 0 1,1 0,-114 z"/>
|
||||||
|
<!-- 88,65 // -63,-10 -->
|
||||||
|
</svg>
|
After Width: | Height: | Size: 500 B |
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
|
@ -46,35 +46,36 @@ void CardZone::clearContents()
|
||||||
QString CardZone::getTranslatedName(bool hisOwn, GrammaticalCase gc) const
|
QString CardZone::getTranslatedName(bool hisOwn, GrammaticalCase gc) const
|
||||||
{
|
{
|
||||||
QString ownerName = player->getName();
|
QString ownerName = player->getName();
|
||||||
|
bool female = player->getUserInfo()->getGender() == ServerInfo_User::Female;
|
||||||
if (name == "hand")
|
if (name == "hand")
|
||||||
switch (gc) {
|
switch (gc) {
|
||||||
case CaseNominative: return hisOwn ? tr("his hand", "nominative") : tr("%1's hand", "nominative").arg(ownerName);
|
case CaseNominative: return female ? (hisOwn ? tr("her hand", "nominative, female owner") : tr("%1's hand", "nominative, female owner").arg(ownerName)) : (hisOwn ? tr("his hand", "nominative, male owner") : tr("%1's hand", "nominative, male owner").arg(ownerName));
|
||||||
case CaseGenitive: return hisOwn ? tr("of his hand", "genitive") : tr("of %1's hand", "genitive").arg(ownerName);
|
case CaseGenitive: return female ? (hisOwn ? tr("of her hand", "genitive, female owner") : tr("of %1's hand", "genitive, female owner").arg(ownerName)) : (hisOwn ? tr("of his hand", "genitive, male owner") : tr("of %1's hand", "genitive, male owner").arg(ownerName));
|
||||||
case CaseAccusative: return hisOwn ? tr("his hand", "accusative") : tr("%1's hand", "accusative").arg(ownerName);
|
case CaseAccusative: return female ? (hisOwn ? tr("her hand", "accusative, female owner") : tr("%1's hand", "accusative, female owner").arg(ownerName)) : (hisOwn ? tr("his hand", "accusative, male owner") : tr("%1's hand", "accusative, male owner").arg(ownerName));
|
||||||
}
|
}
|
||||||
else if (name == "deck")
|
else if (name == "deck")
|
||||||
switch (gc) {
|
switch (gc) {
|
||||||
case CaseNominative: return hisOwn ? tr("his library", "nominative") : tr("%1's library", "nominative").arg(ownerName);
|
case CaseNominative: return female ? (hisOwn ? tr("her library", "nominative, female owner") : tr("%1's library", "nominative, female owner").arg(ownerName)) : (hisOwn ? tr("his library", "nominative, male owner") : tr("%1's library", "nominative, male owner").arg(ownerName));
|
||||||
case CaseGenitive: return hisOwn ? tr("of his library", "genitive") : tr("of %1's library", "genitive").arg(ownerName);
|
case CaseGenitive: return female ? (hisOwn ? tr("of her library", "genitive, female owner") : tr("of %1's library", "genitive, female owner").arg(ownerName)) : (hisOwn ? tr("of his library", "genitive, male owner") : tr("of %1's library", "genitive, male owner").arg(ownerName));
|
||||||
case CaseAccusative: return hisOwn ? tr("his library", "accusative") : tr("%1's library", "accusative").arg(ownerName);
|
case CaseAccusative: return female ? (hisOwn ? tr("her library", "accusative, female owner") : tr("%1's library", "accusative, female owner").arg(ownerName)) : (hisOwn ? tr("his library", "accusative, male owner") : tr("%1's library", "accusative, male owner").arg(ownerName));
|
||||||
}
|
}
|
||||||
else if (name == "grave")
|
else if (name == "grave")
|
||||||
switch (gc) {
|
switch (gc) {
|
||||||
case CaseNominative: return hisOwn ? tr("his graveyard", "nominative") : tr("%1's graveyard", "nominative").arg(ownerName);
|
case CaseNominative: return female ? (hisOwn ? tr("her graveyard", "nominative, female owner") : tr("%1's graveyard", "nominative, female owner").arg(ownerName)) : (hisOwn ? tr("his graveyard", "nominative, male owner") : tr("%1's graveyard", "nominative, male owner").arg(ownerName));
|
||||||
case CaseGenitive: return hisOwn ? tr("of his graveyard", "genitive") : tr("of %1's graveyard", "genitive").arg(ownerName);
|
case CaseGenitive: return female ? (hisOwn ? tr("of her graveyard", "genitive, female owner") : tr("of %1's graveyard", "genitive, female owner").arg(ownerName)) : (hisOwn ? tr("of his graveyard", "genitive, male owner") : tr("of %1's graveyard", "genitive, male owner").arg(ownerName));
|
||||||
case CaseAccusative: return hisOwn ? tr("his graveyard", "accusative") : tr("%1's graveyard", "accusative").arg(ownerName);
|
case CaseAccusative: return female ? (hisOwn ? tr("her graveyard", "accusative, female owner") : tr("%1's graveyard", "accusative, female owner").arg(ownerName)) : (hisOwn ? tr("his graveyard", "accusative, male owner") : tr("%1's graveyard", "accusative, male owner").arg(ownerName));
|
||||||
}
|
}
|
||||||
else if (name == "rfg")
|
else if (name == "rfg")
|
||||||
switch (gc) {
|
switch (gc) {
|
||||||
case CaseNominative: return hisOwn ? tr("his exile", "nominative") : tr("%1's exile", "nominative").arg(ownerName);
|
case CaseNominative: return female ? (hisOwn ? tr("her exile", "nominative, female owner") : tr("%1's exile", "nominative, female owner").arg(ownerName)) : (hisOwn ? tr("his exile", "nominative, male owner") : tr("%1's exile", "nominative, male owner").arg(ownerName));
|
||||||
case CaseGenitive: return hisOwn ? tr("of his exile", "genitive") : tr("of %1's exile", "genitive").arg(ownerName);
|
case CaseGenitive: return female ? (hisOwn ? tr("of her exile", "genitive, female owner") : tr("of %1's exile", "genitive, female owner").arg(ownerName)) : (hisOwn ? tr("of his exile", "genitive, male owner") : tr("of %1's exile", "genitive, male owner").arg(ownerName));
|
||||||
case CaseAccusative: return hisOwn ? tr("his exile", "accusative") : tr("%1's exile", "accusative").arg(ownerName);
|
case CaseAccusative: return female ? (hisOwn ? tr("her exile", "accusative, female owner") : tr("%1's exile", "accusative, female owner").arg(ownerName)) : (hisOwn ? tr("his exile", "accusative, male owner") : tr("%1's exile", "accusative, male owner").arg(ownerName));
|
||||||
}
|
}
|
||||||
else if (name == "sb")
|
else if (name == "sb")
|
||||||
switch (gc) {
|
switch (gc) {
|
||||||
case CaseNominative: return hisOwn ? tr("his sideboard", "nominative") : tr("%1's sideboard", "nominative").arg(ownerName);
|
case CaseNominative: return female ? (hisOwn ? tr("her sideboard", "nominative, female owner") : tr("%1's sideboard", "nominative, female owner").arg(ownerName)) : (hisOwn ? tr("his sideboard", "nominative, male owner") : tr("%1's sideboard", "nominative, male owner").arg(ownerName));
|
||||||
case CaseGenitive: return hisOwn ? tr("of his sideboard", "genitive") : tr("of %1's sideboard", "genitive").arg(ownerName);
|
case CaseGenitive: return female ? (hisOwn ? tr("of her sideboard", "genitive, female owner") : tr("of %1's sideboard", "genitive, female owner").arg(ownerName)) : (hisOwn ? tr("of his sideboard", "genitive, male owner") : tr("of %1's sideboard", "genitive, male owner").arg(ownerName));
|
||||||
case CaseAccusative: return hisOwn ? tr("his sideboard", "accusative") : tr("%1's sideboard", "accusative").arg(ownerName);
|
case CaseAccusative: return female ? (hisOwn ? tr("her sideboard", "accusative, female owner") : tr("%1's sideboard", "accusative, female owner").arg(ownerName)) : (hisOwn ? tr("his sideboard", "accusative, male owner") : tr("%1's sideboard", "accusative, male owner").arg(ownerName));
|
||||||
}
|
}
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,11 @@ QString MessageLogWidget::sanitizeHtml(QString dirty) const
|
||||||
.replace(">", ">");
|
.replace(">", ">");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MessageLogWidget::isFemale(Player *player) const
|
||||||
|
{
|
||||||
|
return player->getUserInfo()->getGender() == ServerInfo_User::Female;
|
||||||
|
}
|
||||||
|
|
||||||
void MessageLogWidget::logConnecting(QString hostname)
|
void MessageLogWidget::logConnecting(QString hostname)
|
||||||
{
|
{
|
||||||
append(tr("Connecting to %1...").arg(sanitizeHtml(hostname)));
|
append(tr("Connecting to %1...").arg(sanitizeHtml(hostname)));
|
||||||
|
@ -122,11 +127,11 @@ void MessageLogWidget::logSpectatorSay(QString spectatorName, QString message)
|
||||||
append(QString("<font color=\"red\">%1:</font> %2").arg(sanitizeHtml(spectatorName)).arg(sanitizeHtml(message)));
|
append(QString("<font color=\"red\">%1:</font> %2").arg(sanitizeHtml(spectatorName)).arg(sanitizeHtml(message)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessageLogWidget::logShuffle(Player *player)
|
void MessageLogWidget::logShuffle(Player *player, CardZone *zone)
|
||||||
{
|
{
|
||||||
soundEngine->shuffle();
|
soundEngine->shuffle();
|
||||||
if (currentContext != MessageContext_Mulligan)
|
if (currentContext != MessageContext_Mulligan)
|
||||||
append(tr("%1 shuffles his library.").arg(sanitizeHtml(player->getName())));
|
append(tr("%1 shuffles %2.").arg(sanitizeHtml(player->getName())).arg(zone->getTranslatedName(true, CaseAccusative)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessageLogWidget::logRollDie(Player *player, int sides, int roll)
|
void MessageLogWidget::logRollDie(Player *player, int sides, int roll)
|
||||||
|
@ -147,9 +152,9 @@ void MessageLogWidget::logDrawCards(Player *player, int number)
|
||||||
void MessageLogWidget::logUndoDraw(Player *player, QString cardName)
|
void MessageLogWidget::logUndoDraw(Player *player, QString cardName)
|
||||||
{
|
{
|
||||||
if (cardName.isEmpty())
|
if (cardName.isEmpty())
|
||||||
append(tr("%1 undoes his last draw.").arg(sanitizeHtml(player->getName())));
|
append((isFemale(player) ? tr("%1 undoes her last draw.") : tr("%1 undoes his last draw.")).arg(sanitizeHtml(player->getName())));
|
||||||
else
|
else
|
||||||
append(tr("%1 undoes his last draw (%2).").arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))));
|
append((isFemale(player) ? tr("%1 undoes her last draw (%2).") : tr("%1 undoes his last draw (%2).")).arg(sanitizeHtml(player->getName())).arg(QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(cardName))));
|
||||||
}
|
}
|
||||||
|
|
||||||
QPair<QString, QString> MessageLogWidget::getFromStr(CardZone *zone, QString cardName, int position) const
|
QPair<QString, QString> MessageLogWidget::getFromStr(CardZone *zone, QString cardName, int position) const
|
||||||
|
@ -169,16 +174,16 @@ QPair<QString, QString> MessageLogWidget::getFromStr(CardZone *zone, QString car
|
||||||
else if (startName == "deck") {
|
else if (startName == "deck") {
|
||||||
if (position == zone->getCards().size() - 1) {
|
if (position == zone->getCards().size() - 1) {
|
||||||
if (cardName.isEmpty()) {
|
if (cardName.isEmpty()) {
|
||||||
cardName = tr("the bottom card of his library");
|
cardName = isFemale(zone->getPlayer()) ? tr("the bottom card of her library") : tr("the bottom card of his library");
|
||||||
cardNameContainsStartZone = true;
|
cardNameContainsStartZone = true;
|
||||||
} else
|
} else
|
||||||
fromStr = tr(" from the bottom of his library");
|
fromStr = isFemale(zone->getPlayer()) ? tr(" from the bottom of her library") : tr(" from the bottom of his library");
|
||||||
} else if (position == 0) {
|
} else if (position == 0) {
|
||||||
if (cardName.isEmpty()) {
|
if (cardName.isEmpty()) {
|
||||||
cardName = tr("the top card of his library");
|
cardName = isFemale(zone->getPlayer()) ? tr("the top card of her library") : tr("the top card of his library");
|
||||||
cardNameContainsStartZone = true;
|
cardNameContainsStartZone = true;
|
||||||
} else
|
} else
|
||||||
fromStr = tr(" from the top of his library");
|
fromStr = isFemale(zone->getPlayer()) ? tr(" from the top of her library") : tr(" from the top of his library");
|
||||||
} else
|
} else
|
||||||
fromStr = tr(" from library");
|
fromStr = tr(" from library");
|
||||||
} else if (startName == "sb")
|
} else if (startName == "sb")
|
||||||
|
@ -233,13 +238,13 @@ void MessageLogWidget::doMoveCard(LogMoveCard &attributes)
|
||||||
finalStr = tr("%1 moves %2%3 to hand.");
|
finalStr = tr("%1 moves %2%3 to hand.");
|
||||||
else if (targetName == "deck") {
|
else if (targetName == "deck") {
|
||||||
if (attributes.newX == -1)
|
if (attributes.newX == -1)
|
||||||
finalStr = tr("%1 puts %2%3 into his library.");
|
finalStr = isFemale(attributes.targetZone->getPlayer()) ? tr("%1 puts %2%3 into her library.") : tr("%1 puts %2%3 into his library.");
|
||||||
else if (attributes.newX == attributes.targetZone->getCards().size() - 1)
|
else if (attributes.newX == attributes.targetZone->getCards().size() - 1)
|
||||||
finalStr = tr("%1 puts %2%3 on bottom of his library.");
|
finalStr = isFemale(attributes.targetZone->getPlayer()) ? tr("%1 puts %2%3 on bottom of her library.") : tr("%1 puts %2%3 on bottom of his library.");
|
||||||
else if (attributes.newX == 0)
|
else if (attributes.newX == 0)
|
||||||
finalStr = tr("%1 puts %2%3 on top of his library.");
|
finalStr = isFemale(attributes.targetZone->getPlayer()) ? tr("%1 puts %2%3 on top of her library.") : tr("%1 puts %2%3 on top of his library.");
|
||||||
else
|
else
|
||||||
finalStr = tr("%1 puts %2%3 into his library at position %4.");
|
finalStr = isFemale(attributes.targetZone->getPlayer()) ? tr("%1 puts %2%3 into her library at position %4.") : tr("%1 puts %2%3 into his library at position %4.");
|
||||||
} else if (targetName == "sb")
|
} else if (targetName == "sb")
|
||||||
finalStr = tr("%1 moves %2%3 to sideboard.");
|
finalStr = tr("%1 moves %2%3 to sideboard.");
|
||||||
else if (targetName == "stack") {
|
else if (targetName == "stack") {
|
||||||
|
@ -269,7 +274,7 @@ void MessageLogWidget::logMulligan(Player *player, int number)
|
||||||
if (number > -1)
|
if (number > -1)
|
||||||
append(tr("%1 takes a mulligan to %n.", "", number).arg(sanitizeHtml(player->getName())));
|
append(tr("%1 takes a mulligan to %n.", "", number).arg(sanitizeHtml(player->getName())));
|
||||||
else
|
else
|
||||||
append(tr("%1 draws his initial hand.").arg(sanitizeHtml(player->getName())));
|
append((isFemale(player) ? tr("%1 draws her initial hand.") : tr("%1 draws his initial hand.")).arg(sanitizeHtml(player->getName())));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessageLogWidget::logFlipCard(Player *player, QString cardName, bool faceDown)
|
void MessageLogWidget::logFlipCard(Player *player, QString cardName, bool faceDown)
|
||||||
|
@ -351,7 +356,7 @@ void MessageLogWidget::logSetTapped(Player *player, CardItem *card, bool tapped)
|
||||||
else {
|
else {
|
||||||
QString cardStr;
|
QString cardStr;
|
||||||
if (!card)
|
if (!card)
|
||||||
cardStr = tr("his permanents");
|
cardStr = isFemale(player) ? tr("her permanents") : tr("his permanents");
|
||||||
else
|
else
|
||||||
cardStr = QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(card->getName()));
|
cardStr = QString("<font color=\"blue\">%1</font>").arg(sanitizeHtml(card->getName()));
|
||||||
append(tr("%1 %2 %3.").arg(sanitizeHtml(player->getName())).arg(tapped ? tr("taps") : tr("untaps")).arg(cardStr));
|
append(tr("%1 %2 %3.").arg(sanitizeHtml(player->getName())).arg(tapped ? tr("taps") : tr("untaps")).arg(cardStr));
|
||||||
|
@ -495,7 +500,7 @@ void MessageLogWidget::containerProcessingDone()
|
||||||
void MessageLogWidget::connectToPlayer(Player *player)
|
void MessageLogWidget::connectToPlayer(Player *player)
|
||||||
{
|
{
|
||||||
connect(player, SIGNAL(logSay(Player *, QString)), this, SLOT(logSay(Player *, QString)));
|
connect(player, SIGNAL(logSay(Player *, QString)), this, SLOT(logSay(Player *, QString)));
|
||||||
connect(player, SIGNAL(logShuffle(Player *)), this, SLOT(logShuffle(Player *)));
|
connect(player, SIGNAL(logShuffle(Player *, CardZone *)), this, SLOT(logShuffle(Player *, CardZone *)));
|
||||||
connect(player, SIGNAL(logRollDie(Player *, int, int)), this, SLOT(logRollDie(Player *, int, int)));
|
connect(player, SIGNAL(logRollDie(Player *, int, int)), this, SLOT(logRollDie(Player *, int, int)));
|
||||||
connect(player, SIGNAL(logCreateArrow(Player *, Player *, QString, Player *, QString, bool)), this, SLOT(logCreateArrow(Player *, Player *, QString, Player *, QString, bool)));
|
connect(player, SIGNAL(logCreateArrow(Player *, Player *, QString, Player *, QString, bool)), this, SLOT(logCreateArrow(Player *, Player *, QString, Player *, QString, bool)));
|
||||||
connect(player, SIGNAL(logCreateToken(Player *, QString, QString)), this, SLOT(logCreateToken(Player *, QString, QString)));
|
connect(player, SIGNAL(logCreateToken(Player *, QString, QString)), this, SLOT(logCreateToken(Player *, QString, QString)));
|
||||||
|
|
|
@ -31,6 +31,7 @@ private:
|
||||||
|
|
||||||
CardInfoWidget *infoWidget;
|
CardInfoWidget *infoWidget;
|
||||||
QString sanitizeHtml(QString dirty) const;
|
QString sanitizeHtml(QString dirty) const;
|
||||||
|
bool isFemale(Player *player) const;
|
||||||
QPair<QString, QString> getFromStr(CardZone *zone, QString cardName, int position) const;
|
QPair<QString, QString> getFromStr(CardZone *zone, QString cardName, int position) const;
|
||||||
QString getCardNameUnderMouse(const QPoint &pos) const;
|
QString getCardNameUnderMouse(const QPoint &pos) const;
|
||||||
MessageContext currentContext;
|
MessageContext currentContext;
|
||||||
|
@ -66,7 +67,7 @@ public slots:
|
||||||
void logGameStart();
|
void logGameStart();
|
||||||
void logSay(Player *player, QString message);
|
void logSay(Player *player, QString message);
|
||||||
void logSpectatorSay(QString spectatorName, QString message);
|
void logSpectatorSay(QString spectatorName, QString message);
|
||||||
void logShuffle(Player *player);
|
void logShuffle(Player *player, CardZone *zone);
|
||||||
void logRollDie(Player *player, int sides, int roll);
|
void logRollDie(Player *player, int sides, int roll);
|
||||||
void logDrawCards(Player *player, int number);
|
void logDrawCards(Player *player, int number);
|
||||||
void logUndoDraw(Player *player, QString cardName);
|
void logUndoDraw(Player *player, QString cardName);
|
||||||
|
|
|
@ -78,6 +78,36 @@ QPixmap PingPixmapGenerator::generatePixmap(int size, int value, int max)
|
||||||
|
|
||||||
QMap<int, QPixmap> PingPixmapGenerator::pmCache;
|
QMap<int, QPixmap> PingPixmapGenerator::pmCache;
|
||||||
|
|
||||||
|
QPixmap GenderPixmapGenerator::generatePixmap(int height, int _gender)
|
||||||
|
{
|
||||||
|
ServerInfo_User::Gender gender = static_cast<ServerInfo_User::Gender>(_gender);
|
||||||
|
if ((gender != ServerInfo_User::Male) && (gender != ServerInfo_User::Female))
|
||||||
|
gender = ServerInfo_User::GenderUnknown;
|
||||||
|
|
||||||
|
int key = gender * 100000 + height;
|
||||||
|
if (pmCache.contains(key))
|
||||||
|
return pmCache.value(key);
|
||||||
|
|
||||||
|
QString genderStr;
|
||||||
|
switch (gender) {
|
||||||
|
case ServerInfo_User::Male: genderStr = "male"; break;
|
||||||
|
case ServerInfo_User::Female: genderStr = "female"; break;
|
||||||
|
default: genderStr = "unknown";
|
||||||
|
};
|
||||||
|
|
||||||
|
QSvgRenderer svg(QString(":/resources/genders/" + genderStr + ".svg"));
|
||||||
|
int width = (int) round(height * (double) svg.defaultSize().width() / (double) svg.defaultSize().height());
|
||||||
|
QPixmap pixmap(width, height);
|
||||||
|
pixmap.fill(Qt::transparent);
|
||||||
|
QPainter painter(&pixmap);
|
||||||
|
svg.render(&painter, QRectF(0, 0, width, height));
|
||||||
|
|
||||||
|
pmCache.insert(key, pixmap);
|
||||||
|
return pixmap;
|
||||||
|
}
|
||||||
|
|
||||||
|
QMap<int, QPixmap> GenderPixmapGenerator::pmCache;
|
||||||
|
|
||||||
QPixmap CountryPixmapGenerator::generatePixmap(int height, const QString &countryCode)
|
QPixmap CountryPixmapGenerator::generatePixmap(int height, const QString &countryCode)
|
||||||
{
|
{
|
||||||
if (countryCode.size() != 2)
|
if (countryCode.size() != 2)
|
||||||
|
@ -110,8 +140,8 @@ QPixmap UserLevelPixmapGenerator::generatePixmap(int height, int userLevel)
|
||||||
QString levelString;
|
QString levelString;
|
||||||
if (userLevel & ServerInfo_User::IsAdmin)
|
if (userLevel & ServerInfo_User::IsAdmin)
|
||||||
levelString = "admin";
|
levelString = "admin";
|
||||||
else if (userLevel & ServerInfo_User::IsJudge)
|
else if (userLevel & ServerInfo_User::IsModerator)
|
||||||
levelString = "judge";
|
levelString = "moderator";
|
||||||
else if (userLevel &ServerInfo_User::IsRegistered)
|
else if (userLevel &ServerInfo_User::IsRegistered)
|
||||||
levelString = "registered";
|
levelString = "registered";
|
||||||
else
|
else
|
||||||
|
|
|
@ -28,6 +28,14 @@ public:
|
||||||
static void clear() { pmCache.clear(); }
|
static void clear() { pmCache.clear(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class GenderPixmapGenerator {
|
||||||
|
private:
|
||||||
|
static QMap<int, QPixmap> pmCache;
|
||||||
|
public:
|
||||||
|
static QPixmap generatePixmap(int height, int gender);
|
||||||
|
static void clear() { pmCache.clear(); }
|
||||||
|
};
|
||||||
|
|
||||||
class CountryPixmapGenerator {
|
class CountryPixmapGenerator {
|
||||||
private:
|
private:
|
||||||
static QMap<QString, QPixmap> pmCache;
|
static QMap<QString, QPixmap> pmCache;
|
||||||
|
|
|
@ -713,7 +713,7 @@ void Player::eventSay(Event_Say *event)
|
||||||
|
|
||||||
void Player::eventShuffle(Event_Shuffle * /*event*/)
|
void Player::eventShuffle(Event_Shuffle * /*event*/)
|
||||||
{
|
{
|
||||||
emit logShuffle(this);
|
emit logShuffle(this, zones.value("deck"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::eventRollDie(Event_RollDie *event)
|
void Player::eventRollDie(Event_RollDie *event)
|
||||||
|
|
|
@ -70,7 +70,7 @@ signals:
|
||||||
void newCardAdded(AbstractCardItem *card);
|
void newCardAdded(AbstractCardItem *card);
|
||||||
// Log events
|
// Log events
|
||||||
void logSay(Player *player, QString message);
|
void logSay(Player *player, QString message);
|
||||||
void logShuffle(Player *player);
|
void logShuffle(Player *player, CardZone *zone);
|
||||||
void logRollDie(Player *player, int sides, int roll);
|
void logRollDie(Player *player, int sides, int roll);
|
||||||
void logCreateArrow(Player *player, Player *startPlayer, QString startCard, Player *targetPlayer, QString targetCard, bool _playerTarget);
|
void logCreateArrow(Player *player, Player *startPlayer, QString startCard, Player *targetPlayer, QString targetCard, bool _playerTarget);
|
||||||
void logCreateToken(Player *player, QString cardName, QString pt);
|
void logCreateToken(Player *player, QString cardName, QString pt);
|
||||||
|
|
|
@ -17,6 +17,8 @@ UserInfoBox::UserInfoBox(AbstractClient *_client, bool _fullInfo, QWidget *paren
|
||||||
nameLabel->setFont(nameFont);
|
nameLabel->setFont(nameFont);
|
||||||
realNameLabel1 = new QLabel;
|
realNameLabel1 = new QLabel;
|
||||||
realNameLabel2 = new QLabel;
|
realNameLabel2 = new QLabel;
|
||||||
|
genderLabel1 = new QLabel;
|
||||||
|
genderLabel2 = new QLabel;
|
||||||
countryLabel1 = new QLabel;
|
countryLabel1 = new QLabel;
|
||||||
countryLabel2 = new QLabel;
|
countryLabel2 = new QLabel;
|
||||||
userLevelLabel1 = new QLabel;
|
userLevelLabel1 = new QLabel;
|
||||||
|
@ -28,11 +30,13 @@ UserInfoBox::UserInfoBox(AbstractClient *_client, bool _fullInfo, QWidget *paren
|
||||||
mainLayout->addWidget(nameLabel, 1, 0, 1, 3);
|
mainLayout->addWidget(nameLabel, 1, 0, 1, 3);
|
||||||
mainLayout->addWidget(realNameLabel1, 2, 0, 1, 1);
|
mainLayout->addWidget(realNameLabel1, 2, 0, 1, 1);
|
||||||
mainLayout->addWidget(realNameLabel2, 2, 1, 1, 2);
|
mainLayout->addWidget(realNameLabel2, 2, 1, 1, 2);
|
||||||
mainLayout->addWidget(countryLabel1, 3, 0, 1, 1);
|
mainLayout->addWidget(genderLabel1, 3, 0, 1, 1);
|
||||||
mainLayout->addWidget(countryLabel2, 3, 1, 1, 2);
|
mainLayout->addWidget(genderLabel2, 3, 1, 1, 2);
|
||||||
mainLayout->addWidget(userLevelLabel1, 4, 0, 1, 1);
|
mainLayout->addWidget(countryLabel1, 4, 0, 1, 1);
|
||||||
mainLayout->addWidget(userLevelLabel2, 4, 1, 1, 1);
|
mainLayout->addWidget(countryLabel2, 4, 1, 1, 2);
|
||||||
mainLayout->addWidget(userLevelLabel3, 4, 2, 1, 1);
|
mainLayout->addWidget(userLevelLabel1, 5, 0, 1, 1);
|
||||||
|
mainLayout->addWidget(userLevelLabel2, 5, 1, 1, 1);
|
||||||
|
mainLayout->addWidget(userLevelLabel3, 5, 2, 1, 1);
|
||||||
mainLayout->setColumnStretch(2, 10);
|
mainLayout->setColumnStretch(2, 10);
|
||||||
|
|
||||||
setWindowTitle(tr("User information"));
|
setWindowTitle(tr("User information"));
|
||||||
|
@ -43,6 +47,7 @@ UserInfoBox::UserInfoBox(AbstractClient *_client, bool _fullInfo, QWidget *paren
|
||||||
void UserInfoBox::retranslateUi()
|
void UserInfoBox::retranslateUi()
|
||||||
{
|
{
|
||||||
realNameLabel1->setText(tr("Real name:"));
|
realNameLabel1->setText(tr("Real name:"));
|
||||||
|
genderLabel1->setText(tr("Gender:"));
|
||||||
countryLabel1->setText(tr("Location:"));
|
countryLabel1->setText(tr("Location:"));
|
||||||
userLevelLabel1->setText(tr("User level:"));
|
userLevelLabel1->setText(tr("User level:"));
|
||||||
}
|
}
|
||||||
|
@ -58,13 +63,14 @@ void UserInfoBox::updateInfo(ServerInfo_User *user)
|
||||||
|
|
||||||
nameLabel->setText(user->getName());
|
nameLabel->setText(user->getName());
|
||||||
realNameLabel2->setText(user->getRealName());
|
realNameLabel2->setText(user->getRealName());
|
||||||
|
genderLabel2->setPixmap(GenderPixmapGenerator::generatePixmap(15, user->getGender()));
|
||||||
countryLabel2->setPixmap(CountryPixmapGenerator::generatePixmap(15, user->getCountry()));
|
countryLabel2->setPixmap(CountryPixmapGenerator::generatePixmap(15, user->getCountry()));
|
||||||
userLevelLabel2->setPixmap(UserLevelPixmapGenerator::generatePixmap(15, userLevel));
|
userLevelLabel2->setPixmap(UserLevelPixmapGenerator::generatePixmap(15, userLevel));
|
||||||
QString userLevelText;
|
QString userLevelText;
|
||||||
if (userLevel & ServerInfo_User::IsAdmin)
|
if (userLevel & ServerInfo_User::IsAdmin)
|
||||||
userLevelText = tr("Administrator");
|
userLevelText = tr("Administrator");
|
||||||
else if (userLevel & ServerInfo_User::IsJudge)
|
else if (userLevel & ServerInfo_User::IsModerator)
|
||||||
userLevelText = tr("Judge");
|
userLevelText = tr("Moderator");
|
||||||
else if (userLevel & ServerInfo_User::IsRegistered)
|
else if (userLevel & ServerInfo_User::IsRegistered)
|
||||||
userLevelText = tr("Registered user");
|
userLevelText = tr("Registered user");
|
||||||
else
|
else
|
||||||
|
|
|
@ -13,7 +13,7 @@ class UserInfoBox : public QWidget {
|
||||||
private:
|
private:
|
||||||
AbstractClient *client;
|
AbstractClient *client;
|
||||||
bool fullInfo;
|
bool fullInfo;
|
||||||
QLabel *avatarLabel, *nameLabel, *realNameLabel1, *realNameLabel2, *countryLabel1, *countryLabel2, *userLevelLabel1, *userLevelLabel2, *userLevelLabel3;
|
QLabel *avatarLabel, *nameLabel, *realNameLabel1, *realNameLabel2, *genderLabel1, *genderLabel2, *countryLabel1, *countryLabel2, *userLevelLabel1, *userLevelLabel2, *userLevelLabel3;
|
||||||
public:
|
public:
|
||||||
UserInfoBox(AbstractClient *_client, bool fullInfo, QWidget *parent = 0, Qt::WindowFlags flags = 0);
|
UserInfoBox(AbstractClient *_client, bool fullInfo, QWidget *parent = 0, Qt::WindowFlags flags = 0);
|
||||||
void retranslateUi();
|
void retranslateUi();
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -11,12 +11,13 @@ CardToMove::CardToMove(int _cardId, const QString &_pt, bool _tapped)
|
||||||
insertItem(new SerializableItem_Bool("tapped", _tapped));
|
insertItem(new SerializableItem_Bool("tapped", _tapped));
|
||||||
}
|
}
|
||||||
|
|
||||||
ServerInfo_User::ServerInfo_User(const QString &_name, int _userLevel, const QString &_realName, const QString &_country, const QByteArray &_avatarBmp)
|
ServerInfo_User::ServerInfo_User(const QString &_name, int _userLevel, const QString &_realName, Gender _gender, const QString &_country, const QByteArray &_avatarBmp)
|
||||||
: SerializableItem_Map("user")
|
: SerializableItem_Map("user")
|
||||||
{
|
{
|
||||||
insertItem(new SerializableItem_String("name", _name));
|
insertItem(new SerializableItem_String("name", _name));
|
||||||
insertItem(new SerializableItem_Int("userlevel", _userLevel));
|
insertItem(new SerializableItem_Int("userlevel", _userLevel));
|
||||||
insertItem(new SerializableItem_String("real_name", _realName));
|
insertItem(new SerializableItem_String("real_name", _realName));
|
||||||
|
insertItem(new SerializableItem_Int("gender", _gender));
|
||||||
insertItem(new SerializableItem_String("country", _country));
|
insertItem(new SerializableItem_String("country", _country));
|
||||||
insertItem(new SerializableItem_ByteArray("avatar_bmp", _avatarBmp));
|
insertItem(new SerializableItem_ByteArray("avatar_bmp", _avatarBmp));
|
||||||
}
|
}
|
||||||
|
@ -27,6 +28,7 @@ ServerInfo_User::ServerInfo_User(const ServerInfo_User *other, bool complete)
|
||||||
insertItem(new SerializableItem_String("name", other->getName()));
|
insertItem(new SerializableItem_String("name", other->getName()));
|
||||||
insertItem(new SerializableItem_Int("userlevel", other->getUserLevel()));
|
insertItem(new SerializableItem_Int("userlevel", other->getUserLevel()));
|
||||||
insertItem(new SerializableItem_String("real_name", other->getRealName()));
|
insertItem(new SerializableItem_String("real_name", other->getRealName()));
|
||||||
|
insertItem(new SerializableItem_Int("gender", other->getGender()));
|
||||||
insertItem(new SerializableItem_String("country", other->getCountry()));
|
insertItem(new SerializableItem_String("country", other->getCountry()));
|
||||||
insertItem(new SerializableItem_ByteArray("avatar_bmp", complete ? other->getAvatarBmp() : QByteArray()));
|
insertItem(new SerializableItem_ByteArray("avatar_bmp", complete ? other->getAvatarBmp() : QByteArray()));
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,16 +41,22 @@ public:
|
||||||
IsNothing = 0x00,
|
IsNothing = 0x00,
|
||||||
IsUser = 0x01,
|
IsUser = 0x01,
|
||||||
IsRegistered = 0x02,
|
IsRegistered = 0x02,
|
||||||
IsJudge = 0x04,
|
IsModerator = 0x04,
|
||||||
IsAdmin = 0x08
|
IsAdmin = 0x08
|
||||||
};
|
};
|
||||||
ServerInfo_User(const QString &_name = QString(), int _userLevel = IsNothing, const QString &_realName = QString(), const QString &_country = QString(), const QByteArray &_avatarBmp = QByteArray());
|
enum Gender {
|
||||||
|
GenderUnknown = -1,
|
||||||
|
Male = 0,
|
||||||
|
Female = 1
|
||||||
|
};
|
||||||
|
ServerInfo_User(const QString &_name = QString(), int _userLevel = IsNothing, const QString &_realName = QString(), Gender _gender = GenderUnknown, const QString &_country = QString(), const QByteArray &_avatarBmp = QByteArray());
|
||||||
ServerInfo_User(const ServerInfo_User *other, bool complete = true);
|
ServerInfo_User(const ServerInfo_User *other, bool complete = true);
|
||||||
static SerializableItem *newItem() { return new ServerInfo_User; }
|
static SerializableItem *newItem() { return new ServerInfo_User; }
|
||||||
QString getName() const { return static_cast<SerializableItem_String *>(itemMap.value("name"))->getData(); }
|
QString getName() const { return static_cast<SerializableItem_String *>(itemMap.value("name"))->getData(); }
|
||||||
int getUserLevel() const { return static_cast<SerializableItem_Int *>(itemMap.value("userlevel"))->getData(); }
|
int getUserLevel() const { return static_cast<SerializableItem_Int *>(itemMap.value("userlevel"))->getData(); }
|
||||||
void setUserLevel(int _userLevel) { static_cast<SerializableItem_Int *>(itemMap.value("userlevel"))->setData(_userLevel); }
|
void setUserLevel(int _userLevel) { static_cast<SerializableItem_Int *>(itemMap.value("userlevel"))->setData(_userLevel); }
|
||||||
QString getRealName() const { return static_cast<SerializableItem_String *>(itemMap.value("real_name"))->getData(); }
|
QString getRealName() const { return static_cast<SerializableItem_String *>(itemMap.value("real_name"))->getData(); }
|
||||||
|
Gender getGender() const { return static_cast<Gender>(static_cast<SerializableItem_Int *>(itemMap.value("gender"))->getData()); }
|
||||||
QString getCountry() const { return static_cast<SerializableItem_String *>(itemMap.value("country"))->getData(); }
|
QString getCountry() const { return static_cast<SerializableItem_String *>(itemMap.value("country"))->getData(); }
|
||||||
QByteArray getAvatarBmp() const { return static_cast<SerializableItem_ByteArray *>(itemMap.value("avatar_bmp"))->getData(); }
|
QByteArray getAvatarBmp() const { return static_cast<SerializableItem_ByteArray *>(itemMap.value("avatar_bmp"))->getData(); }
|
||||||
};
|
};
|
||||||
|
|
|
@ -104,6 +104,7 @@ CREATE TABLE IF NOT EXISTS `cockatrice_users` (
|
||||||
`admin` tinyint(1) NOT NULL,
|
`admin` tinyint(1) NOT NULL,
|
||||||
`name` varchar(35) NOT NULL,
|
`name` varchar(35) NOT NULL,
|
||||||
`realname` varchar(255) NOT NULL,
|
`realname` varchar(255) NOT NULL,
|
||||||
|
`gender` char(1) NOT NULL,
|
||||||
`password` varchar(255) NOT NULL,
|
`password` varchar(255) NOT NULL,
|
||||||
`email` varchar(255) NOT NULL,
|
`email` varchar(255) NOT NULL,
|
||||||
`country` char(2) NOT NULL,
|
`country` char(2) NOT NULL,
|
||||||
|
|
|
@ -217,19 +217,31 @@ ServerInfo_User *Servatrice::evalUserQueryResult(const QSqlQuery &query, bool co
|
||||||
QString name = query.value(0).toString();
|
QString name = query.value(0).toString();
|
||||||
bool is_admin = query.value(1).toInt();
|
bool is_admin = query.value(1).toInt();
|
||||||
QString realName = query.value(2).toString();
|
QString realName = query.value(2).toString();
|
||||||
QString country = query.value(3).toString();
|
QString genderStr = query.value(3).toString();
|
||||||
|
QString country = query.value(4).toString();
|
||||||
QByteArray avatarBmp;
|
QByteArray avatarBmp;
|
||||||
if (complete)
|
if (complete)
|
||||||
avatarBmp = query.value(4).toByteArray();
|
avatarBmp = query.value(5).toByteArray();
|
||||||
|
|
||||||
|
ServerInfo_User::Gender gender;
|
||||||
|
if (genderStr == "m")
|
||||||
|
gender = ServerInfo_User::Male;
|
||||||
|
else if (genderStr == "f")
|
||||||
|
gender = ServerInfo_User::Female;
|
||||||
|
else
|
||||||
|
gender = ServerInfo_User::GenderUnknown;
|
||||||
|
|
||||||
int userLevel = ServerInfo_User::IsUser | ServerInfo_User::IsRegistered;
|
int userLevel = ServerInfo_User::IsUser | ServerInfo_User::IsRegistered;
|
||||||
if (is_admin)
|
if (is_admin == 1)
|
||||||
userLevel |= ServerInfo_User::IsAdmin;
|
userLevel |= ServerInfo_User::IsAdmin;
|
||||||
|
else if (is_admin == 2)
|
||||||
|
userLevel |= ServerInfo_User::IsModerator;
|
||||||
|
|
||||||
return new ServerInfo_User(
|
return new ServerInfo_User(
|
||||||
name,
|
name,
|
||||||
userLevel,
|
userLevel,
|
||||||
realName,
|
realName,
|
||||||
|
gender,
|
||||||
country,
|
country,
|
||||||
avatarBmp
|
avatarBmp
|
||||||
);
|
);
|
||||||
|
@ -243,7 +255,7 @@ ServerInfo_User *Servatrice::getUserData(const QString &name)
|
||||||
checkSql();
|
checkSql();
|
||||||
|
|
||||||
QSqlQuery query;
|
QSqlQuery query;
|
||||||
query.prepare("select name, admin, realname, country, avatar_bmp from " + dbPrefix + "_users where name = :name and active = 1");
|
query.prepare("select name, admin, realname, gender, country, avatar_bmp from " + dbPrefix + "_users where name = :name and active = 1");
|
||||||
query.bindValue(":name", name);
|
query.bindValue(":name", name);
|
||||||
if (!execSqlQuery(query))
|
if (!execSqlQuery(query))
|
||||||
return new ServerInfo_User(name, ServerInfo_User::IsUser);
|
return new ServerInfo_User(name, ServerInfo_User::IsUser);
|
||||||
|
@ -276,7 +288,7 @@ QMap<QString, ServerInfo_User *> Servatrice::getBuddyList(const QString &name)
|
||||||
checkSql();
|
checkSql();
|
||||||
|
|
||||||
QSqlQuery query;
|
QSqlQuery query;
|
||||||
query.prepare("select a.name, a.admin, a.realname, a.country from " + dbPrefix + "_users a left join " + dbPrefix + "_buddylist b on a.id = b.id_user2 left join " + dbPrefix + "_users c on b.id_user1 = c.id where c.name = :name");
|
query.prepare("select a.name, a.admin, a.realname, a.gender, a.country from " + dbPrefix + "_users a left join " + dbPrefix + "_buddylist b on a.id = b.id_user2 left join " + dbPrefix + "_users c on b.id_user1 = c.id where c.name = :name");
|
||||||
query.bindValue(":name", name);
|
query.bindValue(":name", name);
|
||||||
if (!execSqlQuery(query))
|
if (!execSqlQuery(query))
|
||||||
return result;
|
return result;
|
||||||
|
@ -299,7 +311,7 @@ QMap<QString, ServerInfo_User *> Servatrice::getIgnoreList(const QString &name)
|
||||||
checkSql();
|
checkSql();
|
||||||
|
|
||||||
QSqlQuery query;
|
QSqlQuery query;
|
||||||
query.prepare("select a.name, a.admin, a.realname, a.country from " + dbPrefix + "_users a left join " + dbPrefix + "_ignorelist b on a.id = b.id_user2 left join " + dbPrefix + "_users c on b.id_user1 = c.id where c.name = :name");
|
query.prepare("select a.name, a.admin, a.realname, a.gender, a.country from " + dbPrefix + "_users a left join " + dbPrefix + "_ignorelist b on a.id = b.id_user2 left join " + dbPrefix + "_users c on b.id_user1 = c.id where c.name = :name");
|
||||||
query.bindValue(":name", name);
|
query.bindValue(":name", name);
|
||||||
if (!execSqlQuery(query))
|
if (!execSqlQuery(query))
|
||||||
return result;
|
return result;
|
||||||
|
|
Loading…
Reference in a new issue