#include <QMouseEvent>
#include "ColorDialog.h"
#include "ui_ColorDialog.h"

class ColorDialog::ColorSetting
{
public:
	Ui::ColorDialog ui;
	int m_iHue;
	int m_iSaturation;
	int m_iBrightness;
	bool m_bPressed;
	QPoint m_ptPress;

public:
	ColorSetting()
		: m_iHue(0)
		, m_iSaturation(0)
		, m_iBrightness(0)
		, m_bPressed(false)
	{
	}
	~ColorSetting()
	{

	}

private:

};

ColorDialog::ColorDialog(QColor cr,bool bAlpha,QWidget *parent)
	: QWidget(parent)
	, m_pSetting(new ColorSetting)
	, m_bNotEdit(false)
{
	m_pSetting->ui.setupUi(this);
    m_pSetting->ui.basicColorWgt->initColorItems(bAlpha);
    m_pSetting->ui.hLabel->setVisible(false);
    m_pSetting->ui.hSpinBox->setVisible(false);
    m_pSetting->ui.sLabel->setVisible(false);
    m_pSetting->ui.sSpinBox->setVisible(false);
    m_pSetting->ui.vLabel->setVisible(false);
    m_pSetting->ui.vSpinBox->setVisible(false);
    setAttribute(Qt::WA_DeleteOnClose);

	//标题
	m_pTitleLbl = new QLabel(this);
    m_pTitleLbl->setText(tr("Select color"));
    m_pTitleLbl->setStyleSheet("background-color:rgba(206,206,206,255);color:rgba(0,0,0,255);");
    //m_pTitleLbl->setFixedSize(190, 34);
//    m_pTitleLbl->setStyleSheet("background-color:rgba(216,216,0,255);");
//    m_pTitleLbl->setStyleSheet("color:rgba(0,0,0,255);");
    m_pSetting->ui.topWgt->setStyleSheet("background-color:rgba(206,206,206,255);");
    //关闭按钮
    m_pCloseBtn = new QPushButton(this);
    m_pCloseBtn->setFixedSize(22, 34);
    m_pCloseBtn->setObjectName("m_pCloseBtn");
    m_pCloseBtn->setVisible(false);

    m_buttonRole = Yes;
    setWindowFlags(Qt::FramelessWindowHint | Qt::Window);
    setWindowModality(Qt::WindowModal);
    //setAttribute(Qt::WA_TranslucentBackground);
	this->installEventFilter(this);

	QRegExp rx("(\\d?[a-f]?){0,6}");
	m_pSetting->ui.colorEdit->setValidator(new QRegExpValidator(rx, this));
    m_pSetting->ui.colorEdit->setText("00000000");

	this->setFocusPolicy(Qt::ClickFocus);

	initSignalAndSlotConn();


    setStyleSheet("QSpinBox::arrow{background-color:#8d8d8d;}");

    m_pSetting->ui.okBtn->setProperty("ssType", "progManageTool");
    m_pSetting->ui.okBtn->setStyleSheet("QPushButton{background:rgba(28,154,210,255);}");
    m_pSetting->ui.cancelBtn->setProperty("ssType", "progManageTool");
    m_pSetting->ui.cancelBtn->setStyleSheet("QPushButton{background:rgba(28,154,210,255);}");
    m_pSetting->ui.addCustomColorBtn->setProperty("ssType", "progManageTool");
    m_pSetting->ui.addCustomColorBtn->setStyleSheet("QPushButton{background:rgba(28,154,210,255);}");

    if(bAlpha==false)
    {
        m_pSetting->ui.aSpinBox->setVisible(false);
        m_pSetting->ui.label_2->setVisible(false);
        m_pSetting->ui.line->setVisible(false);
      //  m_pSetting->ui.line_2->setVisible(false);
        cr.setAlpha(255);
    }
    m_pSetting->ui.previewWgt->setCurColor(cr);
    colorItemSelcSlot(cr);
}

ColorDialog::~ColorDialog()
{
	delete m_pSetting;
}

ColorDialog::ButtonRole ColorDialog::showDialog()
{
	show();
	QEventLoop evtLoop;
	m_pEvtLoop = &evtLoop;
	evtLoop.exec();

	m_pEvtLoop = NULL;
	hide();
	return m_buttonRole;
}

void ColorDialog::setCurColor(const QColor &c)
{
	colorItemSelcSlot(c);
}

QColor ColorDialog::getColor()
{
	QColor color;
	color.setHsv(m_pSetting->m_iHue, m_pSetting->m_iSaturation, m_pSetting->m_iBrightness);
	return color;
}

QRgb ColorDialog::getRgb()
{
	QColor color;
	color.setHsv(m_pSetting->m_iHue, m_pSetting->m_iSaturation, m_pSetting->m_iBrightness);
	return color.rgb();
}
QColor ColorDialog::getRgba()
{

    return m_pSetting->ui.previewWgt->getNewColor();
}
bool ColorDialog::eventFilter(QObject *obj, QEvent *ev)
{
	switch (ev->type())
	{
	case QEvent::MouseButtonPress:
	{
		QMouseEvent *e = dynamic_cast<QMouseEvent *>(ev);
		if (e->pos().y() > 29)
		{
			return false;
		}
		if (e->buttons() & Qt::LeftButton)
		{
			m_pSetting->m_bPressed = true;
			m_pSetting->m_ptPress = e->globalPos() - this->frameGeometry().topLeft();
		}
	}
		break;
	case QEvent::MouseButtonRelease:
	{
		m_pSetting->m_bPressed = false;
	}
		break;
	case QEvent::MouseMove:
	{
		QMouseEvent *e = dynamic_cast<QMouseEvent *>(ev);
		if (m_pSetting->m_bPressed)
		{
			move(this->mapToGlobal(e->pos() - m_pSetting->m_ptPress));
		}
	}
		break;
	case QEvent::Resize:
	{
		m_pTitleLbl->move(8, 0);
		m_pCloseBtn->move(width() - 24, -8);
	}
		break;
	default:
		break;
	}
    return QWidget::eventFilter(obj, ev);
}

void ColorDialog::show()
{
    QWidget::show();
}

void ColorDialog::initSignalAndSlotConn()
{
    connect(m_pSetting->ui.hColorWgt, SIGNAL(hueChangedSignal(int)), m_pSetting->ui.svColorWgt, SLOT(hueChangedSlot(int)));
    connect(m_pSetting->ui.svColorWgt, SIGNAL(svChangedSignal(int, int, int)), m_pSetting->ui.previewWgt, SLOT(svChangedSlot(int, int, int)));
    //选中色预览窗
    connect(m_pSetting->ui.previewWgt, SIGNAL(svChangedSignal(int, int, int)), this, SLOT(updateEditData(int, int, int)));
	connect(m_pSetting->ui.basicColorWgt, SIGNAL(colorItemSelcSignal(const QColor &)), this, SLOT(colorItemSelcSlot(const QColor &)));
	connect(m_pSetting->ui.customColorWgt, SIGNAL(colorItemSelcSignal(const QColor &)), this, SLOT(colorItemSelcSlot(const QColor &)));
	connect(m_pSetting->ui.colorEdit, SIGNAL(textEdited(const QString &)), this, SLOT(editChangedSlot(const QString &)));
	connect(m_pSetting->ui.colorEdit, SIGNAL(editingFinished()), this, SLOT(editFinishedSlot()));

	connect(m_pSetting->ui.addCustomColorBtn, SIGNAL(clicked()), this, SLOT(addCustomColorSlot()));
	connect(m_pSetting->ui.okBtn, SIGNAL(clicked()), this, SLOT(okBtnClickedSlot()));
	connect(m_pSetting->ui.cancelBtn, SIGNAL(clicked()), this, SLOT(cancelBtnClickedSlot()));
	connect(m_pCloseBtn, SIGNAL(clicked()), this, SLOT(cancelBtnClickedSlot()));

//	connect(m_pSetting->ui.hSpinBox, SIGNAL(valueChanged(int)), this, SLOT(hValueChangedSlot(int)));
//	connect(m_pSetting->ui.sSpinBox, SIGNAL(valueChanged(int)), this, SLOT(sValueChangedSlot(int)));
//	connect(m_pSetting->ui.vSpinBox, SIGNAL(valueChanged(int)), this, SLOT(vValueChangedSlot(int)));
	connect(m_pSetting->ui.rSpinBox, SIGNAL(valueChanged(int)), this, SLOT(rValueChangedSlot(int)));
	connect(m_pSetting->ui.gSpinBox, SIGNAL(valueChanged(int)), this, SLOT(gValueChangedSlot(int)));
    connect(m_pSetting->ui.bSpinBox, SIGNAL(valueChanged(int)), this, SLOT(bValueChangedSlot(int)));
    connect(m_pSetting->ui.aSpinBox, SIGNAL(valueChanged(int)), this, SLOT(aValueChangedSlot(int)));
}

void ColorDialog::updateRGBColor(const QColor &color)
{
	m_pSetting->ui.previewWgt->setNewColor(color);
	m_pSetting->ui.rSpinBox->setValue(color.red());
	m_pSetting->ui.gSpinBox->setValue(color.green());
    m_pSetting->ui.bSpinBox->setValue(color.blue());
    m_pSetting->ui.aSpinBox->setValue(color.alpha());

    QString strR = QString::number(color.red(), 16);
    QString strG = QString::number(color.green(), 16);
    QString strB = QString::number(color.blue(), 16);
    QString strA = QString::number(color.alpha(), 16);
    if(strR.length()==1)
        strR.prepend("0");
    if(strG.length()==1)
        strG.prepend("0");
    if(strB.length()==1)
        strB.prepend("0");
    if(strA.length()==1)
        strA.prepend("0");

    QString strRgb = strR+strG+strB+strA;
    m_pSetting->ui.colorEdit->setText(strRgb);

}


void ColorDialog::colorItemSelcSlot(const QColor &c)
{
    if(c==Qt::transparent)
    {
        m_bNotEdit = true;

        m_pSetting->ui.hColorWgt->setHue(c.hue());
        m_pSetting->ui.svColorWgt->setColor(c);
        m_pSetting->ui.aSpinBox->setValue(0);
        m_bNotEdit = false;
    }
    else {
        m_bNotEdit = true;

        m_pSetting->ui.hColorWgt->setHue(c.hue());
        m_pSetting->ui.svColorWgt->setColor(c);
        m_pSetting->ui.aSpinBox->setValue(c.alpha());
        m_bNotEdit = false;
    }

}

void ColorDialog::addCustomColorSlot()
{
    QColor color(m_pSetting->ui.rSpinBox->value(),m_pSetting->ui.gSpinBox->value(),m_pSetting->ui.bSpinBox->value(),m_pSetting->ui.aSpinBox->value());
//    color.setHsv(m_pSetting->m_iHue, m_pSetting->m_iSaturation, m_pSetting->m_iBrightness);
//    color.setH(m_pSetting->m_iHue, m_pSetting->m_iSaturation, m_pSetting->m_iBrightness);
 //   color.setRgba(m_pSetting->ui.aSpinBox->value(),m_pSetting->ui.aSpinBox->value(),m_pSetting->ui.aSpinBox->value(),m_pSetting->ui.aSpinBox->value()));
    m_pSetting->ui.customColorWgt->setGivenColor(m_pSetting->ui.previewWgt->getNewColor());
}

void ColorDialog::okBtnClickedSlot()
{
	QColor color;
	color.setHsv(m_pSetting->m_iHue, m_pSetting->m_iSaturation, m_pSetting->m_iBrightness);
	m_pSetting->ui.previewWgt->setCurColor(color);

	m_buttonRole = Yes;
	if (m_pEvtLoop != NULL)
	{
		m_pEvtLoop->exit();
	}
}

void ColorDialog::cancelBtnClickedSlot()
{
	m_buttonRole = No;
	if (m_pEvtLoop != NULL)
	{
		m_pEvtLoop->exit();
	}
}

void ColorDialog::editChangedSlot(const QString &strColor)
{
	m_bNotEdit = true;

    int r, g, b;
    int a=255;
	switch (strColor.length())
	{
	case 0:
	{
		r = g = b = 0;
	}
		break;
	case 1:
	case 2:
	{
		r = g = 0;
		bool ok;
		b = strColor.toInt(&ok, 16);
	}
		break;
	case 3:
	{
		QString strR = QString("%1%2").arg(strColor.left(1), strColor.left(1));
		QString strG = QString("%1%2").arg(strColor.mid(1, 1), strColor.mid(1, 1));
		QString strB = QString("%1%2").arg(strColor.right(1), strColor.right(1));
		bool ok;
		r = strR.toInt(&ok, 16);
		g = strG.toInt(&ok, 16);
		b = strB.toInt(&ok, 16);
	}
		break;
	case 4:
	{
		r = 0;
		QString strG = QString("%1").arg(strColor.left(2));
		QString strB = QString("%1").arg(strColor.right(2));
		bool ok;
		g = strG.toInt(&ok, 16);
		b = strB.toInt(&ok, 16);
	}
		break;
	case 5:
	{
		QString strR = QString("%1").arg(strColor.left(1));
		QString strG = QString("%1").arg(strColor.mid(1, 2));
		QString strB = QString("%1").arg(strColor.right(2));
		bool ok;
		r = strR.toInt(&ok, 16);
		g = strG.toInt(&ok, 16);
		b = strB.toInt(&ok, 16);
	}
		break;
	case 6:
	{
		QString strR = QString("%1").arg(strColor.left(2));
		QString strG = QString("%1").arg(strColor.mid(2, 2));
		QString strB = QString("%1").arg(strColor.right(2));
		bool ok;
		r = strR.toInt(&ok, 16);
		g = strG.toInt(&ok, 16);
		b = strB.toInt(&ok, 16);

	}
		break;
     case 8:
    {
        QString strR = QString("%1").arg(strColor.left(2));
        QString strG = QString("%1").arg(strColor.mid(2, 2));
        QString strB = QString("%1").arg(strColor.mid(2,2));
        QString strA = QString("%1").arg(strColor.right(2));
        bool ok;
        r = strR.toInt(&ok, 16);
        g = strG.toInt(&ok, 16);
        b = strB.toInt(&ok, 16);
        a = strA.toInt(&ok, 16);
    }
    break;
	default:
		break;
	}

	QColor color;
    color.setRgb(r, g, b , a);
	int h, s, v;
	h = m_pSetting->m_iHue = color.hue();
	s = m_pSetting->m_iSaturation = color.saturation();
	v = m_pSetting->m_iBrightness = color.value();
	m_pSetting->ui.hColorWgt->setHue(h);
	m_pSetting->ui.svColorWgt->setHsv(h, s, v);
	m_pSetting->ui.previewWgt->setNewColor(color);

	m_pSetting->ui.hSpinBox->setValue(h);
	m_pSetting->ui.sSpinBox->setValue(s);
	m_pSetting->ui.vSpinBox->setValue(v);
	m_pSetting->ui.rSpinBox->setValue(r);
	m_pSetting->ui.gSpinBox->setValue(g);
    m_pSetting->ui.bSpinBox->setValue(b);
    m_pSetting->ui.aSpinBox->setValue(a);

	m_bNotEdit = false;
}

void ColorDialog::editFinishedSlot()
{
	QString strColor = m_pSetting->ui.colorEdit->text();
	switch (strColor.length())
	{
	case 0:
	{
        m_pSetting->ui.colorEdit->setText("000000ff");
	}
		break;
	case 1:
	{
		m_pSetting->ui.colorEdit->setText(strColor.prepend("00000"));
	}
		break;
	case 2:
	{
		m_pSetting->ui.colorEdit->setText(strColor.prepend("0000"));
	}
		break;
	case 3:
	{
		QString strR = QString("%1%2").arg(strColor.left(1), strColor.left(1));
		QString strG = QString("%1%2").arg(strColor.mid(1, 1), strColor.mid(1, 1));
		QString strB = QString("%1%2").arg(strColor.right(1), strColor.right(1));
		m_pSetting->ui.colorEdit->setText(strR.append(strG).append(strB));
	}
		break;
	case 4:
	{
		QString strG = QString("%1").arg(strColor.left(2));
		QString strB = QString("%1").arg(strColor.right(2));
		m_pSetting->ui.colorEdit->setText(strG.append(strB).prepend("00"));
	}
		break;
	case 5:
	{
		QString strR = QString("%1").arg(strColor.left(1));
		QString strG = QString("%1").arg(strColor.mid(1, 2));
		QString strB = QString("%1").arg(strColor.right(2));
		m_pSetting->ui.colorEdit->setText(strR.append(strG).append(strB).prepend("0"));
	}
		break;
	case 6:
	{
		return;
	}
		break;
	default:
		break;
	}
}

void ColorDialog::hValueChangedSlot(int h)
{
	if (m_bNotEdit)
	{
		return;
	}
	m_bNotEdit = true;

	m_pSetting->m_iHue = h;
	m_pSetting->ui.hColorWgt->setHue(h);
	QColor color;
	color.setHsv(h, m_pSetting->m_iSaturation, m_pSetting->m_iBrightness);
	m_pSetting->ui.svColorWgt->setHue(h);
	updateRGBColor(color);

	m_bNotEdit = false;
}

void ColorDialog::sValueChangedSlot(int s)
{
	if (m_bNotEdit)
	{
		return;
	}
	m_bNotEdit = true;

	m_pSetting->m_iSaturation = s;
	QColor color;
	color.setHsv(m_pSetting->m_iHue, s, m_pSetting->m_iBrightness);
	m_pSetting->ui.svColorWgt->setSaturation(s);
	updateRGBColor(color);

	m_bNotEdit = false;
}

void ColorDialog::vValueChangedSlot(int v)
{
	if (m_bNotEdit)
	{
		return;
	}
	m_bNotEdit = true;

	m_pSetting->m_iBrightness = v;
	QColor color;
	color.setHsv(m_pSetting->m_iHue, m_pSetting->m_iSaturation, v);
	m_pSetting->ui.svColorWgt->setBrightness(v);
	updateRGBColor(color);

	m_bNotEdit = false;
}

void ColorDialog::rValueChangedSlot(int r)
{
	if (m_bNotEdit)
	{
		return;
	}
	m_bNotEdit = true;

	int iGreen = m_pSetting->ui.gSpinBox->value();
	int iBlue = m_pSetting->ui.bSpinBox->value();
    int ialpha = m_pSetting->ui.aSpinBox->value();
    QColor color;
    color.setRgb(r, iGreen, iBlue,ialpha);
	int h = m_pSetting->m_iHue = color.hue();
	int s = m_pSetting->m_iSaturation = color.saturation();
	int v = m_pSetting->m_iBrightness = color.value();

	m_pSetting->ui.hColorWgt->setHue(h);
	m_pSetting->ui.svColorWgt->setHsv(h, s, v);
	m_pSetting->ui.previewWgt->setNewColor(color);

	m_pSetting->ui.hSpinBox->setValue(h);
	m_pSetting->ui.sSpinBox->setValue(s);
	m_pSetting->ui.vSpinBox->setValue(v);


    QString strR = QString::number(r, 16);
    QString strG = QString::number(iGreen, 16);
    QString strB = QString::number(iBlue, 16);
    QString strA = QString::number(ialpha, 16);

    if(strR.length()==1)
        strR.prepend("0");
    if(strG.length()==1)
        strG.prepend("0");
    if(strB.length()==1)
        strB.prepend("0");
    if(strA.length()==1)
        strA.prepend("0");

    QString strRgb = strR+strG+strB+strA;
//            QString("%1%2%3%4").arg(QString("%1").arg(strR.size() == 1 ? strR.prepend("0") : strR),
//		QString("%1").arg(strG.size() == 1 ? strG.prepend("0") : strG),
//        QString("%1").arg(strB.size() == 1 ? strB.prepend("0") : strB),
//        QString("%1").arg(strA.size() == 1 ? strB.prepend("0") : strA)                                   );
	m_pSetting->ui.colorEdit->setText(strRgb);

	m_bNotEdit = false;
}

void ColorDialog::gValueChangedSlot(int g)
{
	if (m_bNotEdit)
	{
		return;
	}
	m_bNotEdit = true;

	int iRed = m_pSetting->ui.rSpinBox->value();
	int iBlue = m_pSetting->ui.bSpinBox->value();
    int ialpha = m_pSetting->ui.aSpinBox->value();
    QColor color;
    color.setRgb(iRed, g, iBlue,ialpha);
	int h = m_pSetting->m_iHue = color.hue();
	int s = m_pSetting->m_iSaturation = color.saturation();
	int v = m_pSetting->m_iBrightness = color.value();

	m_pSetting->ui.hColorWgt->setHue(h);
	m_pSetting->ui.svColorWgt->setHsv(h, s, v);
	m_pSetting->ui.previewWgt->setNewColor(color);

	m_pSetting->ui.hSpinBox->setValue(h);
	m_pSetting->ui.sSpinBox->setValue(s);
	m_pSetting->ui.vSpinBox->setValue(v);

    QString strR = QString::number(iRed, 16);
    QString strG = QString::number(g, 16);
    QString strB = QString::number(iBlue, 16);
    QString strA = QString::number(ialpha, 16);

    if(strR.length()==1)
        strR.prepend("0");
    if(strG.length()==1)
        strG.prepend("0");
    if(strB.length()==1)
        strB.prepend("0");
    if(strA.length()==1)
        strA.prepend("0");
    QString strRgb = strR+strG+strB+strA;
    m_pSetting->ui.colorEdit->setText(strRgb);

	m_bNotEdit = false;
}

void ColorDialog::bValueChangedSlot(int b)
{
	if (m_bNotEdit)
	{
		return;
	}
	m_bNotEdit = true;

	int iRed = m_pSetting->ui.rSpinBox->value();
    int iGreen = m_pSetting->ui.gSpinBox->value();
    int ialpha = m_pSetting->ui.aSpinBox->value();
    QColor color;
    color.setRgb(iRed, iGreen, b,ialpha);
	int h = m_pSetting->m_iHue = color.hue();
	int s = m_pSetting->m_iSaturation = color.saturation();
	int v = m_pSetting->m_iBrightness = color.value();

	m_pSetting->ui.hColorWgt->setHue(h);
	m_pSetting->ui.svColorWgt->setHsv(h, s, v);
	m_pSetting->ui.previewWgt->setNewColor(color);

	m_pSetting->ui.hSpinBox->setValue(h);
	m_pSetting->ui.sSpinBox->setValue(s);
	m_pSetting->ui.vSpinBox->setValue(v);

    QString strR = QString::number(iRed, 16);
    QString strG = QString::number(iGreen, 16);
    QString strB = QString::number(b, 16);
    QString strA = QString::number(ialpha, 16);

    if(strR.length()==1)
        strR.prepend("0");
    if(strG.length()==1)
        strG.prepend("0");
    if(strB.length()==1)
        strB.prepend("0");
    if(strA.length()==1)
        strA.prepend("0");
    QString strRgb = strR+strG+strB+strA;
    m_pSetting->ui.colorEdit->setText(strRgb);

	m_bNotEdit = false;
}
void ColorDialog::aValueChangedSlot(int a)
{
    int iRed = m_pSetting->ui.rSpinBox->value();
    int iGreen = m_pSetting->ui.gSpinBox->value();
    int iBlue = m_pSetting->ui.bSpinBox->value();
    QColor color;
    color.setRgb(iRed, iGreen, iBlue,a);
    m_pSetting->ui.previewWgt->setNewColor(color);
    QString strR = QString::number(iRed, 16);
    QString strG = QString::number(iGreen, 16);
    QString strB = QString::number(iBlue, 16);
    QString strA = QString::number(a, 16);

    if(strR.length()==1)
        strR.prepend("0");
    if(strG.length()==1)
        strG.prepend("0");
    if(strB.length()==1)
        strB.prepend("0");
    if(strA.length()==1)
        strA.prepend("0");
    QString strRgb = strR+strG+strB+strA;
    m_pSetting->ui.colorEdit->setText(strRgb);

    m_bNotEdit = false;

}

void ColorDialog::updateEditData(int h, int s, int v)
{
	m_bNotEdit = true;

	m_pSetting->m_iHue = h;
	m_pSetting->m_iSaturation = s;
	m_pSetting->m_iBrightness = v;
	QColor color;
	color.setHsv(h, s, v);
	m_pSetting->ui.hSpinBox->setValue(h);
	m_pSetting->ui.sSpinBox->setValue(s);
	m_pSetting->ui.vSpinBox->setValue(v);
	m_pSetting->ui.rSpinBox->setValue(color.red());
	m_pSetting->ui.gSpinBox->setValue(color.green());
	m_pSetting->ui.bSpinBox->setValue(color.blue());


    QString strR = QString::number(color.red(), 16);
    QString strG = QString::number(color.green(), 16);
    QString strB = QString::number(color.blue(), 16);
    QString strA = QString::number(m_pSetting->ui.aSpinBox->value(), 16);
    if(strR.length()==1)
        strR.prepend("0");
    if(strG.length()==1)
        strG.prepend("0");
    if(strB.length()==1)
        strB.prepend("0");
    if(strA.length()==1)
        strA.prepend("0");
    QString strRgb = strR+strG+strB+strA;
    m_pSetting->ui.colorEdit->setText(strRgb);

//    QString strRgb = QString("%1%2%3%4").arg(QString("%1").arg(strR.size() == 1 ? strR.prepend("0") : strR),
//        QString("%1").arg(strG.size() == 1 ? strG.prepend("0") : strG),
//        QString("%1").arg(strB.size() == 1 ? strB.prepend("0") : strB),
//        QString("%1").arg(strA.size() == 1 ? strB.prepend("0") : strA)                                   );
//    m_pSetting->ui.colorEdit->setText(strRgb);

	m_bNotEdit = false;
}
