Add --setBookmark and getAddress API

This commit is contained in:
Ryan Huffman 2019-06-11 14:10:09 -07:00
parent d43365b6d9
commit a1b7392854
5 changed files with 28 additions and 2 deletions

View file

@ -950,6 +950,19 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) {
DependencyManager::set<GrabManager>();
DependencyManager::set<AvatarPackager>();
QString setBookmarkValue = getCmdOption(argc, constArgv, "--setBookmark");
if (!setBookmarkValue.isEmpty()) {
// Bookmarks are expected to be in a name=url form.
// An `=` character in the name or url is unsupported.
auto parts = setBookmarkValue.split("=");
if (parts.length() != 2) {
qWarning() << "Malformed setBookmark argument: " << setBookmarkValue;
} else {
qDebug() << "Setting bookmark" << parts[0] << "to" << parts[1];
DependencyManager::get<LocationBookmarks>()->insert(parts[0], parts[1]);
}
}
return previousSessionCrashed;
}

View file

@ -28,6 +28,7 @@ public:
Bookmarks();
virtual void setupMenus(Menu* menubar, MenuWrapper* menu) = 0;
void insert(const QString& name, const QVariant& address); // Overwrites any existing entry with same name.
QString addressForBookmark(const QString& name) const;
protected:
@ -37,7 +38,6 @@ protected:
virtual void addBookmarkToMenu(Menu* menubar, const QString& name, const QVariant& bookmark) = 0;
void enableMenuItems(bool enabled);
virtual void readFromFile();
void insert(const QString& name, const QVariant& address); // Overwrites any existing entry with same name.
void sortActions(Menu* menubar, MenuWrapper* menu);
int getMenuItemLocation(QList<QAction*> actions, const QString& name) const;
void removeBookmarkFromMenu(Menu* menubar, const QString& name);

View file

@ -67,6 +67,10 @@ QString LocationBookmarks::getHomeLocationAddress() {
return addressForBookmark(HOME_BOOKMARK);
}
QString LocationBookmarks::getAddress(const QString& bookmarkName) {
return addressForBookmark(bookmarkName);
}
void LocationBookmarks::teleportToBookmark() {
QAction* action = qobject_cast<QAction*>(sender());
QString address = action->data().toString();

View file

@ -34,6 +34,13 @@ public:
void setupMenus(Menu* menubar, MenuWrapper* menu) override;
static const QString HOME_BOOKMARK;
/**jsdoc
* @function LocationBookmarks.getAddress
* @param {string} bookmarkName Name of the bookmark to get the address for.
* @returns {string} The url for the specified bookmark. If the bookmark does not exist, the empty string will be returned.
*/
Q_INVOKABLE QString getAddress(const QString& bookmarkName);
public slots:
/**jsdoc
@ -48,7 +55,7 @@ public slots:
void setHomeLocationToAddress(const QVariant& address);
/**jsdoc
* @function LocationBookmarksgetHomeLocationAddress
* @function LocationBookmarks.getHomeLocationAddress
* @returns {string} The url for the home location bookmark
*/
QString getHomeLocationAddress();

View file

@ -85,6 +85,7 @@ int main(int argc, const char* argv[]) {
QCommandLineOption overrideScriptsPathOption(SCRIPTS_SWITCH, "set scripts <path>", "path");
QCommandLineOption responseTokensOption("tokens", "set response tokens <json>", "json");
QCommandLineOption displayNameOption("displayName", "set user display name <string>", "string");
QCommandLineOption setBookmarkOption("setBookmark", "set bookmark key=value pair", "string");
parser.addOption(urlOption);
parser.addOption(noLauncherOption);
@ -97,6 +98,7 @@ int main(int argc, const char* argv[]) {
parser.addOption(allowMultipleInstancesOption);
parser.addOption(responseTokensOption);
parser.addOption(displayNameOption);
parser.addOption(setBookmarkOption);
if (!parser.parse(arguments)) {
std::cout << parser.errorText().toStdString() << std::endl; // Avoid Qt log spam