namespace {
-const char kPath[] = "/opt/dbspace/.theme_info.db";
-
const char kCreateThemeTableQuery[] =
"CREATE TABLE IF NOT EXISTS theme (\n"
" id TEXT,\n"
namespace ttm {
namespace provider {
-DbManager::DbManager() : conn_(kPath, true) {
+DbManager::DbManager(const std::string& db_path) : conn_(db_path, true) {
}
DbManager::~DbManager() {
namespace ttm {
namespace provider {
+ThemeInfoProxy::ThemeInfoProxy(const std::string& db_path) {
+ db_manager_.reset(new DbManager(db_path));
+}
+
std::shared_ptr<loader::ThemeInfo> ThemeInfoProxy::LoadTheme(
const std::string& id) {
- return std::make_shared<loader::ThemeInfo>(db_manager_.Select(id));
+ return std::make_shared<loader::ThemeInfo>(db_manager_->Select(id));
}
bool ThemeInfoProxy::SaveTheme(const loader::ThemeInfo& info) {
- return db_manager_.Insert(info.GetId(), info.Serialize());
+ return db_manager_->Insert(info.GetId(), info.Serialize());
}
bool ThemeInfoProxy::UpdateTheme(const loader::ThemeInfo& info) {
- return db_manager_.Update(info.GetId(), info.Serialize());
+ return db_manager_->Update(info.GetId(), info.Serialize());
}
bool ThemeInfoProxy::RemoveTheme(const std::string& id) {
- return db_manager_.Delete(id);
+ return db_manager_->Delete(id);
}
std::shared_ptr<loader::ThemeInfo> ThemeInfoProxy::GetLoadedTheme() {
}
bool ThemeInfoProxy::SetCurrentTheme(const std::string& id) {
- return db_manager_.UpdateCurrentId(id);
+ return db_manager_->UpdateCurrentId(id);
}
void ThemeInfoProxy::OnThemePackageChanged(const std::string& id) {
- cur_theme_ = std::make_shared<loader::ThemeInfo>(db_manager_.Select(id));
+ cur_theme_ = std::make_shared<loader::ThemeInfo>(db_manager_->Select(id));
}
} // namespace provider
class ThemeInfoProxy : public IThemePackageEvent {
public:
+ explicit ThemeInfoProxy(const std::string& db_path);
std::shared_ptr<loader::ThemeInfo> LoadTheme(const std::string& id);
bool SaveTheme(const loader::ThemeInfo& info);
bool UpdateTheme(const loader::ThemeInfo& info);
void OnThemePackageChanged(const std::string& id) override;
private:
- DbManager db_manager_;
+ std::unique_ptr<DbManager> db_manager_;
std::shared_ptr<loader::ThemeInfo> cur_theme_;
};