diff --git a/interface/resources/images/address-bar.svg b/interface/resources/images/address-bar.svg index dd907aa6c9..56dc4f028c 100644 --- a/interface/resources/images/address-bar.svg +++ b/interface/resources/images/address-bar.svg @@ -15,7 +15,7 @@ viewBox="0 0 1440 200" id="svg4136" inkscape:version="0.91 r13725" - sodipodi:docname="address-bar.002.svg"> + sodipodi:docname="address-bar.svg"> @@ -39,16 +39,16 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1835" - inkscape:window-height="1057" + inkscape:window-width="1536" + inkscape:window-height="687" id="namedview4140" showgrid="false" inkscape:zoom="0.61319416" - inkscape:cx="132.58366" + inkscape:cx="670.06567" inkscape:cy="52.468468" - inkscape:window-x="77" - inkscape:window-y="-8" - inkscape:window-maximized="1" + inkscape:window-x="105" + inkscape:window-y="0" + inkscape:window-maximized="0" inkscape:current-layer="svg4136" /> + width="328.72031" + height="139.64169" + x="150.33546" + y="30.179144" + rx="18.876532" + ry="20.609974" /> - diff --git a/interface/resources/images/home-button.svg b/interface/resources/images/home-button.svg new file mode 100644 index 0000000000..c7f9bfd607 --- /dev/null +++ b/interface/resources/images/home-button.svg @@ -0,0 +1,48 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/interface/resources/qml/AddressBarDialog.qml b/interface/resources/qml/AddressBarDialog.qml index c5712c11d2..7f107e44e9 100644 --- a/interface/resources/qml/AddressBarDialog.qml +++ b/interface/resources/qml/AddressBarDialog.qml @@ -55,15 +55,35 @@ Window { property int inputAreaHeight: 56.0 * root.scale // Height of the background's input area property int inputAreaStep: (height - inputAreaHeight) / 2 + Image { + id: homeButton + source: "../images/home-button.svg" + width: 29 + height: 26 + anchors { + left: parent.left + leftMargin: parent.height + 2 * hifi.layout.spacing + verticalCenter: parent.verticalCenter + } + + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.LeftButton + onClicked: { + addressBarDialog.loadHome() + } + } + } + Image { id: backArrow source: addressBarDialog.backEnabled ? "../images/left-arrow.svg" : "../images/left-arrow-disabled.svg" + width: 22 + height: 26 anchors { - fill: parent - leftMargin: parent.height + hifi.layout.spacing + 6 - rightMargin: parent.height + hifi.layout.spacing * 60 - topMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing - bottomMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing + left: homeButton.right + leftMargin: 2 * hifi.layout.spacing + verticalCenter: parent.verticalCenter } MouseArea { @@ -78,12 +98,12 @@ Window { Image { id: forwardArrow source: addressBarDialog.forwardEnabled ? "../images/right-arrow.svg" : "../images/right-arrow-disabled.svg" + width: 22 + height: 26 anchors { - fill: parent - leftMargin: parent.height + hifi.layout.spacing * 9 - rightMargin: parent.height + hifi.layout.spacing * 53 - topMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing - bottomMargin: parent.inputAreaStep + parent.inputAreaStep + hifi.layout.spacing + left: backArrow.right + leftMargin: 2 * hifi.layout.spacing + verticalCenter: parent.verticalCenter } MouseArea { @@ -101,7 +121,7 @@ Window { focus: true anchors { fill: parent - leftMargin: parent.height + parent.height + hifi.layout.spacing * 5 + leftMargin: parent.height + parent.height + hifi.layout.spacing * 7 rightMargin: hifi.layout.spacing * 2 topMargin: parent.inputAreaStep + hifi.layout.spacing bottomMargin: parent.inputAreaStep + hifi.layout.spacing diff --git a/interface/src/Bookmarks.cpp b/interface/src/Bookmarks.cpp index 0e7941a5a4..476925a0c5 100644 --- a/interface/src/Bookmarks.cpp +++ b/interface/src/Bookmarks.cpp @@ -29,6 +29,10 @@ #include "Bookmarks.h" #include + +const QString Bookmarks::HOME_BOOKMARK = "Home"; + + Bookmarks::Bookmarks() { _bookmarksFilename = QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/" + BOOKMARKS_FILENAME; readFromFile(); @@ -60,6 +64,10 @@ bool Bookmarks::contains(const QString& name) const { return _bookmarks.contains(name); } +QString Bookmarks::addressForBookmark(const QString& name) const { + return _bookmarks.value(name).toString(); +} + void Bookmarks::readFromFile() { QFile loadFile(_bookmarksFilename); @@ -95,6 +103,8 @@ void Bookmarks::setupMenus(Menu* menubar, MenuWrapper* menu) { // Add menus/actions auto bookmarkAction = menubar->addActionToQMenuAndActionHash(menu, MenuOption::BookmarkLocation); QObject::connect(bookmarkAction, SIGNAL(triggered()), this, SLOT(bookmarkLocation()), Qt::QueuedConnection); + auto setHomeAction = menubar->addActionToQMenuAndActionHash(menu, MenuOption::SetHomeLocation); + QObject::connect(setHomeAction, SIGNAL(triggered()), this, SLOT(setHomeLocation()), Qt::QueuedConnection); _bookmarksMenu = menu->addMenu(MenuOption::Bookmarks); _deleteBookmarksAction = menubar->addActionToQMenuAndActionHash(menu, MenuOption::DeleteBookmark); QObject::connect(_deleteBookmarksAction, SIGNAL(triggered()), this, SLOT(deleteBookmark()), Qt::QueuedConnection); @@ -146,6 +156,18 @@ void Bookmarks::bookmarkLocation() { enableMenuItems(true); } +void Bookmarks::setHomeLocation() { + Menu* menubar = Menu::getInstance(); + QString bookmarkName = HOME_BOOKMARK; + auto addressManager = DependencyManager::get(); + QString bookmarkAddress = addressManager->currentAddress().toString(); + + addLocationToMenu(menubar, bookmarkName, bookmarkAddress); + insert(bookmarkName, bookmarkAddress); // Overwrites any item with the same bookmarkName. + + enableMenuItems(true); +} + void Bookmarks::teleportToBookmark() { QAction* action = qobject_cast(sender()); QString address = action->data().toString(); diff --git a/interface/src/Bookmarks.h b/interface/src/Bookmarks.h index 7ff9d48e8a..fd9598b7db 100644 --- a/interface/src/Bookmarks.h +++ b/interface/src/Bookmarks.h @@ -29,8 +29,13 @@ public: void setupMenus(Menu* menubar, MenuWrapper* menu); + QString addressForBookmark(const QString& name) const; + + static const QString HOME_BOOKMARK; + private slots: void bookmarkLocation(); + void setHomeLocation(); void teleportToBookmark(); void deleteBookmark(); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index b1bcf91e10..5796575780 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -170,6 +170,7 @@ namespace MenuOption { const QString RunTimingTests = "Run Timing Tests"; const QString ScriptEditor = "Script Editor..."; const QString ScriptedMotorControl = "Enable Scripted Motor Control"; + const QString SetHomeLocation = "Set Home Location"; const QString ShowDSConnectTable = "Show Domain Connection Timing"; const QString ShowBordersEntityNodes = "Show Entity Nodes"; const QString ShowRealtimeEntityStats = "Show Realtime Entity Stats"; diff --git a/interface/src/ui/AddressBarDialog.cpp b/interface/src/ui/AddressBarDialog.cpp index 9718aafd14..b483160552 100644 --- a/interface/src/ui/AddressBarDialog.cpp +++ b/interface/src/ui/AddressBarDialog.cpp @@ -10,6 +10,7 @@ // #include "AddressBarDialog.h" +#include "Application.h" #include @@ -50,6 +51,16 @@ void AddressBarDialog::loadAddress(const QString& address) { } } +void AddressBarDialog::loadHome() { + qDebug() << "Called LoadHome"; + QString homeLocation = qApp->getBookmarks()->addressForBookmark(Bookmarks::HOME_BOOKMARK); + const QString DEFAULT_HOME_LOCATION = "localhost"; + if (homeLocation == "") { + homeLocation = DEFAULT_HOME_LOCATION; + } + DependencyManager::get()->handleLookupString(homeLocation); +} + void AddressBarDialog::loadBack() { qDebug() << "Called LoadBack"; DependencyManager::get()->goBack(); diff --git a/interface/src/ui/AddressBarDialog.h b/interface/src/ui/AddressBarDialog.h index 811e2f5b12..eab1ebae69 100644 --- a/interface/src/ui/AddressBarDialog.h +++ b/interface/src/ui/AddressBarDialog.h @@ -36,6 +36,7 @@ protected: void hide(); Q_INVOKABLE void loadAddress(const QString& address); + Q_INVOKABLE void loadHome(); Q_INVOKABLE void loadBack(); Q_INVOKABLE void loadForward();