1*b1cdbd2cSJim Jagielski#**************************************************************
2*b1cdbd2cSJim Jagielski#
3*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
6*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski#
11*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski#
13*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski#  under the License.
19*b1cdbd2cSJim Jagielski#
20*b1cdbd2cSJim Jagielski#**************************************************************
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielskipackage installer::windows::shortcut;
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielskiuse installer::existence;
27*b1cdbd2cSJim Jagielskiuse installer::exiter;
28*b1cdbd2cSJim Jagielskiuse installer::files;
29*b1cdbd2cSJim Jagielskiuse installer::globals;
30*b1cdbd2cSJim Jagielskiuse installer::windows::idtglobal;
31*b1cdbd2cSJim Jagielski
32*b1cdbd2cSJim Jagielski##############################################################
33*b1cdbd2cSJim Jagielski# Returning the file object for the msiassembly table.
34*b1cdbd2cSJim Jagielski##############################################################
35*b1cdbd2cSJim Jagielski
36*b1cdbd2cSJim Jagielskisub get_file_by_name
37*b1cdbd2cSJim Jagielski{
38*b1cdbd2cSJim Jagielski	my ( $filesref, $filename ) = @_;
39*b1cdbd2cSJim Jagielski
40*b1cdbd2cSJim Jagielski	my $foundfile = 0;
41*b1cdbd2cSJim Jagielski	my $onefile;
42*b1cdbd2cSJim Jagielski
43*b1cdbd2cSJim Jagielski	for ( my $i = 0; $i <= $#{$filesref}; $i++ )
44*b1cdbd2cSJim Jagielski	{
45*b1cdbd2cSJim Jagielski		$onefile = ${$filesref}[$i];
46*b1cdbd2cSJim Jagielski		my $name = $onefile->{'Name'};
47*b1cdbd2cSJim Jagielski
48*b1cdbd2cSJim Jagielski		if ( $name eq $filename )
49*b1cdbd2cSJim Jagielski		{
50*b1cdbd2cSJim Jagielski			$foundfile = 1;
51*b1cdbd2cSJim Jagielski			last;
52*b1cdbd2cSJim Jagielski		}
53*b1cdbd2cSJim Jagielski	}
54*b1cdbd2cSJim Jagielski
55*b1cdbd2cSJim Jagielski	if (! $foundfile ) { $onefile  = ""; }
56*b1cdbd2cSJim Jagielski
57*b1cdbd2cSJim Jagielski	return $onefile;
58*b1cdbd2cSJim Jagielski}
59*b1cdbd2cSJim Jagielski
60*b1cdbd2cSJim Jagielski##############################################################
61*b1cdbd2cSJim Jagielski# Returning identifier for shortcut table.
62*b1cdbd2cSJim Jagielski##############################################################
63*b1cdbd2cSJim Jagielski
64*b1cdbd2cSJim Jagielskisub get_shortcut_identifier
65*b1cdbd2cSJim Jagielski{
66*b1cdbd2cSJim Jagielski	my ($shortcut) = @_;
67*b1cdbd2cSJim Jagielski
68*b1cdbd2cSJim Jagielski	my $identifier = $shortcut->{'gid'};
69*b1cdbd2cSJim Jagielski
70*b1cdbd2cSJim Jagielski	return $identifier;
71*b1cdbd2cSJim Jagielski}
72*b1cdbd2cSJim Jagielski
73*b1cdbd2cSJim Jagielski##############################################################
74*b1cdbd2cSJim Jagielski# Returning directory for shortcut table.
75*b1cdbd2cSJim Jagielski##############################################################
76*b1cdbd2cSJim Jagielski
77*b1cdbd2cSJim Jagielskisub get_shortcut_directory
78*b1cdbd2cSJim Jagielski{
79*b1cdbd2cSJim Jagielski	my ($shortcut, $dirref) = @_;
80*b1cdbd2cSJim Jagielski
81*b1cdbd2cSJim Jagielski	# For shortcuts it is easy to convert the gid_Dir_Abc into the unique name in
82*b1cdbd2cSJim Jagielski	# the directory table, for instance help_en_simpressidx.
83*b1cdbd2cSJim Jagielski	# For files (components) this is not so easy, because files can be included
84*b1cdbd2cSJim Jagielski	# in zip files with subdirectories that are not defined in scp.
85*b1cdbd2cSJim Jagielski
86*b1cdbd2cSJim Jagielski	my $onedir;
87*b1cdbd2cSJim Jagielski	my $shortcutdirectory = $shortcut->{'Dir'};
88*b1cdbd2cSJim Jagielski	my $directory = "";
89*b1cdbd2cSJim Jagielski	my $found = 0;
90*b1cdbd2cSJim Jagielski
91*b1cdbd2cSJim Jagielski	for ( my $i = 0; $i <= $#{$dirref}; $i++ )
92*b1cdbd2cSJim Jagielski	{
93*b1cdbd2cSJim Jagielski		$onedir = ${$dirref}[$i];
94*b1cdbd2cSJim Jagielski		my $directorygid = $onedir->{'Dir'};
95*b1cdbd2cSJim Jagielski
96*b1cdbd2cSJim Jagielski		if ( $directorygid eq $shortcutdirectory )
97*b1cdbd2cSJim Jagielski		{
98*b1cdbd2cSJim Jagielski			$found = 1;
99*b1cdbd2cSJim Jagielski			last;
100*b1cdbd2cSJim Jagielski		}
101*b1cdbd2cSJim Jagielski	}
102*b1cdbd2cSJim Jagielski
103*b1cdbd2cSJim Jagielski	if (!($found))
104*b1cdbd2cSJim Jagielski	{
105*b1cdbd2cSJim Jagielski		installer::exiter::exit_program("ERROR: Did not find DirectoryID $shortcutdirectory in directory collection for shortcut", "get_shortcut_directory");
106*b1cdbd2cSJim Jagielski	}
107*b1cdbd2cSJim Jagielski
108*b1cdbd2cSJim Jagielski	$directory = $onedir->{'uniquename'};
109*b1cdbd2cSJim Jagielski
110*b1cdbd2cSJim Jagielski	if ($directory eq "") { $directory = "INSTALLLOCATION"; }		# Shortcuts in the root directory
111*b1cdbd2cSJim Jagielski
112*b1cdbd2cSJim Jagielski	return $directory;
113*b1cdbd2cSJim Jagielski}
114*b1cdbd2cSJim Jagielski
115*b1cdbd2cSJim Jagielski##############################################################
116*b1cdbd2cSJim Jagielski# Returning name for shortcut table.
117*b1cdbd2cSJim Jagielski##############################################################
118*b1cdbd2cSJim Jagielski
119*b1cdbd2cSJim Jagielskisub get_shortcut_name
120*b1cdbd2cSJim Jagielski{
121*b1cdbd2cSJim Jagielski	my ($shortcut, $shortnamesref, $onelanguage) = @_;
122*b1cdbd2cSJim Jagielski
123*b1cdbd2cSJim Jagielski	my $returnstring;
124*b1cdbd2cSJim Jagielski
125*b1cdbd2cSJim Jagielski	my $name = $shortcut->{'Name'};
126*b1cdbd2cSJim Jagielski
127*b1cdbd2cSJim Jagielski	my $shortstring = installer::windows::idtglobal::make_eight_three_conform($name, "shortcut", $shortnamesref);
128*b1cdbd2cSJim Jagielski	$shortstring =~ s/\s/\_/g;	# replacing white spaces with underline
129*b1cdbd2cSJim Jagielski
130*b1cdbd2cSJim Jagielski	if ( $shortstring eq $name ) { $returnstring = $name; }	# nothing changed
131*b1cdbd2cSJim Jagielski	else {$returnstring = $shortstring . "\|" . $name; }
132*b1cdbd2cSJim Jagielski
133*b1cdbd2cSJim Jagielski	return $returnstring;
134*b1cdbd2cSJim Jagielski}
135*b1cdbd2cSJim Jagielski
136*b1cdbd2cSJim Jagielski##############################################################
137*b1cdbd2cSJim Jagielski# Returning component for shortcut table.
138*b1cdbd2cSJim Jagielski##############################################################
139*b1cdbd2cSJim Jagielski
140*b1cdbd2cSJim Jagielskisub get_shortcut_component
141*b1cdbd2cSJim Jagielski{
142*b1cdbd2cSJim Jagielski	my ($shortcut, $filesref) = @_;
143*b1cdbd2cSJim Jagielski
144*b1cdbd2cSJim Jagielski	my $onefile;
145*b1cdbd2cSJim Jagielski	my $component = "";
146*b1cdbd2cSJim Jagielski	my $found = 0;
147*b1cdbd2cSJim Jagielski	my $shortcut_fileid = $shortcut->{'FileID'};
148*b1cdbd2cSJim Jagielski
149*b1cdbd2cSJim Jagielski	my $absolute_filename = 0;
150*b1cdbd2cSJim Jagielski	if ( $shortcut->{'Styles'} ) { $styles = $shortcut->{'Styles'}; }
151*b1cdbd2cSJim Jagielski	if ( $styles =~ /\bABSOLUTE_FILENAME\b/ ) { $absolute_filename = 1; }	# FileID contains an absolute filename
152*b1cdbd2cSJim Jagielski	if ( $styles =~ /\bUSE_HELPER_FILENAME\b/ ) { $absolute_filename = 1; }	# ComponentIDFile contains id of a helper file
153*b1cdbd2cSJim Jagielski
154*b1cdbd2cSJim Jagielski	# if the FileID contains an absolute filename, therefore the entry for "ComponentIDFile" has to be used.
155*b1cdbd2cSJim Jagielski	if ( $absolute_filename ) { $shortcut_fileid = $shortcut->{'ComponentIDFile'}; }
156*b1cdbd2cSJim Jagielski
157*b1cdbd2cSJim Jagielski	for ( my $i = 0; $i <= $#{$filesref}; $i++ )
158*b1cdbd2cSJim Jagielski	{
159*b1cdbd2cSJim Jagielski		$onefile = ${$filesref}[$i];
160*b1cdbd2cSJim Jagielski		my $filegid = $onefile->{'gid'};
161*b1cdbd2cSJim Jagielski
162*b1cdbd2cSJim Jagielski		if ( $filegid eq $shortcut_fileid )
163*b1cdbd2cSJim Jagielski		{
164*b1cdbd2cSJim Jagielski			$found = 1;
165*b1cdbd2cSJim Jagielski			last;
166*b1cdbd2cSJim Jagielski		}
167*b1cdbd2cSJim Jagielski	}
168*b1cdbd2cSJim Jagielski
169*b1cdbd2cSJim Jagielski	if (!($found))
170*b1cdbd2cSJim Jagielski	{
171*b1cdbd2cSJim Jagielski		installer::exiter::exit_program("ERROR: Did not find FileID $shortcut_fileid in file collection for shortcut", "get_shortcut_component");
172*b1cdbd2cSJim Jagielski	}
173*b1cdbd2cSJim Jagielski
174*b1cdbd2cSJim Jagielski	$component = $onefile->{'componentname'};
175*b1cdbd2cSJim Jagielski
176*b1cdbd2cSJim Jagielski	# finally saving the componentname in the folderitem collector
177*b1cdbd2cSJim Jagielski
178*b1cdbd2cSJim Jagielski	$shortcut->{'component'} = $component;
179*b1cdbd2cSJim Jagielski
180*b1cdbd2cSJim Jagielski	return $component;
181*b1cdbd2cSJim Jagielski}
182*b1cdbd2cSJim Jagielski
183*b1cdbd2cSJim Jagielski##############################################################
184*b1cdbd2cSJim Jagielski# Returning target for shortcut table.
185*b1cdbd2cSJim Jagielski##############################################################
186*b1cdbd2cSJim Jagielski
187*b1cdbd2cSJim Jagielskisub get_shortcut_target
188*b1cdbd2cSJim Jagielski{
189*b1cdbd2cSJim Jagielski	my ($shortcut, $filesref) = @_;
190*b1cdbd2cSJim Jagielski
191*b1cdbd2cSJim Jagielski	my $target = "";
192*b1cdbd2cSJim Jagielski	my $found = 0;
193*b1cdbd2cSJim Jagielski	my $shortcut_fileid = $shortcut->{'FileID'};
194*b1cdbd2cSJim Jagielski	my $onefile;
195*b1cdbd2cSJim Jagielski
196*b1cdbd2cSJim Jagielski	for ( my $i = 0; $i <= $#{$filesref}; $i++ )
197*b1cdbd2cSJim Jagielski	{
198*b1cdbd2cSJim Jagielski		$onefile = ${$filesref}[$i];
199*b1cdbd2cSJim Jagielski		my $filegid = $onefile->{'gid'};
200*b1cdbd2cSJim Jagielski
201*b1cdbd2cSJim Jagielski		if ( $filegid eq $shortcut_fileid )
202*b1cdbd2cSJim Jagielski		{
203*b1cdbd2cSJim Jagielski			$found = 1;
204*b1cdbd2cSJim Jagielski			last;
205*b1cdbd2cSJim Jagielski		}
206*b1cdbd2cSJim Jagielski	}
207*b1cdbd2cSJim Jagielski
208*b1cdbd2cSJim Jagielski	if (!($found))
209*b1cdbd2cSJim Jagielski	{
210*b1cdbd2cSJim Jagielski		installer::exiter::exit_program("ERROR: Did not find FileID $shortcut_fileid in file collection for shortcut", "get_shortcut_target");
211*b1cdbd2cSJim Jagielski	}
212*b1cdbd2cSJim Jagielski
213*b1cdbd2cSJim Jagielski	if ( $onefile->{'Name'} )
214*b1cdbd2cSJim Jagielski	{
215*b1cdbd2cSJim Jagielski		$target = $onefile->{'Name'};
216*b1cdbd2cSJim Jagielski	}
217*b1cdbd2cSJim Jagielski
218*b1cdbd2cSJim Jagielski	$target = "\[\#" . $target . "\]";	# format for Non-Advertised shortcuts
219*b1cdbd2cSJim Jagielski
220*b1cdbd2cSJim Jagielski	return $target;
221*b1cdbd2cSJim Jagielski}
222*b1cdbd2cSJim Jagielski
223*b1cdbd2cSJim Jagielski##############################################################
224*b1cdbd2cSJim Jagielski# Returning arguments for shortcut table.
225*b1cdbd2cSJim Jagielski##############################################################
226*b1cdbd2cSJim Jagielski
227*b1cdbd2cSJim Jagielskisub get_shortcut_arguments
228*b1cdbd2cSJim Jagielski{
229*b1cdbd2cSJim Jagielski	my ($shortcut) = @_;
230*b1cdbd2cSJim Jagielski
231*b1cdbd2cSJim Jagielski	return "";
232*b1cdbd2cSJim Jagielski}
233*b1cdbd2cSJim Jagielski
234*b1cdbd2cSJim Jagielski##############################################################
235*b1cdbd2cSJim Jagielski# Returning the localized description for shortcut table.
236*b1cdbd2cSJim Jagielski##############################################################
237*b1cdbd2cSJim Jagielski
238*b1cdbd2cSJim Jagielskisub get_shortcut_description
239*b1cdbd2cSJim Jagielski{
240*b1cdbd2cSJim Jagielski	my ($shortcut, $onelanguage) = @_;
241*b1cdbd2cSJim Jagielski
242*b1cdbd2cSJim Jagielski	my $description = "";
243*b1cdbd2cSJim Jagielski	if ( $shortcut->{'Tooltip'} ) { $description = $shortcut->{'Tooltip'}; }
244*b1cdbd2cSJim Jagielski
245*b1cdbd2cSJim Jagielski	return $description;
246*b1cdbd2cSJim Jagielski}
247*b1cdbd2cSJim Jagielski
248*b1cdbd2cSJim Jagielski##############################################################
249*b1cdbd2cSJim Jagielski# Returning hotkey for shortcut table.
250*b1cdbd2cSJim Jagielski##############################################################
251*b1cdbd2cSJim Jagielski
252*b1cdbd2cSJim Jagielskisub get_shortcut_hotkey
253*b1cdbd2cSJim Jagielski{
254*b1cdbd2cSJim Jagielski	my ($shortcut) = @_;
255*b1cdbd2cSJim Jagielski
256*b1cdbd2cSJim Jagielski	return "";
257*b1cdbd2cSJim Jagielski}
258*b1cdbd2cSJim Jagielski
259*b1cdbd2cSJim Jagielski##############################################################
260*b1cdbd2cSJim Jagielski# Returning icon for shortcut table.
261*b1cdbd2cSJim Jagielski##############################################################
262*b1cdbd2cSJim Jagielski
263*b1cdbd2cSJim Jagielskisub get_shortcut_icon
264*b1cdbd2cSJim Jagielski{
265*b1cdbd2cSJim Jagielski	my ($shortcut) = @_;
266*b1cdbd2cSJim Jagielski
267*b1cdbd2cSJim Jagielski	return "";
268*b1cdbd2cSJim Jagielski}
269*b1cdbd2cSJim Jagielski
270*b1cdbd2cSJim Jagielski##############################################################
271*b1cdbd2cSJim Jagielski# Returning iconindex for shortcut table.
272*b1cdbd2cSJim Jagielski##############################################################
273*b1cdbd2cSJim Jagielski
274*b1cdbd2cSJim Jagielskisub get_shortcut_iconindex
275*b1cdbd2cSJim Jagielski{
276*b1cdbd2cSJim Jagielski	my ($shortcut) = @_;
277*b1cdbd2cSJim Jagielski
278*b1cdbd2cSJim Jagielski	return "";
279*b1cdbd2cSJim Jagielski}
280*b1cdbd2cSJim Jagielski
281*b1cdbd2cSJim Jagielski##############################################################
282*b1cdbd2cSJim Jagielski# Returning show command for shortcut table.
283*b1cdbd2cSJim Jagielski##############################################################
284*b1cdbd2cSJim Jagielski
285*b1cdbd2cSJim Jagielskisub get_shortcut_showcmd
286*b1cdbd2cSJim Jagielski{
287*b1cdbd2cSJim Jagielski	my ($shortcut) = @_;
288*b1cdbd2cSJim Jagielski
289*b1cdbd2cSJim Jagielski	return "";
290*b1cdbd2cSJim Jagielski}
291*b1cdbd2cSJim Jagielski
292*b1cdbd2cSJim Jagielski##############################################################
293*b1cdbd2cSJim Jagielski# Returning working directory for shortcut table.
294*b1cdbd2cSJim Jagielski##############################################################
295*b1cdbd2cSJim Jagielski
296*b1cdbd2cSJim Jagielskisub get_shortcut_wkdir
297*b1cdbd2cSJim Jagielski{
298*b1cdbd2cSJim Jagielski	my ($shortcut) = @_;
299*b1cdbd2cSJim Jagielski
300*b1cdbd2cSJim Jagielski	return "";
301*b1cdbd2cSJim Jagielski}
302*b1cdbd2cSJim Jagielski
303*b1cdbd2cSJim Jagielski####################################################################
304*b1cdbd2cSJim Jagielski# Returning working directory for shortcut table for FolderItems.
305*b1cdbd2cSJim Jagielski####################################################################
306*b1cdbd2cSJim Jagielski
307*b1cdbd2cSJim Jagielskisub get_folderitem_wkdir
308*b1cdbd2cSJim Jagielski{
309*b1cdbd2cSJim Jagielski	my ($onelink, $dirref) = @_;
310*b1cdbd2cSJim Jagielski
311*b1cdbd2cSJim Jagielski	# For shortcuts it is easy to convert the gid_Dir_Abc into the unique name in
312*b1cdbd2cSJim Jagielski	# the directory table, for instance help_en_simpressidx.
313*b1cdbd2cSJim Jagielski
314*b1cdbd2cSJim Jagielski	my $onedir;
315*b1cdbd2cSJim Jagielski	my $workingdirectory = "";
316*b1cdbd2cSJim Jagielski	if ( $onelink->{'WkDir'} ) { $workingdirectory = $onelink->{'WkDir'}; }
317*b1cdbd2cSJim Jagielski	my $directory = "";
318*b1cdbd2cSJim Jagielski
319*b1cdbd2cSJim Jagielski	if ( $workingdirectory )
320*b1cdbd2cSJim Jagielski	{
321*b1cdbd2cSJim Jagielski		my $found = 0;
322*b1cdbd2cSJim Jagielski
323*b1cdbd2cSJim Jagielski		for ( my $i = 0; $i <= $#{$dirref}; $i++ )
324*b1cdbd2cSJim Jagielski		{
325*b1cdbd2cSJim Jagielski			$onedir = ${$dirref}[$i];
326*b1cdbd2cSJim Jagielski			my $directorygid = $onedir->{'Dir'};
327*b1cdbd2cSJim Jagielski
328*b1cdbd2cSJim Jagielski			if ( $directorygid eq $workingdirectory )
329*b1cdbd2cSJim Jagielski			{
330*b1cdbd2cSJim Jagielski				$found = 1;
331*b1cdbd2cSJim Jagielski				last;
332*b1cdbd2cSJim Jagielski			}
333*b1cdbd2cSJim Jagielski		}
334*b1cdbd2cSJim Jagielski
335*b1cdbd2cSJim Jagielski		if (!($found))
336*b1cdbd2cSJim Jagielski		{
337*b1cdbd2cSJim Jagielski			installer::exiter::exit_program("ERROR: Did not find DirectoryID $workingdirectory in directory collection for FolderItem", "get_folderitem_wkdir");
338*b1cdbd2cSJim Jagielski		}
339*b1cdbd2cSJim Jagielski
340*b1cdbd2cSJim Jagielski		$directory = $onedir->{'uniquename'};
341*b1cdbd2cSJim Jagielski
342*b1cdbd2cSJim Jagielski		if ($directory eq "") { $directory = "INSTALLLOCATION"; }
343*b1cdbd2cSJim Jagielski	}
344*b1cdbd2cSJim Jagielski
345*b1cdbd2cSJim Jagielski	return $directory;
346*b1cdbd2cSJim Jagielski}
347*b1cdbd2cSJim Jagielski
348*b1cdbd2cSJim Jagielski###################################################################
349*b1cdbd2cSJim Jagielski# Returning the directory for a folderitem for shortcut table.
350*b1cdbd2cSJim Jagielski###################################################################
351*b1cdbd2cSJim Jagielski
352*b1cdbd2cSJim Jagielskisub get_folderitem_directory
353*b1cdbd2cSJim Jagielski{
354*b1cdbd2cSJim Jagielski	my ($shortcut) = @_;
355*b1cdbd2cSJim Jagielski
356*b1cdbd2cSJim Jagielski	# my $directory = "$installer::globals::programmenufolder";	 # default
357*b1cdbd2cSJim Jagielski	my $directory = "$installer::globals::officemenufolder";	 # default
358*b1cdbd2cSJim Jagielski
359*b1cdbd2cSJim Jagielski	# The value $installer::globals::programmenufolder is not correct for the
360*b1cdbd2cSJim Jagielski	# PREDEFINED folders, like PREDEFINED_AUTOSTART
361*b1cdbd2cSJim Jagielski
362*b1cdbd2cSJim Jagielski	if ( $shortcut->{'FolderID'} eq "PREDEFINED_AUTOSTART" )
363*b1cdbd2cSJim Jagielski	{
364*b1cdbd2cSJim Jagielski		$directory = $installer::globals::startupfolder;
365*b1cdbd2cSJim Jagielski	}
366*b1cdbd2cSJim Jagielski
367*b1cdbd2cSJim Jagielski	if ( $shortcut->{'FolderID'} eq "PREDEFINED_DESKTOP" )
368*b1cdbd2cSJim Jagielski	{
369*b1cdbd2cSJim Jagielski		$directory = $installer::globals::desktopfolder;
370*b1cdbd2cSJim Jagielski		$installer::globals::desktoplinkexists = 1;
371*b1cdbd2cSJim Jagielski	}
372*b1cdbd2cSJim Jagielski
373*b1cdbd2cSJim Jagielski	if ( $shortcut->{'FolderID'} eq "PREDEFINED_STARTMENU" )
374*b1cdbd2cSJim Jagielski	{
375*b1cdbd2cSJim Jagielski		$directory = $installer::globals::startmenufolder;
376*b1cdbd2cSJim Jagielski	}
377*b1cdbd2cSJim Jagielski
378*b1cdbd2cSJim Jagielski	# saving the directory in the folderitems collector
379*b1cdbd2cSJim Jagielski
380*b1cdbd2cSJim Jagielski	$shortcut->{'directory'} = $directory;
381*b1cdbd2cSJim Jagielski
382*b1cdbd2cSJim Jagielski	return $directory;
383*b1cdbd2cSJim Jagielski}
384*b1cdbd2cSJim Jagielski
385*b1cdbd2cSJim Jagielski########################################################################
386*b1cdbd2cSJim Jagielski# Returning the target (feature) for a folderitem for shortcut table.
387*b1cdbd2cSJim Jagielski# For non-advertised shortcuts this is a formatted string.
388*b1cdbd2cSJim Jagielski########################################################################
389*b1cdbd2cSJim Jagielski
390*b1cdbd2cSJim Jagielskisub get_folderitem_target
391*b1cdbd2cSJim Jagielski{
392*b1cdbd2cSJim Jagielski	my ($shortcut, $filesref) = @_;
393*b1cdbd2cSJim Jagielski
394*b1cdbd2cSJim Jagielski	my $onefile;
395*b1cdbd2cSJim Jagielski	my $target = "";
396*b1cdbd2cSJim Jagielski	my $found = 0;
397*b1cdbd2cSJim Jagielski	my $shortcut_fileid = $shortcut->{'FileID'};
398*b1cdbd2cSJim Jagielski
399*b1cdbd2cSJim Jagielski	my $styles = "";
400*b1cdbd2cSJim Jagielski	my $nonadvertised = 0;
401*b1cdbd2cSJim Jagielski	my $absolute_filename = 0;
402*b1cdbd2cSJim Jagielski	if ( $shortcut->{'Styles'} ) { $styles = $shortcut->{'Styles'}; }
403*b1cdbd2cSJim Jagielski	if ( $styles =~ /\bNON_ADVERTISED\b/ ) { $nonadvertised = 1; }	# this is a non-advertised shortcut
404*b1cdbd2cSJim Jagielski	if ( $styles =~ /\bABSOLUTE_FILENAME\b/ ) { $absolute_filename = 1; }	# FileID contains an absolute filename
405*b1cdbd2cSJim Jagielski
406*b1cdbd2cSJim Jagielski	# if the FileID contains an absolute filename this can simply be returned as target for the shortcut table.
407*b1cdbd2cSJim Jagielski	if ( $absolute_filename )
408*b1cdbd2cSJim Jagielski	{
409*b1cdbd2cSJim Jagielski		$shortcut->{'target'} = $shortcut_fileid;
410*b1cdbd2cSJim Jagielski		return $shortcut_fileid;
411*b1cdbd2cSJim Jagielski	}
412*b1cdbd2cSJim Jagielski
413*b1cdbd2cSJim Jagielski	for ( my $i = 0; $i <= $#{$filesref}; $i++ )
414*b1cdbd2cSJim Jagielski	{
415*b1cdbd2cSJim Jagielski		$onefile = ${$filesref}[$i];
416*b1cdbd2cSJim Jagielski		my $filegid = $onefile->{'gid'};
417*b1cdbd2cSJim Jagielski
418*b1cdbd2cSJim Jagielski		if ( $filegid eq $shortcut_fileid )
419*b1cdbd2cSJim Jagielski		{
420*b1cdbd2cSJim Jagielski			$found = 1;
421*b1cdbd2cSJim Jagielski			last;
422*b1cdbd2cSJim Jagielski		}
423*b1cdbd2cSJim Jagielski	}
424*b1cdbd2cSJim Jagielski
425*b1cdbd2cSJim Jagielski	if (!($found))
426*b1cdbd2cSJim Jagielski	{
427*b1cdbd2cSJim Jagielski		installer::exiter::exit_program("ERROR: Did not find FileID $shortcut_fileid in file collection for folderitem", "get_folderitem_target");
428*b1cdbd2cSJim Jagielski	}
429*b1cdbd2cSJim Jagielski
430*b1cdbd2cSJim Jagielski	# Non advertised shortcuts do not return the feature, but the path to the file
431*b1cdbd2cSJim Jagielski	if ( $nonadvertised )
432*b1cdbd2cSJim Jagielski	{
433*b1cdbd2cSJim Jagielski		$target = "\[" . $onefile->{'uniquedirname'} . "\]" . "\\" . $onefile->{'Name'};
434*b1cdbd2cSJim Jagielski		$shortcut->{'target'} = $target;
435*b1cdbd2cSJim Jagielski		return $target;
436*b1cdbd2cSJim Jagielski	}
437*b1cdbd2cSJim Jagielski
438*b1cdbd2cSJim Jagielski	# the rest only for advertised shortcuts, which contain the feature in the shortcut table.
439*b1cdbd2cSJim Jagielski
440*b1cdbd2cSJim Jagielski	if ( $onefile->{'modules'} ) { $target = $onefile->{'modules'}; }
441*b1cdbd2cSJim Jagielski
442*b1cdbd2cSJim Jagielski	# If modules contains a list of modules, only taking the first one.
443*b1cdbd2cSJim Jagielski	# But this should never be needed
444*b1cdbd2cSJim Jagielski
445*b1cdbd2cSJim Jagielski	if ( $target =~ /^\s*(.*?)\,/ ) { $target = $1; }
446*b1cdbd2cSJim Jagielski
447*b1cdbd2cSJim Jagielski	# Attention: Maximum feature length is 38!
448*b1cdbd2cSJim Jagielski	installer::windows::idtglobal::shorten_feature_gid(\$target);
449*b1cdbd2cSJim Jagielski
450*b1cdbd2cSJim Jagielski	# and finally saving the target in the folderitems collector
451*b1cdbd2cSJim Jagielski
452*b1cdbd2cSJim Jagielski	$shortcut->{'target'} = $target;
453*b1cdbd2cSJim Jagielski
454*b1cdbd2cSJim Jagielski	return $target;
455*b1cdbd2cSJim Jagielski}
456*b1cdbd2cSJim Jagielski
457*b1cdbd2cSJim Jagielski########################################################################
458*b1cdbd2cSJim Jagielski# Returning the arguments for a folderitem for shortcut table.
459*b1cdbd2cSJim Jagielski########################################################################
460*b1cdbd2cSJim Jagielski
461*b1cdbd2cSJim Jagielskisub get_folderitem_arguments
462*b1cdbd2cSJim Jagielski{
463*b1cdbd2cSJim Jagielski	my ($shortcut) = @_;
464*b1cdbd2cSJim Jagielski
465*b1cdbd2cSJim Jagielski	my $parameter = "";
466*b1cdbd2cSJim Jagielski
467*b1cdbd2cSJim Jagielski	if ( $shortcut->{'Parameter'} ) { $parameter = $shortcut->{'Parameter'}; }
468*b1cdbd2cSJim Jagielski
469*b1cdbd2cSJim Jagielski	return $parameter;
470*b1cdbd2cSJim Jagielski}
471*b1cdbd2cSJim Jagielski
472*b1cdbd2cSJim Jagielski########################################################################
473*b1cdbd2cSJim Jagielski# Returning the icon for a folderitem for shortcut table.
474*b1cdbd2cSJim Jagielski# The returned value has to be defined in the icon table.
475*b1cdbd2cSJim Jagielski########################################################################
476*b1cdbd2cSJim Jagielski
477*b1cdbd2cSJim Jagielskisub get_folderitem_icon
478*b1cdbd2cSJim Jagielski{
479*b1cdbd2cSJim Jagielski	my ($shortcut, $filesref, $iconfilecollector) = @_;
480*b1cdbd2cSJim Jagielski
481*b1cdbd2cSJim Jagielski	my $styles = "";
482*b1cdbd2cSJim Jagielski	if ( $shortcut->{'Styles'} ) { $styles = $shortcut->{'Styles'}; }
483*b1cdbd2cSJim Jagielski	if ( $styles =~ /\bNON_ADVERTISED\b/ ) { return ""; }	# no icon for non-advertised shortcuts
484*b1cdbd2cSJim Jagielski
485*b1cdbd2cSJim Jagielski	my $iconfilegid = "";
486*b1cdbd2cSJim Jagielski
487*b1cdbd2cSJim Jagielski	if ( $shortcut->{'IconFile'} ) { $iconfilegid = $shortcut->{'IconFile'}; }
488*b1cdbd2cSJim Jagielski	else { $iconfilegid = $shortcut->{'FileID'}; }
489*b1cdbd2cSJim Jagielski
490*b1cdbd2cSJim Jagielski	my $onefile;
491*b1cdbd2cSJim Jagielski	my $found = 0;
492*b1cdbd2cSJim Jagielski
493*b1cdbd2cSJim Jagielski	for ( my $i = 0; $i <= $#{$filesref}; $i++ )
494*b1cdbd2cSJim Jagielski	{
495*b1cdbd2cSJim Jagielski		$onefile = ${$filesref}[$i];
496*b1cdbd2cSJim Jagielski		my $filegid = $onefile->{'gid'};
497*b1cdbd2cSJim Jagielski
498*b1cdbd2cSJim Jagielski		if ( $filegid eq $iconfilegid )
499*b1cdbd2cSJim Jagielski		{
500*b1cdbd2cSJim Jagielski			$found = 1;
501*b1cdbd2cSJim Jagielski			last;
502*b1cdbd2cSJim Jagielski		}
503*b1cdbd2cSJim Jagielski	}
504*b1cdbd2cSJim Jagielski
505*b1cdbd2cSJim Jagielski	if (!($found))
506*b1cdbd2cSJim Jagielski	{
507*b1cdbd2cSJim Jagielski		installer::exiter::exit_program("ERROR: Did not find FileID $iconfilegid in file collection", "get_folderitem_icon");
508*b1cdbd2cSJim Jagielski	}
509*b1cdbd2cSJim Jagielski
510*b1cdbd2cSJim Jagielski	$iconfile = $onefile->{'Name'};
511*b1cdbd2cSJim Jagielski
512*b1cdbd2cSJim Jagielski	# collecting all icon files to copy them into the icon directory
513*b1cdbd2cSJim Jagielski
514*b1cdbd2cSJim Jagielski	my $sourcepath = $onefile->{'sourcepath'};
515*b1cdbd2cSJim Jagielski
516*b1cdbd2cSJim Jagielski	if (! installer::existence::exists_in_array($sourcepath, $iconfilecollector))
517*b1cdbd2cSJim Jagielski	{
518*b1cdbd2cSJim Jagielski		push(@{$iconfilecollector}, $sourcepath);
519*b1cdbd2cSJim Jagielski	}
520*b1cdbd2cSJim Jagielski
521*b1cdbd2cSJim Jagielski	return $iconfile;
522*b1cdbd2cSJim Jagielski}
523*b1cdbd2cSJim Jagielski
524*b1cdbd2cSJim Jagielski########################################################################
525*b1cdbd2cSJim Jagielski# Returning the iconindex for a folderitem for shortcut table.
526*b1cdbd2cSJim Jagielski########################################################################
527*b1cdbd2cSJim Jagielski
528*b1cdbd2cSJim Jagielskisub get_folderitem_iconindex
529*b1cdbd2cSJim Jagielski{
530*b1cdbd2cSJim Jagielski	my ($shortcut) = @_;
531*b1cdbd2cSJim Jagielski
532*b1cdbd2cSJim Jagielski	my $styles = "";
533*b1cdbd2cSJim Jagielski	if ( $shortcut->{'Styles'} ) { $styles = $shortcut->{'Styles'}; }
534*b1cdbd2cSJim Jagielski	if ( $styles =~ /\bNON_ADVERTISED\b/ ) { return ""; }	# no iconindex for non-advertised shortcuts
535*b1cdbd2cSJim Jagielski
536*b1cdbd2cSJim Jagielski	my $iconid = 0;
537*b1cdbd2cSJim Jagielski
538*b1cdbd2cSJim Jagielski	if ( $shortcut->{'IconID'} ) { $iconid = $shortcut->{'IconID'}; }
539*b1cdbd2cSJim Jagielski
540*b1cdbd2cSJim Jagielski	return $iconid;
541*b1cdbd2cSJim Jagielski}
542*b1cdbd2cSJim Jagielski
543*b1cdbd2cSJim Jagielski########################################################################
544*b1cdbd2cSJim Jagielski# Returning the show command for a folderitem for shortcut table.
545*b1cdbd2cSJim Jagielski########################################################################
546*b1cdbd2cSJim Jagielski
547*b1cdbd2cSJim Jagielskisub get_folderitem_showcmd
548*b1cdbd2cSJim Jagielski{
549*b1cdbd2cSJim Jagielski	my ($shortcut) = @_;
550*b1cdbd2cSJim Jagielski
551*b1cdbd2cSJim Jagielski	return "1";
552*b1cdbd2cSJim Jagielski}
553*b1cdbd2cSJim Jagielski
554*b1cdbd2cSJim Jagielski###########################################################################################################
555*b1cdbd2cSJim Jagielski# Creating the file Shortcut.idt dynamically
556*b1cdbd2cSJim Jagielski# Content:
557*b1cdbd2cSJim Jagielski# Shortcut Directory_ Name Component_ Target Arguments Description Hotkey Icon_ IconIndex ShowCmd WkDir
558*b1cdbd2cSJim Jagielski###########################################################################################################
559*b1cdbd2cSJim Jagielski
560*b1cdbd2cSJim Jagielskisub create_shortcut_table
561*b1cdbd2cSJim Jagielski{
562*b1cdbd2cSJim Jagielski	my ($filesref, $linksref, $folderref, $folderitemsref, $dirref, $basedir, $languagesarrayref, $includepatharrayref, $iconfilecollector) = @_;
563*b1cdbd2cSJim Jagielski
564*b1cdbd2cSJim Jagielski	for ( my $m = 0; $m <= $#{$languagesarrayref}; $m++ )
565*b1cdbd2cSJim Jagielski	{
566*b1cdbd2cSJim Jagielski		my $onelanguage = ${$languagesarrayref}[$m];
567*b1cdbd2cSJim Jagielski
568*b1cdbd2cSJim Jagielski		my @shortcuttable = ();
569*b1cdbd2cSJim Jagielski
570*b1cdbd2cSJim Jagielski		my @shortnames = ();	# to collect all short names
571*b1cdbd2cSJim Jagielski
572*b1cdbd2cSJim Jagielski		installer::windows::idtglobal::write_idt_header(\@shortcuttable, "shortcut");
573*b1cdbd2cSJim Jagielski
574*b1cdbd2cSJim Jagielski		# First the links, defined in scp as ShortCut
575*b1cdbd2cSJim Jagielski
576*b1cdbd2cSJim Jagielski		for ( my $i = 0; $i <= $#{$linksref}; $i++ )
577*b1cdbd2cSJim Jagielski		{
578*b1cdbd2cSJim Jagielski			my $onelink = ${$linksref}[$i];
579*b1cdbd2cSJim Jagielski
580*b1cdbd2cSJim Jagielski			# Controlling the language!
581*b1cdbd2cSJim Jagielski			# Only language independent folderitems or folderitems with the correct language
582*b1cdbd2cSJim Jagielski			# will be included into the table
583*b1cdbd2cSJim Jagielski
584*b1cdbd2cSJim Jagielski			if (! (!(( $onelink->{'ismultilingual'} )) || ( $onelink->{'specificlanguage'} eq $onelanguage )) )  { next; }
585*b1cdbd2cSJim Jagielski
586*b1cdbd2cSJim Jagielski			my %shortcut = ();
587*b1cdbd2cSJim Jagielski
588*b1cdbd2cSJim Jagielski			$shortcut{'Shortcut'} = get_shortcut_identifier($onelink);
589*b1cdbd2cSJim Jagielski			$shortcut{'Directory_'} = get_shortcut_directory($onelink, $dirref);
590*b1cdbd2cSJim Jagielski			$shortcut{'Name'} = get_shortcut_name($onelink, \@shortnames, $onelanguage);	# localized name
591*b1cdbd2cSJim Jagielski			$shortcut{'Component_'} = get_shortcut_component($onelink, $filesref);
592*b1cdbd2cSJim Jagielski			$shortcut{'Target'} = get_shortcut_target($onelink, $filesref);
593*b1cdbd2cSJim Jagielski			$shortcut{'Arguments'} = get_shortcut_arguments($onelink);
594*b1cdbd2cSJim Jagielski			$shortcut{'Description'} = get_shortcut_description($onelink, $onelanguage); 	# localized description
595*b1cdbd2cSJim Jagielski			$shortcut{'Hotkey'} = get_shortcut_hotkey($onelink);
596*b1cdbd2cSJim Jagielski			$shortcut{'Icon_'} = get_shortcut_icon($onelink);
597*b1cdbd2cSJim Jagielski			$shortcut{'IconIndex'} = get_shortcut_iconindex($onelink);
598*b1cdbd2cSJim Jagielski			$shortcut{'ShowCmd'} = get_shortcut_showcmd($onelink);
599*b1cdbd2cSJim Jagielski			$shortcut{'WkDir'} = get_shortcut_wkdir($onelink);
600*b1cdbd2cSJim Jagielski
601*b1cdbd2cSJim Jagielski			my $oneline = $shortcut{'Shortcut'} . "\t" . $shortcut{'Directory_'} . "\t" . $shortcut{'Name'} . "\t"
602*b1cdbd2cSJim Jagielski						. $shortcut{'Component_'} . "\t" . $shortcut{'Target'} . "\t" . $shortcut{'Arguments'} . "\t"
603*b1cdbd2cSJim Jagielski						. $shortcut{'Description'} . "\t" . $shortcut{'Hotkey'} . "\t" . $shortcut{'Icon_'} . "\t"
604*b1cdbd2cSJim Jagielski						. $shortcut{'IconIndex'} . "\t" . $shortcut{'ShowCmd'} . "\t" . $shortcut{'WkDir'} . "\n";
605*b1cdbd2cSJim Jagielski
606*b1cdbd2cSJim Jagielski			push(@shortcuttable, $oneline);
607*b1cdbd2cSJim Jagielski		}
608*b1cdbd2cSJim Jagielski
609*b1cdbd2cSJim Jagielski		# Second the entries into the start menu, defined in scp as Folder and Folderitem
610*b1cdbd2cSJim Jagielski		# These shortcuts will fill the icons table.
611*b1cdbd2cSJim Jagielski
612*b1cdbd2cSJim Jagielski		for ( my $i = 0; $i <= $#{$folderref}; $i++ )
613*b1cdbd2cSJim Jagielski		{
614*b1cdbd2cSJim Jagielski			my $foldergid = ${$folderref}[$i]->{'gid'};
615*b1cdbd2cSJim Jagielski
616*b1cdbd2cSJim Jagielski			# iterating over all folderitems for this folder
617*b1cdbd2cSJim Jagielski
618*b1cdbd2cSJim Jagielski			for ( my $j = 0; $j <= $#{$folderitemsref}; $j++ )
619*b1cdbd2cSJim Jagielski			{
620*b1cdbd2cSJim Jagielski				my $onelink = ${$folderitemsref}[$j];
621*b1cdbd2cSJim Jagielski
622*b1cdbd2cSJim Jagielski				# Controlling the language!
623*b1cdbd2cSJim Jagielski				# Only language independent folderitems or folderitems with the correct language
624*b1cdbd2cSJim Jagielski				# will be included into the table
625*b1cdbd2cSJim Jagielski
626*b1cdbd2cSJim Jagielski				if (! (!(( $onelink->{'ismultilingual'} )) || ( $onelink->{'specificlanguage'} eq $onelanguage )) )  { next; }
627*b1cdbd2cSJim Jagielski
628*b1cdbd2cSJim Jagielski				# controlling the folder
629*b1cdbd2cSJim Jagielski
630*b1cdbd2cSJim Jagielski				my $localused = 0;
631*b1cdbd2cSJim Jagielski
632*b1cdbd2cSJim Jagielski				if ( $onelink->{'used'} ) { $localused = $onelink->{'used'}; }
633*b1cdbd2cSJim Jagielski
634*b1cdbd2cSJim Jagielski				if (!($localused == 1)) { $onelink->{'used'} = "0"; }		# no resetting
635*b1cdbd2cSJim Jagielski
636*b1cdbd2cSJim Jagielski				if (!( $onelink->{'FolderID'} eq $foldergid )) { next; }
637*b1cdbd2cSJim Jagielski
638*b1cdbd2cSJim Jagielski				$onelink->{'used'} = "1";
639*b1cdbd2cSJim Jagielski
640*b1cdbd2cSJim Jagielski				my %shortcut = ();
641*b1cdbd2cSJim Jagielski
642*b1cdbd2cSJim Jagielski				$shortcut{'Shortcut'} = get_shortcut_identifier($onelink);
643*b1cdbd2cSJim Jagielski				$shortcut{'Directory_'} = get_folderitem_directory($onelink);
644*b1cdbd2cSJim Jagielski				$shortcut{'Name'} = get_shortcut_name($onelink, \@shortnames, $onelanguage);	# localized name
645*b1cdbd2cSJim Jagielski				$shortcut{'Component_'} = get_shortcut_component($onelink, $filesref);
646*b1cdbd2cSJim Jagielski				$shortcut{'Target'} = get_folderitem_target($onelink, $filesref);
647*b1cdbd2cSJim Jagielski				$shortcut{'Arguments'} = get_folderitem_arguments($onelink);
648*b1cdbd2cSJim Jagielski				$shortcut{'Description'} = get_shortcut_description($onelink, $onelanguage);	# localized description
649*b1cdbd2cSJim Jagielski				$shortcut{'Hotkey'} = get_shortcut_hotkey($onelink);
650*b1cdbd2cSJim Jagielski				$shortcut{'Icon_'} = get_folderitem_icon($onelink, $filesref, $iconfilecollector);
651*b1cdbd2cSJim Jagielski				$shortcut{'IconIndex'} = get_folderitem_iconindex($onelink);
652*b1cdbd2cSJim Jagielski				$shortcut{'ShowCmd'} = get_folderitem_showcmd($onelink);
653*b1cdbd2cSJim Jagielski				$shortcut{'WkDir'} = get_folderitem_wkdir($onelink, $dirref);
654*b1cdbd2cSJim Jagielski
655*b1cdbd2cSJim Jagielski				my $oneline = $shortcut{'Shortcut'} . "\t" . $shortcut{'Directory_'} . "\t" . $shortcut{'Name'} . "\t"
656*b1cdbd2cSJim Jagielski							. $shortcut{'Component_'} . "\t" . $shortcut{'Target'} . "\t" . $shortcut{'Arguments'} . "\t"
657*b1cdbd2cSJim Jagielski							. $shortcut{'Description'} . "\t" . $shortcut{'Hotkey'} . "\t" . $shortcut{'Icon_'} . "\t"
658*b1cdbd2cSJim Jagielski							. $shortcut{'IconIndex'} . "\t" . $shortcut{'ShowCmd'} . "\t" . $shortcut{'WkDir'} . "\n";
659*b1cdbd2cSJim Jagielski
660*b1cdbd2cSJim Jagielski				push(@shortcuttable, $oneline);
661*b1cdbd2cSJim Jagielski			}
662*b1cdbd2cSJim Jagielski		}
663*b1cdbd2cSJim Jagielski
664*b1cdbd2cSJim Jagielski		# The soffice.ico has to be included into the icon table
665*b1cdbd2cSJim Jagielski		# as icon for the ARP applet
666*b1cdbd2cSJim Jagielski
667*b1cdbd2cSJim Jagielski		my $onefile = "";
668*b1cdbd2cSJim Jagielski		my $sofficefile = "soffice.ico";
669*b1cdbd2cSJim Jagielski
670*b1cdbd2cSJim Jagielski		my $sourcepathref = installer::scriptitems::get_sourcepath_from_filename_and_includepath_classic(\$sofficefile, $includepatharrayref, 0);
671*b1cdbd2cSJim Jagielski
672*b1cdbd2cSJim Jagielski		if ($$sourcepathref eq "") { installer::exiter::exit_program("ERROR: Could not find $sofficefile as icon!", "create_shortcut_table"); }
673*b1cdbd2cSJim Jagielski
674*b1cdbd2cSJim Jagielski		if (! installer::existence::exists_in_array($$sourcepathref, $iconfilecollector))
675*b1cdbd2cSJim Jagielski		{
676*b1cdbd2cSJim Jagielski			unshift(@{$iconfilecollector}, $$sourcepathref);
677*b1cdbd2cSJim Jagielski			$installer::globals::sofficeiconadded = 1;
678*b1cdbd2cSJim Jagielski		}
679*b1cdbd2cSJim Jagielski
680*b1cdbd2cSJim Jagielski        $installer::logger::Lang->printf(
681*b1cdbd2cSJim Jagielski            "Added icon file %s for language pack into icon file collector.\n", $$sourcepathref);
682*b1cdbd2cSJim Jagielski
683*b1cdbd2cSJim Jagielski		# Saving the file
684*b1cdbd2cSJim Jagielski
685*b1cdbd2cSJim Jagielski		my $shortcuttablename = $basedir . $installer::globals::separator . "Shortcut.idt" . "." . $onelanguage;
686*b1cdbd2cSJim Jagielski		installer::files::save_file($shortcuttablename ,\@shortcuttable);
687*b1cdbd2cSJim Jagielski        $installer::logger::Lang->printf("Created idt file: %s\n", $shortcuttablename);
688*b1cdbd2cSJim Jagielski	}
689*b1cdbd2cSJim Jagielski}
690*b1cdbd2cSJim Jagielski
691*b1cdbd2cSJim Jagielski
692*b1cdbd2cSJim Jagielski1;
693