package miranda.api.chat.dll;
import java.util.ArrayList;
import java.util.Collection;
import com.sun.jna.examples.win32.ext.ProcessAddressSpace;
import com.sun.jna.examples.win32.ext.ProcessStructure;
import com.sun.jna.examples.win32.W32API.HANDLE;
import com.sun.jna.examples.win32.W32API.HWND;
public class SESSION_INFO extends ProcessStructure {
public SESSION_INFO(HANDLE process, int baseAddress) {
super(process, baseAddress);
}
public Collection<USERINFO> getUsers() {
Collection<USERINFO> users = new ArrayList<USERINFO>(nUsersInNicklist);
USERINFO user = new USERINFO(getProcess(), pUsers);
while (user != null) {
users.add(user);
user = user.next();
}
return users;
}
public Collection<String> getUserNames() {
Collection<String> names = new ArrayList<String>(nUsersInNicklist);
USERINFO user = new USERINFO(getProcess(), pUsers);
while (user != null) {
names.add(user.getName());
user = user.next();
}
return names;
}
public HWND hWnd;
public boolean bFGSet;
public boolean bBGSet;
public boolean bFilterEnabled;
public boolean bNicklistEnabled;
public boolean bInitDone;
public /*Pointer*/int pszModule;
public /*Pointer*/int ptszID;
public /*Pointer*/int ptszName;
public /*Pointer*/int ptszStatusbarText;
public /*Pointer*/int ptszTopic;
// I hate m3x, Unicode, IRC, chats etc...
// #if defined( _UNICODE )
public /*Pointer*/int pszID; // ugly fix for returning static ANSI strings in
// GC_INFO
public /*Pointer*/int pszName; // just to fix a bug quickly, should die after
// porting
// IRC to Unicode
// #endif
public int iType;
public int iFG;
public int iBG;
public int iSplitterY;
public int iSplitterX;
public int iLogFilterFlags;
public int nUsersInNicklist;
public int iEventCount;
public int iX;
public int iY;
public int iWidth;
public int iHeight;
public int iStatusCount;
public short wStatus;
public short wState;
public short wCommandsNum;
public int dwItemData;
public int dwFlags;
public int hContact;
public HWND hwndStatus;
public int LastTime;
public /*Pointer*/int lpCommands;
public /*Pointer*/int lpCurrentCommand;
public /*Pointer*/int pLog;
public /*Pointer*/int pLogEnd;
public /*Pointer*/int pUsers;
public /*Pointer*/int pMe;
public /*Pointer*/int pStatuses;
public HWND hwndTooltip;
public int iOldItemID;
public /*Pointer*/int next;
private String name;
public String getName() {
if (name == null) {
name = ProcessAddressSpace.readStringW(getProcess(), ptszName);
}
return name;
}
}