Преглед изворни кода

更多里面的重新排序做好了。

张洋 пре 2 недеља
родитељ
комит
afb5d1fe73

+ 2 - 3
bin/Win32/Debug/zhipuzi_pos_windows/skin/gengduo_page.xml

@@ -10,11 +10,10 @@
 			</HorizontalLayout>
 			<HorizontalLayout name="gengduo_page_changyong_layout" height="142" maxheight="142" childpadding="18"/>
 
+			<!-- 更多功能:不再单独提供重置按钮(重置统一由上方「常用功能」那一行的按钮负责,
+			     点一次会同时把常用功能和更多功能都恢复成默认排序) -->
 			<HorizontalLayout height="24" maxheight="24" childvalign="vcenter">
 				<Label text="更多功能" font="116" textcolor="#FF1F2329" maxheight="22" valign="top" mouse="false"/>
-				<Button name="gengduo_reset" text="重置排序" font="13" width="66" maxheight="24" textcolor="#FF2E9B5C"
-					hottextcolor="#FF2E9B5C" pushedtextcolor="#FF2E9B5C" bordersize="0" bkcolor="#00000000"
-					normalimage="" hotimage="" pushedimage=""/>
 			</HorizontalLayout>
 			<HorizontalLayout name="gengduo_page_gengduo_layout" height="142" maxheight="142" childpadding="18"/>
 

BIN
bin/Win32/Release/zhipuzi_pos_windows/zhipuzi_pos_windows.exe


+ 16 - 60
zhipuzi_pos_windows/page/CGengduoPageUI.cpp

@@ -64,11 +64,8 @@ void CGengduoPageUI::HandleClickMsg(TNotifyUI& msg)
 	}
 	else if (name == L"changyong_reset")
 	{
-		ChongzhiPaixu(true);
-	}
-	else if (name == L"gengduo_reset")
-	{
-		ChongzhiPaixu(false);
+		//重置排序:一个按钮负责两组,同时恢复常用功能和更多功能的默认排序
+		ChongzhiPaixu();
 	}
 	else if (name == L"gengduo_item_btn")
 	{
@@ -872,65 +869,24 @@ void CGengduoPageUI::GengduoJiaohuan(CControlUI* pSender)
 	m_pMainWnd->UpdateGongnengDaohang();
 }
 
-//重置排序:按默认顺序重排,成员一个不动
-//⚠️ 不能直接写回 CSetting 的初始默认值 —— CMainWnd 会按餐饮/零售业态增删成员,
-//   写死默认串会覆盖掉这些调整。这里保留当前成员,只恢复它们的相对顺序。
-void CGengduoPageUI::ChongzhiPaixu(bool isChangyong)
+//重置排序:把「常用功能」和「更多功能」都恢复成默认排序(由上方那一个按钮统一触发)
+//这里就是直接写回初始默认值。之所以安全:CMainWnd::UpdateGongnengString() 对这两串
+//只做「补齐缺失项」,从不删除成员,而默认的更多列表已经包含它会补齐的全部 5 项
+//(zhengcan / saomashouyin / shoukuan / yubaozhuangbiaoqian / huhuanqucan),
+//所以写回默认串之后不会再被它改动。
+void CGengduoPageUI::ChongzhiPaixu()
 {
-	static const char* kOrder[] = {
-		"diandan", "dingdan", "huiyuan", "baobiao", "jiaoban", "setting",
-		"shangpin", "kucun", "caigou", "zhengcan", "saomashouyin", "shoukuan", "yubaozhuangbiaoqian"
-	};
-	int nOrder = sizeof(kOrder) / sizeof(kOrder[0]);
-
-	std::vector<std::string> cur = CLewaimaiString::Split(isChangyong ? m_changyongString : m_gengduoString, ",");
-
-	std::string out;
-	for (int i = 0; i < nOrder; i++)
-	{
-		for (std::vector<std::string>::iterator it = cur.begin(); it != cur.end(); )
-		{
-			if (*it == kOrder[i])
-			{
-				if (!out.empty())
-				{
-					out += ",";
-				}
-				out += *it;
-				it = cur.erase(it);
-			}
-			else
-			{
-				it++;
-			}
-		}
-	}
-
-	//默认顺序表之外的成员(业态专属)保持原相对顺序追加到末尾
-	for (std::vector<std::string>::iterator it = cur.begin(); it != cur.end(); it++)
-	{
-		if (it->empty())
-		{
-			continue;
-		}
-		if (!out.empty())
-		{
-			out += ",";
-		}
-		out += *it;
-	}
-
-	if (isChangyong)
-	{
-		m_changyongString = out;
-	}
-	else
-	{
-		m_gengduoString = out;
-	}
+	//默认排序:与 CSetting.cpp 里这两个参数的初始默认值完全一致
+	m_changyongString = "diandan,dingdan,huiyuan,shangpin,kucun,baobiao,jiaoban,setting";
+	m_gengduoString = "zhengcan,saomashouyin,shoukuan,yubaozhuangbiaoqian,huhuanqucan,caigou";
 
 	Save();
+
+	//按新的字符串重建控件
 	Refresh();
+
+	//同步刷新左侧功能导航
+	m_pMainWnd->UpdateGongnengDaohang();
 }
 
 void CGengduoPageUI::Save()

+ 2 - 2
zhipuzi_pos_windows/page/CGengduoPageUI.h

@@ -54,8 +54,8 @@ private:
 
 	void DianjiBtn(CControlUI* pSender);
 
-	//重置排序:只把当前成员按默认顺序重排,不改变成员(避免覆盖 CMainWnd 按业态差异调整过的成员)
-	void ChongzhiPaixu(bool isChangyong);
+	//重置排序:把「常用功能」和「更多功能」都恢复成默认排序,由上方那一个按钮统一触发
+	void ChongzhiPaixu();
 
 	//把变化后的配置,写入数据库
 	void Save();

BIN
zhipuzi_pos_windows/resource/skin.zip