Skip to content

Commit

Permalink
save add refresh button
Browse files Browse the repository at this point in the history
  • Loading branch information
moonshadow565 committed Aug 27, 2022
1 parent 69cae86 commit 9563a9d
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 1 deletion.
2 changes: 2 additions & 0 deletions src/CSLOLTools.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ CSLOLTools::CSLOLTools(QObject *parent) : QObject(parent) {
connect(worker_, &CSLOLToolsImpl::modInfoChanged, this, &CSLOLTools::modInfoChanged);
connect(worker_, &CSLOLToolsImpl::modWadsAdded, this, &CSLOLTools::modWadsAdded);
connect(worker_, &CSLOLToolsImpl::modWadsRemoved, this, &CSLOLTools::modWadsRemoved);
connect(worker_, &CSLOLToolsImpl::refreshed, this, &CSLOLTools::refreshed);

connect(this, &CSLOLTools::changeLeaguePath, worker_, &CSLOLToolsImpl::changeLeaguePath);
connect(this, &CSLOLTools::changeBlacklist, worker_, &CSLOLToolsImpl::changeBlacklist);
Expand All @@ -45,6 +46,7 @@ CSLOLTools::CSLOLTools(QObject *parent) : QObject(parent) {
connect(this, &CSLOLTools::changeModInfo, worker_, &CSLOLToolsImpl::changeModInfo);
connect(this, &CSLOLTools::addModWad, worker_, &CSLOLToolsImpl::addModWad);
connect(this, &CSLOLTools::removeModWads, worker_, &CSLOLToolsImpl::removeModWads);
connect(this, &CSLOLTools::refreshMods, worker_, &CSLOLToolsImpl::refreshMods);

connect(this, &CSLOLTools::destroyed, worker_, &CSLOLToolsImpl::deleteLater);
connect(worker_, &CSLOLTools::destroyed, thread_, &QThread::deleteLater);
Expand Down
3 changes: 3 additions & 0 deletions src/CSLOLTools.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class CSLOLTools : public QObject {
void modInfoChanged(QString fileName, QJsonObject infoData, QString image);
void modWadsAdded(QString modFileName, QJsonArray wads);
void modWadsRemoved(QString modFileName, QJsonArray wads);
void refreshed(QJsonObject mods);
void reportError(QString name, QString message, QString stack_trace);

void changeLeaguePath(QString newLeaguePath);
Expand All @@ -61,6 +62,8 @@ class CSLOLTools : public QObject {
void changeModInfo(QString fileName, QJsonObject infoData, QString image);
void addModWad(QString modFileName, QString wad, bool removeUnknownNames);
void removeModWads(QString modFileName, QJsonArray wads);
void refreshMods();

public slots:
CSLOLToolsImpl::CSLOLState getState();
QString getStatus();
Expand Down
15 changes: 15 additions & 0 deletions src/CSLOLToolsImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -392,6 +392,21 @@ void CSLOLToolsImpl::makeMod(QString fileName, QJsonObject infoData, QString ima
}
}

void CSLOLToolsImpl::refreshMods() {
if (state_ == CSLOLState::StateIdle) {
setState(CSLOLState::StateBusy);

QJsonObject mods;
for (auto name : modList()) {
auto info = modInfoRead(name);
mods.insert(name, info);
}
emit refreshed(mods);

setState(CSLOLState::StateIdle);
}
}

void CSLOLToolsImpl::saveProfile(QString name, QJsonObject mods, bool run, bool skipConflict) {
if (state_ == CSLOLState::StateIdle) {
setState(CSLOLState::StateBusy);
Expand Down
2 changes: 2 additions & 0 deletions src/CSLOLToolsImpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class CSLOLToolsImpl : public QObject {
void modInfoChanged(QString fileName, QJsonObject infoData, QString image);
void modWadsAdded(QString modFileName, QJsonArray wads);
void modWadsRemoved(QString modFileName, QJsonArray wads);
void refreshed(QJsonObject mods);
void reportError(QString name, QString message, QString stack_trace);

public slots:
Expand All @@ -58,6 +59,7 @@ public slots:
void deleteProfile(QString name);
void stopProfile();
void makeMod(QString fileName, QJsonObject infoData, QString image);
void refreshMods();

void startEditMod(QString fileName);
void changeModInfo(QString fileName, QJsonObject infoData, QString image);
Expand Down
41 changes: 40 additions & 1 deletion src/qml/CSLOLModsView.qml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ ColumnLayout {

signal createNewMod()

signal tryRefresh()

function addMod(fileName, info, enabled) {
let infoData = {
"FileName": fileName,
Expand Down Expand Up @@ -225,6 +227,34 @@ ColumnLayout {
}
}

function refereshedMods(mods) {
for (let fileName in mods) {
if (updateModInfo_model(fileName, mods[fileName], cslolModsViewModel) === -1) {
if (updateModInfo_model(fileName, mods[fileName], cslolModsViewModel2) === -1) {
addMod(fileName, mods[fileName], false)
}
}
}
let i = 0;
while (i < cslolModsViewModel2.count) {
let obj = cslolModsViewModel2.get(i)
if (!(obj["FileName"] in mods)) {
cslolModsViewModel2.remove(i, 1)
} else {
i++;
}
}
let j = 0;
while (j < cslolModsViewModel.count) {
let obj2 = cslolModsViewModel.get(j)
if (!(obj2["FileName"] in mods)) {
cslolModsViewModel.remove(j, 1)
} else {
j++;
}
}
}

ListModel {
id: cslolModsViewModel
}
Expand Down Expand Up @@ -408,7 +438,16 @@ ColumnLayout {
searchUpdate()
}
}

RoundButton {
text: "\uf021"
font.family: "FontAwesome"
onClicked: cslolModsView.tryRefresh()
Material.background: Material.primaryColor
ToolTip {
text: qsTr("Refresh")
visible: parent.hovered
}
}
RoundButton {
text: "\uf067"
font.family: "FontAwesome"
Expand Down
4 changes: 4 additions & 0 deletions src/qml/main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,7 @@ ApplicationWindow {
cslolToolBar.enableAllState = checkedAll
}
}
onTryRefresh: cslolTools.refreshMods()
}

footer: CSLOLStatusBar {
Expand Down Expand Up @@ -377,6 +378,9 @@ ApplicationWindow {
onModWadsRemoved: function(fileName, wads) {
cslolDialogEditMod.wadsRemoved(wads)
}
onRefreshed: {
cslolModsView.refereshedMods(mods)
}
onReportError: function(name, message, trace) {
let log_data = "";
if (trace) {
Expand Down

0 comments on commit 9563a9d

Please sign in to comment.