Overte C++ Documentation
Bookmarks.h
1  //
2 // Bookmarks.h
3 // interface/src
4 //
5 // Created by David Rowe on 13 Jan 2015.
6 // Copyright 2015 High Fidelity, Inc.
7 // Copyright 2024 Overte e.V.
8 //
9 // Distributed under the Apache License, Version 2.0.
10 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
11 //
12 
13 #ifndef hifi_Bookmarks_h
14 #define hifi_Bookmarks_h
15 
16 #include <QMap>
17 #include <QObject>
18 #include <QPointer>
19 
20 class QAction;
21 class QMenu;
22 class Menu;
23 class MenuWrapper;
24 
25 class Bookmarks: public QObject {
26  Q_OBJECT
27 
28 public:
29  Bookmarks() : _isMenuSorted(false) {}
30 
31  virtual void setupMenus(Menu* menubar, MenuWrapper* menu) = 0;
32  void insert(const QString& name, const QVariant& address); // Overwrites any existing entry with same name.
33  QString addressForBookmark(const QString& name) const;
34 
35  const QString& getBookmarkError() const { return _bookmarkError; }
36 
37 protected:
38  void deleteBookmark(const QString& bookmarkName);
39 
40  void addBookmarkToFile(const QString& bookmarkName, const QVariant& bookmark);
41  virtual void addBookmarkToMenu(Menu* menubar, const QString& name, const QVariant& bookmark) = 0;
42  void enableMenuItems(bool enabled);
43  virtual void readFromFile();
44  void sortActions(Menu* menubar, MenuWrapper* menu);
45  int getMenuItemLocation(QList<QAction*> actions, const QString& name) const;
46  void removeBookmarkFromMenu(Menu* menubar, const QString& name);
47  bool contains(const QString& name) const;
48  void remove(const QString& name);
49 
50  QVariantMap _bookmarks; // { name: url, ... }
51  QString _bookmarkError;
52  QPointer<MenuWrapper> _bookmarksMenu;
53  QPointer<QAction> _deleteBookmarksAction;
54  QString _bookmarksFilename;
55  bool _isMenuSorted;
56 
57 protected slots:
58  /*@jsdoc
59  * Prompts the user to delete a bookmark. The user can select the bookmark to delete in the dialog that is opened.
60  * @function LocationBookmarks.deleteBookmark
61  */
62  virtual void deleteBookmark();
63 
64 private:
65  static bool sortOrder(QAction* a, QAction* b);
66 
67  void persistToFile();
68 };
69 
70 #endif // hifi_Bookmarks_h