summaryrefslogtreecommitdiff
path: root/include/unotools/pathoptions.hxx
blob: 125f487b952651b70e8df1783bf2ea1476a490d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */
#ifndef INCLUDED_UNOTOOLS_PATHOPTIONS_HXX
#define INCLUDED_UNOTOOLS_PATHOPTIONS_HXX

#include <unotools/unotoolsdllapi.h>
#include <i18nlangtag/languagetag.hxx>
#include <unotools/options.hxx>

#define SVT_SEARCHPATH_DELIMITER      ';'

class SvtPathOptions_Impl;

/*! Handle various defined paths

  All path functions return URLs!
*/
class SAL_WARN_UNUSED UNOTOOLS_DLLPUBLIC SvtPathOptions : public utl::detail::Options
{
private:
    std::shared_ptr<SvtPathOptions_Impl>    pImpl;

public:
    enum Paths
    {
        PATH_ADDIN,
        PATH_AUTOCORRECT,
        PATH_AUTOTEXT,
        PATH_BACKUP,
        PATH_BASIC,
        PATH_BITMAP,
        PATH_CONFIG,
        PATH_DICTIONARY,
        PATH_FAVORITES,
        PATH_FILTER,
        PATH_GALLERY,
        PATH_GRAPHIC,
        PATH_HELP,
        PATH_LINGUISTIC,
        PATH_MODULE,
        PATH_PALETTE,
        PATH_PLUGIN,
        PATH_STORAGE,
        PATH_TEMP,
        PATH_TEMPLATE,
        PATH_USERCONFIG,
        PATH_WORK,
        PATH_CLASSIFICATION,
        PATH_UICONFIG,
        PATH_FINGERPRINT,
        PATH_COUNT // should always be the last element
    };

    SvtPathOptions();
    virtual ~SvtPathOptions() override;

    // get the paths, not const because of using a mutex
    const OUString& GetAddinPath() const;
    const OUString& GetAutoCorrectPath() const;
    const OUString& GetAutoTextPath() const;
    const OUString& GetBackupPath() const;
    const OUString& GetBasicPath() const;
    const OUString& GetBitmapPath() const;
    const OUString& GetConfigPath() const;
    const OUString& GetDictionaryPath() const;
    const OUString& GetFavoritesPath() const;
    const OUString& GetFilterPath() const;
    const OUString& GetGalleryPath() const;
    const OUString& GetGraphicPath() const;
    const OUString& GetHelpPath() const;
    const OUString& GetLinguisticPath() const;
    const OUString& GetModulePath() const;
    const OUString& GetPalettePath() const;
    const OUString& GetPluginPath() const;
    const OUString& GetStoragePath() const;
    const OUString& GetTempPath() const;
    const OUString& GetTemplatePath() const;
    const OUString& GetUserConfigPath() const;
    const OUString& GetWorkPath() const;
    const OUString& GetUIConfigPath() const;
    const OUString& GetFingerprintPath() const;
    const OUString& GetClassificationPath() const;

    // set the paths
    void            SetAddinPath( const OUString& rPath );
    void            SetAutoCorrectPath( const OUString& rPath );
    void            SetAutoTextPath( const OUString& rPath );
    void            SetBackupPath( const OUString& rPath );
    void            SetBasicPath( const OUString& rPath );
    void            SetBitmapPath( const OUString& rPath );
    void            SetConfigPath( const OUString& rPath );
    void            SetDictionaryPath( const OUString& rPath );
    void            SetFavoritesPath( const OUString& rPath );
    void            SetFilterPath( const OUString& rPath );
    void            SetGalleryPath( const OUString& rPath );
    void            SetGraphicPath( const OUString& rPath );
    void            SetHelpPath( const OUString& rPath );
    void            SetLinguisticPath( const OUString& rPath );
    void            SetModulePath( const OUString& rPath );
    void            SetPalettePath( const OUString& rPath );
    void            SetPluginPath( const OUString& rPath );
    void            SetStoragePath( const OUString& rPath );
    void            SetTempPath( const OUString& rPath );
    void            SetTemplatePath( const OUString& rPath );
    void            SetUserConfigPath( const OUString& rPath );
    void            SetWorkPath( const OUString& rPath );

    OUString        SubstituteVariable( const OUString& rVar ) const;
    OUString        ExpandMacros( const OUString& rPath ) const;
    OUString        UseVariable( const OUString& rVar ) const;
    bool            SearchFile( OUString& rIniFile, Paths ePath = PATH_USERCONFIG );
    const LanguageTag& GetLanguageTag() const;
};

#endif // INCLUDED_UNOTOOLS_PATHOPTIONS_HXX

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */