#include "utility/xmlstorage.h"
+using namespace XMLStorage;
+
+#include "taskbar/favorites.h"
+
/// management of file types
struct FileTypeInfo {
ICID_NETWORK,
ICID_COMPUTER,
ICID_LOGOFF,
+ ICID_SHUTDOWN,
+ ICID_BOOKMARK,
+ ICID_MINIMIZE,
+ ICID_CONTROLPAN,
+ ICID_DESKSETTING,
+ ICID_NETCONNS,
+ ICID_ADMINISTRATION,
+ ICID_RECENT,
ICID_DYNAMIC
};
void draw(HDC hdc, int x, int y, int cx, int cy, COLORREF bk_color, HBRUSH bk_brush) const;
HBITMAP create_bitmap(COLORREF bk_color, HBRUSH hbrBkgnd, HDC hdc_wnd) const;
+ int add_to_imagelist(HIMAGELIST himl, HDC hdc_wnd, COLORREF bk_color=GetSysColor(COLOR_WINDOW), HBRUSH bk_brush=GetSysColorBrush(COLOR_WINDOW)) const;
int get_sysiml_idx() const {return _itype==IT_SYSCACHE? _sys_idx: -1;}
+ HICON get_hicon() const {return _itype!=IT_SYSCACHE? _hicon: 0;}
bool destroy() {if (_itype == IT_DYNAMIC) {DestroyIcon(_hicon); return true;} else return false;}
};
struct IconCache {
- IconCache() : _himlSys(0) {}
+ IconCache() : _himlSys_small(0) {}
void init();
- const Icon& extract(const String& path);
- const Icon& extract(LPCTSTR path, int idx);
- const Icon& extract(IExtractIcon* pExtract, LPCTSTR path, int idx);
+ const Icon& extract(LPCTSTR path, ICONCACHE_FLAGS flags=ICF_NORMAL);
+ const Icon& extract(LPCTSTR path, int idx, ICONCACHE_FLAGS flags=ICF_HICON);
+ const Icon& extract(IExtractIcon* pExtract, LPCTSTR path, int idx, ICONCACHE_FLAGS flags=ICF_HICON);
const Icon& add(HICON hIcon, ICON_TYPE type=IT_DYNAMIC);
const Icon& add(int sys_idx/*, ICON_TYPE type=IT_SYSCACHE*/);
const Icon& get_icon(int icon_id);
- HIMAGELIST get_sys_imagelist() const {return _himlSys;}
+
+ HIMAGELIST get_sys_imagelist() const {return _himlSys_small;}
void free_icon(int icon_id);
typedef map<int, Icon> IconMap;
IconMap _icons;
- typedef map<String, ICON_ID> PathMap;
- PathMap _pathMap;
+ typedef pair<String,int/*ICONCACHE_FLAGS*/> CacheKey;
+ typedef map<CacheKey, ICON_ID> PathCacheMap;
+ PathCacheMap _pathCache;
- typedef pair<String, int> CachePair;
- typedef map<CachePair, ICON_ID> PathIdxMap;
- PathIdxMap _pathIdxMap;
+ typedef pair<String,pair<int,int/*ICONCACHE_FLAGS*/> > IdxCacheKey;
+ typedef map<IdxCacheKey, ICON_ID> IdxCacheMap;
+ IdxCacheMap _idxCache;
- HIMAGELIST _himlSys;
+ HIMAGELIST _himlSys_small;
};
+#define ICON_SIZE_X GetSystemMetrics(large_icons? SM_CXICON: SM_CXSMICON)
+#define ICON_SIZE_Y GetSystemMetrics(large_icons? SM_CYICON: SM_CYSMICON)
+
+
/// create a bitmap from an icon
-extern HBITMAP create_bitmap_from_icon(HICON hIcon, HBRUSH hbrush_bkgnd, HDC hdc_wnd);
+extern HBITMAP create_bitmap_from_icon(HICON hIcon, HBRUSH hbrush_bkgnd, HDC hdc_wnd/*, bool large_icons*/);
/// add icon with alpha channel to imagelist using the specified background color
extern int ImageList_AddAlphaIcon(HIMAGELIST himl, HICON hIcon, HBRUSH hbrush_bkgnd, HDC hdc_wnd);
{
ExplorerGlobals();
- void init(HINSTANCE hInstance);
+ void init(HINSTANCE hInstance);
+
+ void read_persistent();
+ void write_persistent();
+
+ XMLPos get_cfg();
+ XMLPos get_cfg(const char* path);
HINSTANCE _hInstance;
- ATOM _hframeClass;
UINT _cfStrFName;
+
+#ifndef ROSSHELL
+ ATOM _hframeClass;
HWND _hMainWnd;
- bool _prescan_nodes;
bool _desktop_mode;
+ bool _prescan_nodes;
+#endif
FILE* _log;
Desktops _desktops;
XMLDoc _cfg;
+ String _cfg_dir;
+ String _cfg_path;
+
+ Favorites _favorites;
+ String _favorites_path;
} g_Globals;