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

📄 ndkalendar.cpp

📁 symbian 二版本的自定义控件
💻 CPP
字号:
#include "NDKalendar.h"
#include "KalendarManage.h"
CCalendarManage* CCalendarManage::NewL()
{
	CCalendarManage* self = NewLC();
	CleanupStack::Pop(self);
	return self;
}
CCalendarManage* CCalendarManage::NewLC()
{
	CCalendarManage* self = new(ELeave) CCalendarManage;
	CleanupStack::PushL(self);
	self->ConstructL();
	return self;
}
CCalendarManage::CCalendarManage()
{
	
}
void CCalendarManage::ConstructL()
{
	TTime time;
	time.HomeTime();
	TDateTime dateTime = time.DateTime();
	iSolarYear = dateTime.Year();
	iSolarMonth = dateTime.Month();
	iSolarDate = dateTime.Day();
	if(IsLeapYear())
	{
		iWeekDay = (SolarDays[1][iSolarMonth] + LunarCal[iSolarYear-FirstYear].BaseWeekday)%7 + 1;
		iMonthDays = SolarCal[1][iSolarMonth];

	}
	else
	{
		iWeekDay = (SolarDays[0][iSolarMonth] + LunarCal[iSolarYear-FirstYear].BaseWeekday)%7 + 1;
		iMonthDays = SolarCal[0][iSolarMonth];
	}
}
CCalendarManage::~CCalendarManage()
{
	
}
void CCalendarManage::SetSolarYear(TInt aYear)
{
	iSolarYear = aYear;
}
TInt CCalendarManage::GetSolarYear()
{
	return iSolarYear;
}
void CCalendarManage::SetSolarMonth(TInt aMonth)
{
	iSolarMonth = aMonth;
}
TInt CCalendarManage::GetSolarMonth()
{
	return iSolarMonth;
}
void CCalendarManage::SetSolarDate(TInt aDate)
{
	iSolarDate = aDate;
}
TInt CCalendarManage::GetSolarDate()
{
	return iSolarDate;
}
void CCalendarManage::SetWeekDay(TInt aWeekDay)
{
	iWeekDay = aWeekDay;
}
TInt CCalendarManage::GetweekDay()
{
	return iWeekDay;
}
TInt CCalendarManage::GetMonthDay()
{
	return iMonthDays;
}
TBool CCalendarManage::IsLeapYear()
{
	if(0 == iSolarYear%400)
	{
		return ETrue;
	}
	else if(0 == iSolarYear%100)
	{
		return EFalse;
	}
	else if(0 == iSolarYear%4)
	{
		return ETrue;
	}
	return EFalse;
}


//构造函数
CNDCalendar::CNDCalendar()
{

}
void CNDCalendar::ConstructL()
{
	iCalendarManage = CCalendarManage::NewL();
	iWeekDayArray = new(ELeave) CDesC16ArrayFlat(7);
	iWeekDayArray->AppendL(KMonday);
	iWeekDayArray->AppendL(KTuesday);
	iWeekDayArray->AppendL(KWednesday);
	iWeekDayArray->AppendL(KThursday);
	iWeekDayArray->AppendL(KFriday);
	iWeekDayArray->AppendL(KSaturday);
	iWeekDayArray->AppendL(KSunday);

	iDateArray = new(ELeave) CDesC16ArrayFlat(31);
	iDateArray->AppendL(KOne);
	iDateArray->AppendL(KTwo);
	iDateArray->AppendL(KThree);
	iDateArray->AppendL(Kfour);
	iDateArray->AppendL(KFive);
	iDateArray->AppendL(KSix);
	iDateArray->AppendL(KSeven);
	iDateArray->AppendL(KEight);
	iDateArray->AppendL(KNine);
	iDateArray->AppendL(KTen);
	iDateArray->AppendL(KEleven);
	iDateArray->AppendL(KTwelve);
	iDateArray->AppendL(KThirteen);
	iDateArray->AppendL(KFourteen);
	iDateArray->AppendL(KFifiteen);
	iDateArray->AppendL(KSixteen);
	iDateArray->AppendL(KSeventeen);
	iDateArray->AppendL(Keighteen);
	iDateArray->AppendL(KNinteen);
	iDateArray->AppendL(KTwenty);
	iDateArray->AppendL(KtwentyOne);
	iDateArray->AppendL(KTwentyTwo);
	iDateArray->AppendL(KTwentyThree);
	iDateArray->AppendL(KTwentyFour);
	iDateArray->AppendL(KTwentyFive);
	iDateArray->AppendL(KTwentySix);
	iDateArray->AppendL(KTwentySeven);
	iDateArray->AppendL(KTwentyEight);
	iDateArray->AppendL(KTwentyNine);
	iDateArray->AppendL(KThirty);
	iDateArray->AppendL(KThirtyOne);

}
//析构函数
CNDCalendar::~CNDCalendar()
{
	delete iCalendarManage;
	delete iWeekDayArray;
	delete iDateArray;
}
//绘制Calendar
void CNDCalendar::Draw(const TRect& aRect) const
{
	CWindowGc& gc = SystemGc();
	gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
	gc.SetBrushColor(KRgbWhite);
	gc.DrawRect(Rect());
	gc.SetBrushColor(KRgbBlack);
	gc.DrawLine(TPoint(22,18),TPoint(22,144));
	gc.DrawLine(TPoint(0,18),TPoint(176,18));
	gc.DrawLine(TPoint(0,36),TPoint(176,36));
	gc.SetBrushColor(KRgbGray);
	for(TInt i=2;i<8;i++)
	{
		gc.DrawLine(TPoint(i*22,36),TPoint(i*22,144));
		gc.DrawLine(TPoint(22,i*18),TPoint(176,i*18));
	}
	const CFont* iFontTemp = iEikonEnv->LegendFont();
	gc.UseFont(iFontTemp);
	for(i=0;i<7;i++)
	{
		gc.DrawText((*iWeekDayArray)[i],TPoint((i+1)*22+5,34));
	}
	TInt weekDay = iCalendarManage->GetweekDay();
	TInt monthDay = iCalendarManage->GetMonthDay();
	TBuf<30> date;
	date.Num(iCalendarManage->GetSolarDate());
	gc.DrawText(date,TPoint(27,20));
	TInt x = weekDay;
	TInt y = 54;
	gc.SetBrushColor(KRgbDarkCyan);
	for(i=0;i<monthDay;i++)
	{
		date.Num(i+1);
		if(i==iCalendarManage->GetSolarDate())
		{
			gc.DrawRect(TRect(x*22,y-18,x*22+22,y));
		}
		gc.DrawText(date,TPoint(x*22+5,y));
		x++;
		if(0 == x%8)
		{
			y += 18;
			x = 1;
		}
	}

}
//按键处理
TKeyResponse CNDCalendar::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
{
	return EKeyWasConsumed;
}

⌨️ 快捷键说明

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