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

📄 dbworkrep.cpp

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

#include "FormDoDialog.h"

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

SHORT DBWorkRep::m_iSendNum = -1;

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

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

		return SUC;
	}
	
	return ERR_DB;
}

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

UWORD DBWorkRep::GetFieldCnt()
{
	return DBWORKREP_FIELD_COUNT;
}

//##ModelId=3D65F2C702A2
SHORT DBWorkRep::AddWorkRepRec(WorkRepContent *pContent)
{

	if (PopupDialog (m_bIsDraft))
	{
		return -1;
	}

	EMDB_RECORD Fields[DBWORKREP_FIELD_COUNT];

	for (UWORD i = 0; i < DBWORKREP_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 DBWorkRep::ModifyContent(SHORT iRecID, WorkRepContent *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=3D65F2CE032E
Err DBWorkRep::GetContent(SHORT iRecID, WorkRepContent *pRecContent)
{
	EMDB_RECORD FieldContent;

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

//##ModelId=3D6990B50051
Err DBWorkRep::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=3D6990BE01A8
Err DBWorkRep::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 DBWorkRep::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 DBWorkRep::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 DBWorkRep::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;
}

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

//##ModelId=3D6990010188
BOOLEAN DBWorkRep::IsFull()
{
	SHORT Count = 0;

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

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

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

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

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

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

	return FALSE;
}

//获取最近一条发件箱中ID号
SHORT DBWorkRep::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 + -