xref: /trunk/main/fpicker/source/aqua/AquaFilePickerDelegate.cxx (revision cf6516809c57e1bb0a940545cca99cdad54d4ce2)
1*e8959efdSJim Jagielski /**************************************************************
2*e8959efdSJim Jagielski  *
3*e8959efdSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*e8959efdSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*e8959efdSJim Jagielski  * distributed with this work for additional information
6*e8959efdSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*e8959efdSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*e8959efdSJim Jagielski  * "License"); you may not use this file except in compliance
9*e8959efdSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*e8959efdSJim Jagielski  *
11*e8959efdSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*e8959efdSJim Jagielski  *
13*e8959efdSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*e8959efdSJim Jagielski  * software distributed under the License is distributed on an
15*e8959efdSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*e8959efdSJim Jagielski  * KIND, either express or implied.  See the License for the
17*e8959efdSJim Jagielski  * specific language governing permissions and limitations
18*e8959efdSJim Jagielski  * under the License.
19*e8959efdSJim Jagielski  *
20*e8959efdSJim Jagielski  *************************************************************/
21*e8959efdSJim Jagielski 
22*e8959efdSJim Jagielski 
23*e8959efdSJim Jagielski #include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
24*e8959efdSJim Jagielski #include <com/sun/star/uno/Any.hxx>
25*e8959efdSJim Jagielski 
26*e8959efdSJim Jagielski #ifndef _SALAQUAFILEPICKER_HXX_
27*e8959efdSJim Jagielski #include "SalAquaFilePicker.hxx"
28*e8959efdSJim Jagielski #endif
29*e8959efdSJim Jagielski 
30*e8959efdSJim Jagielski #ifndef _FILTERHELPER_HXX_
31*e8959efdSJim Jagielski #include "FilterHelper.hxx"
32*e8959efdSJim Jagielski #endif
33*e8959efdSJim Jagielski 
34*e8959efdSJim Jagielski #include "AquaFilePickerDelegate.hxx"
35*e8959efdSJim Jagielski 
36*e8959efdSJim Jagielski @implementation AquaFilePickerDelegate
37*e8959efdSJim Jagielski 
38*e8959efdSJim Jagielski - (id)initWithFilePicker:(SalAquaFilePicker*)fPicker
39*e8959efdSJim Jagielski {
40*e8959efdSJim Jagielski     if ((self = [super init])) {
41*e8959efdSJim Jagielski         filePicker = fPicker;
42*e8959efdSJim Jagielski         filterHelper = NULL;
43*e8959efdSJim Jagielski         return self;
44*e8959efdSJim Jagielski     }
45*e8959efdSJim Jagielski     return nil;
46*e8959efdSJim Jagielski }
47*e8959efdSJim Jagielski 
48*e8959efdSJim Jagielski - (void)setFilterHelper:(FilterHelper*)helper
49*e8959efdSJim Jagielski {
50*e8959efdSJim Jagielski     filterHelper = helper;
51*e8959efdSJim Jagielski }
52*e8959efdSJim Jagielski 
53*e8959efdSJim Jagielski #pragma mark NSSavePanel delegate methods
54*e8959efdSJim Jagielski 
55*e8959efdSJim Jagielski - (BOOL)panel:(id)sender shouldShowFilename:(NSString *)filename
56*e8959efdSJim Jagielski {
57*e8959efdSJim Jagielski     if( filterHelper == NULL )
58*e8959efdSJim Jagielski         return true;
59*e8959efdSJim Jagielski     if( filename == nil )
60*e8959efdSJim Jagielski         return false;
61*e8959efdSJim Jagielski     return filterHelper->filenameMatchesFilter(filename);
62*e8959efdSJim Jagielski }
63*e8959efdSJim Jagielski 
64*e8959efdSJim Jagielski - (void)panelSelectionDidChange:(id)sender
65*e8959efdSJim Jagielski {
66*e8959efdSJim Jagielski     if (filePicker != NULL) {
67*e8959efdSJim Jagielski         ::com::sun::star::ui::dialogs::FilePickerEvent evt;
68*e8959efdSJim Jagielski         filePicker->fileSelectionChanged(evt);
69*e8959efdSJim Jagielski     }
70*e8959efdSJim Jagielski }
71*e8959efdSJim Jagielski 
72*e8959efdSJim Jagielski - (void)panel:(id)sender directoryDidChange:(NSString *)path
73*e8959efdSJim Jagielski {
74*e8959efdSJim Jagielski     if (filePicker != NULL) {
75*e8959efdSJim Jagielski         ::com::sun::star::ui::dialogs::FilePickerEvent evt;
76*e8959efdSJim Jagielski         filePicker->directoryChanged(evt);
77*e8959efdSJim Jagielski     }
78*e8959efdSJim Jagielski }
79*e8959efdSJim Jagielski 
80*e8959efdSJim Jagielski 
81*e8959efdSJim Jagielski #pragma mark UIActions
82*e8959efdSJim Jagielski - (void)filterSelectedAtIndex:(id)sender
83*e8959efdSJim Jagielski {
84*e8959efdSJim Jagielski     if (sender == nil) {
85*e8959efdSJim Jagielski         return;
86*e8959efdSJim Jagielski     }
87*e8959efdSJim Jagielski 
88*e8959efdSJim Jagielski     if ([sender class] != [NSPopUpButton class]) {
89*e8959efdSJim Jagielski         return;
90*e8959efdSJim Jagielski     }
91*e8959efdSJim Jagielski 
92*e8959efdSJim Jagielski     if (filterHelper == NULL) {
93*e8959efdSJim Jagielski         return;
94*e8959efdSJim Jagielski     }
95*e8959efdSJim Jagielski 
96*e8959efdSJim Jagielski     NSPopUpButton *popup = (NSPopUpButton*)sender;
97*e8959efdSJim Jagielski     unsigned int selectedIndex = [popup indexOfSelectedItem];
98*e8959efdSJim Jagielski 
99*e8959efdSJim Jagielski     filterHelper->SetFilterAtIndex(selectedIndex);
100*e8959efdSJim Jagielski 
101*e8959efdSJim Jagielski     filePicker->filterControlChanged();
102*e8959efdSJim Jagielski }
103*e8959efdSJim Jagielski 
104*e8959efdSJim Jagielski - (void)autoextensionChanged:(id)sender
105*e8959efdSJim Jagielski {
106*e8959efdSJim Jagielski     if (sender == nil) {
107*e8959efdSJim Jagielski         return;
108*e8959efdSJim Jagielski     }
109*e8959efdSJim Jagielski 
110*e8959efdSJim Jagielski     if ([sender class] != [NSButton class]) {
111*e8959efdSJim Jagielski         return;
112*e8959efdSJim Jagielski     }
113*e8959efdSJim Jagielski     uno::Any aValue;
114*e8959efdSJim Jagielski     aValue <<= ([((NSButton*)sender) state] == NSOnState);
115*e8959efdSJim Jagielski 
116*e8959efdSJim Jagielski     filePicker->setValue(::com::sun::star::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, 0, aValue);
117*e8959efdSJim Jagielski }
118*e8959efdSJim Jagielski 
119*e8959efdSJim Jagielski @end
120