BanlistDialog::BanlistDialog(QWidget *parent, bool view) :QDialog(parent),add2nd(NULL) { setWindowTitle(tr("Select generals that are excluded")); if(ban_list.isEmpty()) ban_list << "Roles" << "1v1" << "Basara" << "Hegemony" << "Pairs"; QVBoxLayout *layout = new QVBoxLayout; QTabWidget *tab = new QTabWidget; layout->addWidget(tab); connect(tab,SIGNAL(currentChanged(int)),this,SLOT(switchTo(int))); foreach(QString item, ban_list) { if(item == "Pairs") continue; QWidget *apage = new QWidget; list = new QListWidget; list->setObjectName(item); QStringList banlist = Config.value(QString("Banlist/%1").arg(item)).toStringList(); foreach(QString name, banlist){ addGeneral(name); } lists << list; QVBoxLayout * vlay = new QVBoxLayout; vlay->addWidget(list); //vlay->addLayout(hlayout); apage->setLayout(vlay); tab->addTab(apage,Sanguosha->translate(item)); }
KOFBanlistDialog::KOFBanlistDialog(QDialog *parent) :QDialog(parent) { setWindowTitle(tr("Select generals that are excluded in 1v1 mode")); QVBoxLayout *layout = new QVBoxLayout; list = new QListWidget; list->setIconSize(General::TinyIconSize); list->setViewMode(QListView::IconMode); list->setDragDropMode(QListView::NoDragDrop); QStringList banlist = Config.value("1v1/Banlist").toStringList(); foreach(QString name, banlist){ addGeneral(name); }
void BanlistDialog::doAddButton() { FreeChooseDialog *chooser = new FreeChooseDialog(this, (list->objectName() == "Pairs")); connect(chooser, SIGNAL(general_chosen(QString)), this, SLOT(addGeneral(QString))); connect(chooser, SIGNAL(pair_chosen(QString, QString)), this, SLOT(addPair(QString, QString))); chooser->exec(); }
BanlistDialog::BanlistDialog(QWidget *parent, bool view) : QDialog(parent), add2nd(NULL) { setWindowTitle(tr("Select generals that are excluded")); if (ban_list.isEmpty()) ban_list << "Roles" << "1v1" << "HulaoPass" << "XMode" << "Basara" << "Hegemony" << "Pairs"; QVBoxLayout *layout = new QVBoxLayout; QTabWidget *tab = new QTabWidget; layout->addWidget(tab); connect(tab, SIGNAL(currentChanged(int)), this, SLOT(switchTo(int))); foreach (QString item, ban_list) { if (item == "Pairs") continue; QWidget *apage = new QWidget; list = new QListWidget; list->setObjectName(item); QStringList banlist = Config.value(QString("Banlist/%1").arg(item)).toStringList(); foreach (QString name, banlist) addGeneral(name); lists << list; QVBoxLayout *vlay = new QVBoxLayout; vlay->addWidget(list); apage->setLayout(vlay); tab->addTab(apage, Sanguosha->translate(item)); } QWidget *apage = new QWidget; list = new QListWidget; list->setObjectName("Pairs"); this->list = list; foreach (QString banned, BanPair::getAllBanSet().toList()) addGeneral(banned); foreach (QString banned, BanPair::getSecondBanSet().toList()) add2ndGeneral(banned); foreach (BanPair pair, BanPair::getBanPairSet().toList()) addPair(pair.first, pair.second); QVBoxLayout *vlay = new QVBoxLayout; vlay->addWidget(list); apage->setLayout(vlay); tab->addTab(apage, Sanguosha->translate("Pairs")); lists << list; QPushButton *add = new QPushButton(tr("Add ...")); QPushButton *remove = new QPushButton(tr("Remove")); if (!view) add2nd = new QPushButton(tr("Add 2nd general ...")); QPushButton *ok = new QPushButton(tr("OK")); connect(ok, SIGNAL(clicked()), this, SLOT(accept())); connect(this, SIGNAL(accepted()), this, SLOT(saveAll())); connect(remove, SIGNAL(clicked()), this, SLOT(doRemoveButton())); connect(add, SIGNAL(clicked()), this, SLOT(doAddButton())); if (!view) connect(add2nd, SIGNAL(clicked()), this, SLOT(doAdd2ndButton())); QHBoxLayout *hlayout = new QHBoxLayout; hlayout->addStretch(); if (!view) { hlayout->addWidget(add2nd); add2nd->hide(); hlayout->addWidget(add); hlayout->addWidget(remove); list = lists.first(); } hlayout->addWidget(ok); layout->addLayout(hlayout); setLayout(layout); foreach (QListWidget *alist, lists) { if (alist->objectName() == "Pairs") continue; alist->setViewMode(QListView::IconMode); alist->setDragDropMode(QListView::NoDragDrop); } }
connect(ok, SIGNAL(clicked()), this, SLOT(accept())); connect(this, SIGNAL(accepted()), this, SLOT(save())); QHBoxLayout *hlayout = new QHBoxLayout; hlayout->addStretch(); hlayout->addWidget(add); hlayout->addWidget(remove); hlayout->addWidget(ok); layout->addWidget(list); layout->addLayout(hlayout); setLayout(layout); FreeChooseDialog *chooser = new FreeChooseDialog(this, false); connect(add, SIGNAL(clicked()), chooser, SLOT(exec())); connect(chooser, SIGNAL(general_chosen(QString)), this, SLOT(addGeneral(QString))); } void KOFBanlistDialog::addGeneral(const QString &name){ const General *general = Sanguosha->getGeneral(name); QIcon icon(general->getPixmapPath("tiny")); QString text = Sanguosha->translate(name); QListWidgetItem *item = new QListWidgetItem(icon, text, list); item->setData(Qt::UserRole, name); } void KOFBanlistDialog::removeGeneral(){ int row = list->currentRow(); if(row != -1) delete list->takeItem(row); }