//+---------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation 1996-2001.
//
//  File:       lright.cpp
//
//  Contents:   implementation of CLocalPolRight
//
//----------------------------------------------------------------------------

#include "stdafx.h"
#include "wsecmgr.h"
#include "snapmgr.h"
#include "attr.h"
#include "util.h"
#include "chklist.h"
#include "getuser.h"
#include "lright.h"

#ifdef _DEBUG
   #define new DEBUG_NEW
   #undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CLocalPolRight dialog


CLocalPolRight::CLocalPolRight()
: CConfigPrivs(IDD)
{
    m_pHelpIDs = (DWORD_PTR)a231HelpIDs;
    m_uTemplateResID = IDD;
}


BEGIN_MESSAGE_MAP(CLocalPolRight, CConfigPrivs)
    //{{AFX_MSG_MAP(CConfigPrivs)
    ON_BN_CLICKED(IDC_ADD, OnAdd)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


PSCE_PRIVILEGE_ASSIGNMENT
CLocalPolRight::GetPrivData() {
   ASSERT(m_pData);
   if (m_pData) {
      return (PSCE_PRIVILEGE_ASSIGNMENT) m_pData->GetBase();
   }
   return NULL;
}

void
CLocalPolRight::SetPrivData(PSCE_PRIVILEGE_ASSIGNMENT ppa) {
   ASSERT(m_pData);
   if (m_pData) {
      m_pSnapin->UpdateLocalPolInfo(m_pData,
                                    FALSE,
                                    &ppa,
                                    m_pData->GetUnits()
                                    );
      m_pData->SetBase((LONG_PTR)ppa);
   }
}

void CLocalPolRight::OnAdd() {
   CGetUser gu;

   if (gu.Create( GetSafeHwnd(), 
                  SCE_SHOW_USERS | 
                  SCE_SHOW_LOCALGROUPS | 
                  SCE_SHOW_GLOBAL | 
                  SCE_SHOW_WELLKNOWN | 
                  SCE_SHOW_BUILTIN |
                  SCE_SHOW_SCOPE_ALL | 
                  SCE_SHOW_DIFF_MODE_OFF_DC |
                  SCE_SHOW_COMPUTER)) { //Raid #477428, Yanggao
      PSCE_NAME_LIST pName = gu.GetUsers();
      CListBox *plbGrant = (CListBox*)GetDlgItem(IDC_GRANTLIST);
      while(pName)
      {
         if (plbGrant && 
             (LB_ERR == plbGrant->FindStringExact(-1,pName->Name)))
         {
            plbGrant->AddString(pName->Name);
            m_fDirty = true;
            SetModified(TRUE); //Raid #389890, 5/11/2001
         }
         pName = pName->Next;
      }
   }
}