1251881Speter/*
2251881Speter * Copyright (c) 1999-2000, Eric Moon.
3251881Speter * All rights reserved.
4251881Speter *
5251881Speter * Redistribution and use in source and binary forms, with or without
6251881Speter * modification, are permitted provided that the following conditions
7251881Speter * are met:
8251881Speter *
9251881Speter * 1. Redistributions of source code must retain the above copyright
10251881Speter *    notice, this list of conditions, and the following disclaimer.
11251881Speter *
12251881Speter * 2. Redistributions in binary form must reproduce the above copyright
13251881Speter *    notice, this list of conditions, and the following disclaimer in the
14251881Speter *    documentation and/or other materials provided with the distribution.
15251881Speter *
16251881Speter * 3. The name of the author may not be used to endorse or promote products
17251881Speter *    derived from this software without specific prior written permission.
18251881Speter *
19251881Speter * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
20251881Speter * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21251881Speter * OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22251881Speter * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
23251881Speter * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24251881Speter * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25251881Speter * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
26251881Speter * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
27251881Speter * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28251881Speter * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29251881Speter */
30251881Speter
31251881Speter
32251881Speter// AppNodeInfoView.cpp
33251881Speter
34251881Speter#include "AppNodeInfoView.h"
35251881Speter// NodeManager
36251881Speter#include "NodeRef.h"
37251881Speter// Support
38251881Speter#include "MediaIcon.h"
39251881Speter#include "MediaString.h"
40251881Speter
41251881Speter// Application Kit
42251881Speter#include <Roster.h>
43251881Speter// Media Kit
44251881Speter#include <MediaNode.h>
45251881Speter#include <MediaRoster.h>
46251881Speter// Storage Kit
47251881Speter#include <AppFileInfo.h>
48251881Speter#include <Entry.h>
49251881Speter#include <File.h>
50289180Speter#include <Path.h>
51289180Speter
52251881Speter__USE_CORTEX_NAMESPACE
53251881Speter
54251881Speter#include <Debug.h>
55251881Speter#define D_METHOD(x) //PRINT (x)
56251881Speter
57251881Speter// -------------------------------------------------------- //
58251881Speter// *** ctor/dtor (public)
59251881Speter// -------------------------------------------------------- //
60251881Speter
61251881SpeterAppNodeInfoView::AppNodeInfoView(
62251881Speter	const NodeRef *ref)
63251881Speter	: LiveNodeInfoView(ref)
64251881Speter{
65251881Speter	D_METHOD(("AppNodeInfoView::AppNodeInfoView()\n"));
66251881Speter
67251881Speter	// adjust view properties
68251881Speter	setSideBarWidth(be_plain_font->StringWidth(" File Format ") + 2 * InfoView::M_H_MARGIN);
69251881Speter	setSubTitle("Application-Owned Node");
70251881Speter
71251881Speter	// add separator
72251881Speter	addField("", "");
73251881Speter
74251881Speter	port_info portInfo;
75251881Speter	app_info appInfo;
76251881Speter
77251881Speter	if ((get_port_info(ref->node().port, &portInfo) == B_OK)
78251881Speter	 && (be_roster->GetRunningAppInfo(portInfo.team, &appInfo) == B_OK))
79251881Speter	{
80251881Speter		BEntry appEntry(&appInfo.ref);
81251881Speter		char appName[B_FILE_NAME_LENGTH];
82251881Speter		if ((appEntry.InitCheck() == B_OK)
83251881Speter		 && (appEntry.GetName(appName) == B_OK))
84251881Speter		{
85251881Speter			addField("Application", appName);
86251881Speter		}
87251881Speter		BFile appFile(&appInfo.ref, B_READ_ONLY);
88251881Speter		if (appFile.InitCheck() == B_OK)
89251881Speter		{
90251881Speter			BAppFileInfo appFileInfo(&appFile);
91251881Speter			if (appFileInfo.InitCheck() == B_OK)
92251881Speter			{
93251881Speter				version_info appVersion;
94251881Speter				if (appFileInfo.GetVersionInfo(&appVersion, B_APP_VERSION_KIND) == B_OK)
95251881Speter				{
96251881Speter					addField("Version", appVersion.long_info);
97251881Speter				}
98251881Speter			}
99251881Speter		}
100251881Speter		addField("Signature", appInfo.signature);
101251881Speter	}
102251881Speter}
103251881Speter
104251881SpeterAppNodeInfoView::~AppNodeInfoView()
105251881Speter{
106251881Speter	D_METHOD(("AppNodeInfoView::~AppNodeInfoView()\n"));
107251881Speter}
108251881Speter
109251881Speter// END -- AppNodeInfoView.cpp --
110251881Speter