void BookmarksToolbar::subfolderAdded(const QString &name) { ToolButton* b = new ToolButton(this); b->setPopupMode(QToolButton::InstantPopup); b->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); b->setIcon(style()->standardIcon(QStyle::SP_DirIcon)); b->setText(name); Menu* menu = new Menu(name); b->setMenu(menu); connect(menu, SIGNAL(aboutToShow()), this, SLOT(aboutToShowFolderMenu())); m_layout->insertWidget(m_layout->count() - 2, b); }
QWidget *LeftToolBox::createButton(const QString &name,QButtonGroup *group,const int id) { ToolButton *carButton = new ToolButton; carButton->setCheckable(true); carButton->setIcon(QIcon(QPixmap(name).scaled(30,30,Qt::KeepAspectRatio))); carButton->setIconSize(QSize(50,50)); if (group != 0){ group->addButton(carButton, id); } QGridLayout *layout = new QGridLayout; layout->addWidget(carButton,0,0,Qt::AlignHCenter); QWidget *widget = new QWidget; widget->setLayout(layout); return widget; }
ToolButton* ToolBar::addButton(const QIcon& icon, const QString& tooltip) { ToolButton* button = new ToolButton(this); #ifdef Q_OS_MAC // Force auto-raize type if(dynamic_cast<QMacStyle*>(button->style())){ button->setStyle(&cleanlooks); } #endif button->setIconSize(mainWindow->iconSize()); button->setIcon(icon); button->setAutoRaise(true); button->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); if(!tooltip.isEmpty()){ button->setToolTip(tooltip); } hbox->addWidget(button); return button; }
SizeGrip::SizeGrip(QWidget *parent) : QWidget(parent) { QBoxLayout *l=new QBoxLayout(QBoxLayout::TopToBottom, this); l->addItem(new QSpacerItem(1, 0, QSizePolicy::Maximum, QSizePolicy::Preferred)); QSizeGrip *grip=new QSizeGrip(this); l->addWidget(grip); l->setMargin(0); l->setSpacing(0); l->setAlignment(Qt::AlignBottom); ToolButton tb; tb.move(65535, 65535); tb.setToolButtonStyle(Qt::ToolButtonIconOnly); tb.setIcon(Icons::self()->albumIcon); tb.ensurePolished(); tb.setAttribute(Qt::WA_DontShowOnScreen); tb.setVisible(true); setMinimumWidth(qMax(grip->sizeHint().width(), tb.sizeHint().width())); setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); }
void BookmarksToolbar::bookmarkEdited(const BookmarksModel::Bookmark &before, const BookmarksModel::Bookmark &after) { if (before.folder == QLatin1String("bookmarksToolbar") && after.folder != QLatin1String("bookmarksToolbar")) { // Editing from toolbar folder to other folder -> Remove bookmark removeBookmark(before); } else if (before.folder != QLatin1String("bookmarksToolbar") && after.folder == QLatin1String("bookmarksToolbar")) { // Editing from other folder to toolbar folder -> Add bookmark addBookmark(after); } else { // Editing bookmark already in toolbar for (int i = 0; i < m_layout->count(); i++) { ToolButton* button = qobject_cast<ToolButton*>(m_layout->itemAt(i)->widget()); if (!button) { continue; } Bookmark book = button->data().value<Bookmark>(); if (book == before) { QString title = after.title; if (title.length() > 15) { title.truncate(13); title += ".."; } QVariant v; v.setValue<Bookmark>(after); button->setText(title); button->setData(v); button->setIcon(qIconProvider->iconFromImage(after.image)); button->setToolTip(after.url.toEncoded()); return; } } } }
void BookmarksToolbar::addBookmark(const BookmarksModel::Bookmark &bookmark) { if (bookmark.folder != "bookmarksToolbar") { return; } QString title = bookmark.title; if (title.length() > 15) { title.truncate(13); title += ".."; } QVariant v; v.setValue<Bookmark>(bookmark); ToolButton* button = new ToolButton(this); button->setText(title); button->setData(v); button->setIcon(bookmark.icon); button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); button->setToolTip(bookmark.url.toEncoded()); button->setAutoRaise(true); button->setWhatsThis(bookmark.title); button->setContextMenuPolicy(Qt::CustomContextMenu); connect(button, SIGNAL(clicked()), this, SLOT(loadClickedBookmark())); connect(button, SIGNAL(middleMouseClicked()), this, SLOT(loadClickedBookmarkInNewTab())); connect(button, SIGNAL(controlClicked()), this, SLOT(loadClickedBookmarkInNewTab())); connect(button, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showBookmarkContextMenu(QPoint))); int indexForBookmark = indexOfLastBookmark(); m_layout->insertWidget(indexForBookmark, button); QSqlQuery query; query.prepare("UPDATE bookmarks SET toolbar_position=? WHERE id=?"); query.addBindValue(indexForBookmark); query.addBindValue(bookmark.id); mApp->dbWriter()->executeQuery(query); }
void BookmarksToolbar::refreshBookmarks() { QSqlQuery query; query.exec("SELECT id, title, url, icon FROM bookmarks WHERE folder='bookmarksToolbar' ORDER BY toolbar_position"); while (query.next()) { Bookmark bookmark; bookmark.id = query.value(0).toInt(); bookmark.title = query.value(1).toString(); bookmark.url = query.value(2).toUrl(); bookmark.icon = IconProvider::iconFromBase64(query.value(3).toByteArray()); bookmark.folder = "bookmarksToolbar"; QString title = bookmark.title; if (title.length() > 15) { title.truncate(13); title += ".."; } QVariant v; v.setValue<Bookmark>(bookmark); ToolButton* button = new ToolButton(this); button->setText(title); button->setData(v); button->setIcon(bookmark.icon); button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); button->setToolTip(bookmark.url.toEncoded()); button->setWhatsThis(bookmark.title); button->setAutoRaise(true); button->setContextMenuPolicy(Qt::CustomContextMenu); connect(button, SIGNAL(clicked()), this, SLOT(loadClickedBookmark())); connect(button, SIGNAL(middleMouseClicked()), this, SLOT(loadClickedBookmarkInNewTab())); connect(button, SIGNAL(controlClicked()), this, SLOT(loadClickedBookmarkInNewTab())); connect(button, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showBookmarkContextMenu(QPoint))); m_layout->addWidget(button); } query.exec("SELECT name FROM folders WHERE subfolder='yes'"); while (query.next()) { ToolButton* b = new ToolButton(this); b->setPopupMode(QToolButton::InstantPopup); b->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); b->setIcon(style()->standardIcon(QStyle::SP_DirIcon)); b->setText(query.value(0).toString()); Menu* menu = new Menu(query.value(0).toString()); b->setMenu(menu); connect(menu, SIGNAL(aboutToShow()), this, SLOT(aboutToShowFolderMenu())); m_layout->addWidget(b); } m_mostVis = new ToolButton(this); m_mostVis->setPopupMode(QToolButton::InstantPopup); m_mostVis->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); m_mostVis->setIcon(style()->standardIcon(QStyle::SP_DirIcon)); m_mostVis->setText(tr("Most visited")); m_mostVis->setToolTip(tr("Sites you visited the most")); m_menuMostVisited = new Menu(); m_mostVis->setMenu(m_menuMostVisited); connect(m_menuMostVisited, SIGNAL(aboutToShow()), this, SLOT(refreshMostVisited())); m_layout->addWidget(m_mostVis); m_layout->addStretch(); m_mostVis->setVisible(m_bookmarksModel->isShowingMostVisited()); }
QWizardPage *AddFeedWizard::createNameFeedPage() { QWizardPage *page = new QWizardPage; page->setTitle(tr("Create New Feed")); page->setFinalPage(false); nameFeedEdit_ = new LineEdit(this); foldersTree_ = new QTreeWidget(this); foldersTree_->setObjectName("foldersTree_"); foldersTree_->setColumnCount(2); foldersTree_->setColumnHidden(1, true); foldersTree_->header()->hide(); QStringList treeItem; treeItem << tr("Feeds") << "Id"; foldersTree_->setHeaderLabels(treeItem); treeItem.clear(); treeItem << tr("All Feeds") << "0"; QTreeWidgetItem *treeWidgetItem = new QTreeWidgetItem(treeItem); treeWidgetItem->setIcon(0, QIcon(":/images/folder")); foldersTree_->addTopLevelItem(treeWidgetItem); foldersTree_->setCurrentItem(treeWidgetItem); QSqlQuery q; QQueue<int> parentIds; parentIds.enqueue(0); while (!parentIds.empty()) { int parentId = parentIds.dequeue(); QString qStr = QString("SELECT text, id FROM feeds WHERE parentId='%1' AND (xmlUrl='' OR xmlUrl IS NULL)"). arg(parentId); q.exec(qStr); while (q.next()) { QString folderText = q.value(0).toString(); QString folderId = q.value(1).toString(); QStringList treeItem; treeItem << folderText << folderId; QTreeWidgetItem *treeWidgetItem = new QTreeWidgetItem(treeItem); treeWidgetItem->setIcon(0, QIcon(":/images/folder")); QList<QTreeWidgetItem *> treeItems = foldersTree_->findItems(QString::number(parentId), Qt::MatchFixedString | Qt::MatchRecursive, 1); treeItems.at(0)->addChild(treeWidgetItem); if (folderId.toInt() == curFolderId_) foldersTree_->setCurrentItem(treeWidgetItem); parentIds.enqueue(folderId.toInt()); } } foldersTree_->expandAll(); foldersTree_->sortByColumn(0, Qt::AscendingOrder); ToolButton *newFolderButton = new ToolButton(this); newFolderButton->setIcon(QIcon(":/images/addT")); newFolderButton->setToolTip(tr("New Folder...")); newFolderButton->setAutoRaise(true); QHBoxLayout *newFolderLayout = new QHBoxLayout; newFolderLayout->setMargin(0); newFolderLayout->addWidget(newFolderButton); newFolderLayout->addStretch(); QVBoxLayout *newFolderVLayout = new QVBoxLayout; newFolderVLayout->setMargin(2); newFolderVLayout->addStretch(); newFolderVLayout->addLayout(newFolderLayout); foldersTree_->setLayout(newFolderVLayout); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(new QLabel(tr("Displayed name:"))); layout->addWidget(nameFeedEdit_); layout->addWidget(new QLabel(tr("Location:"))); layout->addWidget(foldersTree_); page->setLayout(layout); connect(nameFeedEdit_, SIGNAL(textChanged(const QString&)), this, SLOT(nameFeedEditChanged(const QString&))); connect(newFolderButton, SIGNAL(clicked()), this, SLOT(newFolder())); return page; }
//------------------------------------------------------------------------------ QWidget *FeedPropertiesDialog::createGeneralTab() { QWidget *tab = new QWidget(); QGridLayout *layoutGeneralGrid = new QGridLayout(); QLabel *labelTitleCapt = new QLabel(tr("Title:")); QLabel *labelHomepageCapt = new QLabel(tr("Homepage:")); QLabel *labelURLCapt = new QLabel(tr("Feed URL:")); QHBoxLayout *layoutGeneralTitle = new QHBoxLayout(); editTitle = new LineEdit(); ToolButton *loadTitleButton = new ToolButton(); loadTitleButton->setIcon(QIcon(":/images/updateFeed")); loadTitleButton->setIconSize(QSize(16, 16)); loadTitleButton->setToolTip(tr("Load Title")); loadTitleButton->setFocusPolicy(Qt::NoFocus); QMenu *selectIconMenu = new QMenu(); selectIconMenu->addAction(tr("Load Favicon")); selectIconMenu->addSeparator(); selectIconMenu->addAction(tr("Select Icon...")); selectIconButton_ = new QToolButton(this); selectIconButton_->setIconSize(QSize(16, 16)); selectIconButton_->setToolTip(tr("Select Icon")); selectIconButton_->setFocusPolicy(Qt::NoFocus); selectIconButton_->setPopupMode(QToolButton::MenuButtonPopup); selectIconButton_->setMenu(selectIconMenu); layoutGeneralTitle->addWidget(editTitle, 1); layoutGeneralTitle->addWidget(loadTitleButton); layoutGeneralTitle->addWidget(selectIconButton_); editURL = new LineEdit(); disableUpdate_ = new QCheckBox(tr("Disable update")); disableUpdate_->setChecked(false); updateEnable_ = new QCheckBox(tr("Automatically update every")); updateInterval_ = new QSpinBox(); updateInterval_->setEnabled(false); updateInterval_->setRange(1, 9999); connect(updateEnable_, SIGNAL(toggled(bool)), updateInterval_, SLOT(setEnabled(bool))); updateIntervalType_ = new QComboBox(this); updateIntervalType_->setEnabled(false); QStringList intervalTypeList; intervalTypeList << tr("seconds") << tr("minutes") << tr("hours"); updateIntervalType_->addItems(intervalTypeList); connect(updateEnable_, SIGNAL(toggled(bool)), updateIntervalType_, SLOT(setEnabled(bool))); QHBoxLayout *updateFeedsLayout = new QHBoxLayout(); updateFeedsLayout->setMargin(0); updateFeedsLayout->addWidget(updateEnable_); updateFeedsLayout->addWidget(updateInterval_); updateFeedsLayout->addWidget(updateIntervalType_); updateFeedsLayout->addStretch(); connect(disableUpdate_, SIGNAL(toggled(bool)), updateEnable_, SLOT(setDisabled(bool))); connect(disableUpdate_, SIGNAL(toggled(bool)), updateInterval_, SLOT(setDisabled(bool))); connect(disableUpdate_, SIGNAL(toggled(bool)), updateIntervalType_, SLOT(setDisabled(bool))); starredOn_ = new QCheckBox(tr("Starred")); displayOnStartup = new QCheckBox(tr("Display in new tab on startup")); duplicateNewsMode_ = new QCheckBox(tr("Automatically delete duplicate news")); QHBoxLayout *layoutGeneralHomepage = new QHBoxLayout(); labelHomepage = new QLabel(); labelHomepage->setOpenExternalLinks(true); layoutGeneralHomepage->addWidget(labelHomepageCapt); layoutGeneralHomepage->addWidget(labelHomepage, 1); layoutGeneralGrid->addWidget(labelTitleCapt, 0, 0); layoutGeneralGrid->addLayout(layoutGeneralTitle, 0 ,1); layoutGeneralGrid->addWidget(labelURLCapt, 1, 0); layoutGeneralGrid->addWidget(editURL, 1, 1); QVBoxLayout *tabLayout = new QVBoxLayout(tab); tabLayout->setMargin(10); tabLayout->setSpacing(5); tabLayout->addLayout(layoutGeneralGrid); tabLayout->addLayout(layoutGeneralHomepage); tabLayout->addSpacing(15); tabLayout->addWidget(disableUpdate_); tabLayout->addLayout(updateFeedsLayout); tabLayout->addSpacing(15); tabLayout->addWidget(starredOn_); tabLayout->addWidget(displayOnStartup); tabLayout->addWidget(duplicateNewsMode_); tabLayout->addStretch(); connect(loadTitleButton, SIGNAL(clicked()), this, SLOT(setDefaultTitle())); connect(selectIconButton_, SIGNAL(clicked()), this, SLOT(selectIcon())); connect(selectIconMenu->actions().at(0), SIGNAL(triggered()), this, SLOT(loadDefaultIcon())); connect(selectIconMenu->actions().at(2), SIGNAL(triggered()), this, SLOT(selectIcon())); if (!isFeed_) { loadTitleButton->hide(); selectIconButton_->hide(); labelURLCapt->hide(); editURL->hide(); labelHomepageCapt->hide(); labelHomepage->hide(); starredOn_->hide(); duplicateNewsMode_->hide(); } return tab; }