00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifdef WIN32
00019 #ifndef FXNETWORKLISTEX_H
00020 #define FXNETWORKLISTEX_H
00021
00022 #ifndef FXTREEELIST_H
00023 #include <fox/FXTreeList.h>
00024 using namespace FX;
00025 #endif
00026 namespace FXEX {
00027
00028
00029 enum {
00030 NETWORKLISTEX_SHOWSHARES = 0x08000000
00031 };
00032
00033
00034
00035
00036 class FXAPI FXNetworkItemEx : public FXTreeItem {
00037 FXDECLARE(FXNetworkItemEx)
00038 friend class FXNetworkListEx;
00039
00040 protected:
00041 FXuint type;
00042 NETRESOURCE *netres;
00043
00044 protected:
00045 FXNetworkItemEx():FXTreeItem(),type(0),netres(NULL){}
00046 void setNetResource(const NETRESOURCE* nr);
00047
00048 private:
00049 void freeNetResource();
00050
00051 protected:
00052 enum {
00053 CONNECTABLE = 256,
00054 CONTAINER = 512
00055 };
00056 enum {
00057 NETWORKITEMEX_GENERIC = 0,
00058 NETWORKITEMEX_NETHOOD = 1,
00059 NETWORKITEMEX_ROOT = 2,
00060 NETWORKITEMEX_NETWORK = 4,
00061 NETWORKITEMEX_DOMAIN = 8,
00062 NETWORKITEMEX_COMPUTER = 16,
00063 NETWORKITEMEX_SHARE = 32
00064 };
00065
00066 public:
00067
00068 FXNetworkItemEx(const FXString& text,FXIcon* oi=NULL,FXIcon* ci=NULL,void* ptr=NULL):FXTreeItem(text,oi,ci,ptr),type(NETWORKITEMEX_GENERIC),netres(NULL){}
00069
00070
00071 FXbool isConnectable() const {return (state&CONNECTABLE)!=0;}
00072 FXbool isContainer() const {return (state&CONTAINER)!=0;}
00073
00074
00075 FXbool isGeneric() const {return (type&NETWORKITEMEX_GENERIC)!=0;}
00076 FXbool isNethood() const {return (type&NETWORKITEMEX_NETHOOD)!=0;}
00077 FXbool isRoot() const {return (type&NETWORKITEMEX_ROOT)!=0;}
00078 FXbool isNetwork() const {return (type&NETWORKITEMEX_NETWORK)!=0;}
00079 FXbool isDomain() const {return (type&NETWORKITEMEX_DOMAIN)!=0;}
00080 FXbool isComputer() const {return (type&NETWORKITEMEX_COMPUTER)!=0;}
00081 FXbool isShare() const {return (type&NETWORKITEMEX_SHARE)!=0;}
00082
00083
00084 virtual ~FXNetworkItemEx();
00085 };
00086
00087
00088
00089
00090 class FXAPI FXNetworkListEx : public FXTreeList {
00091 FXDECLARE(FXNetworkListEx)
00092
00093 protected:
00094 FXIcon *nethoodicon;
00095 FXIcon *genericicon;
00096 FXIcon *rooticon;
00097 FXIcon *networkicon;
00098 FXIcon *domainicon;
00099 FXIcon *computericon;
00100 FXIcon *shareicon;
00101
00102 protected:
00103 FXNetworkListEx() : FXTreeList() {}
00104 virtual FXTreeItem* createItem(const FXString& text,FXIcon* oi,FXIcon* ci,void* ptr);
00105 FXbool listNetworkPlaces();
00106 FXbool enumerateNetwork(FXNetworkItemEx* par,NETRESOURCE* container);
00107 FXbool relistNetworkPlaces();
00108
00109 private:
00110 FXNetworkListEx(const FXNetworkListEx&);
00111 FXNetworkListEx &operator=(const FXNetworkListEx&);
00112
00113 public:
00114 long onOpened(FXObject*,FXSelector,void*);
00115 long onClosed(FXObject*,FXSelector,void*);
00116 long onExpanded(FXObject*,FXSelector,void*);
00117 long onCollapsed(FXObject*,FXSelector,void*);
00118 long onCmdSetValue(FXObject*,FXSelector,void*);
00119 long onCmdSetStringValue(FXObject*,FXSelector,void*);
00120 long onCmdGetStringValue(FXObject*,FXSelector,void*);
00121
00122 public:
00123 static FXint cmpName(const FXTreeItem* a,const FXTreeItem* b);
00124
00125 public:
00126 enum {
00127 ID_REFRESH=FXTreeList::ID_LAST,
00128 ID_LAST
00129 };
00130
00131 public:
00132
00133 FXNetworkListEx(FXComposite *p,FXint nvis,FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=0,FXint x=0,FXint y=0,FXint w=0,FXint h=0);
00134
00135
00136 virtual void create();
00137
00138
00139 virtual void detach();
00140
00141
00142 virtual void destroy();
00143
00144
00145 FXbool refreshNetworkList(FXbool waitCursor=FALSE);
00146
00147
00148 void showNetworkShares(FXbool show,FXbool refresh=FALSE,FXbool waitCursor=FALSE);
00149 FXbool showNetworkShares() const;
00150
00151
00152 FXbool isItemConnectable(const FXTreeItem* item) const;
00153 FXbool isItemContainer(const FXTreeItem* item) const;
00154
00155
00156 FXbool isItemGeneric(const FXNetworkItemEx* item) const;
00157 FXbool isItemNethood(const FXNetworkItemEx* item) const;
00158 FXbool isItemRoot(const FXNetworkItemEx* item) const;
00159 FXbool isItemNetwork(const FXNetworkItemEx* item) const;
00160 FXbool isItemDomain(const FXNetworkItemEx* item) const;
00161 FXbool isItemComputer(const FXNetworkItemEx* item) const;
00162 FXbool isItemShare(const FXNetworkItemEx* item) const;
00163
00164
00165 void setCurrentSelection(const FXString& name);
00166 FXString getCurrentSelection() const;
00167
00168
00169 FXString getNetworkName(const FXString& name) const;
00170 FXString getNetworkName(const FXNetworkItemEx* item) const;
00171 FXString getCurrentNetworkName() const;
00172
00173
00174 virtual void save(FXStream& store) const;
00175
00176
00177 virtual void load(FXStream& store);
00178
00179
00180 virtual ~FXNetworkListEx();
00181 };
00182
00183 }
00184 #endif // FXNETWORKLISTEX_H
00185 #endif
00186