Subversion Repositories Kolibri OS

Rev

Rev 8868 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. _ini icons_ini = { "/sys/File managers/icons.ini", NULL };
  2.  
  3. struct ICONS_INI {
  4.         collection exts;
  5.         collection_int i18;
  6.         collection_int i32;
  7.         int get();
  8. } ini_icons;
  9.  
  10. int ICONS_INI::get(dword _file_path, _ext, int size)
  11. {
  12.         char file_4bytes[4], ext[7];
  13.         int  ext_pos;
  14.         if (!_ext) {
  15.                 ReadFile(0,4,#file_4bytes,_file_path);
  16.                 IF(DSDWORD[#file_4bytes]=='KCPK')
  17.                 ||(DSDWORD[#file_4bytes]=='UNEM') {
  18.                         _ext = "kex";
  19.                 }
  20.         }
  21.         strlcpy(#ext, _ext, sizeof(ext));
  22.         strlwr(#ext);
  23.         ext_pos = exts.get_pos_by_name(#ext);
  24.         if (ext_pos != -1) {
  25.                 if (size == 18) return i18.get(ext_pos);
  26.                 else if (size == 32) return i32.get(ext_pos);
  27.         } else {
  28.                 exts.add(#ext);
  29.                         icons_ini.section = "icons16";
  30.                         i18.set(exts.count-1, icons_ini.GetInt(#ext, 2));
  31.  
  32.                         icons_ini.section = "icons32";
  33.                         i32.set(exts.count-1, icons_ini.GetInt(#ext, 95));
  34.                 return get(#ext, size);
  35.         }
  36. }
  37.  
  38. void DrawIconByExtension(dword file_path, extension, xx, yy, fairing_color)
  39. {
  40.         char ext[7];
  41.         int icon_n = 2;
  42.         dword selected_image;
  43.         dword default_image;
  44.  
  45.         if (ESBYTE[file_path+1]!='k') && (ESBYTE[file_path+1]!='s') && (chrnum(file_path, '/')==2) {
  46.                 if (ESBYTE[file_path+1]=='/') ext[0] = ESBYTE[file_path+2];
  47.                         else ext[0] = ESBYTE[file_path+1];
  48.                 ext[1] = '\0';
  49.                 if (big_icons.checked) {
  50.                         icons_ini.section = "drives32";
  51.                         icon_n = icons_ini.GetInt(#ext, 50);
  52.                 } else {
  53.                         icons_ini.section = "drives16";
  54.                         icon_n = icons_ini.GetInt(#ext, 50);
  55.                 }
  56.         } else {
  57.                 icon_n = ini_icons.get(file_path, extension, icon_size);
  58.         }
  59.  
  60.         if (big_icons.checked) {
  61.                 selected_image = icons32_selected.image;
  62.                 default_image = icons32_default.image;
  63.         } else {
  64.                 selected_image = icons16_selected.image;
  65.                 default_image = icons16_default.image;
  66.         }
  67.  
  68.         if (fairing_color==col.selec) {
  69.                 img_draw stdcall(selected_image, xx, yy, icon_size, icon_size, 0, icon_n*icon_size);
  70.         } else {
  71.                 img_draw stdcall(default_image, xx, yy, icon_size, icon_size, 0, icon_n*icon_size);
  72.         }
  73. }
  74.  
  75.