/** \details Test the CreateBookmark (0x1b) operation This function: -# Opens the Inbox folder and gets the hierarchy table -# Customize the MAPI table view -# CreateBookmark for each table's row -# Free Bookmark for each created bookmark -# Cleans up \param mt pointer on the top-level mapitest structure \return true on success, otherwise false */ _PUBLIC_ bool mapitest_oxctable_CreateBookmark(struct mapitest *mt) { enum MAPISTATUS retval; mapi_object_t obj_htable; uint32_t *bkPosition; uint32_t count; uint32_t i; struct SPropTagArray *SPropTagArray; struct SRowSet SRowSet; /* Step 1. Logon */ if (! mapitest_common_setup(mt, &obj_htable, &count)) { return false; } /* Step 2. Customize the table view */ SPropTagArray = set_SPropTagArray(mt->mem_ctx, 0x3, PR_DISPLAY_NAME, PR_FID, PR_FOLDER_CHILD_COUNT); retval = SetColumns(&obj_htable, SPropTagArray); MAPIFreeBuffer(SPropTagArray); if (retval != MAPI_E_SUCCESS) { return false; } /* Step 3. Create Bookmarks */ bkPosition = talloc_array(mt->mem_ctx, uint32_t, 1); retval = QueryRows(&obj_htable, 100, TBL_ADVANCE, &SRowSet); for (i = 0; i < SRowSet.cRows; i++) { bkPosition = talloc_realloc(mt->mem_ctx, bkPosition, uint32_t, i + 2); retval = CreateBookmark(&obj_htable, &(bkPosition[i])); mapitest_print_retval_fmt_clean(mt, "CreateBookmark", retval, "(%.2d)", i); if (retval != MAPI_E_SUCCESS) { return false; } } retval = mapi_object_bookmark_get_count(&obj_htable, &count); /* Step 4. Free Bookmarks */ for (i = 0; i < count; i++) { retval = FreeBookmark(&obj_htable, bkPosition[i]); mapitest_print_retval_fmt_clean(mt, "FreeBookmark", retval, "(%.2d)", i); if (retval != MAPI_E_SUCCESS) { return false; } } /* Step 5. Release */ mapi_object_release(&obj_htable); mapitest_common_cleanup(mt); talloc_free(bkPosition); return true; }
void URLView::MessageReceived( BMessage *message ) { // Is this a message from Tracker in response to our drag-and-drop? if( message->what == 'DDCP' ) { // Tracker will send back the name and path of the created file. // We need to read this information. entry_ref ref; message->FindRef( "directory", &ref ); BEntry entry( &ref ); BPath path( &entry ); BString *fullName = new BString( path.Path() ); fullName->Append( "/" ); fullName->Append( message->FindString( "name" ) ); BString *title = new BString( Text() ); // Set the new file as a bookmark or as a person as appropriate. if( IsEmailLink() ) { CreatePerson( fullName, title ); } else CreateBookmark( fullName, title ); delete fullName; delete title; } }