📄 mediabroshedulenew.c
字号:
UINT32 MediaAllScreenListKeyLeftFun(WINDOW* win, MEDIA_DIR_TREE_STRUCT *pMediaDir)
{
UINT16 i;
MEDIABRO_STRUCT *pBro;
if (0 == pMediaDir->TotalItem)
return FALSE;
if (pMediaDir->CurId == 0) // 当前为第一个文件
{
pMediaDir->CurId = pMediaDir->TotalItem - 1;
if (pMediaDir->TotalItem > pMediaDir->ScreenNum - 1) // 文件个数超过一个屏幕显示个数情况
{
pBro = pMediaDir->pBro;
for (i = 0;i < pMediaDir->ScreenNum;i++)
{
RKmemset(&(pBro->MediaFileInfo), 0, sizeof(FILE_MEDIAINFO_STRUCT));
pBro->ImageUpdateFlag = MINIATRUE_UPDATE_NEED; // 缩略图更新标志置0
pBro = pBro->pNext;
}
pMediaDir->KeyCounter = pMediaDir->ScreenNum - IMAG_NUM_PER_LINE + (pMediaDir->TotalItem - 1) % IMAG_NUM_PER_LINE;;
MediaBroUpProc(pMediaDir, ALL_BROITEM_UPDATE);
WindowSendMessage(win, WM_ResetAllListItem, 0, pMediaDir);
}
else // 文件个数少于一个屏幕显示个数情况
{
pMediaDir->KeyCounter = pMediaDir->TotalItem - 1;
WindowSendMessage(win, WM_RedisplayAllListItem, 0, pMediaDir);
}
}
else if (pMediaDir->CurId > 0)
{
if (0 == pMediaDir->KeyCounter) // 需要向上翻一行时
{
pMediaDir->KeyCounter = 3;
pMediaDir->CurId--;
MediaBroUpProc(pMediaDir, ALL_BROITEM_UPDATE);
WindowSendMessage(win, WM_ResetAllListItem, 0, pMediaDir);
}
else // 无需向上翻行,只需改变光标位置
{
pMediaDir->KeyCounter--;
pMediaDir->CurId--;
WindowSendMessage(win, WM_RedisplayAllListItem, 0, pMediaDir);
}
}
return TRUE;
}
/*----------------------------------------------------------------------
Name : MediaAllScreenListKeyLineDnFun
Desc : 媒体库图片缩略图向下翻行处理函数
Params: KeyType:键类型,区分向右按键的换行要求还是向下按键的换行要求
Return:
Author: phc
Date : 07-10-20
----------------------------------------------------------------------*/
UINT32 MediaAllScreenListKeyLineDnFun(WINDOW* win, MEDIA_DIR_TREE_STRUCT *pMediaDir, UINT16 KeyType)
{
UINT16 i, j;
MEDIABRO_STRUCT *pBro;
UINT16 Temp = 0;
if (pMediaDir->TotalItem == 0)
return FALSE;
if ((pMediaDir->CurId / IMAG_NUM_PER_LINE) == ((pMediaDir->TotalItem - 1) / IMAG_NUM_PER_LINE)) // 当处于最后一行时
{
return TRUE;
}
else if (pMediaDir->KeyCounter / IMAG_NUM_PER_LINE == 2) // 需要下翻一行
{
pBro = pMediaDir->pBro; // 记录当前九宫图第一个文件结构体
/*将第一行三个文件信息清0,并设定下一行的第一个文件为9宫图第一个文件*/
for (i = 0;i < IMAG_NUM_PER_LINE;i++)
{
RKmemset(&(pMediaDir->pBro->MediaFileInfo), 0, sizeof(FILE_MEDIAINFO_STRUCT));
pMediaDir->pBro->ImageUpdateFlag = MINIATRUE_UPDATE_NEED; // 缩略图更新标志置0
pMediaDir->pBro = pMediaDir->pBro->pNext;
}
if (KeyType == MEDIABRO_SCREEN_LINEDN)
{
pMediaDir->CurId += IMAG_NUM_PER_LINE;
if (pMediaDir->CurId > (pMediaDir->TotalItem - 1))
{
pMediaDir->CurId = pMediaDir->TotalItem - 1;
pMediaDir->KeyCounter = IMAG_LAST_LINE_STARNO + pMediaDir->CurId % IMAG_NUM_PER_LINE;
}
/* 获取下一行文件信息 */
Temp = pMediaDir->CurId - pMediaDir->CurId % IMAG_NUM_PER_LINE;
}
else
{
pMediaDir->CurId++;
pMediaDir->KeyCounter = IMAG_LAST_LINE_STARNO;
Temp = pMediaDir->CurId;
}
for (i = 0;i < IMAG_NUM_PER_LINE;i++)
{
pMediaDir->GetMediaFileInfo(&(pBro->MediaFileInfo), Temp, pMediaDir->SumBaseId);
#ifdef FILE_ENCRYPT_ENABLE
if (TRUE == IsEncryptFile(pBro->MediaFileInfo.Path, pBro->MediaFileInfo.Name))
{
pBro->EncryptFlag = 1; // 文件已被加密
}
else
{
pBro->EncryptFlag = 0; // 没有加密信息
}
#endif
pBro = pBro->pNext;
Temp++;
if (Temp >= pMediaDir->TotalItem) // 出现在最后一行
break;
}
WindowSendMessage(win, WM_ResetAllListItem, 0, pMediaDir);
}
else // 在屏幕范围内移动光标,信息不需要重新读取,只需改变光便及滚动条位置
{
if ((pMediaDir->CurId + IMAG_NUM_PER_LINE) >= pMediaDir->TotalItem)
{
pMediaDir->KeyCounter += (pMediaDir->TotalItem - 1) - pMediaDir->CurId;
pMediaDir->CurId = pMediaDir->TotalItem - 1;
}
else
{
pMediaDir->CurId += IMAG_NUM_PER_LINE;
pMediaDir->KeyCounter += IMAG_NUM_PER_LINE;
}
if (pMediaDir->CurId > (pMediaDir->TotalItem - 1))
{
pMediaDir->CurId = pMediaDir->TotalItem - 1;
pMediaDir->KeyCounter = (pMediaDir->TotalItem - 1) % (pMediaDir->ScreenNum);
}
WindowSendMessage(win, WM_RedisplayAllListItem, 0, pMediaDir);
}
return TRUE;
}
/*----------------------------------------------------------------------
Name : MediaAllScreenListKeyLineUpFun
Desc : 媒体库图片缩略图按键向上翻行寻找文件处理函数
Params:
Return:
Author: phc
Date : 07-12-17
----------------------------------------------------------------------*/
UINT32 MediaAllScreenListKeyLineUpFun(WINDOW* win, MEDIA_DIR_TREE_STRUCT *pMediaDir)
{
UINT16 Temp = 0;
if (pMediaDir->TotalItem == 0)
return FALSE;
if ((pMediaDir->CurId) < IMAG_NUM_PER_LINE) // 到顶
return TRUE;
if (pMediaDir->KeyCounter / IMAG_NUM_PER_LINE > 0)
{
pMediaDir->CurId -= IMAG_NUM_PER_LINE;
pMediaDir->KeyCounter -= IMAG_NUM_PER_LINE;
WindowSendMessage(win, WM_RedisplayAllListItem, 0, pMediaDir);
}
else
{
Temp = pMediaDir->KeyCounter % IMAG_NUM_PER_LINE;
pMediaDir->KeyCounter = 0;
pMediaDir->CurId -= IMAG_NUM_PER_LINE;
pMediaDir->CurId -= Temp;
MediaBroUpProc(pMediaDir, ALL_BROITEM_UPDATE);
pMediaDir->KeyCounter = Temp;
pMediaDir->CurId += Temp;
WindowSendMessage(win, WM_ResetAllListItem, 0, pMediaDir);
}
return TRUE;
}
/*----------------------------------------------------------------------
Name : OpenMediaFile
Desc : 从媒体库打开文件
Params: pBro:资源管理器待打开条目信息结构体
Return:
Author: phc
Date : 07-10-08
----------------------------------------------------------------------*/
UINT32 OpenMediaFile(WINDOW *win, MEDIA_DIR_TREE_STRUCT *pMediaDir)
{
FS_FILE* fFile = NULL;
char FilePath[2+FS_MAX_DIR_DEPTH*(11+1)+4];
FILE_SAVE_STRUCT FileInfo;
MEDIABRO_STRUCT *pBro;
UINT16 i;
pBro = pMediaDir->pBro;
for (i = 0; i < pMediaDir->KeyCounter; i++)
pBro = pBro->pNext;
RKmemset(&Sysfile1Info, 0, sizeof(SYS_FILE_INFO)); // 清空sysfileinfo
RKmemcpy(Sysfile1Info.Path, pBro->MediaFileInfo.Path, FS_MAX_PATH_LEN);
RKmemcpy(Sysfile1Info.Name, pBro->MediaFileInfo.Name, 11);
Sysfile1Info.pLongPath = PlayLongDirPath;
Sysfile1Info.MediaSelPathID = gMediaLibSelPathID;
RKstrcpy(FilePath, Sysfile1Info.Path);
RKstrcat(FilePath, Sysfile1Info.Name);
fFile = RKFSFileOpen(FilePath, "r");
if (fFile == NULL)
{
BrowserFileNoExistCreate(win, 0, NULL); // 文件打开失败
return FALSE;
}
FS_GetLongFileName(fFile, (char *)Sysfile1Info.LongFileName); // 获取长文件名
if (Sysfile1Info.LongFileName[0] == 0)
{
for (i = 0; i < 8; i++)
{
Sysfile1Info.LongFileName[i] = Sysfile1Info.Name[i];
if (Sysfile1Info.Name[i] == ' ')
break;
}
Sysfile1Info.LongFileName[i++] = '.';
Sysfile1Info.LongFileName[i++] = Sysfile1Info.Name[8];
Sysfile1Info.LongFileName[i++] = Sysfile1Info.Name[9];
Sysfile1Info.LongFileName[i++] = Sysfile1Info.Name[10];
}
if (pMediaDir->MediaSelType == ALL_MUSIC_SEARCH_PLAY_TYPE)
{
Sysfile1Info.TotalFiles = pMediaDir->TotalItem - 1;
Sysfile1Info.CurrentFileNum = pMediaDir->CurId;
//CopySearchInfoToPlayBuffer(); // 将搜索信息拷贝到搜索播放列表中,旨在预防正在播放中重新搜索了音乐
}
else
{
Sysfile1Info.TotalFiles = pMediaDir->TotalItem;
Sysfile1Info.CurrentFileNum = pMediaDir->CurId + 1;
}
Sysfile1Info.callback = FindMediaMusic; // 获取下一个文件回调函数
if (TRUE == FS_FileExtNameMatch(&(Sysfile1Info.Name[8]), MusicFileExtString))
{
Sysfile1Info.MusicInfo.MusicOpenType = pMediaDir->MediaSelType;
if (pMediaDir->MediaSelType == FAVORITE_MEDIA_PLAY_TYPE)
{
Sysfile1Info.MusicInfo.SortStarId = pMediaDir->SumBaseId;
}
else
{
Sysfile1Info.MusicInfo.SortStarId = pBro->MediaFileInfo.SorIndex;
}
/* ID3重新获取,有待改进 */
RKmemset(&FileInfo, 0, sizeof(FILE_SAVE_STRUCT));
GetAudioId3Info(fFile , &FileInfo, Sysfile1Info.Name);
RKmemcpy(Sysfile1Info.MusicInfo.ID3Title, FileInfo.ID3Title, 30*2);
RKmemcpy(Sysfile1Info.MusicInfo.ID3Artist, FileInfo.ID3Artist, 30*2);
RKmemcpy(Sysfile1Info.MusicInfo.ID3Album, FileInfo.ID3Album, 30*2);
AudioWinShow = 1;//显示音频前台,added by cf
ProcStartAppGuidEx(GUID_EXE_AUDIO , NULL , ProcGetProcGuid(GUID_EXE_DESKTOP) , NULL , (void*)&Sysfile1Info);
}
else if (TRUE == FS_FileExtNameMatch(&(Sysfile1Info.Name[8]), JpegFileExtString))
{
//RKSemObtain(&ImageHandleUseSem);
ProcStartAppGuidEx(GUID_EXE_PIC , NULL , ProcGetProcGuid(GUID_EXE_DESKTOP) , NULL , &Sysfile1Info);
}
else if (TRUE == FS_FileExtNameMatch(&(Sysfile1Info.Name[8]), MovieFileExtString))
{
ProcStartAppGuidEx(GUID_EXE_VIDEO, NULL , ProcGetProcGuid(GUID_EXE_DESKTOP) , NULL , (void*)&Sysfile1Info);
}
else if (TRUE == FS_FileExtNameMatch(&(Sysfile1Info.Name[8]), TextFileExtString))
{
TextModelInterface(win , &Sysfile1Info);
}
RKFSFileClose(fFile);
return TRUE;
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -