Chatterino
PersistSignalVector.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <memory>
6 
7 namespace chatterino {
8 
9 template <typename T>
10 inline void persist(SignalVector<T> &vec, const std::string &name)
11 {
12  auto setting = std::make_unique<ChatterinoSetting<std::vector<T>>>(name);
13 
14  for (auto &&item : setting->getValue())
15  vec.append(item);
16 
17  vec.delayedItemsChanged.connect([setting = setting.get(), vec = &vec] {
18  setting->setValue(vec->raw());
19  });
20 
21  // TODO: Delete when appropriate.
22  setting.release();
23 }
24 
25 } // namespace chatterino
Definition: SignalVector.hpp:21
Definition: Application.cpp:48
pajlada::Signals::NoArgSignal delayedItemsChanged
Definition: SignalVector.hpp:26
const std::vector< T > & raw() const
Definition: SignalVector.hpp:124
int append(const T &item, void *caller=nullptr)
Definition: SignalVector.hpp:104
QString name
Definition: Credentials.cpp:94
void persist(SignalVector< T > &vec, const std::string &name)
Definition: PersistSignalVector.hpp:10