本文整理汇总了C++中CItemData::IsDependent方法的典型用法代码示例。如果您正苦于以下问题:C++ CItemData::IsDependent方法的具体用法?C++ CItemData::IsDependent怎么用?C++ CItemData::IsDependent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CItemData
的用法示例。
在下文中一共展示了CItemData::IsDependent方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DoBrowse
void PasswordSafeFrame::DoBrowse(CItemData &item, bool bAutotype)
{
CItemData* pci = &item;
StringX sx_pswd;
if (pci->IsDependent()) {
CItemData *pbci = m_core.GetBaseEntry(pci);
ASSERT(pbci != NULL);
sx_pswd = pbci->GetPassword();
if (pci->IsShortcut())
pci = pbci;
} else
sx_pswd = pci->GetPassword();
wxString cs_command = towxstring(pci->GetURL());
if (!cs_command.IsEmpty()) {
std::vector<size_t> vactionverboffsets;
StringX sxautotype = PWSAuxParse::GetAutoTypeString(*pci, m_core,
vactionverboffsets);
LaunchBrowser(cs_command, sxautotype, vactionverboffsets, bAutotype);
#ifdef NOT_YET
SetClipboardData(sx_pswd);
UpdateLastClipboardAction(CItemData::PASSWORD);
#endif
UpdateAccessTime(item);
}
}
示例2: Command
AddEntryCommand::AddEntryCommand(CommandInterface *pcomInt, const CItemData &ci,
const Command *pcmd)
: Command(pcomInt), m_ci(ci)
{
ASSERT(!ci.IsDependent()); // use other c'tor for dependent entries!
if (pcmd != NULL)
m_bNotifyGUI = pcmd->GetGUINotify();
}
示例3: Add
void ExpiredList::Add(const CItemData &ci)
{
// Not valid for aliases or shortcuts!
if (ci.IsDependent())
return;
// We might be called from Update with a ci
// that doesn't have an expiration date - check!
time_t tttXTime;
ci.GetXTime(tttXTime);
if (tttXTime != time_t(0))
push_back(ExpPWEntry(ci));
}
示例4: OnCreateShortcut
void PasswordSafeFrame::OnCreateShortcut(wxCommandEvent& WXUNUSED(event))
{
CItemData* item = GetSelectedEntry();
if (item && !item->IsDependent()) {
CreateShortcutDlg dlg(this, m_core, item);
int rc = dlg.ShowModal();
if (rc == wxID_OK) {
UpdateAccessTime(*item);
Show(true);
SetChanged(Data);
}
}
}
示例5: OnTrayCopyPassword
void DboxMain::OnTrayCopyPassword(UINT nID)
{
ASSERT((nID >= ID_MENUITEM_TRAYCOPYPASSWORD1) && (nID <= ID_MENUITEM_TRAYCOPYPASSWORDMAX));
CItemData ci;
if (!GetRUEntry(m_RUEList, nID - ID_MENUITEM_TRAYCOPYPASSWORD1, ci))
return;
if (ci.IsDependent()) {
if (!SafeGetBaseEntry(ci, ci))
return; // fail safely in release
}
const StringX cs_password = ci.GetPassword();
SetClipboardData(cs_password);
UpdateLastClipboardAction(CItemData::PASSWORD);
UpdateAccessTime(ci.GetUUID());
}
示例6: dep_uuid
DeleteEntryCommand::DeleteEntryCommand(CommandInterface *pcomInt,
const CItemData &ci, const Command *pcmd)
: Command(pcomInt), m_ci(ci), m_dependents(0)
{
if (pcmd != NULL) {
m_bNotifyGUI = pcmd->GetGUINotify();
}
if (ci.IsNormal())
m_base_uuid = CUUID::NullUUID();
else {
const CUUID uuid = ci.GetUUID();
// If ci is not a normal entry, gather the related entry
// info for undo
if (ci.IsDependent()) {
// For aliases or shortcuts, we just need the uuid of the base entry
const ItemMap &imap = (ci.IsAlias() ? pcomInt->GetAlias2BaseMap() :
pcomInt->GetShortcuts2BaseMap());
m_base_uuid = imap.find(uuid)->second;
} else if (ci.IsBase()) {
/**
* When a shortcut base is deleted, we need to save all
* the shortcuts referencing it, as they too are deleted.
* When an alias base is deleted, we need the uuids of all its
* dependents, to change their passwords back upon undo
* To save code, we just keep the entire entry, same as shortcuts
*/
const ItemMMap &immap =
ci.IsShortcutBase() ? pcomInt->GetBase2ShortcutsMmap() : pcomInt->GetBase2AliasesMmap();
ItemMMapConstIter iter;
for (iter = immap.lower_bound(uuid);
iter != immap.upper_bound(uuid); iter++) {
const CUUID dep_uuid(iter->second);
ItemListIter itemIter = pcomInt->Find(dep_uuid);
ASSERT(itemIter != pcomInt->GetEntryEndIter());
if (itemIter != pcomInt->GetEntryEndIter())
m_dependents.push_back(itemIter->second);
} // for all dependents
} // IsBase
} // !IsNormal
}
示例7: Merge
stringT PWScore::Merge(PWScore *pothercore,
const bool &subgroup_bset,
const stringT &subgroup_name,
const int &subgroup_object, const int &subgroup_function,
CReport *pRpt, bool *pbCancel)
{
std::vector<StringX> vs_added;
std::vector<StringX> vs_AliasesAdded;
std::vector<StringX> vs_ShortcutsAdded;
std::vector<StringX> vs_PoliciesAdded;
std::map<StringX, StringX> mapRenamedPolicies;
const StringX sxMerge_DateTime = PWSUtil::GetTimeStamp(true).c_str();
stringT str_timestring; // To append to title if already in current database
str_timestring = sxMerge_DateTime.c_str();
Remove(str_timestring, _T('/'));
Remove(str_timestring, _T(':'));
/*
Purpose:
Merge entries from otherCore to m_core
Algorithm:
Foreach entry in otherCore
Find in m_core based on group/title/username
if match found {
if all other fields match {
no merge
} else {
add to m_core with new title suffixed with -merged-YYYYMMDD-HHMMSS
}
} else {
add to m_core directly
}
*/
int numAdded = 0;
int numConflicts = 0;
int numAliasesAdded = 0;
int numShortcutsAdded = 0;
uuid_array_t base_uuid, new_base_uuid;
bool bTitleRenamed(false);
StringX sx_merged;
LoadAString(sx_merged, IDSC_MERGED);
MultiCommands *pmulticmds = MultiCommands::Create(this);
Command *pcmd1 = UpdateGUICommand::Create(this, UpdateGUICommand::WN_UNDO,
UpdateGUICommand::GUI_UNDO_MERGESYNC);
pmulticmds->Add(pcmd1);
ItemListConstIter otherPos;
for (otherPos = pothercore->GetEntryIter();
otherPos != pothercore->GetEntryEndIter();
otherPos++) {
// See if user has cancelled
if (pbCancel != NULL && *pbCancel) {
delete pmulticmds;
return _T("");
}
CItemData otherItem = pothercore->GetEntry(otherPos);
CItemData::EntryType et = otherItem.GetEntryType();
// Need to check that entry keyboard shortcut not already in use!
int32 iKBShortcut;
otherItem.GetKBShortcut(iKBShortcut);
CUUID kbshortcut_uuid = GetKBShortcut(iKBShortcut);
bool bKBShortcutInUse = (iKBShortcut != 0&& kbshortcut_uuid != CUUID::NullUUID());
// Handle Aliases and Shortcuts when processing their base entries
if (otherItem.IsDependent())
continue;
if (subgroup_bset &&
!otherItem.Matches(subgroup_name, subgroup_object, subgroup_function))
continue;
const StringX sx_otherGroup = otherItem.GetGroup();
const StringX sx_otherTitle = otherItem.GetTitle();
const StringX sx_otherUser = otherItem.GetUser();
StringX sxMergedEntry;
Format(sxMergedEntry, GROUPTITLEUSERINCHEVRONS,
sx_otherGroup.c_str(), sx_otherTitle.c_str(), sx_otherUser.c_str());
ItemListConstIter foundPos = Find(sx_otherGroup, sx_otherTitle, sx_otherUser);
otherItem.GetUUID(base_uuid);
memcpy(new_base_uuid, base_uuid, sizeof(new_base_uuid));
bTitleRenamed = false;
if (foundPos != GetEntryEndIter()) {
// Found a match, see if other fields also match
CItemData curItem = GetEntry(foundPos);
// Can't merge into a protected entry. If we were going to - add instead
unsigned char ucprotected;
curItem.GetProtected(ucprotected);
//.........这里部分代码省略.........
示例8: OnDuplicateEntry
// Duplicate selected entry but make title unique
void PasswordSafeFrame::OnDuplicateEntry(wxCommandEvent& WXUNUSED(event))
{
if (m_core.IsReadOnly()) // disable in read-only mode
return;
// if (SelItemOk() == TRUE) {
CItemData *pci = GetSelectedEntry();
ASSERT(pci != NULL);
// DisplayInfo *pdi = (DisplayInfo *)pci->GetDisplayInfo();
// ASSERT(pdi != NULL);
// Get information from current selected entry
const StringX ci2_group = pci->GetGroup();
const StringX ci2_user = pci->GetUser();
const StringX ci2_title0 = pci->GetTitle();
StringX ci2_title;
// Find a unique "Title"
ItemListConstIter listpos;
int i = 0;
wxString s_copy;
do {
s_copy.clear();
i++;
s_copy << _(" Copy # ") << i;
ci2_title = ci2_title0 + tostringx(s_copy);
listpos = m_core.Find(ci2_group, ci2_title, ci2_user);
} while (listpos != m_core.GetEntryEndIter());
// Set up new entry
CItemData ci2(*pci);
ci2.SetDisplayInfo(NULL);
ci2.CreateUUID();
ci2.SetGroup(ci2_group);
ci2.SetTitle(ci2_title);
ci2.SetUser(ci2_user);
ci2.SetStatus(CItemData::ES_ADDED);
Command *pcmd = NULL;
if (pci->IsDependent()) {
if (pci->IsAlias()) {
ci2.SetAlias();
} else {
ci2.SetShortcut();
}
const CItemData *pbci = m_core.GetBaseEntry(pci);
if (pbci != NULL) {
CUUID base_uuid = pbci->GetUUID();
StringX cs_tmp;
cs_tmp = wxT("[") +
pbci->GetGroup() + wxT(":") +
pbci->GetTitle() + wxT(":") +
pbci->GetUser() + wxT("]");
ci2.SetPassword(cs_tmp);
pcmd = AddEntryCommand::Create(&m_core, ci2, base_uuid);
}
} else { // not alias or shortcut
ci2.SetNormal();
pcmd = AddEntryCommand::Create(&m_core, ci2);
}
Execute(pcmd);
// pdi->list_index = -1; // so that InsertItemIntoGUITreeList will set new values
CUUID uuid = ci2.GetUUID();
ItemListIter iter = m_core.Find(uuid);
ASSERT(iter != m_core.GetEntryEndIter());
wxUnusedVar(iter); // used in assert only
// InsertItemIntoGUITreeList(m_core.GetEntry(iter));
// FixListIndexes();
SetChanged(Data);
// int rc = SelectEntry(pdi->list_index);
// if (rc == 0) {
// SelectEntry(m_ctlItemList.GetItemCount() - 1);
// }
// ChangeOkUpdate();
m_RUEList.AddRUEntry(uuid);
// }
}