コード例 #1
0
ファイル: bookshlf.c プロジェクト: CivilPol/sdcboot
void List ( void )
{
	int bookN = 0;

	puts ("List of available books:");
	while ( TRUE )
	{
		/* read line removing spaces */
		fgets (line, MaxLine, fin);
		NoSpaces ();

		/* if /BOOKSHELF or => break */
		if (!strcmp(line,"<!--/BOOKSHELF-->")) break;
		if (feof(fin)) CriticalError (SC_BooksCorrupted, "");

		bookN++;

		/* Line must start with <!--BOOK=bookname, and then print it */
		if ( !GetBookName() ) CriticalError (SC_BooksCorrupted, "");
		printf ("    %s\n",line);

		/* Strip until one gets to <!--/BOOK--> */
		do {
			fgets(line, MaxLine, fin);
			NoSpaces();
		} while ( strcmp(line,"<!--/BOOK-->") && !feof(fin) );

		if (feof(fin)) CriticalError (SC_BooksCorrupted, "");

	}
	printf ("Number of books found: %u\n", bookN);
}
コード例 #2
0
BOOL BookOpenManager::OpenBook()
{
    DebugPrintf(DLC_BOOKOPENMANAGER, "%s, %d, %s, %s START", __FILE__,  __LINE__, "BookOpenManager", __FUNCTION__);
	if(!m_pCurPage)
	{
		return FALSE;
	}
	CDKFileManager * pclsFileManager = CDKFileManager::GetFileManager();
	if(!pclsFileManager)
	{
		return FALSE;
	}
	pclsFileManager->ConvertDKPToDKX(GetBookPath());

	//CHourglass* pIns = CHourglass::GetInstance();
	//if(m_iHourglassLeft == 0 && m_iHourglassTop == 0)
	//{
	//	pIns = NULL;
	//}

	//if(pIns)
	//{
	//	pIns->Start(m_iHourglassLeft, m_iHourglassTop);
	//}

	CDisplay* display = CDisplay::GetDisplay();
	if(NULL == display)
	{
		return FALSE;
	}

	DkFileFormat Format = GetBookFormat();
	switch (Format)
	{
	case DFF_Text:
		SQM::GetInstance()->IncCounter(SQM_ACTION_BOOKREADER_FORMAT_TXT);
		break;
	case DFF_ZipFile:
		SQM::GetInstance()->IncCounter(SQM_ACTION_BOOKREADER_FORMAT_ZIP);
		break;
	case DFF_RoshalArchive:
		SQM::GetInstance()->IncCounter(SQM_ACTION_BOOKREADER_FORMAT_RAR);
		break;
	case DFF_PortableDocumentFormat:
		SQM::GetInstance()->IncCounter(SQM_ACTION_BOOKREADER_FORMAT_PDF);
		break;            
	case DFF_ElectronicPublishing:
		SQM::GetInstance()->IncCounter(SQM_ACTION_BOOKREADER_FORMAT_EPUB);
		break;            
	case DFF_Serialized:
		SQM::GetInstance()->IncCounter(SQM_ACTION_BOOKREADER_FORMAT_SERIALIZED);
		break;         
	case DFF_Unknown:
		SQM::GetInstance()->IncCounter(SQM_ACTION_BOOKREADER_FORMAT_UNKNOWN);
		break;
	default:
		//DONOTHING for others
		break;
	}

	if(Format == DFF_ZipFile || Format == DFF_RoshalArchive || Format == DFF_Serialized)
	{

		BOOL bOpenSuccess = OpenArchiveBook();

		//if(pIns)
		//{
		//	pIns->Stop();
		//}

		return bOpenSuccess;
	}
	else
	{
		DkReaderPage *pReader = new DkReaderPage();
		if(NULL == pReader)
		{
			//if(pIns)
			//{
			//	pIns->Stop();
			//}

			return FALSE;
		}

		if (!pReader->Initialize(GetBookPath(), GetBookName(), m_iBookID))
		{
			delete pReader;
			pReader = NULL;
			//if(pIns)
			//{
			//	pIns->Stop();
			//}

			UIMessageBox messagebox(m_pCurPage, StringManager::GetStringById(CANNOT_OPEN_BOOK), MB_OK);
			messagebox.DoModal();
		}
		else
		{
			pReader->MoveWindow(0, 0, display->GetScreenWidth(), display->GetScreenHeight());
			//Here: we move the pIns->Stop() into UIBookReaderContainer::Draw() to fix bug like: KTV00026614
            CDisplay::GetDisplay()->SetFullRepaint(true);
			CPageNavigator::Goto(pReader);
		}
    }
    DebugPrintf(DLC_BOOKOPENMANAGER, "%s, %d, %s, %s end", __FILE__,  __LINE__, "BookOpenManager", __FUNCTION__);
	return TRUE;
}