|
@@ -1,7 +1,7 @@
|
|
|
#include "../pch/pch.h"
|
|
#include "../pch/pch.h"
|
|
|
#include "CDiandanNatureItemUI.h"
|
|
#include "CDiandanNatureItemUI.h"
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
+#include "../wnd/CDiandanNatureWnd.h"
|
|
|
|
|
|
|
|
CDiandanNatureItemUI::CDiandanNatureItemUI()
|
|
CDiandanNatureItemUI::CDiandanNatureItemUI()
|
|
|
{
|
|
{
|
|
@@ -20,6 +20,11 @@ void CDiandanNatureItemUI::SetNatureName(std::string name)
|
|
|
pName->SetText(CLewaimaiString::UTF8ToUnicode(name).c_str());
|
|
pName->SetText(CLewaimaiString::UTF8ToUnicode(name).c_str());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+void CDiandanNatureItemUI::SetNatureLimitChoose(std::string limit_choose)
|
|
|
|
|
+{
|
|
|
|
|
+ m_nLimitChoose = atoi(CLewaimaiString::UTF8ToANSI(limit_choose).c_str());
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
void CDiandanNatureItemUI::SetNatureNameNum(int nNum)
|
|
void CDiandanNatureItemUI::SetNatureNameNum(int nNum)
|
|
|
{
|
|
{
|
|
|
m_nNatureNameNum = nNum;
|
|
m_nNatureNameNum = nNum;
|
|
@@ -30,7 +35,7 @@ void CDiandanNatureItemUI::addNatureValue(FoodNatureValue value)
|
|
|
m_nature_value.push_back(value);
|
|
m_nature_value.push_back(value);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void CDiandanNatureItemUI::ShowNatureValue(int nSelected)
|
|
|
|
|
|
|
+void CDiandanNatureItemUI::ShowNatureValue()
|
|
|
{
|
|
{
|
|
|
CHorizontalLayoutUI* pValueLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_nature_layout_value")));
|
|
CHorizontalLayoutUI* pValueLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_nature_layout_value")));
|
|
|
|
|
|
|
@@ -85,40 +90,120 @@ void CDiandanNatureItemUI::ShowNatureValue(int nSelected)
|
|
|
newButton->SetFloat(true);
|
|
newButton->SetFloat(true);
|
|
|
newButton->SetPos(rect);
|
|
newButton->SetPos(rect);
|
|
|
|
|
|
|
|
- //找到了选中的属性
|
|
|
|
|
- if (value_num == nSelected)
|
|
|
|
|
|
|
+ value_num++;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //初始化选中
|
|
|
|
|
+
|
|
|
|
|
+ //如果是点击商品的,默认选中第一个
|
|
|
|
|
+ if (m_InitFoodNatureSelectValue.m_nature_selects.size() == 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ m_nature_value[0].is_select = true;
|
|
|
|
|
+
|
|
|
|
|
+ CButtonUI* newButton = static_cast<CButtonUI*>(pValueLayout->GetItemAt(0));
|
|
|
|
|
+ newButton->SetBorderColor(0xFFFF4500);
|
|
|
|
|
+ newButton->SetTextColor(0xFFFF4500);
|
|
|
|
|
+
|
|
|
|
|
+ m_nSelectNum = 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ m_nSelectNum = 0;
|
|
|
|
|
+
|
|
|
|
|
+ //可能有1到多个商品属性值被选中
|
|
|
|
|
+ for (std::vector< FoodNatureSelectValueInfo>::iterator it = m_InitFoodNatureSelectValue.m_nature_selects.begin(); it != m_InitFoodNatureSelectValue.m_nature_selects.end(); it++)
|
|
|
{
|
|
{
|
|
|
- m_nSelectIndex = nSelected;
|
|
|
|
|
- m_nature_value[nSelected].is_select = true;
|
|
|
|
|
|
|
+ int index = (*it).nature_select_index;
|
|
|
|
|
+
|
|
|
|
|
+ m_nature_value[index].is_select = true;
|
|
|
|
|
+
|
|
|
|
|
+ CButtonUI* newButton = static_cast<CButtonUI*>(pValueLayout->GetItemAt(index));
|
|
|
newButton->SetBorderColor(0xFFFF4500);
|
|
newButton->SetBorderColor(0xFFFF4500);
|
|
|
newButton->SetTextColor(0xFFFF4500);
|
|
newButton->SetTextColor(0xFFFF4500);
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- value_num++;
|
|
|
|
|
|
|
+ m_nSelectNum++;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void CDiandanNatureItemUI::SetNatureSelected(int index)
|
|
void CDiandanNatureItemUI::SetNatureSelected(int index)
|
|
|
{
|
|
{
|
|
|
- if (m_nSelectIndex == index)
|
|
|
|
|
|
|
+ CHorizontalLayoutUI* pValueLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_nature_layout_value")));
|
|
|
|
|
+
|
|
|
|
|
+ if (m_nature_value[index].is_select == true)
|
|
|
{
|
|
{
|
|
|
- return;
|
|
|
|
|
|
|
+ //点击的这个当前是选中状态
|
|
|
|
|
+ if (m_nLimitChoose == 1)
|
|
|
|
|
+ {
|
|
|
|
|
+ //如果最多就只能选一个属性值的,点了选中状态的就没变化
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ //如果是可以选多个值的,点了选中状态就改为非选中状态
|
|
|
|
|
+ if (m_nSelectNum == 1)
|
|
|
|
|
+ {
|
|
|
|
|
+ m_pNatureWnd->ShowToast(L"最少选择1个属性");
|
|
|
|
|
+
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ m_nature_value[index].is_select = false;
|
|
|
|
|
+
|
|
|
|
|
+ CButtonUI* old_btn = static_cast<CButtonUI*>(pValueLayout->GetItemAt(index));
|
|
|
|
|
+ old_btn->SetBorderColor(0xFFA9A9A9);
|
|
|
|
|
+ old_btn->SetTextColor(0xFFA9A9A9);
|
|
|
|
|
+
|
|
|
|
|
+ m_nSelectNum--;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ //点击的这个是非选中状态
|
|
|
|
|
+ if (m_nLimitChoose == 1)
|
|
|
|
|
+ {
|
|
|
|
|
+ //如果最大限制就是1个,点击非选中状态的,就自动选中这个
|
|
|
|
|
+ int num = 0;
|
|
|
|
|
+ for (std::vector<FoodNatureValue>::iterator it = m_nature_value.begin(); it != m_nature_value.end(); it++)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (it->is_select == true)
|
|
|
|
|
+ {
|
|
|
|
|
+ //把旧的选中的设为非选中
|
|
|
|
|
+ m_nature_value[num].is_select = false;
|
|
|
|
|
+
|
|
|
|
|
+ CButtonUI* old_btn = static_cast<CButtonUI*>(pValueLayout->GetItemAt(num));
|
|
|
|
|
+ old_btn->SetBorderColor(0xFFA9A9A9);
|
|
|
|
|
+ old_btn->SetTextColor(0xFFA9A9A9);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ num++;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //再把刚点击的设为选中
|
|
|
|
|
+ m_nature_value[index].is_select = true;
|
|
|
|
|
+
|
|
|
|
|
+ CButtonUI* new_btn = static_cast<CButtonUI*>(pValueLayout->GetItemAt(index));
|
|
|
|
|
+ new_btn->SetBorderColor(0xFFFF4500);
|
|
|
|
|
+ new_btn->SetTextColor(0xFFFF4500);
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ if (m_nSelectNum >= m_nLimitChoose)
|
|
|
|
|
+ {
|
|
|
|
|
+ m_pNatureWnd->ShowToast(L"最多选择" + to_wstring(m_nLimitChoose) + L"个属性");
|
|
|
|
|
|
|
|
- CHorizontalLayoutUI* pValueLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(_T("diandan_nature_layout_value")));
|
|
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //否则进行选中
|
|
|
|
|
+ m_nature_value[index].is_select = true;
|
|
|
|
|
|
|
|
- //先取消旧的选中
|
|
|
|
|
- m_nature_value[m_nSelectIndex].is_select = false;
|
|
|
|
|
- CButtonUI* old_btn = static_cast<CButtonUI*>(pValueLayout->GetItemAt(m_nSelectIndex));
|
|
|
|
|
- old_btn->SetBorderColor(0xFFA9A9A9);
|
|
|
|
|
- old_btn->SetTextColor(0xFFA9A9A9);
|
|
|
|
|
-
|
|
|
|
|
- //再选中新的
|
|
|
|
|
- m_nSelectIndex = index;
|
|
|
|
|
- m_nature_value[m_nSelectIndex].is_select = true;
|
|
|
|
|
- CButtonUI* new_btn = static_cast<CButtonUI*>(pValueLayout->GetItemAt(m_nSelectIndex));
|
|
|
|
|
- new_btn->SetBorderColor(0xFFFF4500);
|
|
|
|
|
- new_btn->SetTextColor(0xFFFF4500);
|
|
|
|
|
|
|
+ CButtonUI* new_btn = static_cast<CButtonUI*>(pValueLayout->GetItemAt(index));
|
|
|
|
|
+ new_btn->SetBorderColor(0xFFFF4500);
|
|
|
|
|
+ new_btn->SetTextColor(0xFFFF4500);
|
|
|
|
|
+
|
|
|
|
|
+ m_nSelectNum++;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
std::string CDiandanNatureItemUI::GetNatureName()
|
|
std::string CDiandanNatureItemUI::GetNatureName()
|
|
@@ -131,20 +216,26 @@ int CDiandanNatureItemUI::GetNatureNameNum()
|
|
|
return m_nNatureNameNum;
|
|
return m_nNatureNameNum;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-//获取当前被选中的属性值的名字
|
|
|
|
|
-std::string CDiandanNatureItemUI::GetSelectedNatureValueName()
|
|
|
|
|
|
|
+std::vector<FoodNatureSelectValueInfo> CDiandanNatureItemUI::GetSelectedNatureInfo()
|
|
|
{
|
|
{
|
|
|
- return m_nature_value[m_nSelectIndex].name;
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ std::vector<FoodNatureSelectValueInfo> infoArray;
|
|
|
|
|
|
|
|
-//获取当前被选中的属性值的索引
|
|
|
|
|
-int CDiandanNatureItemUI::GetSelectedNatureValueNum()
|
|
|
|
|
-{
|
|
|
|
|
- return m_nSelectIndex;
|
|
|
|
|
-}
|
|
|
|
|
|
|
+ int num = 0;
|
|
|
|
|
+ for (std::vector<FoodNatureValue>::iterator it = m_nature_value.begin(); it != m_nature_value.end(); it++)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (it->is_select == true)
|
|
|
|
|
+ {
|
|
|
|
|
+ FoodNatureSelectValueInfo newInfo;
|
|
|
|
|
|
|
|
-//获取当前被选中属性的值
|
|
|
|
|
-int CDiandanNatureItemUI::GetSelectedNatureValuePrice()
|
|
|
|
|
-{
|
|
|
|
|
- return m_nature_value[m_nSelectIndex].value;
|
|
|
|
|
|
|
+ newInfo.nature_select_name = (*it).name;
|
|
|
|
|
+ newInfo.nature_select_value = (*it).value;
|
|
|
|
|
+ newInfo.nature_select_index = num;
|
|
|
|
|
+
|
|
|
|
|
+ infoArray.push_back(newInfo);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ num++;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return infoArray;
|
|
|
}
|
|
}
|