commit dfcdbecf6fc82e13a1119052b006b8752f7c6e2a
parent 3ee5f701e7d7d90c16ade346d854af1120423532
Author: cfillion <cfillion@users.noreply.github.com>
Date: Mon, 18 Jan 2016 16:34:26 -0500
synchronize newly-enabled remotes
Diffstat:
3 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/src/manager.cpp b/src/manager.cpp
@@ -129,7 +129,15 @@ void Manager::setRemoteEnabled(const bool enabled)
if(remote.isNull())
return;
- m_enableOverrides[remote.name()] = enabled;
+ auto it = m_enableOverrides.find(remote.name());
+
+ if(it == m_enableOverrides.end())
+ m_enableOverrides.insert({remote.name(), enabled});
+ else if(remote.isEnabled() == enabled)
+ m_enableOverrides.erase(it);
+ else
+ it->second = enabled;
+
m_list->replaceRow(m_list->currentIndex(), makeRow(remote));
}
@@ -153,7 +161,11 @@ void Manager::apply()
Remote remote = list->get(name);
remote.setEnabled(enable);
+
list->add(remote);
+
+ if(enable)
+ m_reapack->synchronize(remote);
}
m_reapack->config()->write();
diff --git a/src/reapack.cpp b/src/reapack.cpp
@@ -113,6 +113,17 @@ void ReaPack::synchronizeAll()
t->synchronize(remote);
}
+void ReaPack::synchronize(const Remote &remote)
+{
+ if(!m_transaction) {
+ if(!createTransaction())
+ return;
+ }
+
+ // hitchhike currently running transactions
+ m_transaction->synchronize(remote);
+}
+
void ReaPack::importRemote()
{
static const char *title = "ReaPack: Import remote repository";
diff --git a/src/reapack.hpp b/src/reapack.hpp
@@ -30,6 +30,7 @@ typedef std::function<void()> ActionCallback;
class Config;
class Manager;
class Progress;
+class Remote;
class Transaction;
class ReaPack {
@@ -47,6 +48,7 @@ public:
bool execActions(const int id, const int);
void synchronizeAll();
+ void synchronize(const Remote &);
void importRemote();
void manageRemotes();