1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
3 * This file is part of the LibreOffice project.
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/.
10 #include <QtInstanceEntry.hxx>
11 #include <QtInstanceEntry.moc>
13 #include <vcl/qt/QtUtils.hxx>
15 #include <QtGui/QIcon>
17 QtInstanceEntry::QtInstanceEntry(QLineEdit
* pLineEdit
)
18 : QtInstanceWidget(pLineEdit
)
19 , m_pLineEdit(pLineEdit
)
23 QObject::connect(m_pLineEdit
, &QLineEdit::cursorPositionChanged
, this,
24 [&] { signal_cursor_position(); });
25 QObject::connect(m_pLineEdit
, &QLineEdit::textChanged
, this,
26 &QtInstanceEntry::handleTextChanged
);
29 void QtInstanceEntry::set_text(const OUString
& rText
)
32 GetQtInstance().RunInMainThread([&] { m_pLineEdit
->setText(toQString(rText
)); });
35 OUString
QtInstanceEntry::get_text() const
39 GetQtInstance().RunInMainThread([&] { sText
= toOUString(m_pLineEdit
->text()); });
43 void QtInstanceEntry::set_width_chars(int) { assert(false && "Not implemented yet"); }
45 int QtInstanceEntry::get_width_chars() const
47 assert(false && "Not implemented yet");
51 void QtInstanceEntry::set_max_length(int nChars
)
54 GetQtInstance().RunInMainThread([&] { m_pLineEdit
->setMaxLength(nChars
); });
57 void QtInstanceEntry::select_region(int nStartPos
, int nEndPos
)
61 GetQtInstance().RunInMainThread([&] {
63 nEndPos
= m_pLineEdit
->text().length();
65 const int nLength
= nEndPos
- nStartPos
;
66 m_pLineEdit
->setSelection(nStartPos
, nLength
);
70 bool QtInstanceEntry::get_selection_bounds(int& rStartPos
, int& rEndPos
)
74 bool bHasSelection
= false;
75 GetQtInstance().RunInMainThread([&] {
76 bHasSelection
= m_pLineEdit
->hasSelectedText();
77 rStartPos
= m_pLineEdit
->selectionStart();
78 rEndPos
= m_pLineEdit
->selectionEnd();
84 void QtInstanceEntry::replace_selection(const OUString
& rText
)
87 GetQtInstance().RunInMainThread([&] { m_pLineEdit
->insert(toQString(rText
)); });
90 void QtInstanceEntry::set_position(int nCursorPos
)
94 nCursorPos
= m_pLineEdit
->text().length();
96 GetQtInstance().RunInMainThread([&] { m_pLineEdit
->setCursorPosition(nCursorPos
); });
99 int QtInstanceEntry::get_position() const
103 GetQtInstance().RunInMainThread([&] { nCursorPos
= m_pLineEdit
->cursorPosition(); });
108 void QtInstanceEntry::set_editable(bool bEditable
)
111 GetQtInstance().RunInMainThread([&] { m_pLineEdit
->setReadOnly(!bEditable
); });
114 bool QtInstanceEntry::get_editable() const
117 bool bEditable
= false;
118 GetQtInstance().RunInMainThread([&] { bEditable
= !m_pLineEdit
->isReadOnly(); });
123 void QtInstanceEntry::set_visibility(bool bVisible
)
126 GetQtInstance().RunInMainThread(
127 [&] { m_pLineEdit
->setEchoMode(!bVisible
? QLineEdit::Password
: QLineEdit::Normal
); });
130 void QtInstanceEntry::setMessageType(QLineEdit
& rLineEdit
, weld::EntryMessageType eType
)
134 GetQtInstance().RunInMainThread([&] {
135 for (QAction
* pAction
: rLineEdit
.actions())
136 rLineEdit
.removeAction(pAction
);
140 case weld::EntryMessageType::Normal
:
141 // don't do anything special
143 case weld::EntryMessageType::Warning
:
144 rLineEdit
.addAction(QIcon::fromTheme("dialog-warning"),
145 QLineEdit::TrailingPosition
);
147 case weld::EntryMessageType::Error
:
148 rLineEdit
.addAction(QIcon::fromTheme("dialog-error"), QLineEdit::TrailingPosition
);
151 assert(false && "Unknown EntryMessageType");
157 void QtInstanceEntry::set_message_type(weld::EntryMessageType eType
)
159 setMessageType(*m_pLineEdit
, eType
);
162 void QtInstanceEntry::set_placeholder_text(const OUString
& rText
)
165 GetQtInstance().RunInMainThread([&] { m_pLineEdit
->setPlaceholderText(toQString(rText
)); });
168 void QtInstanceEntry::set_overwrite_mode(bool) { assert(false && "Not implemented yet"); }
170 bool QtInstanceEntry::get_overwrite_mode() const
172 assert(false && "Not implemented yet");
176 void QtInstanceEntry::set_font(const vcl::Font
&) { assert(false && "Not implemented yet"); }
178 void QtInstanceEntry::set_font_color(const Color
& rColor
) { setFontColor(rColor
); }
180 void QtInstanceEntry::cut_clipboard() { assert(false && "Not implemented yet"); }
182 void QtInstanceEntry::copy_clipboard() { assert(false && "Not implemented yet"); }
184 void QtInstanceEntry::paste_clipboard() { assert(false && "Not implemented yet"); }
186 void QtInstanceEntry::set_alignment(TxtAlign
) { assert(false && "Not implemented yet"); }
188 void QtInstanceEntry::handleTextChanged()
190 SolarMutexGuard aGuard
;
194 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */