commit c93d5796206421d80a53b8c8eb8f318963941eac
parent 05943a82ffd38775cb41f435806e2e56db1ebdf0
Author: cfillion <cfillion@users.noreply.github.com>
Date: Mon, 25 Jan 2016 14:59:21 -0500
refactor remote enabling/disabling, preparing for script registration
Diffstat:
4 files changed, 26 insertions(+), 15 deletions(-)
diff --git a/src/manager.cpp b/src/manager.cpp
@@ -144,10 +144,10 @@ void Manager::setRemoteEnabled(const bool enabled)
if(remote.isNull())
return;
- auto it = m_enableOverrides.find(remote.name());
+ auto it = m_enableOverrides.find(remote);
if(it == m_enableOverrides.end())
- m_enableOverrides.insert({remote.name(), enabled});
+ m_enableOverrides.insert({remote, enabled});
else if(remote.isEnabled() == enabled)
m_enableOverrides.erase(it);
else
@@ -158,7 +158,7 @@ void Manager::setRemoteEnabled(const bool enabled)
bool Manager::isRemoteEnabled(const Remote &remote) const
{
- const auto it = m_enableOverrides.find(remote.name());
+ const auto it = m_enableOverrides.find(remote);
if(it == m_enableOverrides.end())
return remote.isEnabled();
@@ -171,7 +171,7 @@ void Manager::uninstall()
const Remote &remote = currentRemote();
m_uninstall.insert(remote);
- const auto it = m_enableOverrides.find(remote.name());
+ const auto it = m_enableOverrides.find(remote);
if(it != m_enableOverrides.end())
m_enableOverrides.erase(it);
@@ -200,25 +200,19 @@ bool Manager::confirm() const
void Manager::apply()
{
- RemoteList *list = m_reapack->config()->remotes();
-
for(const auto &pair : m_enableOverrides) {
- const string &name = pair.first;
+ const Remote &remote = pair.first;
const bool enable = pair.second;
- Remote remote = list->get(name);
- remote.setEnabled(enable);
-
- list->add(remote);
-
if(enable)
- m_reapack->synchronize(remote);
+ m_reapack->enable(remote);
+ else
+ m_reapack->disable(remote);
}
for(auto it = m_uninstall.begin(); it != m_uninstall.end(); it++) {
const Remote &remote = *it;
m_reapack->uninstall(remote, next(it) == m_uninstall.end());
- list->remove(remote);
}
m_reapack->config()->write();
diff --git a/src/manager.hpp b/src/manager.hpp
@@ -56,7 +56,7 @@ private:
ReaPack *m_reapack;
ListView *m_list;
- std::map<std::string, bool> m_enableOverrides;
+ std::map<Remote, bool> m_enableOverrides;
std::set<Remote> m_uninstall;
};
diff --git a/src/reapack.cpp b/src/reapack.cpp
@@ -119,6 +119,20 @@ void ReaPack::synchronize(const Remote &remote)
m_transaction->synchronize(remote);
}
+void ReaPack::enable(Remote remote)
+{
+ remote.setEnabled(true);
+ m_config->remotes()->add(remote);
+
+ synchronize(remote);
+}
+
+void ReaPack::disable(Remote remote)
+{
+ remote.setEnabled(false);
+ m_config->remotes()->add(remote);
+}
+
void ReaPack::uninstall(const Remote &remote, const bool start)
{
if(remote.isProtected())
@@ -130,6 +144,7 @@ void ReaPack::uninstall(const Remote &remote, const bool start)
}
m_transaction->uninstall(remote);
+ m_config->remotes()->remove(remote);
if(start)
m_transaction->runTasks();
diff --git a/src/reapack.hpp b/src/reapack.hpp
@@ -47,6 +47,8 @@ public:
void synchronizeAll();
void synchronize(const Remote &);
+ void enable(Remote);
+ void disable(Remote);
void uninstall(const Remote &, const bool start = true);
void importRemote();
void manageRemotes();