void SubToolBar::initLineLabel() { m_lineLabel = new QLabel(this); //rectangle, oval... QButtonGroup* lineBtnGroup = new QButtonGroup(); lineBtnGroup->setExclusive(true); QList<ToolButton*> btnList; ToolButton* fineLine = new ToolButton(); fineLine->setObjectName("FineLine"); lineBtnGroup->addButton(fineLine); btnList.append(fineLine); ToolButton* mediumLine = new ToolButton(); mediumLine->setObjectName("MediumLine"); lineBtnGroup->addButton(mediumLine); btnList.append(mediumLine); ToolButton* thickLine = new ToolButton(); thickLine->setObjectName("ThickLine"); lineBtnGroup->addButton(thickLine); btnList.append(thickLine); int lineWidthIndex = ConfigSettings::instance()->value("line", "linewidth_index").toInt(); btnList[lineWidthIndex]->setChecked(true); QHBoxLayout* lineLayout = new QHBoxLayout(); lineLayout->setMargin(0); lineLayout->setSpacing(0); lineLayout->addSpacing(1); for(int k = 0; k < btnList.length(); k++) { lineLayout->addWidget(btnList[k]); lineLayout->addSpacing(BUTTON_SPACING); connect(btnList[k], &ToolButton::clicked, this, [=]{ ConfigSettings::instance()->setValue("line", "linewidth_index", k); }); } lineLayout->addStretch(); m_lineLabel->setLayout(lineLayout); addWidget(m_lineLabel); connect(this, &SubToolBar::shapeChanged, this, [=]{ int lineIndex = ConfigSettings::instance()->value(m_currentType, "linewidth_index").toInt(); btnList[lineIndex]->setChecked(true); }); }
void SubToolBar::initRectLabel() { m_rectLabel = new QLabel(this); QButtonGroup* rectBtnGroup = new QButtonGroup(); rectBtnGroup->setExclusive(true); QList<ToolButton*> btnList; //rectangle, oval... ToolButton* fineLine = new ToolButton(); fineLine->setObjectName("FineLine"); rectBtnGroup->addButton(fineLine); btnList.append(fineLine); ToolButton* mediumLine = new ToolButton(); mediumLine->setObjectName("MediumLine"); rectBtnGroup->addButton(mediumLine); btnList.append(mediumLine); ToolButton* thickLine = new ToolButton(); thickLine->setObjectName("ThickLine"); rectBtnGroup->addButton(thickLine); btnList.append(thickLine); //separator line... QLabel* vSeparatorLine = new QLabel(); vSeparatorLine->setFixedSize(1, 16); vSeparatorLine->setObjectName("VerticalSeparatorLine"); //blur, mosaic... ToolButton* blurBtn = new ToolButton(); blurBtn->setObjectName("BlurBtn"); ToolButton* mosaicBtn = new ToolButton(); mosaicBtn->setObjectName("MosaicBtn"); connect(blurBtn, &ToolButton::clicked, this, [=]{ ConfigSettings::instance()->setValue("effect", "is_blur", blurBtn->isChecked()); if (blurBtn->isChecked()) { mosaicBtn->setChecked(false); ConfigSettings::instance()->setValue("effect", "is_mosaic", false); } }); connect(mosaicBtn, &ToolButton::clicked, this, [=]{ ConfigSettings::instance()->setValue("effect", "is_mosaic", mosaicBtn->isChecked()); if (mosaicBtn->isChecked()) { blurBtn->setChecked(false); ConfigSettings::instance()->setValue("effect", "is_blur", false); } }); int lineWidthIndex = ConfigSettings::instance()->value("rectangle", "linewidth_index").toInt(); btnList[lineWidthIndex]->setChecked(true); QHBoxLayout* rectLayout = new QHBoxLayout(); rectLayout->setMargin(0); rectLayout->setSpacing(0); rectLayout->addSpacing(1); for (int i = 0; i < btnList.length(); i++) { rectLayout->addWidget(btnList[i]); rectLayout->addSpacing(BUTTON_SPACING); connect(btnList[i], &ToolButton::clicked, this, [=]{ ConfigSettings::instance()->setValue(m_currentType, "linewidth_index", i); }); } rectLayout->addSpacing(16); rectLayout->addWidget(vSeparatorLine); rectLayout->addSpacing(16); rectLayout->addWidget(blurBtn); rectLayout->addSpacing(BUTTON_SPACING); rectLayout->addWidget(mosaicBtn); rectLayout->addStretch(); m_rectLabel->setLayout(rectLayout); addWidget(m_rectLabel); connect(this, &SubToolBar::shapeChanged, this, [=]{ int lineIndex = ConfigSettings::instance()->value(m_currentType, "linewidth_index").toInt(); btnList[lineIndex]->setChecked(true); }); }
void SubToolBar::initSaveLabel() { //save to... QList<ToolButton*> toolBtnList; ToolButton* saveDesktopBtn = new ToolButton(); saveDesktopBtn->setFixedSize(SAVEBTN_SIZE); saveDesktopBtn->setObjectName("SaveToDesktop"); saveDesktopBtn->setTips(tr("Save to desktop")); toolBtnList.append(saveDesktopBtn); ToolButton* savePicBtn = new ToolButton(); savePicBtn->setFixedSize(SAVEBTN_SIZE); savePicBtn->setObjectName("SaveToPictureDir"); savePicBtn->setTips(tr("Autosave")); toolBtnList.append(savePicBtn); ToolButton* saveSpecificDirBtn = new ToolButton(); saveSpecificDirBtn->setFixedSize(SAVEBTN_SIZE); saveSpecificDirBtn->setObjectName("SaveToSpecificDir"); saveSpecificDirBtn->setTips(tr("Save to specified folder")); toolBtnList.append(saveSpecificDirBtn); ToolButton* saveClipboardBtn = new ToolButton(); saveClipboardBtn->setFixedSize(SAVEBTN_SIZE); saveClipboardBtn->setObjectName("SaveToClipboard"); saveClipboardBtn->setTips(tr("Copy to clipboard")); toolBtnList.append(saveClipboardBtn); ToolButton* saveAutoClipboardBtn = new ToolButton(); saveAutoClipboardBtn->setObjectName("SaveToAutoClipboard"); saveAutoClipboardBtn->setTips(tr("Autosave and copy to clipboard")); toolBtnList.append(saveAutoClipboardBtn); QLabel* lowQualityText = new QLabel(); lowQualityText->setObjectName("LowQualityLabel"); lowQualityText->setText(tr("Low")); QSlider* saveQualitySlider = new QSlider(Qt::Horizontal); saveQualitySlider->setFixedWidth(58); saveQualitySlider->setMinimum(50); saveQualitySlider->setMaximum(100); saveQualitySlider->setPageStep(1); saveQualitySlider->setSliderPosition(100); setSaveQualityIndex(saveQualitySlider->value()); connect(saveQualitySlider, &QSlider::valueChanged, this, &SubToolBar::setSaveQualityIndex); QLabel* highQualityText = new QLabel(); highQualityText->setObjectName("HighQualityLabel"); highQualityText->setText(tr("High")); m_saveLabel = new QLabel(this); QHBoxLayout* saveLayout = new QHBoxLayout(); saveLayout->setMargin(0); saveLayout->setSpacing(0); saveLayout->addSpacing(1); foreach (ToolButton* btn, toolBtnList) { saveLayout->addWidget(btn); // saveLayout->addSpacing(1); connect(btn, &ToolButton::clicked, this, [=]{ qDebug() << "saveButtonList:" << toolBtnList.indexOf(btn); setSaveOption(toolBtnList.indexOf(btn)); }); connect(btn, &ToolButton::onEnter, this, [=]{ emit showSaveTip(btn->getTips()); }); connect(btn, &ToolButton::onExist, this, [=]{ emit hideSaveTip(); }); }
void SubToolBar::initArrowLabel() { m_arrowLabel = new QLabel(this); //arrow QButtonGroup* arrowBtnGroup = new QButtonGroup(); arrowBtnGroup->setExclusive(true); QList<ToolButton*> arrowBtnList; ToolButton* arrowFineLine = new ToolButton(); arrowFineLine->setObjectName("ArrowFine"); arrowBtnGroup->addButton(arrowFineLine); arrowBtnList.append(arrowFineLine); ToolButton* arrowMediumLine = new ToolButton(); arrowMediumLine->setObjectName("ArrowMedium"); arrowBtnGroup->addButton(arrowMediumLine); arrowBtnList.append(arrowMediumLine); ToolButton* arrowThickLine = new ToolButton(); arrowThickLine->setObjectName("ArrowThick"); arrowBtnGroup->addButton(arrowThickLine); arrowBtnList.append(arrowThickLine); //line QButtonGroup* lineBtnGroup = new QButtonGroup(); lineBtnGroup->setExclusive(true); //rectangle, oval... ToolButton* fineLine = new ToolButton(); fineLine->setObjectName("ArrowFineLine"); lineBtnGroup->addButton(fineLine); arrowBtnList.append(fineLine); ToolButton* mediumLine = new ToolButton(); mediumLine->setObjectName("ArrowMediumLine"); lineBtnGroup->addButton(mediumLine); arrowBtnList.append(mediumLine); ToolButton* thickLine = new ToolButton(); thickLine->setObjectName("ArrowThickLine"); lineBtnGroup->addButton(thickLine); arrowBtnList.append(thickLine); //separator line... QLabel* vSeparatorLine = new QLabel(); vSeparatorLine->setFixedSize(1, 16); vSeparatorLine->setObjectName("VerticalSeparatorLine"); QButtonGroup* styleBtnGroup = new QButtonGroup; styleBtnGroup->setExclusive(true); ToolButton* lineBtn = new ToolButton(); lineBtn->setObjectName("LineBtn"); styleBtnGroup->addButton(lineBtn, 0); ToolButton* arrowBtn = new ToolButton(); arrowBtn->setObjectName("ArrowBtn"); arrowBtn->setChecked(true); styleBtnGroup->addButton(arrowBtn, 1); if (ConfigSettings::instance()->value("arrow", "is_straight").toBool()) { lineBtn->setChecked(true); } else { arrowBtn->setChecked(true); } int arrowWidthIndex = ConfigSettings::instance()->value("arrow", "arrow_linewidth_index").toInt(); int sLineWidthIndex = ConfigSettings::instance()->value("arrow", "straightline_linewidth").toInt(); arrowBtnList[arrowWidthIndex]->setChecked(true); arrowBtnList[sLineWidthIndex+3]->setChecked(true); QHBoxLayout* arrowLayout = new QHBoxLayout(); arrowLayout->setMargin(0); arrowLayout->setSpacing(BUTTON_SPACING); arrowLayout->addSpacing(1); for (int j = 0; j < arrowBtnList.length(); j++) { arrowLayout->addWidget(arrowBtnList[j]); // arrowLayout->addSpacing(BUTTON_SPACING); connect(arrowBtnList[j], &ToolButton::clicked, this, [=]{ if (j < 3) { ConfigSettings::instance()->setValue("arrow", "arrow_linewidth_index", j); } else { ConfigSettings::instance()->setValue("arrow", "straightline_linewidth_index", j - 3); } }); } arrowLayout->addSpacing(16); arrowLayout->addWidget(vSeparatorLine); arrowLayout->addSpacing(16); arrowLayout->addWidget(lineBtn); arrowLayout->addWidget(arrowBtn); arrowLayout->addStretch(); m_arrowLabel->setLayout(arrowLayout); addWidget(m_arrowLabel); fineLine->hide(); mediumLine->hide(); thickLine->hide(); connect(arrowBtn, &ToolButton::toggled, this, [=](bool checked){ if (checked) { arrowFineLine->show(); arrowMediumLine->show(); arrowThickLine->show(); fineLine->hide(); mediumLine->hide(); thickLine->hide(); } else { arrowFineLine->hide(); arrowMediumLine->hide(); arrowThickLine->hide(); fineLine->show(); mediumLine->show(); thickLine->show(); } ConfigSettings::instance()->setValue("arrow", "is_straight", !checked); }); connect(this, &SubToolBar::shapeChanged, this, [=]{ if (ConfigSettings::instance()->value("arrow", "is_straight").toBool()) { arrowFineLine->hide(); arrowMediumLine->hide(); arrowThickLine->hide(); fineLine->show(); mediumLine->show(); thickLine->show(); } else { arrowFineLine->show(); arrowMediumLine->show(); arrowThickLine->show(); fineLine->hide(); mediumLine->hide(); thickLine->hide(); } int arrowLineWidth = ConfigSettings::instance()->value("arrow", "arrow_linewidth_index").toInt(); int sLineWidth = ConfigSettings::instance()->value("arrow", "straightline_linewidth_index").toInt(); arrowBtnList[arrowLineWidth]->setChecked(true); arrowBtnList[sLineWidth+3]->setChecked(true); }); }
NavigationBar::NavigationBar(BrowserWindow* window) : QWidget(window) , m_window(window) { setObjectName(QSL("navigationbar")); m_layout = new QHBoxLayout(this); m_layout->setMargin(style()->pixelMetric(QStyle::PM_ToolBarItemMargin, 0, this) + style()->pixelMetric(QStyle::PM_ToolBarFrameWidth, 0, this)); m_layout->setSpacing(style()->pixelMetric(QStyle::PM_ToolBarItemSpacing, 0, this)); setLayout(m_layout); m_buttonBack = new ToolButton(this); m_buttonBack->setObjectName("navigation-button-back"); m_buttonBack->setToolTip(tr("Back")); m_buttonBack->setToolButtonStyle(Qt::ToolButtonIconOnly); m_buttonBack->setToolbarButtonLook(true); m_buttonBack->setShowMenuOnRightClick(true); m_buttonBack->setAutoRaise(true); m_buttonBack->setEnabled(false); m_buttonBack->setFocusPolicy(Qt::NoFocus); m_buttonForward = new ToolButton(this); m_buttonForward->setObjectName("navigation-button-next"); m_buttonForward->setToolTip(tr("Forward")); m_buttonForward->setToolButtonStyle(Qt::ToolButtonIconOnly); m_buttonForward->setToolbarButtonLook(true); m_buttonForward->setShowMenuOnRightClick(true); m_buttonForward->setAutoRaise(true); m_buttonForward->setEnabled(false); m_buttonForward->setFocusPolicy(Qt::NoFocus); QHBoxLayout* backNextLayout = new QHBoxLayout(); backNextLayout->setContentsMargins(0, 0, 0, 0); backNextLayout->setSpacing(0); backNextLayout->addWidget(m_buttonBack); backNextLayout->addWidget(m_buttonForward); QWidget *backNextWidget = new QWidget(this); backNextWidget->setLayout(backNextLayout); m_reloadStop = new ReloadStopButton(this); ToolButton *buttonHome = new ToolButton(this); buttonHome->setObjectName("navigation-button-home"); buttonHome->setToolTip(tr("Home")); buttonHome->setToolButtonStyle(Qt::ToolButtonIconOnly); buttonHome->setToolbarButtonLook(true); buttonHome->setAutoRaise(true); buttonHome->setFocusPolicy(Qt::NoFocus); ToolButton *buttonAddTab = new ToolButton(this); buttonAddTab->setObjectName("navigation-button-addtab"); buttonAddTab->setToolTip(tr("New Tab")); buttonAddTab->setToolButtonStyle(Qt::ToolButtonIconOnly); buttonAddTab->setToolbarButtonLook(true); buttonAddTab->setAutoRaise(true); buttonAddTab->setFocusPolicy(Qt::NoFocus); m_menuBack = new Menu(this); m_menuBack->setCloseOnMiddleClick(true); m_buttonBack->setMenu(m_menuBack); connect(m_buttonBack, SIGNAL(aboutToShowMenu()), this, SLOT(aboutToShowHistoryBackMenu())); m_menuForward = new Menu(this); m_menuForward->setCloseOnMiddleClick(true); m_buttonForward->setMenu(m_menuForward); connect(m_buttonForward, SIGNAL(aboutToShowMenu()), this, SLOT(aboutToShowHistoryNextMenu())); ToolButton *buttonTools = new ToolButton(this); buttonTools->setObjectName("navigation-button-tools"); buttonTools->setPopupMode(QToolButton::InstantPopup); buttonTools->setToolbarButtonLook(true); buttonTools->setToolTip(tr("Tools")); buttonTools->setAutoRaise(true); buttonTools->setFocusPolicy(Qt::NoFocus); buttonTools->setShowMenuInside(true); m_menuTools = new Menu(this); buttonTools->setMenu(m_menuTools); connect(buttonTools, &ToolButton::aboutToShowMenu, this, &NavigationBar::aboutToShowToolsMenu); m_supMenu = new ToolButton(this); m_supMenu->setObjectName("navigation-button-supermenu"); m_supMenu->setPopupMode(QToolButton::InstantPopup); m_supMenu->setToolbarButtonLook(true); m_supMenu->setToolTip(tr("Main Menu")); m_supMenu->setAutoRaise(true); m_supMenu->setFocusPolicy(Qt::NoFocus); m_supMenu->setMenu(m_window->superMenu()); m_supMenu->setShowMenuInside(true); m_searchLine = new WebSearchBar(m_window); m_navigationSplitter = new QSplitter(this); m_navigationSplitter->addWidget(m_window->tabWidget()->locationBars()); m_navigationSplitter->addWidget(m_searchLine); m_navigationSplitter->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum); m_navigationSplitter->setCollapsible(0, false); m_exitFullscreen = new ToolButton(this); m_exitFullscreen->setObjectName("navigation-button-exitfullscreen"); m_exitFullscreen->setToolTip(tr("Exit Fullscreen")); m_exitFullscreen->setToolButtonStyle(Qt::ToolButtonIconOnly); m_exitFullscreen->setToolbarButtonLook(true); m_exitFullscreen->setFocusPolicy(Qt::NoFocus); m_exitFullscreen->setAutoRaise(true); m_exitFullscreen->setVisible(false); setContextMenuPolicy(Qt::CustomContextMenu); connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextMenuRequested(QPoint))); connect(m_buttonBack, SIGNAL(clicked()), this, SLOT(goBack())); connect(m_buttonBack, SIGNAL(middleMouseClicked()), this, SLOT(goBackInNewTab())); connect(m_buttonBack, SIGNAL(controlClicked()), this, SLOT(goBackInNewTab())); connect(m_buttonForward, SIGNAL(clicked()), this, SLOT(goForward())); connect(m_buttonForward, SIGNAL(middleMouseClicked()), this, SLOT(goForwardInNewTab())); connect(m_buttonForward, SIGNAL(controlClicked()), this, SLOT(goForwardInNewTab())); connect(m_reloadStop, SIGNAL(stopClicked()), this, SLOT(stop())); connect(m_reloadStop, SIGNAL(reloadClicked()), this, SLOT(reload())); connect(buttonHome, SIGNAL(clicked()), m_window, SLOT(goHome())); connect(buttonHome, SIGNAL(middleMouseClicked()), m_window, SLOT(goHomeInNewTab())); connect(buttonHome, SIGNAL(controlClicked()), m_window, SLOT(goHomeInNewTab())); connect(buttonAddTab, SIGNAL(clicked()), m_window, SLOT(addTab())); connect(buttonAddTab, SIGNAL(middleMouseClicked()), m_window->tabWidget(), SLOT(addTabFromClipboard())); connect(m_exitFullscreen, SIGNAL(clicked(bool)), m_window, SLOT(toggleFullScreen())); addWidget(backNextWidget, QSL("button-backforward"), tr("Back and Forward buttons")); addWidget(m_reloadStop, QSL("button-reloadstop"), tr("Reload button")); addWidget(buttonHome, QSL("button-home"), tr("Home button")); addWidget(buttonAddTab, QSL("button-addtab"), tr("Add tab button")); addWidget(m_navigationSplitter, QSL("locationbar"), tr("Address and Search bar")); addWidget(buttonTools, QSL("button-tools"), tr("Tools button")); addWidget(m_exitFullscreen, QSL("button-exitfullscreen"), tr("Exit Fullscreen button")); loadSettings(); }