X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=src%2Ftype3_AndroidCloud%2Fanbox-master%2Fsrc%2Fanbox%2Fapplication%2Fdatabase.cpp;fp=src%2Ftype3_AndroidCloud%2Fanbox-master%2Fsrc%2Fanbox%2Fapplication%2Fdatabase.cpp;h=7fc3b44b8784520381e7c990ac78538c701e5d67;hb=e26c1ec581be598521517829adba8c8dd23a768f;hp=0000000000000000000000000000000000000000;hpb=6699c1aea74eeb0eb400e6299079f0c7576f716f;p=iec.git diff --git a/src/type3_AndroidCloud/anbox-master/src/anbox/application/database.cpp b/src/type3_AndroidCloud/anbox-master/src/anbox/application/database.cpp new file mode 100644 index 0000000..7fc3b44 --- /dev/null +++ b/src/type3_AndroidCloud/anbox-master/src/anbox/application/database.cpp @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2017 Simon Fels + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3, as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranties of + * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + */ + +#include "anbox/application/database.h" +#include "anbox/application/launcher_storage.h" +#include "anbox/system_configuration.h" +#include "anbox/logger.h" + +namespace anbox { +namespace application { +const Database::Item Database::Unknown{}; + +Database::Database() : + storage_(std::make_shared(SystemConfiguration::instance().application_item_dir())) {} + +Database::~Database() {} + +void Database::store_or_update(const Item &item) { + if (!done_reset) { + storage_->reset(); + done_reset = true; + } + storage_->add_or_update(item); + items_[item.package] = item; + + // We don't need to store the icon data anymore at this point as the + // launcher is already stored it on the disk. + items_[item.package].icon.clear(); +} + +void Database::remove(const Item &item) { + auto iter = items_.find(item.package); + if (iter == items_.end()) + return; + storage_->remove(item); + items_.erase(iter); +} + +const Database::Item& Database::find_by_package(const std::string &package) const { + auto iter = items_.find(package); + if (iter == items_.end()) + return Unknown; + return iter->second; +} +} // namespace application +} // namespace anbox