1/* 2 * Copyright 2008, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT license. 4 */ 5 6#include "HyperTextActions.h" 7 8#include <Entry.h> 9#include <Message.h> 10#include <Roster.h> 11 12 13// #pragma mark - URLAction 14 15 16URLAction::URLAction(const BString& url) 17 : 18 fURL(url) 19{ 20} 21 22 23URLAction::~URLAction() 24{ 25} 26 27 28void 29URLAction::Clicked(HyperTextView* view, BPoint where, BMessage* message) 30{ 31 // be lazy and let /bin/open open the URL 32 entry_ref ref; 33 if (get_ref_for_path("/bin/open", &ref)) 34 return; 35 36 const char* args[] = { fURL.String(), NULL }; 37 be_roster->Launch(&ref, 1, args); 38} 39 40 41// #pragma mark - OpenFileAction 42 43 44OpenFileAction::OpenFileAction(const BString& file) 45 : 46 fFile(file) 47{ 48} 49 50 51OpenFileAction::~OpenFileAction() 52{ 53} 54 55 56void 57OpenFileAction::Clicked(HyperTextView* view, BPoint where, BMessage* message) 58{ 59 // get the entry ref and let Tracker open the file 60 entry_ref ref; 61 if (get_ref_for_path(fFile.String(), &ref) != B_OK 62 || !BEntry(&ref).Exists()) { 63 return; 64 } 65 66 BMessenger tracker("application/x-vnd.Be-TRAK"); 67 if (tracker.IsValid()) { 68 BMessage message(B_REFS_RECEIVED); 69 message.AddRef("refs", &ref); 70 tracker.SendMessage(&message); 71 } else 72 be_roster->Launch(&ref); 73} 74