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

📄 musicbrowserapi.c

📁 C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码
💻 C
📖 第 1 页 / 共 2 页
字号:
//********************************************************************
// Name:     PhotoBrowserAPI.c
// 
// Copyright (C) Sitronix TECHNOLOGY INC.
// All rights reserved by Sitronix TECHNOLOGY INC.
//
// Project:    ST3110
// Author:      Terry Wu
// Begin Date:  2008/05/19
// Last update: 
// $Header: $
// Description:
//   PhotoBrowser 
//   
//   
//********************************************************************

#pragma codeseg(APP)
#include "sys.h"
#include "img_position.h"
#include "ST3110_img_define.h"
#include "multilanguage.h"
#include "MusicBrowser.h"
#include "MusicPlayer.h"
#include <string.h>



void _music_browser_init(void);
void _music_browser_thu(void); // show thumbnail
void _music_show_name(uint8 result, uint8 index);
void _music_show_item_icon(uint8 type, uint8 index, int16 file_curr_paint_item);
uint8 _load_path(uint32 ram_path_adr);
uint8 _load_base_path(uint8 *base_folder_ptr);
uint8 _get_battery_icon_index(void);

uint16 file_curr_sel_item;
uint16 Folders,Files;
//page:0~255  file_curr_sel_icon:0~8  file_pre_sel_icon:0~8
uint8 page,file_curr_sel_icon,file_pre_sel_icon; 
uint8 root_order,file_repaint_flag,nand_sd_flag,language;
uint8 sfnPtr[13],lfnPtr[256];
uint16 total_page,total_item;
uint8 volume,repeat;//,battery;
uint8 music_flag;

//***************************************************************************
// Func:        void _music_browser_init(void)
// Input:       none
// Output:      none
//
// Description: init music broswer variable and show background image      
//
//***************************************************************************
void _music_browser_init(void)
{
  uint8 target_file_flag;
  uint16 cur_item_amount;
 
  // init varible
  //check if background song is played
  if( (API_MusicGetThreadState() == TS_PAUSE) || (API_MusicGetThreadState() == TS_PLAY) )
   music_flag=TRUE;
  else
   music_flag=FALSE;
  
  file_repaint_flag = API_SysReadValue(RAM_SHARING_ADR,MUS_PAINT_FLAG); 
  root_order = API_SysReadValue(RAM_SHARING_ADR,ROOT_ORDER);
  nand_sd_flag = API_SysReadValue(RAM_SHARING_ADR,IS_NAND_SD);
  volume = API_SysReadValue(RAM_SETTING_ADR,SET_VOLUME); // 0~16
  repeat = API_SysReadValue(RAM_SETTING_ADR,SET_REPEAT); //0~4
  language = API_SysReadValue(RAM_SETTING_ADR,SET_LANGUAGE);
  API_FATGetItemAmountInFolder(&Folders,&Files,FF_MUSIC_FORM);

  // show mode by file_repaint_flag
  // file_repaint_flag : 0 from MusicEvent--no change page
  // file_repaint_flag : 1 from PhotoBrowser
  // file_repaint_flag : 2 from MusicEvent--change page
  // file_repaint_flag : 3 from Music player
  //get file_curr_sel_icon, file_pre_sel_icon ,page
  //output : file_curr_sel_icon, file_pre_sel_icon ,page
  if(file_repaint_flag == 1 || file_repaint_flag == 3)
  {
   if(file_repaint_flag == 1)
   {
#if RECORD_PATH
    target_file_flag = _load_path(RAM_MUS_PATH_ADR);
    root_order = API_SysReadValue(RAM_SHARING_ADR,ROOT_ORDER);
    API_FATGetItemAmountInFolder(&Folders,&Files,FF_MUSIC_FORM);
#else
    target_file_flag = FALSE;
    _load_base_path(MUS_FOLDER_NAME);
    root_order = API_SysReadValue(RAM_SHARING_ADR,ROOT_ORDER);
    API_FATGetItemAmountInFolder(&Folders,&Files,FF_MUSIC_FORM);
#endif
   }
   else
    target_file_flag = TRUE;
   
   // calculate file_curr_sel_icon,file_pre_sel_icon,page
   if(target_file_flag)
   {
    file_curr_sel_item = API_SysReadValue2B(RAM_MUS_PATH_ADR,root_order*2)+Folders;
    
    cur_item_amount = file_curr_sel_item;
   
    if(root_order) // add return last layer icon
     cur_item_amount++;
    if(music_flag) //add return music icon 
     cur_item_amount++;
    
    file_curr_sel_icon = (cur_item_amount-1)%MUSBRO_ITEM;
    file_pre_sel_icon = 0;

    if((cur_item_amount%MUSBRO_ITEM)!=0 )
     page = (cur_item_amount/MUSBRO_ITEM);
    else
     page = (cur_item_amount/MUSBRO_ITEM)-1;
    
   }
   else
   {
    cur_item_amount = 0;
    file_curr_sel_item = 0;
    file_curr_sel_icon = 0;
    file_pre_sel_icon = 0;
    page = 0;
   }
    
  }
  else //show mode 0 or 3
  {
   file_curr_sel_icon = API_SysReadValue(RAM_SHARING_ADR,MUS_CUR_SEL);      //0~8
   file_pre_sel_icon = API_SysReadValue(RAM_SHARING_ADR,MUS_PRE_SEL);       //0~8   
   page = API_SysReadValue(RAM_SHARING_ADR,MUS_PAGE);                       //0~255
  }

  // save music browser parameter
  API_SysWriteValue(RAM_SHARING_ADR,MUS_PAGE,page); 
  API_SysWriteValue(RAM_SHARING_ADR,MUS_CUR_SEL,file_curr_sel_icon); 
  API_SysWriteValue(RAM_SHARING_ADR,MUS_PRE_SEL,0); 
  API_SysWriteValue(RAM_SHARING_ADR,MUS_PAINT_FLAG,TRUE); 

  if(root_order) // add return icon
   total_item = Folders+Files+1;
  else
   total_item = Folders+Files;

  if(music_flag) // add return music icon
   total_item = total_item +1;

  if( (total_item)%MUSBRO_ITEM != 0)
   total_page = (total_item/MUSBRO_ITEM) + 1;
  else 
   total_page = (total_item/MUSBRO_ITEM);
  

  if(file_repaint_flag)
  {
   if(language == 2)
    API_LcmSetLanguage(CS_GBK);
   else
    API_LcmSetLanguage(CS_BIG5);
   API_LcmSetCharForm(CHFS_16x16);
   API_LcmSetCharColor(COLOR_WHITE,COLOR_DPF_BG);
   API_LcmEnableKeepBackGround();
  }

  if(API_SysReadValue(RAM_SHARING_ADR,LAST_TASK) != TASKID_MUSICEVENT)
  {
   //show BG and volume ...iocn
   API_LcmPutSysImage(IMG_BACKGD,POS_PHOMENU_BG_X,POS_PHOMENU_BG_Y);
   API_LcmPutSysImage(IMG_HEADER_MUSIC,POS_MUSBRO_LOG_X,POS_MUSBRO_LOG_X);
   API_LcmPutSysImage(IMG_TEXT_HEADER_MUSIC_EN+language,POS_MUSBRO_TITLE_X,POS_MUSBRO_TITLE_Y);
   API_LcmPutSysImage((volume/2)+IMG_VOLUME_0,POS_MUSBRO_VOL_X,POS_MUSBRO_VOL_Y);
   API_LcmPutSysImage(repeat+IMG_REPEAT_0,POS_MUSBRO_REPEAT_X,POS_MUSBRO_REPEAT_Y);
   //show battery icon
   API_LcmPutSysImage(IMG_BATTERY_0+_get_battery_icon_index(),POS_MUSBRO_BATTERY_X,POS_MUSBRO_BATTERY_Y);  
  }
}

//***************************************************************************
// Func:        void _music_browser_thu(void)
// Input:       none
// Output:      none
//
// Description: show music icon and music info
//
//***************************************************************************
void _music_browser_thu(void) 
{
 uint8 index;
 uint8 move_h;
 int16 file_curr_paint_item;

 API_LcmEnableKeepBackGround();
 //clean previous sel bar first
 API_LcmPutSysImage(IMG_NO_SELECT_BAR,POS_MUSBRO_SEL_X,POS_MUSBRO_SEL_Y+(file_pre_sel_icon*POS_MUSBRO_SEL_GAP_Y)); 
 for(index = 0;index<MUSBRO_ITEM;index++)
 {
  //caculate file_curr_paint_item  -1 : return music 0 : return last layer
   if(root_order) //after second layer
    file_curr_paint_item = (page*MUSBRO_ITEM) + index; //item number is from 0
   else //root
    file_curr_paint_item = (page*MUSBRO_ITEM) + index+1; //item number is from 1

   if(music_flag)
    file_curr_paint_item = file_curr_paint_item -1;
   
   //when music is playing and in root //special case
   if(music_flag && (root_order == 0) && (file_curr_paint_item == 0))
    file_curr_paint_item = -1;
    
    
   // assign appropriate type
   if((file_repaint_flag) || (index == file_curr_sel_icon) ||(index == file_pre_sel_icon) )
   {
    if(file_curr_paint_item == -1)
    {
       _music_show_item_icon(ICON_PLAY,index,file_curr_paint_item);
    }
    else if(file_curr_paint_item == 0)
    {
     _music_show_item_icon(ICON_RETURN,index,file_curr_paint_item);
    }
    //show folder icon and name 
    else if( (file_curr_paint_item >=1) && (file_curr_paint_item <=Folders))
    {
       _music_show_item_icon(ICON_FOLDER,index,file_curr_paint_item);
    }
    else if( (file_curr_paint_item >= Folders+1) && (file_curr_paint_item <= Folders+Files) )
    {
     // show file icon and name
        _music_show_item_icon(ICON_FILE,index,file_curr_paint_item);
    }
    else //clean sel and thu
    {
     API_LcmPutSysImage(IMG_NO_SELECT_BAR,POS_MUSBRO_SEL_X,POS_MUSBRO_SEL_Y+(index*POS_MUSBRO_SEL_GAP_Y));
    }
   }
 }

 //if there is no folder and file, show amount
 if( total_item == 0)
  _music_show_item_icon(ICON_NOFILE,0,0);


  // show page bar
 if(file_repaint_flag)
 {
   API_LcmPutSysImage(IMG_MOVE_BAR,POS_MUSBRO_MOVBAR_X,POS_MUSBRO_MOVBAR_Y);
   if( (page == total_page -1) && (page!=0))
   {
    API_LcmPutSysImage(IMG_MOVE,POS_MUSBRO_EMOV_X,POS_MUSBRO_EMOV_Y);
   }
   else
   {
    move_h = (POS_MUSBRO_MOVEBARLEN/(total_page-1));
    API_LcmPutSysImage(IMG_MOVE,POS_MUSBRO_SMOV_X,POS_MUSBRO_SMOV_Y+(move_h*page));
   }
 }
 
}

//***************************************************************************
// Func:        void _music_show_name(uint8 result)
// Input:       result 

⌨️ 快捷键说明

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