diff --git a/stacer-core/Info/disk_info.cpp b/stacer-core/Info/disk_info.cpp index 21a57e91..6848b503 100644 --- a/stacer-core/Info/disk_info.cpp +++ b/stacer-core/Info/disk_info.cpp @@ -13,7 +13,7 @@ void DiskInfo::updateDiskInfo() { disks.clear(); try { - QStringList result = CommandUtil::exec("df -Pl").split(QChar('\n')); + QStringList result = CommandUtil::exec("df", { "-Pl" }).split(QChar('\n')); QRegExp sep("\\s+"); for (const QString &line : result.filter(QRegExp("^/"))) diff --git a/stacer-core/Tools/apt_source_tool.cpp b/stacer-core/Tools/apt_source_tool.cpp index c2efa280..954dded7 100644 --- a/stacer-core/Tools/apt_source_tool.cpp +++ b/stacer-core/Tools/apt_source_tool.cpp @@ -22,6 +22,31 @@ void AptSourceTool::removeAPTSource(const QString source) } } +void AptSourceTool::changeStatus(const APTSourcePtr aptSource, const bool status) +{ + QStringList sourceFileContent = FileUtil::readListFromFile(aptSource->filePath); + + int pos = sourceFileContent.indexOf(aptSource->source); + + if (pos != -1) { + QString line = sourceFileContent.at(pos); + + line.replace("#", "").trimmed(); + + if (status) { + sourceFileContent.replace(pos, line); + } else { + sourceFileContent.replace(pos, "# " + line); + } + } + + QStringList args = { aptSource->filePath }; + + QByteArray data = sourceFileContent.join('\n').toUtf8(); + + CommandUtil::sudoExec("tee", args, data); +} + QList AptSourceTool::getSourceList() { QList aptSourceList; diff --git a/stacer-core/Tools/apt_source_tool.h b/stacer-core/Tools/apt_source_tool.h index ba347e80..545ee77c 100644 --- a/stacer-core/Tools/apt_source_tool.h +++ b/stacer-core/Tools/apt_source_tool.h @@ -24,6 +24,7 @@ public: static bool checkSourceRepository(); static QList getSourceList(); static void removeAPTSource(const QString source); + static void changeStatus(const APTSourcePtr aptSource, const bool status); }; #endif // AptSourceTool_H diff --git a/stacer/Managers/tool_manager.cpp b/stacer/Managers/tool_manager.cpp index ce89f0e3..1463facb 100644 --- a/stacer/Managers/tool_manager.cpp +++ b/stacer/Managers/tool_manager.cpp @@ -122,5 +122,8 @@ void ToolManager::removeAPTSource(const QString source) AptSourceTool::removeAPTSource(source); } - +void ToolManager::changeStatus(const APTSourcePtr aptSource, const bool status) +{ + AptSourceTool::changeStatus(aptSource, status); +} diff --git a/stacer/Managers/tool_manager.h b/stacer/Managers/tool_manager.h index 85a15605..e6a8f445 100644 --- a/stacer/Managers/tool_manager.h +++ b/stacer/Managers/tool_manager.h @@ -31,6 +31,7 @@ public slots: bool checkSourceRepository() const; QList getSourceList() const; void removeAPTSource(const QString source); + void changeStatus(const APTSourcePtr aptSource, const bool status); signals: void uninstallFinished(); diff --git a/stacer/Pages/AptSourceManager/apt_source_repository_item.cpp b/stacer/Pages/AptSourceManager/apt_source_repository_item.cpp index 6aa8b3ab..9cc7d0ca 100644 --- a/stacer/Pages/AptSourceManager/apt_source_repository_item.cpp +++ b/stacer/Pages/AptSourceManager/apt_source_repository_item.cpp @@ -52,5 +52,5 @@ void APTSourceRepositoryItem::on_deleteAptSourceBtn_clicked() void APTSourceRepositoryItem::on_aptSourceCheck_clicked(bool checked) { - + ToolManager::ins()->changeStatus(mAptSource, checked); }