cleanup for QA

added sorting
This commit is contained in:
Triplelexx 2017-03-26 22:18:37 +01:00
parent 8f507942cf
commit a1db20c5fc
6 changed files with 43 additions and 45 deletions

View file

@ -13,16 +13,15 @@
#include <QInputDialog>
#include <QMessageBox>
#include <QStandardPaths>
#include <QQmlContext>
#include <Application.h>
#include <OffscreenUi.h>
#include <QQmlContext>
#include <avatar/AvatarManager.h>
#include "MainWindow.h"
#include "Menu.h"
#include <avatar/AvatarManager.h>
#include "AvatarBookmarks.h"
#include <QtQuick/QQuickWindow>
@ -41,12 +40,6 @@ void AvatarBookmarks::setupMenus(Menu* menubar, MenuWrapper* menu) {
Bookmarks::setupMenus(menubar, menu);
// connect bookmarkAvatarButton in AvatarPreferencesDialog.qml
// TODO: attempt at connecting to bookmarkAvatarSignal in AvatarPreferencesDialog.qml
// 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
auto offscreenUi = DependencyManager::get<OffscreenUi>();
auto context = offscreenUi->getRootContext();
context->setContextProperty("avatarBookmarks", this);
@ -61,11 +54,6 @@ void AvatarBookmarks::changeToBookmarkedAvatar() {
}
void AvatarBookmarks::addBookmark() {
// TODO: if you press the Bookmark Avatar button in the dialog it seems to maintain focus.
// Clicking afterwards results in multiple calls
// hide enforced until cause is determined
DependencyManager::get<OffscreenUi>()->hide(QString("AvatarPreferencesDialog"));
bool ok = false;
auto bookmarkName = OffscreenUi::getText(OffscreenUi::ICON_PLACEMARK, "Bookmark Avatar", "Name", QString(), &ok);
if (!ok) {
@ -87,6 +75,6 @@ void AvatarBookmarks::addBookmarkToMenu(Menu* menubar, const QString& name, cons
changeAction->setData(address);
connect(changeAction, SIGNAL(triggered()), this, SLOT(changeToBookmarkedAvatar()));
menubar->addActionToQMenuAndActionHash(_bookmarksMenu, changeAction,
name, 0, QAction::NoRole);
menubar->addActionToQMenuAndActionHash(_bookmarksMenu, changeAction, name, 0, QAction::NoRole);
Bookmarks::sortActions(_bookmarksMenu);
}

View file

@ -28,11 +28,11 @@ public slots:
protected:
void addBookmarkToMenu(Menu* menubar, const QString& name, const QString& address) override;
private slots:
void changeToBookmarkedAvatar();
private:
const QString AvatarBookmarks_FILENAME = "avatarbookmarks.json";
private slots:
void changeToBookmarkedAvatar();
};
#endif // hifi_AvatarBookmarks_h

View file

@ -24,7 +24,6 @@
#include "Bookmarks.h"
Bookmarks::Bookmarks() {
}
@ -84,7 +83,6 @@ void Bookmarks::addBookmark(const QString& bookmarkName, const QString& bookmark
addBookmarkToMenu(menubar, bookmarkName, bookmarkAddress);
insert(bookmarkName, bookmarkAddress); // Overwrites any item with the same bookmarkName.
enableMenuItems(true);
}
@ -114,6 +112,21 @@ bool Bookmarks::contains(const QString& name) const {
return _bookmarks.contains(name);
}
bool Bookmarks::sortOrder(QAction* a, QAction* b) {
return a->text().toLower() < b->text().toLower();
}
void Bookmarks::sortActions(MenuWrapper* menuWrapper) {
QList<QAction*> tmpActions = menuWrapper->actions();
qSort(tmpActions.begin(), tmpActions.end(), sortOrder);
for (QAction* action : menuWrapper->actions()) {
menuWrapper->removeAction(action);
}
for (QAction* action : tmpActions) {
menuWrapper->addAction(action);
}
}
QString Bookmarks::addressForBookmark(const QString& name) const {
return _bookmarks.value(name).toString();
}

View file

@ -33,26 +33,28 @@ public:
public slots:
virtual void addBookmark(const QString& bookmarkName, const QString& bookmarkAddress);
protected slots:
void deleteBookmark();
protected:
virtual void addBookmarkToMenu(Menu* menubar, const QString& name, const QString& address) = 0;
void enableMenuItems(bool enabled);
void readFromFile();
void insert(const QString& name, const QString& address); // Overwrites any existing entry with same name.
void sortActions(MenuWrapper* menuWrapper);
QVariantMap _bookmarks; // { name: url, ... }
QPointer<MenuWrapper> _bookmarksMenu;
QPointer<QAction> _deleteBookmarksAction;
QString _bookmarksFilename;
void insert(const QString& name, const QString& address); // Overwrites any existing entry with same name.
protected slots:
void deleteBookmark();
private:
void remove(const QString& name);
bool contains(const QString& name) const;
static bool sortOrder(QAction* a, QAction* b);
void readFromFile();
void persistToFile();
void enableMenuItems(bool enabled);
virtual void addBookmarkToMenu(Menu* menubar, const QString& name, const QString& address) = 0;
void removeBookmarkFromMenu(Menu* menubar, const QString& name);
};

View file

@ -40,20 +40,15 @@ void LocationBookmarks::setupMenus(Menu* menubar, MenuWrapper* menu) {
_bookmarksMenu = menu->addMenu(MenuOption::LocationBookmarks);
_deleteBookmarksAction = menubar->addActionToQMenuAndActionHash(menu, MenuOption::DeleteBookmark);
QObject::connect(_deleteBookmarksAction, SIGNAL(triggered()), this, SLOT(deleteBookmark()), Qt::QueuedConnection);
Bookmarks::setupMenus(menubar, menu);
}
void LocationBookmarks::setHomeLocation() {
Menu* menubar = Menu::getInstance();
QString bookmarkName = HOME_BOOKMARK;
auto addressManager = DependencyManager::get<AddressManager>();
QString bookmarkAddress = addressManager->currentAddress().toString();
addBookmarkToMenu(menubar, bookmarkName, bookmarkAddress);
insert(bookmarkName, bookmarkAddress); // Overwrites any item with the same bookmarkName.
enableMenuItems(true);
Bookmarks::addBookmark(HOME_BOOKMARK, bookmarkAddress);
Bookmarks::sortActions(_bookmarksMenu);
}
void LocationBookmarks::teleportToBookmark() {
@ -83,7 +78,7 @@ void LocationBookmarks::addBookmarkToMenu(Menu* menubar, const QString& name, co
QAction* teleportAction = _bookmarksMenu->newAction();
teleportAction->setData(address);
connect(teleportAction, SIGNAL(triggered()), this, SLOT(teleportToBookmark()));
menubar->addActionToQMenuAndActionHash(_bookmarksMenu, teleportAction,
name, 0, QAction::NoRole);
menubar->addActionToQMenuAndActionHash(_bookmarksMenu, teleportAction, name, 0, QAction::NoRole);
Bookmarks::sortActions(_bookmarksMenu);
}

View file

@ -29,12 +29,12 @@ public slots:
protected:
void addBookmarkToMenu(Menu* menubar, const QString& name, const QString& address) override;
private:
const QString LocationBookmarks_FILENAME = "bookmarks.json";
private slots:
void setHomeLocation();
void teleportToBookmark();
private:
const QString LocationBookmarks_FILENAME = "bookmarks.json";
};
#endif // hifi_LocationBookmarks_h