[Spambayes-checkins] spambayes/Outlook2000/dialogs FolderSelector.py, 1.17, 1.18

Mark Hammond mhammond at users.sourceforge.net
Mon Jun 16 21:22:04 EDT 2003


Update of /cvsroot/spambayes/spambayes/Outlook2000/dialogs
In directory sc8-pr-cvs1:/tmp/cvs-serv18244

Modified Files:
	FolderSelector.py 
Log Message:
Prevent "Deleted items", Outbox and Sent Items from appearing in the
folder list.  Fixes:
[ 749277 ] Should prevent "Deleted Items" being target folder


Index: FolderSelector.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/Outlook2000/dialogs/FolderSelector.py,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** FolderSelector.py	15 May 2003 01:00:04 -0000	1.17
--- FolderSelector.py	17 Jun 2003 03:22:02 -0000	1.18
***************
*** 18,25 ****
  # Helpers for building the folder list
  class FolderSpec:
!     def __init__(self, folder_id, name):
          self.folder_id = folder_id
          self.name = name
          self.children = []
  
      def dump(self, level=0):
--- 18,26 ----
  # Helpers for building the folder list
  class FolderSpec:
!     def __init__(self, folder_id, name, ignore_eids = None):
          self.folder_id = folder_id
          self.name = name
          self.children = []
+         self.ignore_eids = ignore_eids
  
      def dump(self, level=0):
***************
*** 53,60 ****
  import pythoncom
  
! def _BuildFoldersMAPI(manager, folder_id):
      # This is called dynamically as folders are expanded.
      win32ui.DoWaitCursor(1)
!     folder = manager.message_store.GetFolder(folder_id).OpenEntry()
      # Get the hierarchy table for it.
      table = folder.GetHierarchyTable(0)
--- 54,61 ----
  import pythoncom
  
! def _BuildFoldersMAPI(manager, folder_spec):
      # This is called dynamically as folders are expanded.
      win32ui.DoWaitCursor(1)
!     folder = manager.message_store.GetFolder(folder_spec.folder_id).OpenEntry()
      # Get the hierarchy table for it.
      table = folder.GetHierarchyTable(0)
***************
*** 68,75 ****
          # re-fetch from the object itself (which is what our manager does,
          # so no need to do it explicitly - just believe folder.id over eid)
          temp_id = mapi.HexFromBin(store_eid), mapi.HexFromBin(eid)
          child_folder = manager.message_store.GetFolder(temp_id)
          if child_folder is not None:
!             spec = FolderSpec(child_folder.GetID(), name)
              # If we have no children at all, indicate
              # the item is not expandable.
--- 69,83 ----
          # re-fetch from the object itself (which is what our manager does,
          # so no need to do it explicitly - just believe folder.id over eid)
+         ignore = False
+         for check_eid in folder_spec.ignore_eids:
+             if manager.message_store.session.CompareEntryIDs(check_eid, eid):
+                 ignore = True
+                 break
+         if ignore:
+             continue
          temp_id = mapi.HexFromBin(store_eid), mapi.HexFromBin(eid)
          child_folder = manager.message_store.GetFolder(temp_id)
          if child_folder is not None:
!             spec = FolderSpec(child_folder.GetID(), name, folder_spec.ignore_eids)
              # If we have no children at all, indicate
              # the item is not expandable.
***************
*** 83,87 ****
      return children
  
! def BuildFolderTreeMAPI(session):
      root = FolderSpec(None, "root")
      tab = session.GetMsgStoresTable(0)
--- 91,95 ----
      return children
  
! def BuildFolderTreeMAPI(session, ignore_ids):
      root = FolderSpec(None, "root")
      tab = session.GetMsgStoresTable(0)
***************
*** 94,100 ****
              msgstore = session.OpenMsgStore(0, eid, None, mapi.MDB_NO_MAIL |
                                                            mapi.MAPI_DEFERRED_ERRORS)
!             hr, data = msgstore.GetProps((PR_IPM_SUBTREE_ENTRYID,), 0)
              subtree_eid = data[0][1]
!             folder = msgstore.OpenEntry(subtree_eid, None, mapi.MAPI_DEFERRED_ERRORS)
          except pythoncom.com_error, details:
              # Some weird error opening a folder tree
--- 102,108 ----
              msgstore = session.OpenMsgStore(0, eid, None, mapi.MDB_NO_MAIL |
                                                            mapi.MAPI_DEFERRED_ERRORS)
!             hr, data = msgstore.GetProps((PR_IPM_SUBTREE_ENTRYID,)+ignore_ids, 0)
              subtree_eid = data[0][1]
!             ignore_eids = [item[1] for item in data[1:] if PROP_TYPE(item[0])==PT_BINARY]
          except pythoncom.com_error, details:
              # Some weird error opening a folder tree
***************
*** 104,108 ****
              continue
          folder_id = hex_eid, mapi.HexFromBin(subtree_eid)
!         spec = FolderSpec(folder_id, name)
          spec.children = None
          root.children.append(spec)
--- 112,116 ----
              continue
          folder_id = hex_eid, mapi.HexFromBin(subtree_eid)
!         spec = FolderSpec(folder_id, name, ignore_eids)
          spec.children = None
          root.children.append(spec)
***************
*** 155,159 ****
                                checkbox_text=None,
                                desc_noun="Select",
!                               desc_noun_suffix="ed"):
          assert not single_select or selected_ids is None or len(selected_ids)<=1
          dialog.Dialog.__init__ (self, self.dt)
--- 163,171 ----
                                checkbox_text=None,
                                desc_noun="Select",
!                               desc_noun_suffix="ed",
!                               exclude_prop_ids=(PR_IPM_WASTEBASKET_ENTRYID,
!                                                 PR_IPM_SENTMAIL_ENTRYID,
!                                                 PR_IPM_OUTBOX_ENTRYID)
!                                     ):
          assert not single_select or selected_ids is None or len(selected_ids)<=1
          dialog.Dialog.__init__ (self, self.dt)
***************
*** 168,171 ****
--- 180,184 ----
          self.checkbox_state = checkbox_state
          self.checkbox_text = checkbox_text or "Include &subfolders"
+         self.exclude_prop_ids = exclude_prop_ids
  
      def CompareIDs(self, id1, id2):
***************
*** 316,320 ****
          win32ui.DoWaitCursor(1)
          self.expand_ids = self._DetermineFoldersToExpand()
!         tree = BuildFolderTreeMAPI(self.manager.message_store.session)
          self._InsertSubFolders(0, tree)
          self.selected_ids = [] # Only use this while creating dialog.
--- 329,333 ----
          win32ui.DoWaitCursor(1)
          self.expand_ids = self._DetermineFoldersToExpand()
!         tree = BuildFolderTreeMAPI(self.manager.message_store.session, self.exclude_prop_ids)
          self._InsertSubFolders(0, tree)
          self.selected_ids = [] # Only use this while creating dialog.
***************
*** 387,391 ****
          folderSpec = self.item_map[info[7]]
          if folderSpec.children is None:
!             folderSpec.children = _BuildFoldersMAPI(self.manager, folderSpec.folder_id)
              self._InsertSubFolders(itemHandle, folderSpec)
          return 0
--- 400,404 ----
          folderSpec = self.item_map[info[7]]
          if folderSpec.children is None:
!             folderSpec.children = _BuildFoldersMAPI(self.manager, folderSpec)
              self._InsertSubFolders(itemHandle, folderSpec)
          return 0





More information about the Spambayes-checkins mailing list