aboutsummaryrefslogtreecommitdiff
path: root/launcher/ui/pages/modplatform/ModModel.cpp
AgeCommit message (Collapse)Author
2023-08-23Added loaders check on versions loadTrial97
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-10Removed const specificationTrial97
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-08Higlight installed modsTrial97
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-26fix(memory leak): IndexedPack too large to live inside a qlist without ↵Rachel Powers
pointers () Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-23fix(license): add/fix my copyright/license headersflow
*sobbing in messy legal stuff i know nothing about* Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13refactor(RD): move BaseInstance dep. to subclasses of ResourceModelflow
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13refactor(RD): move success callbacks from ModModel to ResourceModelflow
While implementing the resource pack downloader in another branch, I noticed that most of the code in the success callback was identical in both cases, safe for a few minute differences in strings. So, this tries to make it easier to share this piece of code. However, it still leaves the possibility of extending the methods in ResourceModel to accomodate for cases where this similarity may not hold. Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13refactor(RD): add helper in ResourceModel to find current sortingflow
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13fix(RD): pass copy of IndexedPack to callbacks instead of ref.flow
This prevents a crash in which the pack list gets updated in a search request meanwhile a versions / extra info request is being processed. Previously, this situation would cause the reference in the latter callbacks to be invalidated by an internal relocation of the pack list. Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13refactor(RD): clear up sorting methodsflow
This refactors the sorting methods to join every bit of it into a single list, easing maintanance. It also removes the weird index contraint on the list of methods by adding an index field to the DS that holds the method. Lastly, it puts the available methods on their respective API, so other resources on the same API can re-use them later on. Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13refactor(RD): decouple ResourceModels from ResourcePagesflow
This makes it so that we don't need a reference to the parent page in the model. It will be useful once we change the page from a widget-based one to a QML page. It also makes tasks be created in the dialog instead of the page, so that the dialog can also have the necessary information to mark versions as selected / deselected easily. It also makes the task pointers into smart pointers. Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13refactor: put resource downloading classes in common namespaceflow
Puts them all inside the 'ResourceDownload' namespace, so that it's a bit clearer from the outside that those belong to the same 'module'. Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13refactor: generalize mod models and APIs to resourcesflow
Firstly, this abstract away behavior in the mod download models that can also be applied to other types of resources into a superclass, allowing other resource types to be implemented without so much code duplication. For that, this also generalizes the APIs used (currently, ModrinthAPI and FlameAPI) to be able to make requests to other types of resources. It also does a general cleanup of both of those. In particular, this makes use of std::optional instead of invalid values for errors and, well, optional values :p This is a squash of some commits that were becoming too interlaced together to be cleanly separated. Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-24fix: retry mod search job after aborting itflow
This way, we don't get stuck with an aborted job in our way! :o Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-18fix: use display name in codeSefa Eyeoglu
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-23fix: use placeholder icon when the project has no icon in MRflow
Projects with no icon return a null icon URL in Modrinth's API. Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-23fix: remove manual icon resize in ModModelflow
THis fixes a FIXME, now that we fixed the issue :o Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-07Merge pull request #939 from flowln/mod_downloader_improveflow
Some more UI / UX improvements to the mod downloader!
2022-08-28refactor: make NetJob inherit from ConcurrentTask as well!flow
Avoids lots of code duplication Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01fix: prevent segfault due to callbacks into deleted objectsflow
Since network requests are, for the most part, asynchronous, there's a chance a request only comes through after the request sender has already been deleted. This adds a global (read static) hash table relating models for the mod downloader to their status (true = alive, false = destroyed). It is a bit of a hack, but I couldn't come up with a better way of doing this. To reproduce the issue before this commit: scroll really quickly through CF mods, to trigger network requests for their versions and description. Then, in the middle of it close the mod downloader. Sometimes this will create a crash. Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01feat: cache mod versionsflow
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01refactor: use function cb instead of class cb in getVersionsflow
I've discovered even more functional programming! :^) Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01feat: cache extra mod info (like links and body)flow
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01refactor: use function cb instead of class cb in getModInfoflow
I've discovered functional programming :^) This makes this route more fit for general use. Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01feat+refactor: add shortcuts to mod downloader and clean upflow
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01feat: create delegate for project item viewsflow
This allows us to define custom painting for list view items. In particular, this is applied to the mod downloader, in order to allow displaying both the mod name and mod description, and settings their effects (like bold or underline) independent of each other. Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-03fix: aborts when using a Qt build with assertions enabledflow
Preventing undefined behaviour hooray! :D Signed-off-by: flow <flowlnlnln@gmail.com>
2022-06-21fix: scale mod icons to the right sizeflow
2022-06-14Merge pull request #634 from flowln/donate_linksEzekiel Smith
More links for CF / Modrinth mods / modpacks
2022-05-30Merge pull request #505 from flowln/improve_download_uxSefa Eyeoglu
2022-05-24feat: add donate links for modrinth modsflow
2022-05-21feat(ui): make selected mods in downloader bold with underlineflow
Makes it easier to find which mods are selected in case you want to change those.
2022-05-19refactor: allow tracking multiple mod loadersSefa Eyeoglu
2022-05-08adopt changes from #497 remappedRyan Cao
2022-04-18fix: handle network errors when downloading modlistSefa Eyeoglu
2022-04-15rework: make the filter as a tabbed widget in the dialog itselfflow
Still needs a clear indication that the filter only applies after you click the search button...
2022-04-15fix(ui): Refresh mod list when changing filtering optionsflow
2022-04-15feat: Use version filter when searching modsflow
2022-04-07fix: check for Quilt as Fabric-compatible loaderSefa Eyeoglu
2022-03-29Merge pull request #352 from Scrumplex/fix-nameSefa Eyeoglu
Update Credits and Branding
2022-03-27fix: remove "PolyMC" from stringsSefa Eyeoglu
2022-03-24optimize: Improve mod versions request to Modrinthflow
This uses more arguments in the GET request for mod versions on the Modrinth API, filtering what versions can be returned, decreasing load on Modrinth servers and improving a little the time it takes for the versions to be available to the user. This also removes the now unneeded check on correct modloaders in ModrinthPackIndex, since it is now filtered by the Modrinth server. Lastly, this adds a couple of helper functions in ModModel.
2022-03-14tidy: Fix clang-tidy issues on files changed in this PRflow
The checks used are roughly the same as the ones proposed in the clang-tidy PR (except perhaps that I used modernize-* instead of listing them individually,though I don't think this caused any readability detriments). In ModrinthModel.cpp and FlameModModel.cpp I ignored the modernize-avoid-c-arrays one, mostly because making the sorts array an std::array would most likely increase the code complexity because of the virtual function. Aside from that, the static_cast warning from Application.h was not dealt with, since it's not in this PR's scope.
2022-03-07refactor: move things around so that related things are close togetherflow
This also adds some comments around ModModel.cpp and ModPage.cpp to add some ease of reading the code. Also move some things from headers to cpp files.
2022-03-07refactor: move more common code to base classflow
Also removes unused imports and organize the ModModel header
2022-03-07refactor: de-duplicate common code in network mod APIsflow
2022-03-07refactor: move NetJob away from ModModel to ModAPIflow
This is done so that 1. ModAPI behaves more like an actual API instead of just a helper, and 2. Allows for more easily creating other mod providers that may or may not use network tasks (foreshadowing lol)
2022-03-06refactor: use Enum instead of raw int for ModLoaderTypeflow
2022-03-06clarify some method names and commentsflow
2022-03-06refactor: move "get versions" task from page to modelflow
This seems more reasonable