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