void WindowsManager::gatherBookmarks(QStandardItem *branch) { if (!branch) { return; } for (int i = 0; i < branch->rowCount(); ++i) { QStandardItem *item = branch->child(i, 0); if (!item) { continue; } const BookmarksItem::BookmarkType type = static_cast<BookmarksItem::BookmarkType>(item->data(BookmarksModel::TypeRole).toInt()); if (type == BookmarksItem::FolderBookmark) { gatherBookmarks(item); } else if (type == BookmarksItem::UrlBookmark) { m_bookmarksToOpen.append(item->data(BookmarksModel::UrlRole).toUrl()); } } }
void BookmarksContentsWidget::openBookmark(const QModelIndex &index) { BookmarkInformation *bookmark = static_cast<BookmarkInformation*>((index.isValid() ? index : m_ui->bookmarksView->currentIndex()).data(Qt::UserRole).value<void*>()); if (!bookmark || bookmark->type == SeparatorBookmark) { return; } if (bookmark->type == UrlBookmark) { QAction *action = qobject_cast<QAction*>(sender()); emit requestedOpenUrl(QUrl(bookmark->url), false, (action && action->objectName().contains(QLatin1String("background"))), (action && action->objectName().contains(QLatin1String("window")))); return; } gatherBookmarks(bookmark->identifier); if (m_bookmarksToOpen.isEmpty()) { return; } if (m_bookmarksToOpen.count() > 1 && SettingsManager::getValue(QLatin1String("Choices/WarnOpenBookmarkFolder")).toBool()) { QMessageBox messageBox; messageBox.setWindowTitle(tr("Question")); messageBox.setText(tr("You are about to open %n bookmarks.", "", m_bookmarksToOpen.count())); messageBox.setInformativeText("Do you want to continue?"); messageBox.setIcon(QMessageBox::Question); messageBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); messageBox.setDefaultButton(QMessageBox::Yes); messageBox.setCheckBox(new QCheckBox(tr("Do not show this message again"))); if (messageBox.exec() == QMessageBox::Cancel) { m_bookmarksToOpen.clear(); } SettingsManager::setValue(QLatin1String("Choices/WarnOpenBookmarkFolder"), !messageBox.checkBox()->isChecked()); } QAction *action = qobject_cast<QAction*>(sender()); const bool background = (action && action->objectName().contains(QLatin1String("background"))); const bool newWindow = (action && action->objectName().contains(QLatin1String("window"))); for (int i = 0; i < m_bookmarksToOpen.count(); ++i) { emit requestedOpenUrl(QUrl(m_bookmarksToOpen.at(i)), false, background, newWindow); } m_bookmarksToOpen.clear(); }
void BookmarksContentsWidget::gatherBookmarks(int folder) { const QList<BookmarkInformation*> bookmarks = BookmarksManager::getFolder(folder); for (int i = 0; i < bookmarks.count(); ++i) { if (bookmarks.at(i)->type == FolderBookmark) { gatherBookmarks(bookmarks.at(i)->identifier); } else if (bookmarks.at(i)->type == UrlBookmark) { m_bookmarksToOpen.append(bookmarks.at(i)->url); } } }
void WindowsManager::open(const BookmarkInformation *bookmark, OpenHints hints) { if (!bookmark) { return; } if (hints == DefaultOpen && SettingsManager::getValue(QLatin1String("Browser/ReuseCurrentTab")).toBool()) { hints = CurrentTabOpen; } switch (bookmark->type) { case UrlBookmark: open(QUrl(bookmark->url), hints); break; case FolderBookmark: { gatherBookmarks(bookmark->identifier); if (m_bookmarksToOpen.count() > 1 && SettingsManager::getValue(QLatin1String("Choices/WarnOpenBookmarkFolder")).toBool()) { QMessageBox messageBox; messageBox.setWindowTitle(tr("Question")); messageBox.setText(tr("You are about to open %n bookmarks.", "", m_bookmarksToOpen.count())); messageBox.setInformativeText("Do you want to continue?"); messageBox.setIcon(QMessageBox::Question); messageBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); messageBox.setDefaultButton(QMessageBox::Yes); messageBox.setCheckBox(new QCheckBox(tr("Do not show this message again"))); if (messageBox.exec() == QMessageBox::Cancel) { m_bookmarksToOpen.clear(); } SettingsManager::setValue(QLatin1String("Choices/WarnOpenBookmarkFolder"), !messageBox.checkBox()->isChecked()); } if (m_bookmarksToOpen.isEmpty()) { return; } open(QUrl(m_bookmarksToOpen.at(0)), hints); for (int i = 1; i < m_bookmarksToOpen.count(); ++i) { open(QUrl(m_bookmarksToOpen.at(i)), ((hints == DefaultOpen || hints == CurrentTabOpen) ? NewTabOpen : hints)); } m_bookmarksToOpen.clear(); } break; default: break; } }
void WindowsManager::open(BookmarksItem *bookmark, OpenHints hints) { if (!bookmark) { return; } Window *window = m_mdi->getActiveWindow(); if (hints == DefaultOpen && ((window && window->isUrlEmpty()) || SettingsManager::getValue(QLatin1String("Browser/ReuseCurrentTab")).toBool())) { hints = CurrentTabOpen; } switch (static_cast<BookmarksItem::BookmarkType>(bookmark->data(BookmarksModel::TypeRole).toInt())) { case BookmarksItem::UrlBookmark: open(QUrl(bookmark->data(BookmarksModel::UrlRole).toUrl()), hints); break; case BookmarksItem::RootBookmark: case BookmarksItem::FolderBookmark: { gatherBookmarks(bookmark); if (m_bookmarksToOpen.count() > 1 && SettingsManager::getValue(QLatin1String("Choices/WarnOpenBookmarkFolder")).toBool()) { QMessageBox messageBox; messageBox.setWindowTitle(tr("Question")); messageBox.setText(tr("You are about to open %n bookmarks.", "", m_bookmarksToOpen.count())); messageBox.setInformativeText("Do you want to continue?"); messageBox.setIcon(QMessageBox::Question); messageBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel); messageBox.setDefaultButton(QMessageBox::Yes); messageBox.setCheckBox(new QCheckBox(tr("Do not show this message again"))); if (messageBox.exec() == QMessageBox::Cancel) { m_bookmarksToOpen.clear(); } SettingsManager::setValue(QLatin1String("Choices/WarnOpenBookmarkFolder"), !messageBox.checkBox()->isChecked()); } if (m_bookmarksToOpen.isEmpty()) { return; } open(m_bookmarksToOpen.at(0), hints); for (int i = 1; i < m_bookmarksToOpen.count(); ++i) { open(m_bookmarksToOpen.at(i), ((hints == DefaultOpen || (hints & CurrentTabOpen)) ? NewTabOpen : hints)); } m_bookmarksToOpen.clear(); } break; default: break; } }