ba0408150d1d1bce70f8a1bc672f7ce54b931375
[iec.git] / src / type3_AndroidCloud / anbox-master / src / anbox / application / database.h
1 /*
2  * Copyright (C) 2017 Simon Fels <morphis@gravedo.de>
3  *
4  * This program is free software: you can redistribute it and/or modify it
5  * under the terms of the GNU General Public License version 3, as published
6  * by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranties of
10  * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
11  * PURPOSE.  See the GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License along
14  * with this program.  If not, see <http://www.gnu.org/licenses/>.
15  *
16  */
17
18 #ifndef ANBOX_APPLICATION_DATABASE_H_
19 #define ANBOX_APPLICATION_DATABASE_H_
20
21 #include "anbox/android/intent.h"
22
23 #include <string>
24 #include <map>
25 #include <memory>
26
27 namespace anbox {
28 namespace application {
29 class LauncherStorage;
30 class Database {
31  public:
32   struct Item {
33     std::string name;
34     std::string package;
35     android::Intent launch_intent;
36     std::vector<char> icon;
37
38     bool valid() const { return package.length() > 0; }
39   };
40
41   static const Item Unknown;
42
43   Database();
44   ~Database();
45
46   void store_or_update(const Item &item);
47   void remove(const Item &item);
48
49   const Item& find_by_package(const std::string &package) const;
50
51  private:
52   std::shared_ptr<LauncherStorage> storage_;
53   std::map<std::string,Item> items_;
54   bool done_reset = false;
55 };
56 }  // namespace application
57 }  // namespace anbox
58
59 #endif