You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
207 lines
6.2 KiB
207 lines
6.2 KiB
#include "UBBackgroundPalette.h"
|
|
|
|
#include "gui/UBMainWindow.h"
|
|
|
|
UBBackgroundPalette::UBBackgroundPalette(QList<QAction*> actions, QWidget * parent)
|
|
: UBActionPalette(parent)
|
|
{
|
|
init();
|
|
setActions(actions);
|
|
}
|
|
|
|
|
|
UBBackgroundPalette::UBBackgroundPalette(QWidget * parent)
|
|
: UBActionPalette(parent)
|
|
{
|
|
init();
|
|
}
|
|
|
|
|
|
|
|
void UBBackgroundPalette::init()
|
|
{
|
|
UBActionPalette::clearLayout();
|
|
delete layout();
|
|
|
|
|
|
m_customCloseProcessing = false;
|
|
|
|
mButtonSize = QSize(32, 32);
|
|
mIsClosable = false;
|
|
mAutoClose = false;
|
|
mButtonGroup = 0;
|
|
mToolButtonStyle = Qt::ToolButtonIconOnly;
|
|
mButtons.clear();
|
|
|
|
mVLayout = new QVBoxLayout(this);
|
|
mTopLayout = new QHBoxLayout();
|
|
mBottomLayout = new QHBoxLayout();
|
|
|
|
mVLayout->addLayout(mTopLayout);
|
|
mVLayout->addLayout(mBottomLayout);
|
|
|
|
mSlider = new QSlider(Qt::Horizontal);
|
|
|
|
mSlider->setMinimum(UBSettings::settings()->minCrossSize);
|
|
mSlider->setMaximum(UBSettings::settings()->maxCrossSize);
|
|
mSlider->setSingleStep(2);
|
|
mSlider->setTracking(true); // valueChanged() is emitted during movement and not just upon releasing the slider
|
|
|
|
mSliderLabel = new QLabel(tr("Grid size"));
|
|
mIntermediateLinesLabel = new QLabel(tr("Draw intermediate grid lines"));
|
|
|
|
mResetDefaultGridSizeButton = createPaletteButton(UBApplication::mainWindow->actionDefaultGridSize, this);
|
|
mResetDefaultGridSizeButton->setFixedSize(24,24);
|
|
mActions << UBApplication::mainWindow->actionDefaultGridSize;
|
|
|
|
connect(UBApplication::mainWindow->actionDefaultGridSize, SIGNAL(triggered()), this, SLOT(defaultBackgroundGridSize()));
|
|
|
|
bool enableIntermediateLines = UBSettings::settings()->enableIntermediateLines->get().toBool();
|
|
|
|
if (enableIntermediateLines)
|
|
{
|
|
mDrawIntermediateLinesCheckBox = createPaletteButton(UBApplication::mainWindow->actionDrawIntermediateGridLines, this);
|
|
mDrawIntermediateLinesCheckBox->setFixedSize(24,24);
|
|
mDrawIntermediateLinesCheckBox->setCheckable(true);
|
|
mActions << UBApplication::mainWindow->actionDrawIntermediateGridLines;
|
|
mButtons.removeLast(); // don't add to button group
|
|
|
|
connect(UBApplication::mainWindow->actionDrawIntermediateGridLines, SIGNAL(toggled(bool)), this, SLOT(toggleIntermediateLines(bool)));
|
|
}
|
|
|
|
mBottomLayout->addSpacing(16);
|
|
mBottomLayout->addWidget(mSliderLabel);
|
|
mBottomLayout->addWidget(mSlider);
|
|
mBottomLayout->addWidget(mResetDefaultGridSizeButton);
|
|
mBottomLayout->addSpacing(16);
|
|
|
|
if (enableIntermediateLines)
|
|
{
|
|
mBottomLayout->addWidget(mIntermediateLinesLabel);
|
|
mBottomLayout->addWidget(mDrawIntermediateLinesCheckBox);
|
|
mBottomLayout->addSpacing(16);
|
|
}
|
|
|
|
updateLayout();
|
|
}
|
|
|
|
void UBBackgroundPalette::addAction(QAction* action)
|
|
{
|
|
UBActionPaletteButton* button = createPaletteButton(action, this);
|
|
|
|
mTopLayout->addWidget(button);
|
|
mActions << action;
|
|
}
|
|
|
|
void UBBackgroundPalette::setActions(QList<QAction*> actions)
|
|
{
|
|
mMapActionToButton.clear();
|
|
|
|
foreach(QAction* action, actions)
|
|
{
|
|
addAction(action);
|
|
}
|
|
|
|
actionChanged();
|
|
}
|
|
|
|
void UBBackgroundPalette::updateLayout()
|
|
{
|
|
if (mToolButtonStyle == Qt::ToolButtonIconOnly) {
|
|
mVLayout->setContentsMargins (sLayoutContentMargin / 2 + border(), sLayoutContentMargin / 2 + border()
|
|
, sLayoutContentMargin / 2 + border(), sLayoutContentMargin / 2 + border());
|
|
}
|
|
else
|
|
{
|
|
mVLayout->setContentsMargins (sLayoutContentMargin + border(), sLayoutContentMargin + border()
|
|
, sLayoutContentMargin + border(), sLayoutContentMargin + border());
|
|
|
|
}
|
|
update();
|
|
}
|
|
|
|
void UBBackgroundPalette::clearLayout()
|
|
{
|
|
while(!mTopLayout->isEmpty()) {
|
|
QLayoutItem* pItem = mTopLayout->itemAt(0);
|
|
QWidget* pW = pItem->widget();
|
|
mTopLayout->removeItem(pItem);
|
|
delete pItem;
|
|
mTopLayout->removeWidget(pW);
|
|
delete pW;
|
|
}
|
|
|
|
delete mTopLayout;
|
|
|
|
while(!mBottomLayout->isEmpty()) {
|
|
QLayoutItem* pItem = mBottomLayout->itemAt(0);
|
|
QWidget* pW = pItem->widget();
|
|
mBottomLayout->removeItem(pItem);
|
|
delete pItem;
|
|
mBottomLayout->removeWidget(pW);
|
|
delete pW;
|
|
}
|
|
|
|
delete mBottomLayout;
|
|
|
|
delete mVLayout;
|
|
|
|
mActions.clear();
|
|
mButtons.clear();
|
|
}
|
|
|
|
void UBBackgroundPalette::showEvent(QShowEvent* event)
|
|
{
|
|
backgroundChanged();
|
|
|
|
mSlider->setValue(UBApplication::boardController->activeScene()->backgroundGridSize());
|
|
connect(mSlider, SIGNAL(valueChanged(int)),
|
|
this, SLOT(sliderValueChanged(int)));
|
|
|
|
if (UBSettings::settings()->enableIntermediateLines->get().toBool())
|
|
{
|
|
mDrawIntermediateLinesCheckBox->setChecked(UBApplication::boardController->activeScene()->intermediateLines());
|
|
}
|
|
|
|
QWidget::showEvent(event);
|
|
}
|
|
|
|
void UBBackgroundPalette::sliderValueChanged(int value)
|
|
{
|
|
UBApplication::boardController->activeScene()->setBackgroundGridSize(value);
|
|
UBSettings::settings()->crossSize = value; // since this function is called (indirectly, by refresh) when we switch scenes, the settings will always have the current scene's cross size.
|
|
}
|
|
|
|
void UBBackgroundPalette::defaultBackgroundGridSize()
|
|
{
|
|
mSlider->setValue(UBSettings::settings()->defaultCrossSize);
|
|
sliderValueChanged(UBSettings::settings()->defaultCrossSize);
|
|
}
|
|
|
|
void UBBackgroundPalette::toggleIntermediateLines(bool checked)
|
|
{
|
|
UBApplication::boardController->activeScene()->setIntermediateLines(checked);
|
|
UBSettings::settings()->intermediateLines = checked; // since this function is called (indirectly, by refresh) when we switch scenes, the settings will always have the current scene's value.
|
|
}
|
|
|
|
void UBBackgroundPalette::backgroundChanged()
|
|
{
|
|
bool dark = UBApplication::boardController->activeScene()->isDarkBackground();
|
|
|
|
if (dark)
|
|
{
|
|
mSliderLabel->setStyleSheet("QLabel { color : white; }");
|
|
mIntermediateLinesLabel->setStyleSheet("QLabel { color : white; }");
|
|
}
|
|
else
|
|
{
|
|
mSliderLabel->setStyleSheet("QLabel { color : black; }");
|
|
mIntermediateLinesLabel->setStyleSheet("QLabel { color : black; }");
|
|
}
|
|
}
|
|
|
|
void UBBackgroundPalette::refresh()
|
|
{
|
|
backgroundChanged();
|
|
mSlider->setValue(UBApplication::boardController->activeScene()->backgroundGridSize());
|
|
}
|
|
|