⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbprobsolv.cpp

📁 嵌入式系统PDA的流程
💻 CPP
字号:
#include "DBProbSolv.h"
#include "ProbSolvContent.h"
#include "SysClock.h"

#include "FormDoDialog.h"

//set the number of static member
SHORT DBProbSolv::m_iDraftNum = -1;

SHORT DBProbSolv::m_iSendNum = -1;

DBProbSolv::DBProbSolv (BOOLEAN bIsDraft):
	m_bIsDraft (bIsDraft)
{
}

CHAR* DBProbSolv::GetTableName()
{
	return (CHAR*)"DBProbSolv";
}

UWORD DBProbSolv::GetFieldCnt()
{
	return DBPROBSOLV_FIELD_COUNT;
}

Err DBProbSolv::DelRec(
        //##Documentation
        //## 记录ID号
        SHORT iRecID)
{
	if (SUC == DBOpersBase::DelRec (iRecID))
	{
		if (m_bIsDraft)
		{
			--m_iDraftNum;
		}
		else
		{
			--m_iSendNum;
		}

		return SUC;
	}
	
	return ERR_DB;
}

//##ModelId=3D65F40C02DB
SHORT DBProbSolv::AddProbSolvRec(ProbSolvContent *pContent)
{
	if (PopupDialog (m_bIsDraft))
	{
		return -1;
	}

	EMDB_RECORD Fields[DBPROBSOLV_FIELD_COUNT];

	for (UWORD i = 0; i < DBPROBSOLV_FIELD_COUNT; i++)
		Fields[i].FieldIndex = i;

	SysTime EditTime;
	SysClock::GetInstance()->GetLocalTime(&EditTime);

	Fields[0].val.bl = (UBYTE) m_bIsDraft;
	Fields[1].val.c = (CHAR*) &EditTime;
	Fields[2].val.c = pContent->m_strContent;

	SHORT idNewRec = GetRecCnt();
	if (SUC == AddRec((EMDB_RECORD*)&Fields))
	{
		if (m_bIsDraft)
		{
			++m_iDraftNum;
		}
		else
		{
			++m_iSendNum;
		}
		return idNewRec;
	}
	else
		return -1;
}

Err DBProbSolv::ModifyContent(SHORT iRecID, ProbSolvContent *pContent)
{
	EMDB_RECORD Fields[2];

	Fields[0].FieldIndex = 1;
	Fields[1].FieldIndex = 2;

	SysTime EditTime;
	SysClock::GetInstance()->GetLocalTime(&EditTime);

	Fields[0].val.c = (CHAR*) &EditTime;
	Fields[1].val.c = pContent->m_strContent;

	return SetFields(iRecID, (EMDB_RECORD*)&Fields, 2);
}

//##ModelId=3D65F41603D0
Err DBProbSolv::GetContent(SHORT iRecID, ProbSolvContent *pRecContent)
{
	EMDB_RECORD FieldContent;

	FieldContent.FieldIndex = 2;
	FieldContent.val.c = (CHAR*)pRecContent->m_strContent;
	return GetField(iRecID, &FieldContent);
}

//##ModelId=3D65F41D0037
Err DBProbSolv::GetEditTime(SHORT iRecID, CHAR* pszTime)
{
	EMDB_RECORD FieldEditTime;
	SysTime EditTime;

	FieldEditTime.FieldIndex = 1;
	FieldEditTime.val.c = (CHAR*) &EditTime;
	Err RetVal = GetField(iRecID, &FieldEditTime);
	EditTime.ToString(pszTime);
	return RetVal;
}

//##ModelId=3D65F44002F4
Err DBProbSolv::GetIsDraftFlg(SHORT iRecID, BOOLEAN* isDraft)
{
	EMDB_RECORD FieldIsDraft;
	Err Result;

	FieldIsDraft.FieldIndex = 0;
	Result = GetField(iRecID, &FieldIsDraft);
	if (SUC == Result)
	{
		*isDraft = (BOOLEAN) FieldIsDraft.val.bl;
	}

	return Result;
}

Err DBProbSolv::SetIsDraftFlg(SHORT iRecID, BOOLEAN isDraft)
{
	if (PopupDialog (isDraft))
	{
		return ERR_DB;
	}

	EMDB_RECORD FieldIsDraft;

	FieldIsDraft.FieldIndex = 0;
	FieldIsDraft.val.bl = (UBYTE)isDraft;

	if (SUC == SetFields(iRecID, &FieldIsDraft, 1))
	{
		if (isDraft)
		{
			++m_iDraftNum;
			--m_iSendNum;
		}
		else
		{
			++m_iSendNum;
			--m_iDraftNum;
		}

		return SUC;
	}
	
	return ERR_DB;
}

//##ModelId=3D6990000083
SHORT DBProbSolv::GetDraftRecCnt()
{
	SHORT i;
	SHORT iDraftCount = 0;
	//SHORT iSendCount = 0;
	BOOLEAN isDraft = FALSE;

	if (-1 == m_iDraftNum)
	{
		for (i = 0; i < DBOpersBase::GetRecCnt(); ++i)
		{
			GetIsDraftFlg(i, &isDraft);
			if (TRUE == isDraft)
			{
				++iDraftCount;
			}
		}
		m_iDraftNum = iDraftCount;
	}
	
	return m_iDraftNum;
}

SHORT DBProbSolv::GetSendRecCnt()
{
	SHORT i;
	//SHORT iDraftCount = 0;
	SHORT iSendCount = 0;
	BOOLEAN isDraft = FALSE;

	if (-1 == m_iSendNum)
	{
		for (i = 0; i < DBOpersBase::GetRecCnt(); ++i)
		{
			GetIsDraftFlg(i, &isDraft);
			if (TRUE != isDraft)
			{
				++iSendCount;
			}
		}
		m_iSendNum = iSendCount;
	}

	return m_iSendNum;
}

//##ModelId=3D6D84E70042
BOOLEAN DBProbSolv::IsFull()
{
	SHORT Count = 0;

	if (m_bIsDraft)
	{
		Count = GetDraftRecCnt ();
	}
	else
	{
		Count = GetSendRecCnt ();
	}

	if (Count >= DBPROBSOLV_COUNT)
		return TRUE;
	else
		return FALSE;
}

//##ModelId=3D6EED2103D5
void DBProbSolv::SetIsDBDraftFlag(BOOLEAN isDraft)
{
	m_bIsDraft = isDraft;
	return;
}

BOOLEAN DBProbSolv::GetIsDBDraftFlag ()
{
	return m_bIsDraft;
}

//通过当前的数据库的信息条数,弹出不同的Dialog
BOOLEAN DBProbSolv::PopupDialog (BOOLEAN isDraft)
{
	SHORT i = 0;

	if (isDraft)
	{
		i = GetDraftRecCnt ();
	}
	else
	{
		i = GetSendRecCnt ();
	}

	if (DBPROBSOLV_COUNT-1 == i)
	{
		DialogPopupEmbedded (ERR_DATABATE_WILL_FULL);
		return FALSE;
	}
	else if (DBPROBSOLV_COUNT <= i)
	{
		//DialogPopupEmbedded (ERR_DATABATE_FULL);
		if (isDraft)
		{
			DialogPopupString (NULL, (BYTE*)"此条信息无法保存到草稿箱");
		}
		else
		{
			DialogPopupString (NULL, (BYTE*)"此条信息无法保存到发件箱");
		}
		return TRUE;
	}

	return FALSE;
}

//获取最近一条发件箱中ID号
SHORT DBProbSolv::GetFirstSendRec ()
{
	SHORT i;
	BOOLEAN isDraft = TRUE;

	for (i = 0; i < DBOpersBase::GetRecCnt(); ++i)
	{
		GetIsDraftFlg(i, &isDraft);
		if (FALSE == isDraft)
		{
			return i;
		}
	}
	return -1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -