History

Add bookmarks with Bookmark Location menu item

The menu of bookmarks is kept sorted.

David Rowe committed 11 years ago

Commit fa6faa71 parent 7130c576 files · +77 −26Browse files

Showing the changes to interface/src/Menu.cpp (1 of 6 files). Show all

Unified · Split

interface/src/Menu.cpp+51−0
@@ -123,6 +123,10 @@ Menu::Menu() : · 122 unmodified lines
123123 appInstance, SLOT(toggleRunningScriptsWidget()));
124124
125125 addDisabledActionAndSeparator(fileMenu, "Go");
126+ addActionToQMenuAndActionHash(fileMenu, MenuOption::BookmarkLocation, 0,
127+ this, SLOT(bookmarkLocation()));
128+ _bookmarksMenu = fileMenu->addMenu(MenuOption::Bookmarks);
129+ _bookmarksMenu->setEnabled(false);
126130 addActionToQMenuAndActionHash(fileMenu,
127131 MenuOption::NameLocation,
128132 Qt::CTRL | Qt::Key_N,
@@ -1010,6 +1014,53 @@ void Menu::changeVSync() { · 881 unmodified lines
10101014 Application::getInstance()->setVSyncEnabled(isOptionChecked(MenuOption::RenderTargetFramerateVSyncOn));
10111015 }
10121016
1017+void Menu::bookmarkLocation() {
1018+
1019+ QInputDialog bookmarkLocationDialog(Application::getInstance()->getWindow());
1020+ bookmarkLocationDialog.setWindowTitle("Bookmark Location");
1021+ bookmarkLocationDialog.setLabelText("Name:");
1022+ bookmarkLocationDialog.setInputMode(QInputDialog::TextInput);
1023+ bookmarkLocationDialog.resize(400, 200);
1024+
1025+ if (bookmarkLocationDialog.exec() == QDialog::Rejected) {
1026+ return;
1027+ }
1028+
1029+ QString bookmarkName = bookmarkLocationDialog.textValue().trimmed();
1030+ if (bookmarkName.length() == 0) {
1031+ return;
1032+ }
1033+
1034+ AddressManager::SharedPointer addressManager = DependencyManager::get<AddressManager>();
1035+ QString bookmarkAddress = addressManager->currentAddress().toString();
1036+
1037+ Bookmarks* bookmarks = Application::getInstance()->getBookmarks();
1038+ if (bookmarks->contains(bookmarkName)) {
1039+ QMessageBox duplicateBookmarkMessage;
1040+ duplicateBookmarkMessage.setIcon(QMessageBox::Warning);
1041+ duplicateBookmarkMessage.setText("The bookmark name you entered already exists in your list.");
1042+ duplicateBookmarkMessage.setInformativeText("Would you like to overwrite it?");
1043+ duplicateBookmarkMessage.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
1044+ duplicateBookmarkMessage.setDefaultButton(QMessageBox::Yes);
1045+ if (duplicateBookmarkMessage.exec() == QMessageBox::No) {
1046+ return;
1047+ }
1048+ removeAction(_bookmarksMenu, bookmarkName);
1049+ }
1050+
1051+ bookmarks->insert(bookmarkName, bookmarkAddress);
1052+
1053+ QList<QAction*> menuItems = _bookmarksMenu->actions();
1054+ int position = 0;
1055+ while (position < menuItems.count() && bookmarkName > menuItems[position]->text()) {
1056+ position += 1;
1057+ }
1058+ addActionToQMenuAndActionHash(_bookmarksMenu, bookmarkName, 0,
1059+ this, NULL, QAction::NoRole, position);
1060+
1061+ _bookmarksMenu->setEnabled(true);
1062+}
1063+
10131064 void Menu::displayNameLocationResponse(const QString& errorString) {
10141065
10151066 if (!errorString.isEmpty()) {