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

📄 notebook.cpp

📁 多媒体电话记录程序
💻 CPP
字号:
// NoteBook.cpp: implementation of the CNoteBook class.
//
//////////////////////////////////////////////////////////////////////

#include "NoteBook.h"
#include "Win.h"
#include "messagebox.h"


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CNoteBook::CNoteBook(CWidget* parent) : CWidget(parent) 
{
	m_nCallType = 0;

	for(int i=0; i<5; i++)
		m_pCif[i] = NULL;

	m_pCallTimes = NULL;
	m_pList = NULL;
	m_hHandle = Create();
	gtk_signal_connect (GTK_OBJECT (m_hHandle), "destroy",
                      GTK_SIGNAL_FUNC (on_widget_destroy),
                      this);
	Show();
}

CNoteBook::~CNoteBook()
{
	for(int i=0; i<5; i++){
		if(m_pCif[i])
			delete m_pCif[i];
		m_pCif[i] = NULL;		
	}
	if(m_pList)
			delete m_pList;
		m_pList = NULL;
	if(m_pCallTimes)
		delete m_pCallTimes;
	m_pCallTimes = NULL;
	if(m_Detail)
		delete m_Detail;
	m_Detail = NULL;
}
	

void CNoteBook::ShowDetail(int row)	
{ 	
	if(row < 0){ 
		m_Detail->UpdataDetail((CCallsInfo*) m_pCallTimes, -1); 
	}
	else{
		m_Detail->UpdataDetail(m_pCif[GetCallType()], row); 
	}
	if(GetCurPage() != CNoteBook::detail){
		SetPage(CNoteBook::detail);
		gtk_widget_grab_focus(((CWin*)GetParent())->m_pToolbar->m_CloseButton->GetHandle());		
	}
}

void CNoteBook::ReLoadData()
{
	for(int i=0; i<5; i++){
		if(m_pCif[i])
			delete m_pCif[i];
		m_pCif[i] = NULL;
	}
   
   m_pCif[0] = new CCallsInfo(CCallsInfo::offen, MEMDATAFILEPATH OffenFileName);
   m_pCif[1] = new CCallsInfo(CCallsInfo::missed, MEMDATAFILEPATH MissedFileName);
   m_pCif[2] = new CCallsInfo(CCallsInfo::dialed, MEMDATAFILEPATH DialedFileName);
   m_pCif[3] = new CCallsInfo(CCallsInfo::received, MEMDATAFILEPATH ReceivedFileName);
   m_pCif[4] = new CCallsInfo(CCallsInfo::blacklist, MEMDATAFILEPATH BlacklistFileName);	
   
   if(m_pCallTimes)
	   delete m_pCallTimes;
   m_pCallTimes = new CCallTimes(MEMDATAFILEPATH CallTimesFileName);

   SetCallType(GetCallType(), true);
}

GtkWidget* CNoteBook::Create()
{
	GtkWidget* notebook = gtk_notebook_new ();   
   gtk_notebook_set_show_tabs (GTK_NOTEBOOK (notebook), FALSE);

   // list
  GtkWidget* scrolledwindow1;
  GtkWidget* scrollbar = NULL;
  
	scrolledwindow1 = gtk_scrolled_window_new ((GtkAdjustment*)NULL, (GtkAdjustment*)NULL);
	gtk_widget_show (scrolledwindow1);	 
	scrollbar = GTK_SCROLLED_WINDOW(scrolledwindow1)->vscrollbar;	
	GTK_RANGE_CLASS (GTK_OBJECT (GTK_RANGE(&(GTK_SCROLLBAR(scrollbar)->range)))->klass)->slider_width = 15;
	GTK_RANGE_CLASS (GTK_OBJECT (GTK_RANGE(&(GTK_SCROLLBAR(scrollbar)->range)))->klass)->stepper_size = 15;
	gtk_widget_destroy(scrolledwindow1);
	
    scrolledwindow1 = gtk_scrolled_window_new ((GtkAdjustment*)NULL, (GtkAdjustment*)NULL);
	gtk_widget_show (scrolledwindow1);
	 
	scrollbar = GTK_SCROLLED_WINDOW(scrolledwindow1)->vscrollbar;	
	gtk_widget_set_usize(scrollbar, 13, scrollbar->allocation.height);	
		
	gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scrolledwindow1, NULL);
	gtk_container_set_border_width (GTK_CONTAINER (scrolledwindow1), (unsigned)-1);
    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1),
									GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
	
	m_pList = new CList(this); 
	m_pList->set_double_click_row_func(GtkSignalFunc(on_clist_double_click_row), this); 
	gtk_container_add (GTK_CONTAINER (scrolledwindow1), m_pList->GetHandle());	
  
  //ReLoadData();

  m_Detail = new CDetail(this);
  gtk_container_add (GTK_CONTAINER (notebook), m_Detail->GetHandle()); 
  gtk_signal_connect (GTK_OBJECT (m_Detail->m_bClear->GetHandle()), "clicked",
                      GTK_SIGNAL_FUNC (on_detail_clear_button_clicked),
                      this);   
  //gtk_notebook_set_page(GTK_NOTEBOOK(notebook), 0);
  
  return notebook;
}

void CNoteBook::on_clist_double_click_row(CList* list, int row, gpointer user_data) 
{  
	CNoteBook* nb = (CNoteBook*) user_data;		
	if(nb)
		nb->ShowDetail(row); 
}

void CNoteBook::on_detail_clear_button_clicked(GtkButton *button,
												gpointer user_data)
{  
	CNoteBook* nb = (CNoteBook*) user_data;		
	if(nb){
		if(MessageBox(_("你确认要把通话时长\n清零吗?"), 
					  _("清零"), stock_question, 
					  MB_Yes | MB_No)==ID_Yes)
		{
			nb->m_pCallTimes->Clear();
			nb->ShowDetail(-1);

			CCallsInfo::SyncDataFile();
		}
	}
}



⌨️ 快捷键说明

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