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

📄 callinfo.h

📁 多媒体电话记录程序
💻 H
字号:
/////////////////////////////////////////////////////////////////////////////
//  Name: callinfo.h
//  Copyright: wellgain
//  Author: bet
//  Date: 2003-10-8
//  Description:  the interface for class CCallinfo 
//				  and others which are used by it
/////////////////////////////////////////////////////////////////////////////

#ifndef _WG_CALLINFO_H_
#define _WG_CALLINFO_H_

#include <glib.h>
#include "archive.h"
#include "datetime.h"



/////////////////////////////////////////////////////////////////////////////
// 通话时间类

class CCallTimes
{
public:
	CCallTimes(const char* szfilename);		
	CCallTimes(const CCallTimes& ct);
	CCallTimes& operator=(const CCallTimes& ct);
	virtual ~CCallTimes();	

// Attributes 
	//上次通话时间
	inline CTime GetLast()		{ return m_last; }
	//接听时间总计
	inline CTime GetCallIn()	{ return m_callin; }		
	//打出时间总计
	inline CTime GetCallOut()	{ return m_callout; }	
	//总通话时间
	inline CTime GetTotal()		{ return GetCallIn()+GetCallOut(); }	

// Operations
	//增加新的通话时间t,若iscallin=TRUE表示接听,否则为打出
	void NewCall(CTime& t, bool iscallin);			
	// 清零
	void Clear();	
	
protected:
	void SaveToFile();
	void LoadFromFile();
	
private:
	CTime m_last;	
	CTime m_callin;
	CTime m_callout;	
	char* m_szFileName;
};


/////////////////////////////////////////////////////////////////////////////
// 电话记录类
const int MaxTelNoLength = 31;
const int MaxNameLength  = 16;

class CCallRecord
{
public:	
	CCallRecord(const char* szName="", const char* szTel="", 
				CDateTime dt=CDateTime(), CTime dur=CTime(0,0,0), int freq=0);
	CCallRecord(const CCallRecord& cr);
	CCallRecord& operator=(const CCallRecord& cr);
	virtual ~CCallRecord();

// Attributes 
	inline const char* GetTel()	const	{ return m_szTel;  }
	inline const char* GetName() const	{ return m_szName;  }	
	inline int GetFreq() const			{ return m_nFreq;  }
	inline CDateTime GetTime() const	{ return m_Time; }
	inline CTime GetDuration() const	{ return m_Duration; }

	inline bool isDeleted() const	{ return (GetFreq() < 0); }
	
// Operations
	inline void inCrease()		{ m_nFreq++; }
	inline void SetName(const char* szName)
	{	if(!szName) m_szName[0] = '\0';
		else		strncpy(m_szName, szName, sizeof(m_szName)-1);
	}
	void SetTel(const char* szTel)
	{	if(!szTel) m_szTel[0] = '\0';
		else		strncpy(m_szTel, szTel, sizeof(m_szTel)-1);
	}
	inline void SetTime(CDateTime dt=CDateTime())  { m_Time = dt; }
	inline void SetFreq(int f)		{ m_nFreq = f; }
	inline void SetDuration(CTime t)	{ m_Duration = t; }
	inline void Delete()		{ m_nFreq = -1; }
	virtual void Serialize(CArchive& ar);

public:
	int m_nIndex;	
	
private:	
	char m_szTel[MaxTelNoLength];
	char m_szName[MaxNameLength];
	int m_nFreq;
	CDateTime m_Time;
	CTime m_Duration;
};

/////////////////////////////////////////////////////////////////////////////
// 通话类
// 永久类
const int MaxRecordCount = 50;
gint FindCompareFunc(gconstpointer a, gconstpointer b);

class CCallsInfo 
{
public:

	enum CallType { offen, missed, dialed, received, blacklist };
 
	CCallsInfo(CallType type, const char* szfilename); 
	virtual ~CCallsInfo();

	inline CallType GetType()		{ return m_eType; }
	inline CCallRecord* const GetDetail(int nth) const
		{ return (CCallRecord*)g_slist_nth_data(m_Records, nth); }
	static int telcmp(const char* tel1, const char* tel2);
	inline CCallRecord* FindRecord(CCallRecord& newrec)
	{ 
		GSList* list = g_slist_find_custom(m_Records, &newrec, FindCompareFunc); 
		if(list)
			return (CCallRecord*) list->data;
		else
			return NULL;
	} 
	
	int NewCall(CCallRecord& newrec);
	int NewBlackName(CCallRecord& newrec);
	void UpdateDuration(CTime dur);	
	void Delete(int nth);
	void UpdateRecord(CCallRecord* newrecord);

	typedef bool (*CallsInfoForEach)(const CCallRecord& cr,  gpointer user_data);
	void ForEach(CallsInfoForEach f, gpointer user_data);

	static void SyncDataFile();
	
protected:
	CCallsInfo();
	CCallsInfo(const CCallsInfo& cif);
	CCallsInfo& operator=(const CCallsInfo& cif);	
	void LoadFromFile();
	void SaveToFile();
	
private:
	GSList* m_Records;
	CallType m_eType;
	int m_nCount;
	long m_lRecordLength;
	char* m_szFileName;
};


/////////////////////////////////////////////////////////////////////////////



#endif //_WG_CALLINFO_H_

⌨️ 快捷键说明

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