summaryrefslogtreecommitdiff
path: root/dbaccess/source/ui/inc/curledit.hxx
blob: 66168e14ac6652c802f5cac3049dfcad027c9b2e (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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
/* -*- 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_DBACCESS_SOURCE_UI_INC_CURLEDIT_HXX
#define INCLUDED_DBACCESS_SOURCE_UI_INC_CURLEDIT_HXX

#include <vcl/edit.hxx>
#include <vcl/fixed.hxx>
#include <vcl/weld.hxx>
#include <dsntypes.hxx>

namespace dbaui
{

// OConnectionURLEdit
/** an edit control which may be used to edit connection URLs like
    "sdbc:odbc:" or "jdbc:". It prevents the user from editing this prefix,
    though it is normally shown.
*/
class OConnectionURLEdit : public Edit
{
    ::dbaccess::ODsnTypeCollection*
                        m_pTypeCollection;
    VclPtr<FixedText>          m_pForcedPrefix;
    OUString            m_sSaveValueNoPrefix;
    bool            m_bShowPrefix; // when <TRUE> the prefix will be visible, otherwise not

public:
    OConnectionURLEdit(vcl::Window* pParent, WinBits _nBits, bool _bShowPrefix);
    virtual ~OConnectionURLEdit() override;
    virtual void dispose() override;

public:
    // Edit overridables
    virtual void    SetText(const OUString& _rStr) override;
    virtual void    SetText(const OUString& _rStr, const Selection& _rNewSelection) override;
    virtual OUString  GetText() const override;
    virtual void Resize() override;

    /** Shows the Prefix
        @param  _bShowPrefix
            If <TRUE/> than the prefix will be visible, otherwise not.
    */
    void     ShowPrefix(bool _bShowPrefix);
    /// get the currently set text, excluding the prefix indicating the type
    OUString GetTextNoPrefix() const;
    /// set a new text, leave the current prefix unchanged
    void     SetTextNoPrefix(const OUString& _rText);

    void      SaveValueNoPrefix()             { m_sSaveValueNoPrefix = GetTextNoPrefix(); }
    const OUString&  GetSavedValueNoPrefix() const   { return m_sSaveValueNoPrefix; }
    void      SetTypeCollection(::dbaccess::ODsnTypeCollection* _pTypeCollection) { m_pTypeCollection = _pTypeCollection; }
};

class DBOConnectionURLEdit
{
    OUString m_sSavedValue;

    ::dbaccess::ODsnTypeCollection* m_pTypeCollection;
    OUString m_sSaveValueNoPrefix;
    bool m_bShowPrefix; // when <TRUE> the prefix will be visible, otherwise not

    std::unique_ptr<weld::Entry> m_xEntry;
    std::unique_ptr<weld::Label> m_xForcedPrefix;

public:
    DBOConnectionURLEdit(std::unique_ptr<weld::Entry> xEntry, std::unique_ptr<weld::Label> xForcedPrefix);
    ~DBOConnectionURLEdit();

public:
    bool get_visible() const { return m_xEntry->get_visible(); }
    void connect_changed(const Link<weld::Entry&, void>& rLink) { m_xEntry->connect_changed(rLink); }
    void set_help_id(const OString& rName) { m_xEntry->set_help_id(rName); }
    void hide()
    {
        m_xEntry->hide();
        if (m_bShowPrefix)
            m_xForcedPrefix->hide();
    }
    void show()
    {
        m_xEntry->show();
        if (m_bShowPrefix)
            m_xForcedPrefix->show();
    }
    void save_value() { m_sSavedValue = GetText(); }
    bool get_value_changed_from_saved() const { return m_sSavedValue != GetText(); }
    void grab_focus()
    {
        m_xEntry->grab_focus();
    }
    void set_sensitive(bool bSensitive)
    {
        m_xEntry->set_sensitive(bSensitive);
        if (m_bShowPrefix)
            m_xForcedPrefix->set_sensitive(bSensitive);
    }
    void connect_focus_in(const Link<weld::Widget&, void>& rLink)
    {
        m_xEntry->connect_focus_in(rLink);
    }
    void connect_focus_out(const Link<weld::Widget&, void>& rLink)
    {
        m_xEntry->connect_focus_out(rLink);
    }

    // Edit overridables
    void    SetText(const OUString& _rStr);
    void    SetText(const OUString& _rStr, const Selection& _rNewSelection);
    OUString  GetText() const;

    /** Shows the Prefix
        @param  _bShowPrefix
            If <TRUE/> than the prefix will be visible, otherwise not.
    */
    void     ShowPrefix(bool _bShowPrefix);
    /// get the currently set text, excluding the prefix indicating the type
    OUString GetTextNoPrefix() const;
    /// set a new text, leave the current prefix unchanged
    void     SetTextNoPrefix(const OUString& _rText);

    void      SaveValueNoPrefix()             { m_sSaveValueNoPrefix = GetTextNoPrefix(); }
    const OUString&  GetSavedValueNoPrefix() const   { return m_sSaveValueNoPrefix; }
    void      SetTypeCollection(::dbaccess::ODsnTypeCollection* _pTypeCollection) { m_pTypeCollection = _pTypeCollection; }
};

}   // namespace dbaui

#endif // INCLUDED_DBACCESS_SOURCE_UI_INC_CURLEDIT_HXX

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