LibreOffice Module fpicker (master) 1
iodlgimp.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19#pragma once
20
21#include "PlacesListBox.hxx"
22
23#include <vcl/idle.hxx>
24
25#include <deque>
26#include <memory>
27#include <vector>
28
29class CheckBox;
30class SvtFileDialog;
31
32#define FILEDIALOG_DEF_EXTSEP ';'
33#define FILEDIALOG_DEF_WILDCARD '*'
34
35
36// SvtFileDialogFilter_Impl
37
38
39/* [Description]
40
41 Instances of this class represent a filter.
42*/
43
45{
46private:
47 OUString m_aName; // name of the entry
48 OUString m_aType; // filter wildcard - if empty, the entry marks a group
49
50public:
51 SvtFileDialogFilter_Impl( OUString aName, OUString aType );
53
54 const OUString& GetName() const { return m_aName; }
55 const OUString& GetType() const { return m_aType; }
56 OUString GetExtension() const { return m_aType.getLength() > 2 ? m_aType.copy( 2 ) : OUString(); }
57
58 bool isGroupSeparator() const { return m_aType.isEmpty(); }
59};
60
61typedef std::deque<std::unique_ptr<SvtFileDialogFilter_Impl>> SvtFileDialogFilterList_Impl;
62
64{
67};
68
70{
73};
74
76{
77private:
78 std::unique_ptr<weld::Toolbar> m_xToolbar;
79 std::unique_ptr<weld::Menu> m_xMenu;
81
82 std::vector<OUString> aURLs;
83
84public:
85 SvtUpButton_Impl(std::unique_ptr<weld::Toolbar> xToolbar,
86 std::unique_ptr<weld::Menu> xMenu,
87 SvtFileDialog* pDlg);
88
89 void set_help_id(const OUString& rHelpId) { m_xToolbar->set_help_id(rHelpId); }
90 void show() { m_xToolbar->show(); }
91
92 void FillURLMenu();
93
94 weld::Widget* getWidget() { return m_xToolbar.get(); }
95
96private:
97
98 DECL_LINK(SelectHdl, const OUString&, void);
99 DECL_LINK(ClickHdl, const OUString&, void);
100};
101
102class SvtURLBox;
104{
105private:
107 OUString m_sCurrentFilterDisplayName; // may differ from m_pCurFilter->GetName in case it is a cached entry
108
109 css::uno::Sequence< OUString > m_aDenyList;
110
111public:
113 std::unique_ptr<SvtFileDialogFilter_Impl> m_xUserFilter;
114
115 std::unique_ptr<weld::Label> m_xFtFileName;
116 std::unique_ptr<SvtURLBox> m_xEdFileName;
117
118 std::unique_ptr<weld::Label> m_xSharedLabel;
119 std::unique_ptr<weld::ComboBox> m_xSharedListBox;
120
121 std::unique_ptr<weld::Label> m_xFtFileType;
122 std::unique_ptr<weld::ComboBox> m_xLbFilter;
123 std::unique_ptr<weld::Button> m_xBtnFileOpen;
124 std::unique_ptr<weld::Button> m_xBtnCancel;
125 std::unique_ptr<weld::Button> m_xBtnHelp;
126 std::unique_ptr<SvtUpButton_Impl> m_xBtnUp;
127 std::unique_ptr<weld::Button> m_xBtnNewFolder;
128 std::unique_ptr<weld::CheckButton> m_xCbPassword;
129 std::unique_ptr<weld::CheckButton> m_xCbGPGEncrypt;
130 std::unique_ptr<SvtURLBox> m_xEdCurrentPath;
131 std::unique_ptr<weld::CheckButton> m_xCbAutoExtension;
132 std::unique_ptr<weld::CheckButton> m_xCbOptions;
133
134 std::unique_ptr<PlacesListBox> m_xPlaces;
135 std::unique_ptr<weld::Button> m_xBtnConnectToServer;
136
140
141 OUString m_aStdDir;
142
143 // delay filter when traveling the filterbox
145
146 // shows OpenHdl_Imp() if the open was triggered by a double click
148
149 // MultiSelection?
151
152 // remember sizes
153 OUString m_aIniKey;
154
155 explicit SvtExpFileDlg_Impl();
157
158 void SetDenyList( const css::uno::Sequence< OUString >& rDenyList ) { m_aDenyList = rDenyList; }
159 const css::uno::Sequence< OUString >& GetDenyList() const { return m_aDenyList; }
160 void SetStandardDir( const OUString& rDir );
161 const OUString& GetStandardDir() const { return m_aStdDir; }
162
163 // access to the filter listbox only as weld::Widget* - we want to maintain the entries/userdata ourself
165 const weld::Widget* GetFilterListControl() const { return m_xLbFilter.get(); }
167 {
168 m_xLbFilter->connect_changed(rHandler);
169 }
170
171 // inits the listbox for the filters from the filter list (_pFilter)
172 void InitFilterList( );
173 bool HasFilterListEntry( const OUString& rFilterName )
174 {
175 return m_xLbFilter->find_text(rFilterName) != -1;
176 }
177
178 void SelectFilterListEntry( const OUString& rFilterName )
179 {
180 m_xLbFilter->set_active_text(rFilterName);
181 }
182
183 void InsertFilterListEntry( const SvtFileDialogFilter_Impl* _pFilterDesc );
184 // _pFilterDesc must already have been added to _pFilter
185 SvtFileDialogFilter_Impl* GetSelectedFilterEntry( OUString& rDisplayName ) const
186 {
187 rDisplayName = m_xLbFilter->get_active_text();
188 return weld::fromId<SvtFileDialogFilter_Impl*>(m_xLbFilter->get_active_id());
189 }
190
191 // access to the current filter via methods only - need to care for consistency between m_pCurFilter and m_sCurrentFilterDisplayName
193 {
194 return m_pCurFilter;
195 }
196
197 const OUString& GetCurFilterDisplayName() const
198 {
200 }
201
202 void SetCurFilter( SvtFileDialogFilter_Impl const * _pFilter, const OUString& rDisplayName );
203};
204
205/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
void SetDenyList(const css::uno::Sequence< OUString > &rDenyList)
Definition: iodlgimp.hxx:158
PickerFlags m_nStyle
Definition: iodlgimp.hxx:139
std::unique_ptr< SvtURLBox > m_xEdFileName
Definition: iodlgimp.hxx:116
bool HasFilterListEntry(const OUString &rFilterName)
Definition: iodlgimp.hxx:173
SvtFileDialogFilterList_Impl m_aFilter
Definition: iodlgimp.hxx:112
SvtFileDlgType m_eDlgType
Definition: iodlgimp.hxx:138
const css::uno::Sequence< OUString > & GetDenyList() const
Definition: iodlgimp.hxx:159
const weld::Widget * GetFilterListControl() const
Definition: iodlgimp.hxx:165
std::unique_ptr< weld::Label > m_xFtFileName
Definition: iodlgimp.hxx:115
std::unique_ptr< weld::CheckButton > m_xCbGPGEncrypt
Definition: iodlgimp.hxx:129
const SvtFileDialogFilter_Impl * m_pCurFilter
Definition: iodlgimp.hxx:106
void SetCurFilter(SvtFileDialogFilter_Impl const *_pFilter, const OUString &rDisplayName)
Definition: iodlgimp.cxx:151
void SetStandardDir(const OUString &rDir)
Definition: iodlgimp.cxx:137
std::unique_ptr< weld::Button > m_xBtnFileOpen
Definition: iodlgimp.hxx:123
std::unique_ptr< weld::CheckButton > m_xCbAutoExtension
Definition: iodlgimp.hxx:131
std::unique_ptr< PlacesListBox > m_xPlaces
Definition: iodlgimp.hxx:134
void InsertFilterListEntry(const SvtFileDialogFilter_Impl *_pFilterDesc)
Definition: iodlgimp.cxx:162
std::unique_ptr< SvtUpButton_Impl > m_xBtnUp
Definition: iodlgimp.hxx:126
const OUString & GetStandardDir() const
Definition: iodlgimp.hxx:161
const OUString & GetCurFilterDisplayName() const
Definition: iodlgimp.hxx:197
std::unique_ptr< weld::Button > m_xBtnHelp
Definition: iodlgimp.hxx:125
std::unique_ptr< weld::CheckButton > m_xCbPassword
Definition: iodlgimp.hxx:128
SvtFileDialogFilter_Impl * GetSelectedFilterEntry(OUString &rDisplayName) const
Definition: iodlgimp.hxx:185
std::unique_ptr< weld::Label > m_xSharedLabel
Definition: iodlgimp.hxx:118
OUString m_aStdDir
Definition: iodlgimp.hxx:141
OUString m_aIniKey
Definition: iodlgimp.hxx:153
void SetFilterListSelectHdl(const Link< weld::ComboBox &, void > &rHandler)
Definition: iodlgimp.hxx:166
SvtFileDlgMode m_eMode
Definition: iodlgimp.hxx:137
std::unique_ptr< weld::Button > m_xBtnNewFolder
Definition: iodlgimp.hxx:127
std::unique_ptr< weld::Button > m_xBtnCancel
Definition: iodlgimp.hxx:124
std::unique_ptr< SvtURLBox > m_xEdCurrentPath
Definition: iodlgimp.hxx:130
OUString m_sCurrentFilterDisplayName
Definition: iodlgimp.hxx:107
std::unique_ptr< weld::Label > m_xFtFileType
Definition: iodlgimp.hxx:121
void SelectFilterListEntry(const OUString &rFilterName)
Definition: iodlgimp.hxx:178
std::unique_ptr< weld::CheckButton > m_xCbOptions
Definition: iodlgimp.hxx:132
std::unique_ptr< weld::ComboBox > m_xSharedListBox
Definition: iodlgimp.hxx:119
const SvtFileDialogFilter_Impl * GetCurFilter() const
Definition: iodlgimp.hxx:192
std::unique_ptr< weld::Button > m_xBtnConnectToServer
Definition: iodlgimp.hxx:135
weld::Widget * GetFilterListControl()
Definition: iodlgimp.hxx:164
css::uno::Sequence< OUString > m_aDenyList
Definition: iodlgimp.hxx:109
std::unique_ptr< SvtFileDialogFilter_Impl > m_xUserFilter
Definition: iodlgimp.hxx:113
std::unique_ptr< weld::ComboBox > m_xLbFilter
Definition: iodlgimp.hxx:122
OUString GetExtension() const
Definition: iodlgimp.hxx:56
SvtFileDialogFilter_Impl(OUString aName, OUString aType)
Definition: iodlgimp.cxx:39
const OUString & GetType() const
Definition: iodlgimp.hxx:55
bool isGroupSeparator() const
Definition: iodlgimp.hxx:58
const OUString & GetName() const
Definition: iodlgimp.hxx:54
std::unique_ptr< weld::Menu > m_xMenu
Definition: iodlgimp.hxx:79
std::unique_ptr< weld::Toolbar > m_xToolbar
Definition: iodlgimp.hxx:78
weld::Widget * getWidget()
Definition: iodlgimp.hxx:94
void FillURLMenu()
Definition: iodlgimp.cxx:63
void set_help_id(const OUString &rHelpId)
Definition: iodlgimp.hxx:89
std::vector< OUString > aURLs
Definition: iodlgimp.hxx:82
DECL_LINK(SelectHdl, const OUString &, void)
SvtUpButton_Impl(std::unique_ptr< weld::Toolbar > xToolbar, std::unique_ptr< weld::Menu > xMenu, SvtFileDialog *pDlg)
Definition: iodlgimp.cxx:51
DECL_LINK(ClickHdl, const OUString &, void)
SvtFileDialog * m_pDlg
Definition: iodlgimp.hxx:80
PickerFlags
std::deque< std::unique_ptr< SvtFileDialogFilter_Impl > > SvtFileDialogFilterList_Impl
Definition: iodlgimp.hxx:61
SvtFileDlgMode
Definition: iodlgimp.hxx:64
@ FILEDLG_MODE_SAVE
Definition: iodlgimp.hxx:66
@ FILEDLG_MODE_OPEN
Definition: iodlgimp.hxx:65
SvtFileDlgType
Definition: iodlgimp.hxx:70
@ FILEDLG_TYPE_PATHDLG
Definition: iodlgimp.hxx:72
@ FILEDLG_TYPE_FILEDLG
Definition: iodlgimp.hxx:71