ChooseGeneralDialog::ChooseGeneralDialog(const QStringList &general_names, QWidget *parent, bool view_only, const QString &title) : QDialog(parent) { m_freeChooseDialog = NULL; if (title.isEmpty()) setWindowTitle(tr("Choose general")); else setWindowTitle(title); QString lord_name; QList<const General *> generals; foreach (QString general_name, general_names) { if (general_name.contains("(lord)")) { general_name.chop(6); lord_name = general_name; continue; } const General *general = Sanguosha->getGeneral(general_name); generals << general; } QSignalMapper *mapper = new QSignalMapper(this); QList<OptionButton *> buttons; bool tooManyManyGenerals = (generals.length() > G_COMMON_LAYOUT.m_chooseGeneralBoxNoIconThreshold); bool tooManyGenerals = (generals.length() > G_COMMON_LAYOUT.m_chooseGeneralBoxSwitchIconSizeThreshold); bool no_icon = false; QSize icon_size; QSanRoomSkin::GeneralIconSize icon_type; if (tooManyManyGenerals) { no_icon = true; } else { if (tooManyGenerals) { icon_type = QSanRoomSkin::S_GENERAL_ICON_SIZE_LARGE; icon_size = G_COMMON_LAYOUT.m_chooseGeneralBoxDenseIconSize; } else { icon_type = QSanRoomSkin::S_GENERAL_ICON_SIZE_CARD; icon_size = G_COMMON_LAYOUT.m_chooseGeneralBoxSparseIconSize; } } foreach (const General *general, generals) { QString caption = Sanguosha->translate(general->objectName()); OptionButton *button = new OptionButton(QString(), caption); if (no_icon) { button->setIcon(QIcon("image/system/no-general-icon.png")); button->setIconSize(QSize(G_COMMON_LAYOUT.m_chooseGeneralBoxDenseIconSize.width(), 1)); } else { button->setIcon(QIcon(G_ROOM_SKIN.getGeneralPixmap(general->objectName(), icon_type))); button->setIconSize(icon_size); } button->setToolTip(general->getSkillDescription(true)); buttons << button; if (!view_only) { mapper->setMapping(button, general->objectName()); connect(button, SIGNAL(double_clicked()), mapper, SLOT(map())); connect(button, SIGNAL(double_clicked()), this, SLOT(accept())); } }
ChooseGeneralDialog::ChooseGeneralDialog(const QStringList &general_names, QWidget *parent) :QDialog(parent), free_chooser(NULL) { setWindowTitle(tr("Choose general")); QString lord_name; QList<const General *> generals; foreach(QString general_name, general_names){ if(general_name.contains("(lord)")) { general_name.chop(6); lord_name = general_name; continue; } const General *general = Sanguosha->getGeneral(general_name); generals << general; } QSignalMapper *mapper = new QSignalMapper(this); QList<OptionButton *> buttons; #ifdef USE_RCC QString category("card2"); #else QString category("card"); #endif QSize icon_size(200*0.8, 290*0.8); if(generals.length() > 10){ category = "big"; icon_size = QSize(94, 96); } foreach(const General *general, generals){ QString icon_path = general->getPixmapPath(category); QString caption = Sanguosha->translate(general->objectName()); OptionButton *button = new OptionButton(icon_path, caption); button->setToolTip(general->getSkillDescription()); button->setIconSize(icon_size); buttons << button; mapper->setMapping(button, general->objectName()); connect(button, SIGNAL(double_clicked()), mapper, SLOT(map())); connect(button, SIGNAL(double_clicked()), this, SLOT(accept())); // special case //if(Self->getRoleEnum() == Player::Lord && general->objectName() == "shencaocao") // button->setEnabled(false); }
ChooseGeneralDialog::ChooseGeneralDialog(const QStringList &general_names, QWidget *parent) :QDialog(parent) { m_freeChooseDialog = NULL; setWindowTitle(tr("Choose general")); QString lord_name; QList<const General *> generals; foreach(QString general_name, general_names){ if(general_name.contains("(lord)")) { general_name.chop(6); lord_name = general_name; continue; } const General *general = Sanguosha->getGeneral(general_name); generals << general; } QSignalMapper *mapper = new QSignalMapper(this); QList<OptionButton *> buttons; QString category("card"); QSize icon_size(200*0.8, 290*0.8); if(generals.length() > 10){ category = "big"; icon_size = QSize(94, 96); } foreach(const General *general, generals){ QString icon_path = general->getPixmapPath(category); QString caption = Sanguosha->translate(general->objectName()); OptionButton *button = new OptionButton(icon_path, caption); button->setToolTip(general->getSkillDescription()); button->setIconSize(icon_size); buttons << button; mapper->setMapping(button, general->objectName()); connect(button, SIGNAL(double_clicked()), mapper, SLOT(map())); connect(button, SIGNAL(double_clicked()), this, SLOT(accept())); }
ChooseGeneralDialog::ChooseGeneralDialog(const QList<const General *> &generals, QWidget *parent) :QDialog(parent), free_chooser(NULL) { setWindowTitle(tr("Choose general")); QSignalMapper *mapper = new QSignalMapper(this); QList<OptionButton *> buttons; foreach(const General *general, generals){ QString icon_path = general->getPixmapPath("card"); QString caption = Sanguosha->translate(general->objectName()); OptionButton *button = new OptionButton(icon_path, caption); button->setToolTip(general->getSkillDescription()); button->setIconSize(GeneralSize); buttons << button; mapper->setMapping(button, general->objectName()); connect(button, SIGNAL(double_clicked()), mapper, SLOT(map())); connect(button, SIGNAL(double_clicked()), this, SLOT(accept())); // special case if(Self->getRoleEnum() == Player::Lord && general->objectName() == "shencaocao"){ button->setEnabled(false); } }