diff -r 3c193ec03e09 -r 3a1708759c4f QTfrontend/ui/widget/hatbutton.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QTfrontend/ui/widget/hatbutton.cpp Sun Jan 13 10:46:01 2013 +0400 @@ -0,0 +1,72 @@ +/* + * Hedgewars, a free turn based strategy game + * Copyright (c) 2004-2012 Andrey Korotaev + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include + +#include "hatprompt.h" +#include "DataManager.h" +#include "hatmodel.h" +#include "hatbutton.h" + +HatButton::HatButton(QWidget* parent) : QPushButton(parent) +{ + setIconSize(QSize(32, 37)); + setFixedSize(44, 44); + + m_hatModel = DataManager::instance().hatModel(); + connect(this, SIGNAL(clicked()), this, SLOT(showPrompt())); + + setCurrentIndex(0); +} + +void HatButton::setCurrentIndex(int index) +{ + m_hat = m_hatModel->index(index, 0); + setWhatsThis(QString(tr("Change hat (%1)")).arg(m_hat.data(Qt::DisplayRole).toString())); + setToolTip(m_hat.data(Qt::DisplayRole).toString()); + setIcon(m_hat.data(Qt::DecorationRole).value()); +} + +int HatButton::currentIndex() +{ + return m_hat.row(); +} + +void HatButton::setCurrentHat(const QString & name) +{ + QList hats = m_hatModel->findItems(name); + + if (hats.count() > 0) + setCurrentIndex(hats[0]->row()); +} + +QString HatButton::currentHat() const +{ + return m_hat.data(Qt::DisplayRole).toString(); +} + +void HatButton::showPrompt() +{ + HatPrompt prompt(currentIndex(), this); + int hatID = prompt.exec() - 1; // Since 0 means canceled, so all indexes are +1'd + if (hatID < 0) return; + + setCurrentIndex(hatID); + emit currentIndexChanged(hatID); + emit currentHatChanged(currentHat()); +} \ No newline at end of file