summaryrefslogtreecommitdiffstats
path: root/application/dialogs/ChooseFtbPackDialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'application/dialogs/ChooseFtbPackDialog.cpp')
-rw-r--r--application/dialogs/ChooseFtbPackDialog.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/application/dialogs/ChooseFtbPackDialog.cpp b/application/dialogs/ChooseFtbPackDialog.cpp
new file mode 100644
index 00000000..ae7c72e1
--- /dev/null
+++ b/application/dialogs/ChooseFtbPackDialog.cpp
@@ -0,0 +1,64 @@
+#include "ChooseFtbPackDialog.h"
+#include "widgets/FtbModpackListItem.h"
+
+ChooseFtbPackDialog::ChooseFtbPackDialog(FtbModpackList modpacks) : ui(new Ui::ChooseFtbPackDialog) {
+ ui->setupUi(this);
+
+ for(int i = 0; i < modpacks.size(); i++) {
+ FtbModpackListItem *item = new FtbModpackListItem(ui->packList, modpacks.at(i));
+
+ item->setText(modpacks.at(i).name);
+ }
+
+ //TODO: Use a model/view instead of a widget
+ connect(ui->packList, &QListWidget::itemClicked, this, &ChooseFtbPackDialog::onListItemClicked);
+ connect(ui->packVersionSelection, &QComboBox::currentTextChanged, this, &ChooseFtbPackDialog::onVersionSelectionItemChanged);
+
+ ui->modpackInfo->setOpenExternalLinks(true);
+
+}
+
+ChooseFtbPackDialog::~ChooseFtbPackDialog(){
+ delete ui;
+}
+
+void ChooseFtbPackDialog::onListItemClicked(QListWidgetItem *item){
+ ui->packVersionSelection->clear();
+ FtbModpack selectedPack = static_cast<FtbModpackListItem*>(item)->getModpack();
+
+ ui->modpackInfo->setHtml("Pack by <b>" + selectedPack.author + "</b>" + "<br>Minecraft " + selectedPack.mcVersion + "<br>"
+ "<br>" + selectedPack.description + "<ul><li>" + selectedPack.mods.replace(";", "</li><li>") + "</li></ul>");
+
+ bool currentAdded = false;
+
+ for(int i = 0; i < selectedPack.oldVersions.size(); i++) {
+ if(selectedPack.currentVersion == selectedPack.oldVersions.at(i)) {
+ currentAdded = true;
+ }
+ ui->packVersionSelection->addItem(selectedPack.oldVersions.at(i));
+ }
+
+ if(!currentAdded) {
+ ui->packVersionSelection->addItem(selectedPack.currentVersion);
+ }
+
+ selected = selectedPack;
+
+}
+
+void ChooseFtbPackDialog::onVersionSelectionItemChanged(QString data) {
+ if(data.isNull() || data.isEmpty()) {
+ selectedVersion = "";
+ return;
+ }
+
+ selectedVersion = data;
+}
+
+FtbModpack ChooseFtbPackDialog::getSelectedModpack() {
+ return selected;
+}
+
+QString ChooseFtbPackDialog::getSelectedVersion() {
+ return selectedVersion;
+}