BookmarksContentsWidget::BookmarksContentsWidget(Window *window) : ContentsWidget(window), m_ui(new Ui::BookmarksContentsWidget) { m_ui->setupUi(this); QMenu *addMenu(new QMenu(m_ui->addButton)); addMenu->addAction(ThemesManager::getIcon(QLatin1String("inode-directory")), tr("Add Folder"), this, SLOT(addFolder())); addMenu->addAction(tr("Add Bookmark"), this, SLOT(addBookmark())); addMenu->addAction(tr("Add Separator"), this, SLOT(addSeparator())); QSet<int> filterRoles; filterRoles << BookmarksModel::UrlRole << BookmarksModel::TitleRole << BookmarksModel::DescriptionRole << BookmarksModel::KeywordRole; QList<QPair<QString, int> > rolesMapping; rolesMapping << qMakePair(tr("Title"), BookmarksModel::TitleRole) << qMakePair(tr("Address"), BookmarksModel::UrlRole) << qMakePair(tr("Description"), BookmarksModel::DescriptionRole) << qMakePair(tr("Keyword"), BookmarksModel::KeywordRole) << qMakePair(tr("Added"), BookmarksModel::TimeAddedRole) << qMakePair(tr("Modified"), BookmarksModel::TimeModifiedRole) << qMakePair(tr("Visited"), BookmarksModel::TimeVisitedRole) << qMakePair(tr("Visits"), BookmarksModel::VisitsRole); ProxyModel *model(new ProxyModel(BookmarksManager::getModel(), rolesMapping, this)); m_ui->addButton->setMenu(addMenu); m_ui->bookmarksViewWidget->setViewMode(ItemViewWidget::TreeViewMode); m_ui->bookmarksViewWidget->setModel(model); m_ui->bookmarksViewWidget->setExpanded(m_ui->bookmarksViewWidget->model()->index(0, 0), true); m_ui->bookmarksViewWidget->setFilterRoles(filterRoles); m_ui->bookmarksViewWidget->installEventFilter(this); m_ui->bookmarksViewWidget->viewport()->installEventFilter(this); m_ui->bookmarksViewWidget->viewport()->setMouseTracking(true); m_ui->filterLineEdit->installEventFilter(this); if (!window) { m_ui->detailsWidget->hide(); } connect(BookmarksManager::getModel(), SIGNAL(modelReset()), this, SLOT(updateActions())); connect(m_ui->propertiesButton, SIGNAL(clicked()), this, SLOT(bookmarkProperties())); connect(m_ui->deleteButton, SIGNAL(clicked()), this, SLOT(removeBookmark())); connect(m_ui->addButton, SIGNAL(clicked()), this, SLOT(addBookmark())); connect(m_ui->filterLineEdit, SIGNAL(textChanged(QString)), m_ui->bookmarksViewWidget, SLOT(setFilterString(QString))); connect(m_ui->bookmarksViewWidget, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(openBookmark(QModelIndex))); connect(m_ui->bookmarksViewWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showContextMenu(QPoint))); connect(m_ui->bookmarksViewWidget, SIGNAL(needsActionsUpdate()), this, SLOT(updateActions())); }
BookmarksContentsWidget::BookmarksContentsWidget(Window *window) : ContentsWidget(window), m_model(new QStandardItemModel(this)), m_isLoading(true), m_ui(new Ui::BookmarksContentsWidget) { m_ui->setupUi(this); QMenu *addMenu = new QMenu(m_ui->addButton); addMenu->addAction(Utils::getIcon(QLatin1String("inode-directory")), tr("Add Folder"), this, SLOT(addFolder())); addMenu->addAction(tr("Add Bookmark"), this, SLOT(addBookmark())); addMenu->addAction(tr("Add Separator"), this, SLOT(addSeparator())); m_ui->addButton->setMenu(addMenu); QTimer::singleShot(100, this, SLOT(populateBookmarks())); connect(m_ui->propertiesButton, SIGNAL(clicked()), this, SLOT(bookmarkProperties())); connect(m_ui->deleteButton, SIGNAL(clicked()), this, SLOT(removeBookmark())); connect(m_ui->addButton, SIGNAL(clicked()), this, SLOT(addBookmark())); }
BookmarksContentsWidget::BookmarksContentsWidget(Window *window) : ContentsWidget(window), m_ui(new Ui::BookmarksContentsWidget) { m_ui->setupUi(this); QMenu *addMenu = new QMenu(m_ui->addButton); addMenu->addAction(Utils::getIcon(QLatin1String("inode-directory")), tr("Add Folder"), this, SLOT(addFolder())); addMenu->addAction(tr("Add Bookmark"), this, SLOT(addBookmark())); addMenu->addAction(tr("Add Separator"), this, SLOT(addSeparator())); QSet<int> filterRoles; filterRoles << BookmarksModel::UrlRole << BookmarksModel::TitleRole << BookmarksModel::DescriptionRole << BookmarksModel::KeywordRole; m_ui->addButton->setMenu(addMenu); m_ui->bookmarksViewWidget->setViewMode(ItemViewWidget::TreeViewMode); m_ui->bookmarksViewWidget->setModel(BookmarksManager::getModel()); m_ui->bookmarksViewWidget->setItemDelegate(new ItemDelegate(this)); m_ui->bookmarksViewWidget->setExpanded(BookmarksManager::getModel()->getRootItem()->index(), true); m_ui->bookmarksViewWidget->setFilterRoles(filterRoles); m_ui->bookmarksViewWidget->installEventFilter(this); m_ui->bookmarksViewWidget->viewport()->installEventFilter(this); m_ui->bookmarksViewWidget->viewport()->setMouseTracking(true); m_ui->filterLineEdit->installEventFilter(this); if (!window) { m_ui->detailsWidget->hide(); } connect(BookmarksManager::getModel(), SIGNAL(modelReset()), this, SLOT(updateActions())); connect(m_ui->propertiesButton, SIGNAL(clicked()), this, SLOT(bookmarkProperties())); connect(m_ui->deleteButton, SIGNAL(clicked()), this, SLOT(removeBookmark())); connect(m_ui->addButton, SIGNAL(clicked()), this, SLOT(addBookmark())); connect(m_ui->filterLineEdit, SIGNAL(textChanged(QString)), m_ui->bookmarksViewWidget, SLOT(setFilterString(QString))); connect(m_ui->bookmarksViewWidget, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(openBookmark(QModelIndex))); connect(m_ui->bookmarksViewWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showContextMenu(QPoint))); connect(m_ui->bookmarksViewWidget, SIGNAL(needsActionsUpdate()), this, SLOT(updateActions())); }
void BookmarksContentsWidget::showContextMenu(const QPoint &point) { BookmarkInformation *bookmark = static_cast<BookmarkInformation*>(m_ui->bookmarksView->indexAt(point).data(Qt::UserRole).value<void*>()); QMenu menu(this); if (bookmark) { menu.addAction(Utils::getIcon(QLatin1String("document-open")), tr("Open"), this, SLOT(openBookmark())); menu.addAction(tr("Open in New Tab"), this, SLOT(openBookmark()))->setObjectName(QLatin1String("new-tab")); menu.addAction(tr("Open in New Background Tab"), this, SLOT(openBookmark()))->setObjectName(QLatin1String("new-background-tab")); menu.addSeparator(); menu.addAction(tr("Open in New Window"), this, SLOT(openBookmark()))->setObjectName(QLatin1String("new-window")); menu.addAction(tr("Open in New Background Window"), this, SLOT(openBookmark()))->setObjectName(QLatin1String("new-background-window")); if (bookmark->type == SeparatorBookmark || (bookmark->type == FolderBookmark && bookmark->children.isEmpty())) { for (int i = 0; i < menu.actions().count(); ++i) { menu.actions().at(i)->setEnabled(false); } } menu.addSeparator(); menu.addAction(tr("Copy Link to Clipboard"), this, SLOT(copyBookmarkLink()))->setEnabled(bookmark->type == UrlBookmark); menu.addSeparator(); menu.addAction(tr("Remove Bookmark"), this, SLOT(removeBookmark())); menu.addSeparator(); menu.addAction(tr("Properties..."), this, SLOT(bookmarkProperties())); } else { menu.addAction(tr("Add Bookmark..."), this, SLOT(addBookmark())); } menu.exec(m_ui->bookmarksView->mapToGlobal(point)); }
void BookmarksContentsWidget::showContextMenu(const QPoint &point) { const QModelIndex index = m_ui->bookmarksViewWidget->indexAt(point); const BookmarksModel::BookmarkType type = static_cast<BookmarksModel::BookmarkType>(index.data(BookmarksModel::TypeRole).toInt()); QMenu menu(this); if (type == BookmarksModel::TrashBookmark) { menu.addAction(Utils::getIcon(QLatin1String("trash-empty")), tr("Empty Trash"), BookmarksManager::getModel(), SLOT(emptyTrash()))->setEnabled(BookmarksManager::getModel()->getTrashItem()->rowCount() > 0); } else if (type == BookmarksModel::UnknownBookmark) { menu.addAction(Utils::getIcon(QLatin1String("inode-directory")), tr("Add Folder"), this, SLOT(addFolder())); menu.addAction(tr("Add Bookmark"), this, SLOT(addBookmark())); menu.addAction(tr("Add Separator"), this, SLOT(addSeparator())); } else { const bool isInTrash = BookmarksManager::getModel()->bookmarkFromIndex(index)->isInTrash(); menu.addAction(Utils::getIcon(QLatin1String("document-open")), tr("Open"), this, SLOT(openBookmark())); menu.addAction(tr("Open in New Tab"), this, SLOT(openBookmark()))->setData(WindowsManager::NewTabOpen); menu.addAction(tr("Open in New Background Tab"), this, SLOT(openBookmark()))->setData(static_cast<int>(WindowsManager::NewTabOpen | WindowsManager::BackgroundOpen)); menu.addSeparator(); menu.addAction(tr("Open in New Window"), this, SLOT(openBookmark()))->setData(WindowsManager::NewWindowOpen); menu.addAction(tr("Open in New Background Window"), this, SLOT(openBookmark()))->setData(static_cast<int>(WindowsManager::NewWindowOpen | WindowsManager::BackgroundOpen)); if (type == BookmarksModel::SeparatorBookmark || (type == BookmarksModel::FolderBookmark && index.child(0, 0).data(BookmarksModel::TypeRole).toInt() == 0)) { for (int i = 0; i < menu.actions().count(); ++i) { menu.actions().at(i)->setEnabled(false); } } if (type != BookmarksModel::RootBookmark) { Action *copyLinkAction = getAction(ActionsManager::CopyLinkToClipboardAction); copyLinkAction->setEnabled(type == BookmarksModel::UrlBookmark); menu.addSeparator(); menu.addAction(copyLinkAction); } if (!isInTrash) { menu.addSeparator(); QMenu *addMenu = menu.addMenu(tr("Add Bookmark")); addMenu->addAction(Utils::getIcon(QLatin1String("inode-directory")), tr("Add Folder"), this, SLOT(addFolder())); addMenu->addAction(tr("Add Bookmark"), this, SLOT(addBookmark())); addMenu->addAction(tr("Add Separator"), this, SLOT(addSeparator())); } if (type != BookmarksModel::RootBookmark) { menu.addSeparator(); if (isInTrash) { menu.addAction(tr("Restore Bookmark"), this, SLOT(restoreBookmark())); } else { menu.addAction(getAction(ActionsManager::DeleteAction)); } menu.addSeparator(); menu.addAction(tr("Properties…"), this, SLOT(bookmarkProperties())); } } menu.exec(m_ui->bookmarksViewWidget->mapToGlobal(point)); }