Пример #1
0
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());
		}
	}
}
Пример #2
0
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();
}
Пример #3
0
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);
		}
	}
}
Пример #4
0
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;
	}
}
Пример #5
0
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;
	}
}