123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824 |
- /****************************************************************/
- /* */
- /* UserAccountsDlg.cpp */
- /* */
- /* Implementation of the CUserAccountsDlg class. */
- /* */
- /* Programmed by LYFZ van der Meer */
- /* Copyright LYFZ Software Solutions 2002 */
- /* http://www.LYFZvandermeer.nl */
- /* */
- /* Last updated: 10 july 2002 */
- /* */
- /****************************************************************/
- #include "stdafx.h"
- #include "DBServer.h"
- #include "UserAccountsDlg.h"
- #include "AddUserDlg.h"
- #include "DirectoryDlg.h"
- #include "WizardPages.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- extern CDBServer theApp;
- CUserAccountsDlg::CUserAccountsDlg(CWnd* pParent /*=NULL*/)
- : CDialogResize(CUserAccountsDlg::IDD, pParent)
- {
- //{{AFX_DATA_INIT(CUserAccountsDlg) IDC_USERS
- m_strPassword = _T("");
- m_bDisableAccount = FALSE;
- //}}AFX_DATA_INIT
- m_nPreviousIndex = LB_ERR;
- m_hIcon = AfxGetApp()->LoadIcon(IDI_DBServer);
- }
- CUserAccountsDlg::~CUserAccountsDlg()
- {
-
- }
- void CUserAccountsDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialogResize::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CUserAccountsDlg)
- DDX_Control(pDX, IDC_USERS, m_UsersList);
- DDX_Control(pDX, IDC_DIR_LIST, m_DirectoryList);
- DDX_Text(pDX, IDC_PASSWORD, m_strPassword);
- DDX_Check(pDX, IDC_DISABLE_ACCOUNT, m_bDisableAccount);
- //}}AFX_DATA_MAP
- }
- BEGIN_MESSAGE_MAP(CUserAccountsDlg, CDialogResize)
- //{{AFX_MSG_MAP(CUserAccountsDlg)
- ON_LBN_SELCHANGE(IDC_USER_LIST, OnSelchangeUserlist)
- ON_NOTIFY(NM_DBLCLK, IDC_DIR_LIST, OnDblclkDirlist)
- ON_BN_CLICKED(IDC_ADD_DIR, OnAddDir)
- ON_BN_CLICKED(IDC_EDIT_DIR, OnEditDir)
- ON_BN_CLICKED(IDC_DEL_DIR, OnDelDir)
- ON_BN_CLICKED(IDC_SET_HOME, OnSetHome)
- ON_BN_CLICKED(IDC_ADD_USER, OnAddUser)
- ON_BN_CLICKED(IDC_EDIT_USER, OnEditUser)
- ON_BN_CLICKED(IDC_DEL_USER, OnDelUser)
- ON_UPDATE_COMMAND_UI(IDC_EDIT_USER, OnUpdateControls)
- ON_UPDATE_COMMAND_UI(IDC_DISABLE_ACCOUNT, OnUpdateDisableAccount)
- ON_NOTIFY(NM_CLICK, IDC_USERS, OnClickUsers)
- ON_NOTIFY(LVN_KEYDOWN, IDC_USERS, OnKeydownUsers)
- ON_BN_CLICKED(IDC_DISABLE_ACCOUNT, OnDisableAccount)
- ON_UPDATE_COMMAND_UI(IDC_DEL_USER, OnUpdateControls)
- ON_UPDATE_COMMAND_UI(IDC_PASSWORD, OnUpdateControls)
- ON_UPDATE_COMMAND_UI(IDC_DIR_LIST, OnUpdateControls)
- ON_UPDATE_COMMAND_UI(IDC_ADD_DIR, OnUpdateControls)
- ON_UPDATE_COMMAND_UI(IDC_EDIT_DIR, OnUpdateControls)
- ON_UPDATE_COMMAND_UI(IDC_DEL_DIR, OnUpdateControls)
- ON_UPDATE_COMMAND_UI(IDC_SET_HOME, OnUpdateControls)
- ON_BN_CLICKED(IDC_WIZARD, OnWizard)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- BEGIN_DLGRESIZE_MAP(CUserAccountsDlg)
- DLGRESIZE_CONTROL(IDC_ADD_DIR, DLSZ_MOVE_Y)
- DLGRESIZE_CONTROL(IDC_EDIT_DIR, DLSZ_MOVE_Y)
- DLGRESIZE_CONTROL(IDC_DEL_DIR, DLSZ_MOVE_X | DLSZ_MOVE_Y)
- DLGRESIZE_CONTROL(IDC_SET_HOME, DLSZ_MOVE_X | DLSZ_MOVE_Y)
- DLGRESIZE_CONTROL(IDCANCEL, DLSZ_MOVE_X | DLSZ_MOVE_Y)
- DLGRESIZE_CONTROL(IDOK, DLSZ_MOVE_X | DLSZ_MOVE_Y)
- DLGRESIZE_CONTROL(IDC_DIR_LIST, DLSZ_SIZE_X | DLSZ_SIZE_Y)
- DLGRESIZE_CONTROL(IDC_STATIC3, DLSZ_SIZE_X | DLSZ_SIZE_Y)
- DLGRESIZE_CONTROL(IDC_STATIC1, DLSZ_SIZE_Y)
- DLGRESIZE_CONTROL(IDC_STATIC2, DLSZ_SIZE_X)
- DLGRESIZE_CONTROL(IDC_USERS, DLSZ_SIZE_Y)
- DLGRESIZE_CONTROL(IDC_ADD_USER, DLSZ_MOVE_Y)
- DLGRESIZE_CONTROL(IDC_EDIT_USER, DLSZ_MOVE_Y)
- DLGRESIZE_CONTROL(IDC_DEL_USER, DLSZ_MOVE_Y)
- DLGRESIZE_CONTROL(IDC_WIZARD, DLSZ_MOVE_Y)
- END_DLGRESIZE_MAP()
- /********************************************************************/
- /* */
- /* Function name : OnInitDialog */
- /* Description : Initialize dialog */
- /* */
- /********************************************************************/
- BOOL CUserAccountsDlg::OnInitDialog()
- {
- CDialogResize::OnInitDialog();
-
- InitResizing();
-
- // Set the icon for this dialog.
- SetIcon(m_hIcon, TRUE); // Set big icon
- SetIcon(m_hIcon, FALSE); // Set small icon
- CRect rc;
- m_UsersList.GetClientRect(rc);
- m_UsersList.InsertColumn(0, "用户", LVCFMT_LEFT, rc.Width()-5);
- // fill user list
- for (int i=0; i < m_UserArray.GetSize(); i++)
- {
- int nIndex = m_UsersList.InsertItem(0, m_UserArray[i].m_strName, 2);
- m_UsersList.SetItemData(nIndex, i);
- }
- // setup directory list
- m_DirectoryList.InsertColumn(0, "实际目录", LVCFMT_LEFT, 100);
- m_DirectoryList.InsertColumn(1, "虚拟目录", LVCFMT_LEFT, 100);
- m_DirectoryList.InsertColumn(2, "下载", LVCFMT_LEFT, 10);
- m_DirectoryList.InsertColumn(3, "上传", LVCFMT_LEFT, 10);
- m_DirectoryList.InsertColumn(4, "改名", LVCFMT_LEFT, 10);
- m_DirectoryList.InsertColumn(5, "删除", LVCFMT_LEFT, 10);
- m_DirectoryList.InsertColumn(6, "建目录", LVCFMT_LEFT, 10);
- // create and attach imagelist
- m_ImageList.Create(16, 16, ILC_MASK, 3, 3);
- HICON hIcon = AfxGetApp()->LoadIcon(IDI_NONE);
- m_ImageList.Add(hIcon);
- DestroyIcon(hIcon);
- hIcon = AfxGetApp()->LoadIcon(IDI_HOME);
- m_ImageList.Add(hIcon);
- DestroyIcon(hIcon);
- hIcon = AfxGetApp()->LoadIcon(IDI_USER);
- m_ImageList.Add(hIcon);
- DestroyIcon(hIcon);
- m_DirectoryList.SetImageList(&m_ImageList, LVSIL_SMALL);
- m_UsersList.SetImageList(&m_ImageList, LVSIL_SMALL);
- // select preferred user ?
- if (!m_strUserName.IsEmpty())
- {
- LVFINDINFO info;
-
- info.flags = LVFI_STRING;
- info.psz = (LPCTSTR)m_strUserName;
- int nIndex = m_UsersList.FindItem(&info);
- m_UsersList.SetItemState(nIndex ,LVIS_SELECTED | LVIS_FOCUSED , LVIS_SELECTED | LVIS_FOCUSED);
- }
- else
- {
- m_UsersList.SetItemState(0 ,LVIS_SELECTED | LVIS_FOCUSED , LVIS_SELECTED | LVIS_FOCUSED);
- }
- GetDlgItem(IDC_PASSWORD)->ModifyStyle(NULL, ES_PASSWORD);
- ((CEdit *)GetDlgItem(IDC_PASSWORD))->SetPasswordChar('*');
- OnSelchangeUserlist();
-
- UpdateDialogControls(this, FALSE);
- AutoSizeColumns();
- return TRUE;
- }
- /********************************************************************/
- /* */
- /* Function name : OnClickUsers */
- /* Description : Selection in the user listcontrol has changed. */
- /* */
- /********************************************************************/
- void CUserAccountsDlg::OnClickUsers(NMHDR* pNMHDR, LRESULT* pResult)
- {
- OnSelchangeUserlist();
- *pResult = 0;
- }
- /********************************************************************/
- /* */
- /* Function name : OnKeydownUsers */
- /* Description : Selection in the user listcontrol has changed. */
- /* */
- /********************************************************************/
- void CUserAccountsDlg::OnKeydownUsers(NMHDR* pNMHDR, LRESULT* pResult)
- {
- LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
- // get index of selected item
- int nIndex = m_UsersList.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED);
-
- if(nIndex == -1)
- return;
- if (pLVKeyDow->wVKey == VK_DOWN)
- {
- if (m_UsersList.GetItemCount()-1 > nIndex)
- {
- m_UsersList.SetItemState(nIndex + 1, LVIS_SELECTED | LVIS_FOCUSED , LVIS_SELECTED | LVIS_FOCUSED);
- }
- }
- else
- if (pLVKeyDow->wVKey == VK_UP)
- {
- if (nIndex > 0)
- {
- m_UsersList.SetItemState(nIndex - 1, LVIS_SELECTED | LVIS_FOCUSED , LVIS_SELECTED | LVIS_FOCUSED);
- }
- }
- else
- if (pLVKeyDow->wVKey == VK_NEXT)
- {
- m_UsersList.SetItemState(m_UsersList.GetItemCount()-1, LVIS_SELECTED | LVIS_FOCUSED , LVIS_SELECTED | LVIS_FOCUSED);
- }
- else
- if (pLVKeyDow->wVKey == VK_PRIOR)
- {
- m_UsersList.SetItemState(0, LVIS_SELECTED | LVIS_FOCUSED , LVIS_SELECTED | LVIS_FOCUSED);
- }
- OnSelchangeUserlist();
- *pResult = 1;
- }
- /********************************************************************/
- /* */
- /* Function name : OnSelchangeUserlist */
- /* Description : Selection in the user listcontrol has changed. */
- /* */
- /********************************************************************/
- void CUserAccountsDlg::OnSelchangeUserlist()
- {
- UpdateData();
- // save data of previous selected user
- if (m_nPreviousIndex != -1)
- {
- int nOldindex = m_UsersList.GetItemData(m_nPreviousIndex);
- m_UserArray[nOldindex].m_strPassword = m_strPassword;
- m_UserArray[nOldindex].m_bAccountDisabled = m_bDisableAccount;
- }
- // get selected user
- int nSelIndex = m_UsersList.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED);
- if (nSelIndex != -1)
- {
- int nUserIndex = m_UsersList.GetItemData(nSelIndex);
- // update dialog variables
- m_strPassword = m_UserArray[nUserIndex].m_strPassword;
- m_bDisableAccount = m_UserArray[nUserIndex].m_bAccountDisabled;
- m_DirectoryList.DeleteAllItems();
-
- // fill the directory list
- for (int i=0; i < m_UserArray[nUserIndex].m_DirectoryArray.GetSize(); i++)
- {
- int nItem = m_DirectoryList.InsertItem(i, m_UserArray[nUserIndex].m_DirectoryArray[i].m_strDir);
- m_DirectoryList.SetItemText(nItem, 1, m_UserArray[nUserIndex].m_DirectoryArray[i].m_strAlias);
- m_DirectoryList.SetItemText(nItem, 2, m_UserArray[nUserIndex].m_DirectoryArray[i].m_bAllowDownload ? "Y" : "N");
- m_DirectoryList.SetItemText(nItem, 3, m_UserArray[nUserIndex].m_DirectoryArray[i].m_bAllowUpload ? "Y" : "N");
- m_DirectoryList.SetItemText(nItem, 4, m_UserArray[nUserIndex].m_DirectoryArray[i].m_bAllowRename ? "Y" : "N");
- m_DirectoryList.SetItemText(nItem, 5, m_UserArray[nUserIndex].m_DirectoryArray[i].m_bAllowDelete ? "Y" : "N");
- m_DirectoryList.SetItemText(nItem, 6, m_UserArray[nUserIndex].m_DirectoryArray[i].m_bAllowCreateDirectory ? "Y" : "N");
- LVITEM lvi;
- ZeroMemory(&lvi, sizeof (LV_ITEM));
- lvi.mask = LVIF_IMAGE|LVIF_PARAM;
- lvi.iItem = nItem;
- m_DirectoryList.GetItem(&lvi);
- lvi.lParam = i;
- lvi.iImage = m_UserArray[nUserIndex].m_DirectoryArray[i].m_bIsHomeDir ? 1 : 0;
- m_DirectoryList.SetItem(&lvi);
- }
- m_nPreviousIndex = nSelIndex;
- }
- else
- {
- // nothing selected...
- m_DirectoryList.DeleteAllItems();
- m_strPassword = "";
- m_bDisableAccount = FALSE;
- m_nPreviousIndex=-1;
- }
- UpdateData(FALSE);
- UpdateDialogControls(this, FALSE);
-
- AutoSizeColumns();
- }
- /********************************************************************/
- /* */
- /* Function name : OnOK */
- /* Description : Called when the user clicks the OK button. */
- /* */
- /********************************************************************/
- void CUserAccountsDlg::OnOK()
- {
- m_UsersList.SetItemState(-1 ,LVIS_SELECTED | LVIS_FOCUSED , LVIS_SELECTED | LVIS_FOCUSED);
- // force update
- OnSelchangeUserlist();
-
- CDialogResize::OnOK();
- }
- /********************************************************************/
- /* */
- /* Function name : OnDblclkDirlist */
- /* Description : Double clicked a directy item. */
- /* */
- /********************************************************************/
- void CUserAccountsDlg::OnDblclkDirlist(NMHDR* pNMHDR, LRESULT* pResult)
- {
- OnEditDir();
- *pResult = 0;
- }
- /********************************************************************/
- /* */
- /* Function name : OnAddUser */
- /* Description : Add a new user account. */
- /* */
- /********************************************************************/
- void CUserAccountsDlg::OnAddUser()
- {
- CAddUserDlg dlg;
- if (dlg.DoModal() == IDOK)
- {
- for (int i=0; i<m_UsersList.GetItemCount(); i++)
- {
- CString strName;
- strName = m_UsersList.GetItemText(i, 0);
- if (strName.CompareNoCase(dlg.m_strName) == 0)
- {
- AfxMessageBox("此用户已存在!");
- return;
- }
- }
- CUser user;
- user.m_strName = dlg.m_strName;
- user.m_strPassword = "";
- int nItem = m_UsersList.InsertItem(0, user.m_strName, 2);
- if (nItem <= m_nPreviousIndex)
- m_nPreviousIndex++;
- int index = m_UserArray.Add(user);
-
- m_UsersList.SetItemData(nItem, index);
- m_UsersList.SetItemState(nItem, LVIS_SELECTED | LVIS_FOCUSED , LVIS_SELECTED | LVIS_FOCUSED);
- OnSelchangeUserlist();
- }
- }
- /********************************************************************/
- /* */
- /* Function name : OnEditUser */
- /* Description : Edit user account name. */
- /* */
- /********************************************************************/
- void CUserAccountsDlg::OnEditUser()
- {
- // get selected user
- int nSelIndex = m_UsersList.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED);
- if(nSelIndex == -1)
- return;
- int nUserIndex = m_UsersList.GetItemData(nSelIndex);
- CAddUserDlg dlg;
- dlg.m_strTitle = "Edit User";
- dlg.m_strName = m_UserArray[nUserIndex].m_strName;
- if (dlg.DoModal() == IDOK)
- {
- // check if user already exists
- for (int i=0; i<m_UsersList.GetItemCount(); i++)
- {
- if (i != nSelIndex)
- {
- CString strName;
- strName = m_UsersList.GetItemText(i, 0);
- if (strName.CompareNoCase(dlg.m_strName) == 0)
- {
- AfxMessageBox("Sorry, this user already exists!");
- return;
- }
- }
- }
- m_UserArray[nUserIndex].m_strName = dlg.m_strName;
- m_UsersList.DeleteItem(nSelIndex);
- nSelIndex = m_UsersList.InsertItem(0, dlg.m_strName, 2);
- m_UsersList.SetItemData(nSelIndex, nUserIndex);
- m_UsersList.SetItemState(nSelIndex, LVIS_SELECTED | LVIS_FOCUSED , LVIS_SELECTED | LVIS_FOCUSED);
- m_nPreviousIndex = nSelIndex;
- OnSelchangeUserlist();
- }
- }
- /********************************************************************/
- /* */
- /* Function name : OnDelUser */
- /* Description : Delete user account. */
- /* */
- /********************************************************************/
- void CUserAccountsDlg::OnDelUser()
- {
- int nSelIndex = m_UsersList.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED);
- if(nSelIndex == -1)
- return;
- int nUserIndex = m_UsersList.GetItemData(nSelIndex);
- // remove user from listcontrol
- m_UsersList.DeleteItem(nSelIndex);
- // remove user from array
- m_UserArray.RemoveAt(nUserIndex);
- m_nPreviousIndex = -1;
- // update item data values
- for (int i=0; i<m_UsersList.GetItemCount(); i++)
- {
- int nItemData = m_UsersList.GetItemData(i);
- if (nItemData > nSelIndex)
- m_UsersList.SetItemData(i, nItemData-1);
- }
- OnSelchangeUserlist();
- }
- /********************************************************************/
- /* */
- /* Function name : OnAddDir */
- /* Description : Add directory entry to user account. */
- /* */
- /********************************************************************/
- void CUserAccountsDlg::OnAddDir()
- {
- int nSelIndex = m_UsersList.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED);
- if(nSelIndex == -1)
- return;
- CDirectoryDlg dlg;
- dlg.m_bIsHomeDir = m_DirectoryList.GetItemCount() ? FALSE : TRUE;
- if (dlg.DoModal() == IDOK)
- {
- int nUserIndex = m_UsersList.GetItemData(nSelIndex);
-
- CDirectory dir;
- dir.m_bAllowCreateDirectory = dlg.m_bAllowCreateDirectory;
- dir.m_bAllowDelete = dlg.m_bAllowDelete;
- dir.m_bAllowDownload = dlg.m_bAllowDownload;
- dir.m_bAllowRename = dlg.m_bAllowRename;
- dir.m_bAllowUpload = dlg.m_bAllowUpload;
- dir.m_bIsHomeDir = FALSE;
- dir.m_strDir = dlg.m_strPath;
- dir.m_strAlias = dlg.m_strAlias;
- dir.m_bIsHomeDir = m_DirectoryList.GetItemCount() ? FALSE : TRUE;
- int nIndex = m_UserArray[nUserIndex].m_DirectoryArray.Add(dir);
- int nItem = m_DirectoryList.InsertItem(LVIF_TEXT | LVIF_PARAM | LVIF_IMAGE, 0, dlg.m_strPath, 0, 0, dir.m_bIsHomeDir?1:0, nIndex);
- m_DirectoryList.SetItemText(nItem, 1, dir.m_strAlias);
- m_DirectoryList.SetItemText(nItem, 2, dir.m_bAllowDownload ? "Y" : "N");
- m_DirectoryList.SetItemText(nItem, 3, dir.m_bAllowUpload ? "Y" : "N");
- m_DirectoryList.SetItemText(nItem, 4, dir.m_bAllowRename ? "Y" : "N");
- m_DirectoryList.SetItemText(nItem, 5, dir.m_bAllowDelete ? "Y" : "N");
- m_DirectoryList.SetItemText(nItem, 6, dir.m_bAllowCreateDirectory ? "Y" : "N");
- m_DirectoryList.SetItemState(nItem, LVIS_SELECTED, LVIS_SELECTED);
- }
- }
- /********************************************************************/
- /* */
- /* Function name : OnEditDir */
- /* Description : Edit directory entry properties. */
- /* */
- /********************************************************************/
- void CUserAccountsDlg::OnEditDir()
- {
- // get selected user
- int nSelIndex = m_UsersList.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED);
- if(nSelIndex == -1)
- return;
- int nUserIndex = m_UsersList.GetItemData(nSelIndex);
- // get index of selected directory item
- nSelIndex = m_DirectoryList.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED);
-
- if(nSelIndex == -1)
- return;
- int nDirIndex = m_DirectoryList.GetItemData(nSelIndex);
-
- CDirectoryDlg dlg;
- dlg.m_strTitle = "Edit Directory";
- dlg.m_bAllowCreateDirectory = m_UserArray[nUserIndex].m_DirectoryArray[nDirIndex].m_bAllowCreateDirectory;
- dlg.m_bAllowDelete = m_UserArray[nUserIndex].m_DirectoryArray[nDirIndex].m_bAllowDelete;
- dlg.m_bAllowDownload = m_UserArray[nUserIndex].m_DirectoryArray[nDirIndex].m_bAllowDownload;
- dlg.m_bAllowRename = m_UserArray[nUserIndex].m_DirectoryArray[nDirIndex].m_bAllowRename;
- dlg.m_bAllowUpload = m_UserArray[nUserIndex].m_DirectoryArray[nDirIndex].m_bAllowUpload;
- dlg.m_strPath = m_UserArray[nUserIndex].m_DirectoryArray[nDirIndex].m_strDir;
- dlg.m_strAlias = m_UserArray[nUserIndex].m_DirectoryArray[nDirIndex].m_strAlias;
- dlg.m_bIsHomeDir = m_UserArray[nUserIndex].m_DirectoryArray[nDirIndex].m_bIsHomeDir;
- if (!dlg.m_strAlias.IsEmpty())
- dlg.m_bVirtualDir = TRUE;
- if (dlg.DoModal() == IDOK)
- {
- m_UserArray[nUserIndex].m_DirectoryArray[nDirIndex].m_bAllowCreateDirectory = dlg.m_bAllowCreateDirectory;
- m_UserArray[nUserIndex].m_DirectoryArray[nDirIndex].m_bAllowDelete = dlg.m_bAllowDelete;
- m_UserArray[nUserIndex].m_DirectoryArray[nDirIndex].m_bAllowDownload = dlg.m_bAllowDownload;
- m_UserArray[nUserIndex].m_DirectoryArray[nDirIndex].m_bAllowRename = dlg.m_bAllowRename;
- m_UserArray[nUserIndex].m_DirectoryArray[nDirIndex].m_bAllowUpload = dlg.m_bAllowUpload;
- m_UserArray[nUserIndex].m_DirectoryArray[nDirIndex].m_strDir = dlg.m_strPath;
- if (dlg.m_bVirtualDir)
- m_UserArray[nUserIndex].m_DirectoryArray[nDirIndex].m_strAlias = dlg.m_strAlias;
- else
- m_UserArray[nUserIndex].m_DirectoryArray[nDirIndex].m_strAlias = "";
- m_DirectoryList.SetItemText(nDirIndex, 0, dlg.m_strPath);
- m_DirectoryList.SetItemText(nDirIndex, 1, dlg.m_strAlias);
- m_DirectoryList.SetItemText(nDirIndex, 2, dlg.m_bAllowDownload ? "Y" : "N");
- m_DirectoryList.SetItemText(nDirIndex, 3, dlg.m_bAllowUpload ? "Y" : "N");
- m_DirectoryList.SetItemText(nDirIndex, 4, dlg.m_bAllowRename ? "Y" : "N");
- m_DirectoryList.SetItemText(nDirIndex, 5, dlg.m_bAllowDelete ? "Y" : "N");
- m_DirectoryList.SetItemText(nDirIndex, 6, dlg.m_bAllowCreateDirectory ? "Y" : "N");
- OnSelchangeUserlist();
- }
- }
- /********************************************************************/
- /* */
- /* Function name : OnDelDir */
- /* Description : Delete directory entry from user account. */
- /* */
- /********************************************************************/
- void CUserAccountsDlg::OnDelDir()
- {
- int nSelIndex = m_UsersList.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED);
- if(nSelIndex == -1)
- return;
- // get index of selected user item
- int nUserIndex = m_UsersList.GetItemData(nSelIndex);
-
- // get index of selected directory item
- nSelIndex = m_DirectoryList.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED);
-
- if(nSelIndex == -1)
- return;
- int nDirIndex = m_DirectoryList.GetItemData(nSelIndex);
-
- // delete item from list
- m_DirectoryList.DeleteItem(nSelIndex);
- m_UserArray[nUserIndex].m_DirectoryArray.RemoveAt(nDirIndex);
- for (int i=0; i < m_DirectoryList.GetItemCount(); i++)
- {
- int nItemData = m_DirectoryList.GetItemData(i);
- if (nItemData > nDirIndex)
- {
- m_DirectoryList.SetItemData(i, nItemData-1);
- }
- }
- UpdateDialogControls(this, FALSE);
- }
- /********************************************************************/
- /* */
- /* Function name : OnSetHome */
- /* Description : Make selected directory the home directory. */
- /* */
- /********************************************************************/
- void CUserAccountsDlg::OnSetHome()
- {
- int nSelIndex = m_UsersList.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED);
- if(nSelIndex == -1)
- return;
- int nUserIndex = m_UsersList.GetItemData(nSelIndex);
- // get index of selected directory item
- POSITION pos;
- pos = m_DirectoryList.GetFirstSelectedItemPosition();
- if (!pos)
- return;
-
- int nDirIndex = m_DirectoryList.GetNextSelectedItem(pos);
-
- for (int i=0; i<m_UserArray[nUserIndex].m_DirectoryArray.GetSize(); i++)
- {
- LVITEM lvi;
- ZeroMemory(&lvi, sizeof (LV_ITEM));
- lvi.mask = LVIF_IMAGE|LVIF_PARAM;
- lvi.iItem = i;
- m_DirectoryList.GetItem(&lvi);
- if (i == nDirIndex)
- {
- // set bIsHome flag for selected directory
- lvi.iImage = 1;
- m_UserArray[nUserIndex].m_DirectoryArray[lvi.lParam].m_bIsHomeDir = TRUE;
- }
- else
- {
- // clear old bIsHomeDir flag
- lvi.iImage = 0;
- m_UserArray[nUserIndex].m_DirectoryArray[lvi.lParam].m_bIsHomeDir = FALSE;
- }
- m_DirectoryList.SetItem(&lvi);
- }
- }
- void CUserAccountsDlg::OnUpdateControls(CCmdUI* pCmdUI)
- {
- int nSelIndex = m_UsersList.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED);
- if(nSelIndex!=-1)
- {
- CString str;
- str= m_UsersList.GetItemText (nSelIndex, 0);
- if(str=="photo1account" || str=="photo2account" || str=="photo3account" || str=="photo4account")
- {
- pCmdUI->Enable(0);return;
- }
- }
- pCmdUI->Enable(nSelIndex != -1 && !IsDlgButtonChecked(IDC_DISABLE_ACCOUNT));
- }
- void CUserAccountsDlg::OnUpdateDisableAccount(CCmdUI* pCmdUI)
- {
- int nSelIndex = m_UsersList.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED);
- if(nSelIndex!=-1)
- {
- CString str;
- str= m_UsersList.GetItemText (nSelIndex, 0);
- if(str=="photo1account" || str=="photo2account" || str=="photo3account" || str=="photo4account")
- {
- pCmdUI->Enable(0);return;
- }
- }
- pCmdUI->Enable(nSelIndex != -1);
- }
- CString CUserAccountsDlg::GetAttributes(CDirectory &dir)
- {
- CString strResult;
- strResult.Format("%c%c%c%c%c", dir.m_bAllowDownload ? 'Y':'-',
- dir.m_bAllowUpload ? 'Y':'-',
- dir.m_bAllowRename ? 'Y':'-',
- dir.m_bAllowDelete ? 'Y':'-',
- dir.m_bAllowCreateDirectory ? 'Y':'-');
- return strResult;
- }
- /********************************************************************/
- /* */
- /* Function name : AutoSizeColumns */
- /* Description : Make all columns fit nicely. */
- /* */
- /********************************************************************/
- void CUserAccountsDlg::AutoSizeColumns()
- {
- // Call this after your the control is filled
- m_DirectoryList.SetRedraw(FALSE);
- int mincol = 0;
- int maxcol = m_DirectoryList.GetHeaderCtrl()->GetItemCount()-1;
- int col;
- for (col = mincol; col <= maxcol; col++)
- {
- m_DirectoryList.SetColumnWidth(col,LVSCW_AUTOSIZE);
- int wc1 = m_DirectoryList.GetColumnWidth(col);
- m_DirectoryList.SetColumnWidth(col,LVSCW_AUTOSIZE_USEHEADER);
- int wc2 = m_DirectoryList.GetColumnWidth(col);
- // 10 is minumim column width
- int wc = max(10, max(wc1,wc2));
- m_DirectoryList.SetColumnWidth(col,wc);
- }
- m_DirectoryList.SetRedraw(TRUE);
- }
- /********************************************************************/
- /* */
- /* Function name : OnDisableAccount */
- /* Description : Disable account has been clicked */
- /* */
- /********************************************************************/
- void CUserAccountsDlg::OnDisableAccount()
- {
- UpdateDialogControls(this, FALSE);
- }
- /********************************************************************/
- /* */
- /* Function name : OnWizard */
- /* Description : Launch New Account Wizard */
- /* */
- /********************************************************************/
- void CUserAccountsDlg::OnWizard()
- {
- CBitmap bmpHeader, bmpWatermark;
- VERIFY(bmpHeader.LoadBitmap(IDB_BANNER));
- VERIFY(bmpWatermark.LoadBitmap(IDB_WATERMARK));
-
- // show windows 2000-like wizard
- CWizardSheet wizSheet("New Account Wizard", this, 0, bmpWatermark, NULL, bmpHeader);
- wizSheet.m_psh.hInstance = ::GetModuleHandle(NULL);
- if (wizSheet.DoModal() == ID_WIZFINISH)
- {
- int nIndex = -1;
- int nItem = -1;
-
- // existing account ?
- for (int i=0; i<m_UsersList.GetItemCount(); i++)
- {
- CString strName;
- strName = m_UsersList.GetItemText(i, 0);
- if (strName.CompareNoCase(wizSheet.m_Page1.m_strAccountName) == 0)
- {
- nItem = i;
- nIndex = m_UsersList.GetItemData(i);
- break;
- }
- }
- // add new account
- if (nIndex == -1)
- {
- CUser user;
- int nItem = m_UsersList.InsertItem(0, wizSheet.m_Page1.m_strAccountName, 2);
- nIndex = m_UserArray.Add(user);
- m_UsersList.SetItemData(nItem, nIndex);
- }
- else
- {
- // clear old bIsHomeDir flag
- for (int i=0; i<m_UserArray[nIndex].m_DirectoryArray.GetSize(); i++)
- {
- m_UserArray[nIndex].m_DirectoryArray[i].m_bIsHomeDir = FALSE;
- }
- }
- m_UserArray[nIndex].m_bAccountDisabled = FALSE;
- m_UserArray[nIndex].m_strName = wizSheet.m_Page1.m_strAccountName;
- m_UserArray[nIndex].m_strPassword = wizSheet.m_Page2.m_strPassword;
-
- // add home directory
- CDirectory directory;
-
- directory.m_strDir = wizSheet.m_Page3.m_strHomeDirectory;
- directory.m_strAlias = "";
- directory.m_bIsHomeDir = TRUE;
- directory.m_bAllowCreateDirectory = wizSheet.m_Page4.m_bAllowCreateDirectory;
- directory.m_bAllowDelete = wizSheet.m_Page4.m_bAllowDelete;
- directory.m_bAllowDownload = wizSheet.m_Page4.m_bAllowDownload;
- directory.m_bAllowRename = wizSheet.m_Page4.m_bAllowRename;
- directory.m_bAllowUpload = wizSheet.m_Page4.m_bAllowUpload;
- directory.m_strAlias = "";
- m_UserArray[nIndex].m_DirectoryArray.Add(directory);
-
- if (m_nPreviousIndex == nItem)
- m_nPreviousIndex = -1;
- // select updated account
- m_UsersList.SetItemState(nItem, LVIS_SELECTED | LVIS_FOCUSED , LVIS_SELECTED | LVIS_FOCUSED);
- OnSelchangeUserlist();
- }
- }
-
-
|