📄 mediabroshedulenew.c
字号:
/******************************************************************/
/* Copyright (C) 2007 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*******************************************************************
File : MediaBroSheduleNew.c
Desc : 媒体库资源处理
Autho : PengHuacheng
Date : 2007-12-02
Notes :
$Log :
*********************************************************************/
#if ((defined(BOARD)) || defined(ROCK_FS))
#include "include.h"
#include "System.h"
#ifdef _MEIDA_SORT_NEW
#include "MediaBroStructNew.h"
#include "MediaBroMacroNew.h"
#include "..\System\MediaSortNew\MediaSortGloableNew.h"
#include "..\application\Browser\BrowserGlobal.h"
extern UINT16 GetAudioId3Info(FS_FILE *hFile, FILE_SAVE_STRUCT *pSaveStru, char *FileName);
extern bool FS_FileExtNameMatch(char *SrcExtName, char *Filter);
extern void TextModelInterface(WINDOW* win , SYS_FILE_INFO *pSysFileInfo);
UINT32 MediaAllScreenListKeyRightFun(WINDOW* win, MEDIA_DIR_TREE_STRUCT *pMediaDir);
UINT32 MediaAllScreenListKeyLeftFun(WINDOW* win, MEDIA_DIR_TREE_STRUCT *pMediaDir);
UINT32 MediaAllScreenListKeyLineDnFun(WINDOW* win, MEDIA_DIR_TREE_STRUCT *pMediaDir, UINT16 KeyType);
UINT32 MediaAllScreenListKeyLineUpFun(WINDOW* win, MEDIA_DIR_TREE_STRUCT *pMediaDir);
extern int AudioWinShow;
extern UINT16 gMediaLibSelPathID; // 记录音乐播放媒体库路径ID
/*----------------------------------------------------------------------
Name : MediaDirValueInit
Desc : 对媒体库资源管理器层次结构信息进行初始化
Params: pMediaDir: 目录结构体
Return:
Author: phc
Date : 07-12-02
----------------------------------------------------------------------*/
void MediaDirValueInit(MEDIA_DIR_TREE_STRUCT *pMediaDir)
{
unsigned int i;
for (i = 0; i < (pMediaDir->ScreenNum); i++)
{
RKmemset(&(pMediaDir->BrowserItem[i].MediaFileInfo), 0, sizeof(MEDIABRO_STRUCT));
}
for (i = 0; i < (pMediaDir->ScreenNum) - 1; i++)
pMediaDir->BrowserItem[i].pNext = &pMediaDir->BrowserItem[i+1];
for (i = 1; i < (pMediaDir->ScreenNum); i++)
pMediaDir->BrowserItem[i].pPrev = &pMediaDir->BrowserItem[i-1];
pMediaDir->BrowserItem[0].pPrev = &pMediaDir->BrowserItem[(pMediaDir->ScreenNum)-1];
pMediaDir->BrowserItem[(pMediaDir->ScreenNum)-1].pNext = &pMediaDir->BrowserItem[0];
pMediaDir->pBro = &pMediaDir->BrowserItem[0];
pMediaDir->CurId = 0;
pMediaDir->KeyCounter = 0;
}
/*----------------------------------------------------------------------
Name : MediaBroUpProc
Desc : 媒体库资源管理器
Params: pMediaDir: 目录结构体 uiUpdateType:获取条目方向
Return:
Author: phc
Date : 07-12-02
----------------------------------------------------------------------*/
void MediaBroUpProc(MEDIA_DIR_TREE_STRUCT *pMediaDir, UINT16 uiUpdateType)
{
MEDIABRO_STRUCT *pBro;
UINT16 StartItem = 0;
UINT16 i;
StartItem = pMediaDir->CurId - pMediaDir->KeyCounter;
switch (uiUpdateType)
{
case ALL_BROITEM_UPDATE: // 条目全部更新
for (i = 0; i < (pMediaDir->ScreenNum); i++) // 将显示的几个ITEM清0
{
RKmemset(&(pMediaDir->BrowserItem[i].MediaFileInfo), 0, sizeof(FILE_MEDIAINFO_STRUCT));
pMediaDir->BrowserItem[i].ImageUpdateFlag = MINIATRUE_UPDATE_NEED;
}
pMediaDir->pBro = &pMediaDir->BrowserItem[0];
pBro = pMediaDir->pBro;
for (i = 0;(i < (pMediaDir->ScreenNum)) && (i < (pMediaDir->TotalItem));i++)
{
//pMediaDir->GetMediaFileInfo(&(pBro->MediaFileInfo), pMediaDir->pInfoPath, (UINT16)(StartItem+i));
pMediaDir->GetMediaFileInfo(&(pBro->MediaFileInfo), StartItem + i, pMediaDir->SumBaseId);
#ifdef FILE_ENCRYPT_ENABLE
if (TRUE == IsEncryptFile(pBro->MediaFileInfo.Path, pBro->MediaFileInfo.Name))
{
pBro->EncryptFlag = 1; // 文件已被加密
}
else
{
pBro->EncryptFlag = 0; // 没有加密信息
}
#endif
if (i >= (pMediaDir->ScreenNum) - 1) break;
pBro = pBro->pNext;
}
break;
case UP_UPDATE: // 向上寻找一个条目
pMediaDir->pBro = pMediaDir->pBro->pPrev;
pBro = pMediaDir->pBro;
RKmemset(&(pBro->MediaFileInfo), 0, sizeof(FILE_MEDIAINFO_STRUCT));
pBro->ImageUpdateFlag = MINIATRUE_UPDATE_NEED;
//pMediaDir->GetMediaFileInfo(&(pBro->MediaFileInfo), pMediaDir->pInfoPath, StartItem);
pMediaDir->GetMediaFileInfo(&(pBro->MediaFileInfo), StartItem, pMediaDir->SumBaseId);
#ifdef FILE_ENCRYPT_ENABLE
if (TRUE == IsEncryptFile(pBro->MediaFileInfo.Path, pBro->MediaFileInfo.Name))
{
pBro->EncryptFlag = 1; // 文件已被加密
}
else
{
pBro->EncryptFlag = 0; // 没有加密信息
}
#endif
break;
case DOWN_UPDATE: // 向下寻找一个条目
pBro = pMediaDir->pBro;
RKmemset(&(pBro->MediaFileInfo), 0, sizeof(FILE_MEDIAINFO_STRUCT));
pBro->ImageUpdateFlag = MINIATRUE_UPDATE_NEED;
//pMediaDir->GetMediaFileInfo(&(pBro->MediaFileInfo), pMediaDir->pInfoPath, (UINT16)(pMediaDir->KeyCounter[pMediaDir->CurDeep]+StartItem));
pMediaDir->GetMediaFileInfo(&(pBro->MediaFileInfo), pMediaDir->CurId, pMediaDir->SumBaseId);
#ifdef FILE_ENCRYPT_ENABLE
if (TRUE == IsEncryptFile(pBro->MediaFileInfo.Path, pBro->MediaFileInfo.Name))
{
pBro->EncryptFlag = 1; // 文件已被加密
}
else
{
pBro->EncryptFlag = 0; // 没有加密信息
}
#endif
pMediaDir->pBro = pMediaDir->pBro->pNext;
break;
}
}
/*----------------------------------------------------------------------
Name : MediaBroKeyFun
Desc : 媒体库按键后台处理
Params: pMediaDir: 目录结构体 KeyVal:键值
Return:
Author: phc
Date : 07-12-02
----------------------------------------------------------------------*/
void MediaBroKeyFun(WINDOW* win, MEDIA_DIR_TREE_STRUCT *pMediaDir, UINT16 KeyVal)
{
UINT16 i;
MEDIABRO_STRUCT *pBro = NULL;
switch (KeyVal)
{
case MEDIABRO_DN: // 向下
if (0 == pMediaDir->TotalItem)
break;
if (pMediaDir->CurId < (pMediaDir->TotalItem - 1))
{
pMediaDir->CurId++;
if (pMediaDir->KeyCounter >= pMediaDir->ScreenNum - 1)
{
MediaBroUpProc(pMediaDir, DOWN_UPDATE);
WindowSendMessage(win, WM_ResetAllListItem, 0, pMediaDir);
}
else
{
pMediaDir->KeyCounter++;
//MediaListDispSet(win , 0, pMediaDir);
WindowSendMessage(win, WM_RedisplayAllListItem, 0, pMediaDir);
}
}
else
{
pMediaDir->CurId = 0;
pMediaDir->KeyCounter = 0;
MediaBroUpProc(pMediaDir, ALL_BROITEM_UPDATE);
WindowSendMessage(win, WM_ResetAllListItem, 0, pMediaDir);
}
break;
case MEDIABRO_UP: // 向上
if (0 == pMediaDir->TotalItem)
break;
if (pMediaDir->CurId > 0)
{
pMediaDir->CurId--;
if (pMediaDir->KeyCounter == 0)
{
MediaBroUpProc(pMediaDir, UP_UPDATE);
WindowSendMessage(win, WM_ResetAllListItem, 0, pMediaDir);
}
else
{
pMediaDir->KeyCounter--;
WindowSendMessage(win, WM_RedisplayAllListItem, 0, pMediaDir);
}
}
else
{
pMediaDir->CurId = pMediaDir->TotalItem - 1;
if (pMediaDir->TotalItem > pMediaDir->ScreenNum)
{
pMediaDir->KeyCounter = pMediaDir->ScreenNum - 1;
}
else
{
pMediaDir->KeyCounter = pMediaDir->TotalItem - 1;
}
MediaBroUpProc(pMediaDir, ALL_BROITEM_UPDATE);
WindowSendMessage(win, WM_ResetAllListItem, 0, pMediaDir);
}
break;
case MEDIABRO_SCREEN_LEFT:
MediaAllScreenListKeyLeftFun(win, pMediaDir);
break;
case MEDIABRO_SCREEN_RIGHT:
MediaAllScreenListKeyRightFun(win, pMediaDir);
break;
case MEDIABRO_SCREEN_LINEDN:
MediaAllScreenListKeyLineDnFun(win, pMediaDir, MEDIABRO_SCREEN_LINEDN);
break;
case MEDIABRO_SCREEN_LINEUP:
MediaAllScreenListKeyLineUpFun(win, pMediaDir);
break;
case MEDIABRO_OK: // 打开一个文件或文件夹
if (0 == pMediaDir->TotalItem)
break;
default:
break;
}
}
/*----------------------------------------------------------------------
Name : MediaAllScreenListKeyRightFun
Desc : 媒体库图片缩略图向右按键处理函数
Params:
Return:
Author: phc
Date : 07-12-17
----------------------------------------------------------------------*/
UINT32 MediaAllScreenListKeyRightFun(WINDOW* win, MEDIA_DIR_TREE_STRUCT *pMediaDir)
{
if (0 == (pMediaDir->TotalItem))
return FALSE;
if (pMediaDir->CurId < (pMediaDir->TotalItem - 1)) // 当前文件尚未处于最后一个时
{
if (pMediaDir->KeyCounter >= pMediaDir->ScreenNum - 1) // 光标移到了屏幕最后一个条目需要读取换行数据
{
MediaAllScreenListKeyLineDnFun(win, pMediaDir, MEDIABRO_SCREEN_RIGHT); // 执行换行操作,获取新的一行图片数据
}
else // 改变光标在屏幕中位置,数据无需重新读取
{
pMediaDir->CurId++;
pMediaDir->KeyCounter++;
WindowSendMessage(win, WM_RedisplayAllListItem, 0, pMediaDir);
}
}
else // 处于最后一个文件
{
pMediaDir->CurId = 0;
pMediaDir->KeyCounter = 0;
if (pMediaDir->TotalItem > pMediaDir->ScreenNum - 1)
{
MediaBroUpProc(pMediaDir, ALL_BROITEM_UPDATE);
WindowSendMessage(win, WM_ResetAllListItem, 0, pMediaDir);
}
else // 总图片数小于屏幕显示条目数时
{
WindowSendMessage(win, WM_RedisplayAllListItem, 0, pMediaDir);
}
}
return TRUE;
}
/*----------------------------------------------------------------------
Name : MediaAllScreenListKeyLeftFun
Desc : 媒体库图片缩略图向左寻找文件处理函数
Params:
Return:
Author: phc
Date : 07-12-17
----------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -