User defined materials are now remembered and can also be deleted in preferences dialog

--HG--
branch : feature
This commit is contained in:
BojanKverh 2016-08-12 01:22:23 +02:00
parent b0532e6fb9
commit 86f24bf0e5
7 changed files with 109 additions and 4 deletions

View File

@ -43,6 +43,7 @@
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QDirIterator> #include <QDirIterator>
#include <QFormLayout> #include <QFormLayout>
#include <QPushButton>
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
ConfigurationPage::ConfigurationPage(QWidget *parent) ConfigurationPage::ConfigurationPage(QWidget *parent)
@ -77,7 +78,9 @@ ConfigurationPage::ConfigurationPage(QWidget *parent)
sendGroup(nullptr), sendGroup(nullptr),
description(nullptr), description(nullptr),
drawGroup(nullptr), drawGroup(nullptr),
toolBarGroup(nullptr) toolBarGroup(nullptr),
userMaterialsGroup(nullptr),
userMaterialClearButton(nullptr)
{ {
QGroupBox *saveGroup = SaveGroup(); QGroupBox *saveGroup = SaveGroup();
QGroupBox *langGroup = LangGroup(); QGroupBox *langGroup = LangGroup();
@ -85,6 +88,7 @@ ConfigurationPage::ConfigurationPage(QWidget *parent)
QGroupBox *sendGroup = SendGroup(); QGroupBox *sendGroup = SendGroup();
QGroupBox *drawGroup = DrawGroup(); QGroupBox *drawGroup = DrawGroup();
QGroupBox *toolBarGroup = ToolBarGroup(); QGroupBox *toolBarGroup = ToolBarGroup();
QGroupBox *userMatGroup = UserMaterialGroup();
QVBoxLayout *mainLayout = new QVBoxLayout; QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(saveGroup); mainLayout->addWidget(saveGroup);
@ -93,6 +97,7 @@ ConfigurationPage::ConfigurationPage(QWidget *parent)
mainLayout->addWidget(sendGroup); mainLayout->addWidget(sendGroup);
mainLayout->addWidget(drawGroup); mainLayout->addWidget(drawGroup);
mainLayout->addWidget(toolBarGroup); mainLayout->addWidget(toolBarGroup);
mainLayout->addWidget(userMatGroup);
mainLayout->addStretch(1); mainLayout->addStretch(1);
setLayout(mainLayout); setLayout(mainLayout);
} }
@ -161,6 +166,16 @@ void ConfigurationPage::LabelLangChanged()
labelLangChanged = true; labelLangChanged = true;
} }
//---------------------------------------------------------------------------------------------------------------------
void ConfigurationPage::ClearUserDefinedMaterials()
{
VSettings* pSet = qApp->ValentinaSettings();
pSet->ClearUserDefinedMaterial();
pSet->sync();
QString qsMsg = tr("All user defined materials have been deleted!");
QMessageBox::information(this, QApplication::applicationName(), qsMsg);
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
QGroupBox *ConfigurationPage::SaveGroup() QGroupBox *ConfigurationPage::SaveGroup()
{ {
@ -381,6 +396,21 @@ QGroupBox *ConfigurationPage::ToolBarGroup()
return toolBarGroup; return toolBarGroup;
} }
//---------------------------------------------------------------------------------------------------------------------
QGroupBox *ConfigurationPage::UserMaterialGroup()
{
userMaterialsGroup = new QGroupBox(tr("User defined materials"));
userMaterialClearButton = new QPushButton(tr("Delete all"));
connect(userMaterialClearButton, &QPushButton::clicked, this, &ConfigurationPage::ClearUserDefinedMaterials);
QHBoxLayout* pLayout = new QHBoxLayout;
pLayout->addWidget(userMaterialClearButton);
pLayout->addStretch(1);
userMaterialsGroup->setLayout(pLayout);
return userMaterialsGroup;
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
void ConfigurationPage::SystemChanged() void ConfigurationPage::SystemChanged()
{ {

View File

@ -38,6 +38,7 @@ class QSpinBox;
class QComboBox; class QComboBox;
class QGroupBox; class QGroupBox;
class QLabel; class QLabel;
class QPushButton;
class ConfigurationPage : public QWidget class ConfigurationPage : public QWidget
{ {
@ -50,6 +51,7 @@ public slots:
void SystemChanged(); void SystemChanged();
void UnitChanged(); void UnitChanged();
void LabelLangChanged(); void LabelLangChanged();
void ClearUserDefinedMaterials();
protected: protected:
virtual void changeEvent(QEvent* event) Q_DECL_OVERRIDE; virtual void changeEvent(QEvent* event) Q_DECL_OVERRIDE;
private: private:
@ -90,12 +92,16 @@ private:
QGroupBox *drawGroup; QGroupBox *drawGroup;
QGroupBox *toolBarGroup; QGroupBox *toolBarGroup;
QGroupBox *userMaterialsGroup;
QPushButton* userMaterialClearButton;
QGroupBox *SaveGroup() Q_REQUIRED_RESULT; QGroupBox *SaveGroup() Q_REQUIRED_RESULT;
QGroupBox *LangGroup() Q_REQUIRED_RESULT; QGroupBox *LangGroup() Q_REQUIRED_RESULT;
QGroupBox *PMSystemGroup() Q_REQUIRED_RESULT; QGroupBox *PMSystemGroup() Q_REQUIRED_RESULT;
QGroupBox *SendGroup() Q_REQUIRED_RESULT; QGroupBox *SendGroup() Q_REQUIRED_RESULT;
QGroupBox *DrawGroup() Q_REQUIRED_RESULT; QGroupBox *DrawGroup() Q_REQUIRED_RESULT;
QGroupBox *ToolBarGroup() Q_REQUIRED_RESULT; QGroupBox *ToolBarGroup() Q_REQUIRED_RESULT;
QGroupBox *UserMaterialGroup() Q_REQUIRED_RESULT;
void SetLabelComboBox(const QStringList &list); void SetLabelComboBox(const QStringList &list);
void RetranslateUi(); void RetranslateUi();

View File

@ -75,6 +75,7 @@ const QString VCommonSettings::SettingGeneralToolbarsState = QString
const QString VCommonSettings::SettingPreferenceDialogSize = QStringLiteral("preferenceDialogSize"); const QString VCommonSettings::SettingPreferenceDialogSize = QStringLiteral("preferenceDialogSize");
const QString VCommonSettings::SettingLatestSkippedVersion = QStringLiteral("lastestSkippedVersion"); const QString VCommonSettings::SettingLatestSkippedVersion = QStringLiteral("lastestSkippedVersion");
const QString VCommonSettings::SettingDateOfLastRemind = QStringLiteral("dateOfLastRemind"); const QString VCommonSettings::SettingDateOfLastRemind = QStringLiteral("dateOfLastRemind");
const QString VCommonSettings::SettingUserDefinedMaterials = QStringLiteral("configuration/userDefinedMaterials");
static const QString commonIniFilename = QStringLiteral("common"); static const QString commonIniFilename = QStringLiteral("common");
@ -469,3 +470,24 @@ void VCommonSettings::SetDateOfLastRemind(const QDate &date)
settings.setValue(SettingDateOfLastRemind, date); settings.setValue(SettingDateOfLastRemind, date);
settings.sync(); settings.sync();
} }
//---------------------------------------------------------------------------------------------------------------------
QStringList VCommonSettings::GetUserDefinedMaterials() const
{
return value(SettingUserDefinedMaterials).toStringList();
}
//---------------------------------------------------------------------------------------------------------------------
void VCommonSettings::AddUserDefinedMaterial(QString qsMaterial)
{
QStringList qsl = GetUserDefinedMaterials();
qsl << qsMaterial;
setValue(SettingUserDefinedMaterials, qsl);
}
//---------------------------------------------------------------------------------------------------------------------
void VCommonSettings::ClearUserDefinedMaterial()
{
QStringList qsl;
setValue(SettingUserDefinedMaterials, qsl);
}

View File

@ -118,6 +118,10 @@ public:
QDate GetDateOfLastRemind() const; QDate GetDateOfLastRemind() const;
void SetDateOfLastRemind(const QDate &date); void SetDateOfLastRemind(const QDate &date);
QStringList GetUserDefinedMaterials() const;
void AddUserDefinedMaterial(QString qsMaterial);
void ClearUserDefinedMaterial();
private: private:
Q_DISABLE_COPY(VCommonSettings) Q_DISABLE_COPY(VCommonSettings)
@ -146,6 +150,7 @@ private:
static const QString SettingPreferenceDialogSize; static const QString SettingPreferenceDialogSize;
static const QString SettingLatestSkippedVersion; static const QString SettingLatestSkippedVersion;
static const QString SettingDateOfLastRemind; static const QString SettingDateOfLastRemind;
static const QString SettingUserDefinedMaterials;
}; };
#endif // VCOMMONSETTINGS_H #endif // VCOMMONSETTINGS_H

View File

@ -602,3 +602,4 @@ void VSettings::SetMultiplier(quint8 value)
{ {
setValue(SettingMultiplier, value); setValue(SettingMultiplier, value);
} }

View File

@ -135,6 +135,13 @@ DialogDetail::DialogDetail(const VContainer *data, const quint32 &toolId, QWidge
{ {
ui.comboBoxMaterial->addItem(m_qslMaterials[i], i); ui.comboBoxMaterial->addItem(m_qslMaterials[i], i);
} }
QStringList qsl = qApp->Settings()->GetUserDefinedMaterials();
for (int i = 0; i < qsl.count(); ++i)
{
ui.comboBoxMaterial->addItem(qsl[i], int(MaterialType::mtUserDefined));
}
m_qslPlacements << tr("None") << tr("Cut on fold"); m_qslPlacements << tr("None") << tr("Cut on fold");
ui.comboBoxPlacement->addItems(m_qslPlacements); ui.comboBoxPlacement->addItems(m_qslPlacements);
@ -142,6 +149,7 @@ DialogDetail::DialogDetail(const VContainer *data, const quint32 &toolId, QWidge
connect(ui.pushButtonCancel, &QPushButton::clicked, this, &DialogDetail::Cancel); connect(ui.pushButtonCancel, &QPushButton::clicked, this, &DialogDetail::Cancel);
connect(ui.pushButtonRemove, &QPushButton::clicked, this, &DialogDetail::Remove); connect(ui.pushButtonRemove, &QPushButton::clicked, this, &DialogDetail::Remove);
connect(ui.listWidgetMCP, &QListWidget::itemClicked, this, &DialogDetail::SetEditMode); connect(ui.listWidgetMCP, &QListWidget::itemClicked, this, &DialogDetail::SetEditMode);
connect(ui.comboBoxMaterial, &QComboBox::currentTextChanged, this, &DialogDetail::MaterialChanged);
SetAddMode(); SetAddMode();
ui.tabWidget->setCurrentIndex(0); ui.tabWidget->setCurrentIndex(0);
@ -243,15 +251,32 @@ void DialogDetail::UpdateList()
void DialogDetail::AddUpdate() void DialogDetail::AddUpdate()
{ {
MaterialCutPlacement mcp; MaterialCutPlacement mcp;
QStringList qslUserMaterials = qApp->Settings()->GetUserDefinedMaterials();
mcp.m_qsMaterialUserDef = ui.comboBoxMaterial->currentText(); mcp.m_qsMaterialUserDef = ui.comboBoxMaterial->currentText();
int i = ui.comboBoxMaterial->currentData().toInt(); int i = ui.comboBoxMaterial->currentData().toInt();
if (mcp.m_qsMaterialUserDef == m_qslMaterials[i]) if (i < m_qslMaterials.count() && mcp.m_qsMaterialUserDef == m_qslMaterials[i])
{ {
mcp.m_eMaterial = MaterialType(i); mcp.m_eMaterial = MaterialType(i);
} }
else else
{ {
mcp.m_eMaterial = MaterialType::mtUserDefined; mcp.m_eMaterial = MaterialType::mtUserDefined;
// check if we have new user defined material
bool bFound = false;
for (int i = 0; i < qslUserMaterials.count() && bFound == false; ++i)
{
if (mcp.m_qsMaterialUserDef == qslUserMaterials[i])
{
bFound = true;
}
}
if (bFound == false)
{
qApp->Settings()->AddUserDefinedMaterial(mcp.m_qsMaterialUserDef);
qApp->Settings()->sync();
ui.comboBoxMaterial->addItem(mcp.m_qsMaterialUserDef, int(MaterialType::mtUserDefined));
}
} }
mcp.m_iCutNumber = ui.spinBoxCutNumber->value(); mcp.m_iCutNumber = ui.spinBoxCutNumber->value();
@ -315,6 +340,12 @@ void DialogDetail::NameDetailChanged()
CheckState(); CheckState();
} }
//---------------------------------------------------------------------------------------------------------------------
void DialogDetail::MaterialChanged()
{
ui.pushButtonAdd->setEnabled(ui.comboBoxMaterial->currentText().isEmpty() == false);
}
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
/** /**
* @brief NewItem add new object (point, arc, spline or spline path) to list * @brief NewItem add new object (point, arc, spline or spline path) to list
@ -789,11 +820,20 @@ void DialogDetail::SetEditMode()
MaterialCutPlacement mcp = m_conMCP.at(iR); MaterialCutPlacement mcp = m_conMCP.at(iR);
if (mcp.m_eMaterial == MaterialType::mtUserDefined) if (mcp.m_eMaterial == MaterialType::mtUserDefined)
{ {
ui.comboBoxMaterial->setCurrentText(mcp.m_qsMaterialUserDef); int iRow = qApp->Settings()->GetUserDefinedMaterials().indexOf(mcp.m_qsMaterialUserDef);
if (iRow >= 0)
{
ui.comboBoxMaterial->setCurrentIndex(iRow + m_qslMaterials.count());
} }
else else
{ {
ui.comboBoxMaterial->setCurrentText(m_qslMaterials[int(mcp.m_eMaterial)]); ui.comboBoxMaterial->setCurrentText(mcp.m_qsMaterialUserDef);
}
}
else
{
//ui.comboBoxMaterial->setCurrentText(m_qslMaterials[int(mcp.m_eMaterial)]);
ui.comboBoxMaterial->setCurrentIndex(int(mcp.m_eMaterial));
} }
ui.spinBoxCutNumber->setValue(mcp.m_iCutNumber); ui.spinBoxCutNumber->setValue(mcp.m_iCutNumber);
ui.comboBoxPlacement->setCurrentIndex(int(mcp.m_ePlacement)); ui.comboBoxPlacement->setCurrentIndex(int(mcp.m_ePlacement));

View File

@ -84,6 +84,7 @@ protected slots:
private slots: private slots:
void NameDetailChanged(); void NameDetailChanged();
void MaterialChanged();
private: private:
/** @brief ui keeps information about user interface */ /** @brief ui keeps information about user interface */