xref: /haiku/src/apps/aboutsystem/HyperTextActions.cpp (revision 820dca4df6c7bf955c46e8f6521b9408f50b2900)
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 
16 URLAction::URLAction(const BString& url)
17 	:
18 	fURL(url)
19 {
20 }
21 
22 
23 URLAction::~URLAction()
24 {
25 }
26 
27 
28 void
29 URLAction::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[] = { "/bin/open", fURL.String(), NULL };
37 	be_roster->Launch(&ref, 2, args);
38 
39 }
40 
41 
42 // #pragma mark - OpenFileAction
43 
44 
45 OpenFileAction::OpenFileAction(const BString& file)
46 	:
47 	fFile(file)
48 {
49 }
50 
51 
52 OpenFileAction::~OpenFileAction()
53 {
54 }
55 
56 
57 void
58 OpenFileAction::Clicked(HyperTextView* view, BPoint where, BMessage* message)
59 {
60 	// get the entry ref and let Tracker open the file
61 	entry_ref ref;
62 	if (get_ref_for_path(fFile.String(), &ref) != B_OK
63 		|| !BEntry(&ref).Exists()) {
64 		return;
65 	}
66 
67     BMessenger tracker("application/x-vnd.Be-TRAK");
68     if (tracker.IsValid()) {
69 		BMessage message(B_REFS_RECEIVED);
70 		message.AddRef("refs", &ref);
71 		tracker.SendMessage(&message);
72 	} else
73         be_roster->Launch(&ref);
74 }
75