move more Bookmark functionality into base class

This commit is contained in:
Triplelexx 2017-03-25 01:01:25 +00:00
parent bda1d54209
commit d1eee19d7d
6 changed files with 34 additions and 50 deletions

View file

@ -46,7 +46,7 @@ void AvatarBookmarks::setupMenus(Menu* menubar, MenuWrapper* menu) {
// the OffscreenUi doesn't seem available this early to recurse through to find the root object where the signal is declared // the OffscreenUi doesn't seem available this early to recurse through to find the root object where the signal is declared
// I've added a delay for now // I've added a delay for now
// The OffscreenUi also doesn't create the object till it is shown first, so I'm forcing it to show so the object exists // The OffscreenUi also doesn't create the object until it is shown first, so I'm forcing it to show so the object exists
QTimer::singleShot(2000, [&] { QTimer::singleShot(2000, [&] {
auto offscreenUi = DependencyManager::get<OffscreenUi>(); auto offscreenUi = DependencyManager::get<OffscreenUi>();
offscreenUi->show(QString("hifi/dialogs/AvatarPreferencesDialog.qml"), "AvatarPreferencesDialog"); offscreenUi->show(QString("hifi/dialogs/AvatarPreferencesDialog.qml"), "AvatarPreferencesDialog");
@ -68,7 +68,7 @@ void AvatarBookmarks::changeToBookmarkedAvatar() {
void AvatarBookmarks::addBookmark() { void AvatarBookmarks::addBookmark() {
// TODO: if you press the Bookmark Avatar button in the dialog it seems to maintain focus. // TODO: if you press the Bookmark Avatar button in the dialog it seems to maintain focus.
// Clicking afterwards results in multiple calls // Clicking afterwards results in multiple calls
// hide enforced till cause is determined // hide enforced until cause is determined
DependencyManager::get<OffscreenUi>()->hide(QString("AvatarPreferencesDialog")); DependencyManager::get<OffscreenUi>()->hide(QString("AvatarPreferencesDialog"));
bool ok = false; bool ok = false;
@ -84,26 +84,7 @@ void AvatarBookmarks::addBookmark() {
auto myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar(); auto myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar();
const QString& bookmarkAddress = myAvatar->getSkeletonModelURL().toString(); const QString& bookmarkAddress = myAvatar->getSkeletonModelURL().toString();
Bookmarks::addBookmark(bookmarkName, bookmarkAddress);
Menu* menubar = Menu::getInstance();
if (contains(bookmarkName)) {
auto offscreenUi = DependencyManager::get<OffscreenUi>();
auto duplicateBookmarkMessage = offscreenUi->createMessageBox(OffscreenUi::ICON_WARNING, "Duplicate Bookmark",
"The bookmark name you entered already exists in your list.",
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
duplicateBookmarkMessage->setProperty("informativeText", "Would you like to overwrite it?");
auto result = offscreenUi->waitForMessageBoxResult(duplicateBookmarkMessage);
if (result != QMessageBox::Yes) {
return;
}
removeBookmarkFromMenu(menubar, bookmarkName);
}
addBookmarkToMenu(menubar, bookmarkName, bookmarkAddress);
insert(bookmarkName, bookmarkAddress); // Overwrites any item with the same bookmarkName.
enableMenuItems(true);
} }
void AvatarBookmarks::addBookmarkToMenu(Menu* menubar, const QString& name, const QString& address) { void AvatarBookmarks::addBookmarkToMenu(Menu* menubar, const QString& name, const QString& address) {

View file

@ -20,16 +20,16 @@ class AvatarBookmarks: public Bookmarks {
public: public:
AvatarBookmarks(); AvatarBookmarks();
virtual void setupMenus(Menu* menubar, MenuWrapper* menu) override; void setupMenus(Menu* menubar, MenuWrapper* menu) override;
public slots: public slots:
virtual void addBookmark() override; void addBookmark();
protected: protected:
virtual void addBookmarkToMenu(Menu* menubar, const QString& name, const QString& address) override; void addBookmarkToMenu(Menu* menubar, const QString& name, const QString& address) override;
private slots: private slots:
void changeToBookmarkedAvatar(); void changeToBookmarkedAvatar();
private: private:
const QString AvatarBookmarks_FILENAME = "avatarbookmarks.json"; const QString AvatarBookmarks_FILENAME = "avatarbookmarks.json";

View file

@ -66,6 +66,28 @@ void Bookmarks::deleteBookmark() {
} }
} }
void Bookmarks::addBookmark(const QString& bookmarkName, const QString& bookmarkAddress) {
Menu* menubar = Menu::getInstance();
if (contains(bookmarkName)) {
auto offscreenUi = DependencyManager::get<OffscreenUi>();
auto duplicateBookmarkMessage = offscreenUi->createMessageBox(OffscreenUi::ICON_WARNING, "Duplicate Bookmark",
"The bookmark name you entered already exists in your list.",
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
duplicateBookmarkMessage->setProperty("informativeText", "Would you like to overwrite it?");
auto result = offscreenUi->waitForMessageBoxResult(duplicateBookmarkMessage);
if (result != QMessageBox::Yes) {
return;
}
removeBookmarkFromMenu(menubar, bookmarkName);
}
addBookmarkToMenu(menubar, bookmarkName, bookmarkAddress);
insert(bookmarkName, bookmarkAddress); // Overwrites any item with the same bookmarkName.
enableMenuItems(true);
}
void Bookmarks::insert(const QString& name, const QString& address) { void Bookmarks::insert(const QString& name, const QString& address) {
_bookmarks.insert(name, address); _bookmarks.insert(name, address);

View file

@ -31,7 +31,7 @@ public:
QString addressForBookmark(const QString& name) const; QString addressForBookmark(const QString& name) const;
public slots: public slots:
virtual void addBookmark() = 0; virtual void addBookmark(const QString& bookmarkName, const QString& bookmarkAddress);
protected slots: protected slots:
void deleteBookmark(); void deleteBookmark();

View file

@ -76,26 +76,7 @@ void LocationBookmarks::addBookmark() {
auto addressManager = DependencyManager::get<AddressManager>(); auto addressManager = DependencyManager::get<AddressManager>();
QString bookmarkAddress = addressManager->currentAddress().toString(); QString bookmarkAddress = addressManager->currentAddress().toString();
Bookmarks::addBookmark(bookmarkName, bookmarkAddress);
Menu* menubar = Menu::getInstance();
if (contains(bookmarkName)) {
auto offscreenUi = DependencyManager::get<OffscreenUi>();
auto duplicateBookmarkMessage = offscreenUi->createMessageBox(OffscreenUi::ICON_WARNING, "Duplicate Bookmark",
"The bookmark name you entered already exists in your list.",
QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
duplicateBookmarkMessage->setProperty("informativeText", "Would you like to overwrite it?");
auto result = offscreenUi->waitForMessageBoxResult(duplicateBookmarkMessage);
if (result != QMessageBox::Yes) {
return;
}
removeBookmarkFromMenu(menubar, bookmarkName);
}
addBookmarkToMenu(menubar, bookmarkName, bookmarkAddress);
insert(bookmarkName, bookmarkAddress); // Overwrites any item with the same bookmarkName.
enableMenuItems(true);
} }
void LocationBookmarks::addBookmarkToMenu(Menu* menubar, const QString& name, const QString& address) { void LocationBookmarks::addBookmarkToMenu(Menu* menubar, const QString& name, const QString& address) {

View file

@ -20,14 +20,14 @@ class LocationBookmarks: public Bookmarks {
public: public:
LocationBookmarks(); LocationBookmarks();
virtual void setupMenus(Menu* menubar, MenuWrapper* menu) override; void setupMenus(Menu* menubar, MenuWrapper* menu) override;
static const QString HOME_BOOKMARK; static const QString HOME_BOOKMARK;
public slots: public slots:
virtual void addBookmark() override; void addBookmark();
protected: protected:
virtual void addBookmarkToMenu(Menu* menubar, const QString& name, const QString& address) override; void addBookmarkToMenu(Menu* menubar, const QString& name, const QString& address) override;
private slots: private slots:
void setHomeLocation(); void setHomeLocation();