diff options
author | Janrupf <werbung.janrupf@t-online.de> | 2018-03-03 21:22:00 +0100 |
---|---|---|
committer | Janrupf <werbung.janrupf@t-online.de> | 2018-03-11 19:30:47 +0100 |
commit | b8ca36372be11b9ddddb3daa3d32583d286f19e2 (patch) | |
tree | b359357881d14e0b0871b3e5d0175234eb562b72 /application/dialogs | |
parent | 2d295d5afbf6cb5ce1ca624c4aef8fd96b78992b (diff) | |
download | MultiMC-b8ca36372be11b9ddddb3daa3d32583d286f19e2.tar MultiMC-b8ca36372be11b9ddddb3daa3d32583d286f19e2.tar.gz MultiMC-b8ca36372be11b9ddddb3daa3d32583d286f19e2.tar.lz MultiMC-b8ca36372be11b9ddddb3daa3d32583d286f19e2.tar.xz MultiMC-b8ca36372be11b9ddddb3daa3d32583d286f19e2.zip |
GH-2124 First complete implementation, installing is working now! GH-2172 Added sorting
Diffstat (limited to 'application/dialogs')
-rw-r--r-- | application/dialogs/ChooseFtbPackDialog.cpp | 54 | ||||
-rw-r--r-- | application/dialogs/ChooseFtbPackDialog.h | 7 | ||||
-rw-r--r-- | application/dialogs/ChooseFtbPackDialog.ui | 170 |
3 files changed, 107 insertions, 124 deletions
diff --git a/application/dialogs/ChooseFtbPackDialog.cpp b/application/dialogs/ChooseFtbPackDialog.cpp index ae7c72e1..b1deae6e 100644 --- a/application/dialogs/ChooseFtbPackDialog.cpp +++ b/application/dialogs/ChooseFtbPackDialog.cpp @@ -1,33 +1,49 @@ #include "ChooseFtbPackDialog.h" -#include "widgets/FtbModpackListItem.h" +#include <QPushButton> -ChooseFtbPackDialog::ChooseFtbPackDialog(FtbModpackList modpacks) : ui(new Ui::ChooseFtbPackDialog) { +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)); + filterModel = new FtbFilterModel(this); + listModel = new FtbListModel(this); + filterModel->setSourceModel(listModel); + listModel->fill(modpacks); - item->setText(modpacks.at(i).name); + ui->packList->setModel(filterModel); + ui->packList->setSortingEnabled(true); + ui->packList->header()->hide(); + ui->packList->setIndentation(0); + + filterModel->setSorting(FtbFilterModel::Sorting::ByName); + + for(int i = 0; i < filterModel->getAvailableSortings().size(); i++){ + ui->sortByBox->addItem(filterModel->getAvailableSortings().keys().at(i)); } - //TODO: Use a model/view instead of a widget - connect(ui->packList, &QListWidget::itemClicked, this, &ChooseFtbPackDialog::onListItemClicked); + ui->sortByBox->setCurrentText(filterModel->getAvailableSortings().key(filterModel->getCurrentSorting())); + + connect(ui->sortByBox, &QComboBox::currentTextChanged, this, &ChooseFtbPackDialog::onSortingSelectionChanged); connect(ui->packVersionSelection, &QComboBox::currentTextChanged, this, &ChooseFtbPackDialog::onVersionSelectionItemChanged); + connect(ui->packList->selectionModel(), &QItemSelectionModel::currentChanged, this, &ChooseFtbPackDialog::onPackSelectionChanged); ui->modpackInfo->setOpenExternalLinks(true); + ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); } -ChooseFtbPackDialog::~ChooseFtbPackDialog(){ +ChooseFtbPackDialog::~ChooseFtbPackDialog() +{ delete ui; } -void ChooseFtbPackDialog::onListItemClicked(QListWidgetItem *item){ +void ChooseFtbPackDialog::onPackSelectionChanged(QModelIndex now, QModelIndex prev) +{ ui->packVersionSelection->clear(); - FtbModpack selectedPack = static_cast<FtbModpackListItem*>(item)->getModpack(); + FtbModpack selectedPack = filterModel->data(now, Qt::UserRole).value<FtbModpack>(); 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>"); + "<br>" + selectedPack.description + "<ul><li>" + selectedPack.mods.replace(";", "</li><li>") + "</li></ul>"); bool currentAdded = false; @@ -43,10 +59,11 @@ void ChooseFtbPackDialog::onListItemClicked(QListWidgetItem *item){ } selected = selectedPack; - + ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!selected.broken); } -void ChooseFtbPackDialog::onVersionSelectionItemChanged(QString data) { +void ChooseFtbPackDialog::onVersionSelectionItemChanged(QString data) +{ if(data.isNull() || data.isEmpty()) { selectedVersion = ""; return; @@ -55,10 +72,17 @@ void ChooseFtbPackDialog::onVersionSelectionItemChanged(QString data) { selectedVersion = data; } -FtbModpack ChooseFtbPackDialog::getSelectedModpack() { +FtbModpack ChooseFtbPackDialog::getSelectedModpack() +{ return selected; } -QString ChooseFtbPackDialog::getSelectedVersion() { +QString ChooseFtbPackDialog::getSelectedVersion() +{ return selectedVersion; } + +void ChooseFtbPackDialog::onSortingSelectionChanged(QString data) +{ + filterModel->setSorting(filterModel->getAvailableSortings().value(data)); +} diff --git a/application/dialogs/ChooseFtbPackDialog.h b/application/dialogs/ChooseFtbPackDialog.h index 212aa27b..0b021138 100644 --- a/application/dialogs/ChooseFtbPackDialog.h +++ b/application/dialogs/ChooseFtbPackDialog.h @@ -5,6 +5,7 @@ #include <modplatform/PackHelpers.h> #include "ui_ChooseFtbPackDialog.h" #include <modplatform/PackHelpers.h> +#include "FtbListModel.h" namespace Ui { class ChooseFtbPackDialog; @@ -18,11 +19,13 @@ private: Ui::ChooseFtbPackDialog *ui; FtbModpack selected; QString selectedVersion; + FtbListModel* listModel; + FtbFilterModel* filterModel; private slots: - void onListItemClicked(QListWidgetItem *item); + void onSortingSelectionChanged(QString data); void onVersionSelectionItemChanged(QString data); - + void onPackSelectionChanged(QModelIndex first, QModelIndex second); public: ChooseFtbPackDialog(FtbModpackList packs); ~ChooseFtbPackDialog(); diff --git a/application/dialogs/ChooseFtbPackDialog.ui b/application/dialogs/ChooseFtbPackDialog.ui index fdf845a9..f590a4cd 100644 --- a/application/dialogs/ChooseFtbPackDialog.ui +++ b/application/dialogs/ChooseFtbPackDialog.ui @@ -6,12 +6,12 @@ <rect> <x>0</x> <y>0</y> - <width>730</width> + <width>700</width> <height>437</height> </rect> </property> <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -19,111 +19,67 @@ <property name="sizeGripEnabled"> <bool>false</bool> </property> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="geometry"> - <rect> - <x>540</x> - <y>400</y> - <width>176</width> - <height>25</height> - </rect> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - <widget class="QScrollArea" name="scrollArea"> - <property name="geometry"> - <rect> - <x>10</x> - <y>10</y> - <width>261</width> - <height>381</height> - </rect> - </property> - <property name="widgetResizable"> - <bool>true</bool> - </property> - <widget class="QWidget" name="scrollAreaWidgetContents"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>259</width> - <height>379</height> - </rect> - </property> - <widget class="QListWidget" name="packList"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>261</width> - <height>381</height> - </rect> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="1" column="1"> + <widget class="QLabel" name="selectedVersionLabel"> + <property name="text"> + <string>Version selected:</string> + </property> + <property name="alignment"> + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QTreeView" name="packList"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QComboBox" name="sortByBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="1" column="3"> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="autoFillBackground"> + <bool>false</bool> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + <property name="centerButtons"> + <bool>false</bool> </property> </widget> - </widget> - </widget> - <widget class="QScrollArea" name="scrollArea_2"> - <property name="geometry"> - <rect> - <x>280</x> - <y>10</y> - <width>441</width> - <height>381</height> - </rect> - </property> - <property name="widgetResizable"> - <bool>true</bool> - </property> - <widget class="QWidget" name="scrollAreaWidgetContents_2"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>439</width> - <height>379</height> - </rect> - </property> - <widget class="QTextBrowser" name="modpackInfo"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>441</width> - <height>381</height> - </rect> + </item> + <item row="1" column="2"> + <widget class="QComboBox" name="packVersionSelection"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> </property> </widget> - </widget> - </widget> - <widget class="QComboBox" name="packVersionSelection"> - <property name="geometry"> - <rect> - <x>450</x> - <y>400</y> - <width>72</width> - <height>25</height> - </rect> - </property> - </widget> - <widget class="QLabel" name="selectedVersionLabel"> - <property name="geometry"> - <rect> - <x>340</x> - <y>400</y> - <width>101</width> - <height>21</height> - </rect> - </property> - <property name="text"> - <string>Version selected:</string> - </property> - <property name="alignment"> - <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set> - </property> - </widget> + </item> + <item row="0" column="1" colspan="3"> + <widget class="QTextBrowser" name="modpackInfo"/> + </item> + </layout> </widget> <resources/> <connections> @@ -134,8 +90,8 @@ <slot>accept()</slot> <hints> <hint type="sourcelabel"> - <x>666</x> - <y>422</y> + <x>211</x> + <y>173</y> </hint> <hint type="destinationlabel"> <x>889</x> @@ -150,8 +106,8 @@ <slot>reject()</slot> <hints> <hint type="sourcelabel"> - <x>680</x> - <y>411</y> + <x>225</x> + <y>162</y> </hint> <hint type="destinationlabel"> <x>524</x> |