home *** CD-ROM | disk | FTP | other *** search
- #ifndef FLYPAPERDRAGUTILS_H
- #include "FlyPaperDragUtils.h"
- #endif
-
- Boolean AcceptableFlavor (DragReference dragRef, ItemReference dragItem, short whichFlavor)
- {
- FlavorType type;
- FlavorFlags flags;
- OSErr error;
-
- error = GetFlavorType (dragRef, dragItem, whichFlavor, &type);
- if (error)
- throw error;
-
- if ((type == flavorTypeHFS) || (type == flavorTypePromiseHFS) ||
- (type == flavorTypeDirectory))
- return false;
-
- error = GetFlavorFlags (dragRef, dragItem, type, &flags);
- if (error)
- throw error;
-
- if ((flags & kExclusionaryFlavorFlags) == 0)
- return true;
-
- return false;
- }
-
- static
- Boolean AcceptableDragItem (DragReference dragRef, ItemReference dragItem)
- {
- unsigned short numFlavors;
- OSErr error;
-
- error = CountDragItemFlavors (dragRef, dragItem, &numFlavors);
- if (error)
- throw error;
-
- for (unsigned short whichFlavor = 1; whichFlavor <= numFlavors; ++whichFlavor) {
- if (AcceptableFlavor (dragRef, dragItem, whichFlavor))
- return true;
- }
-
- return false;
- }
-
- Boolean AcceptableDrag (DragReference dragRef)
- {
- unsigned short numItems;
- OSErr error;
-
- error = CountDragItems (dragRef, &numItems);
- if (error)
- throw error;
-
- for (unsigned short whichItem = 1; whichItem <= numItems; ++whichItem) {
- ItemReference dragItem;
- error = GetDragItemReferenceNumber (dragRef, whichItem, &dragItem);
- if (error)
- throw error;
- if (!AcceptableDragItem (dragRef, dragItem))
- return false;
- }
-
- return true;
- }
-
-