uno grid grid a11y: Return existing cell accessible
[LibreOffice.git] / vcl / qt5 / QtInstanceEntry.cxx
blob2228b9b672230046535e3180b5e82fe143af8b82
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
2 /*
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/.
8 */
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)
21 assert(m_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)
31 SolarMutexGuard g;
32 GetQtInstance().RunInMainThread([&] { m_pLineEdit->setText(toQString(rText)); });
35 OUString QtInstanceEntry::get_text() const
37 SolarMutexGuard g;
38 OUString sText;
39 GetQtInstance().RunInMainThread([&] { sText = toOUString(m_pLineEdit->text()); });
40 return sText;
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");
48 return -1;
51 void QtInstanceEntry::set_max_length(int nChars)
53 SolarMutexGuard g;
54 GetQtInstance().RunInMainThread([&] { m_pLineEdit->setMaxLength(nChars); });
57 void QtInstanceEntry::select_region(int nStartPos, int nEndPos)
59 SolarMutexGuard g;
61 GetQtInstance().RunInMainThread([&] {
62 if (nEndPos == -1)
63 nEndPos = m_pLineEdit->text().length();
65 const int nLength = nEndPos - nStartPos;
66 m_pLineEdit->setSelection(nStartPos, nLength);
67 });
70 bool QtInstanceEntry::get_selection_bounds(int& rStartPos, int& rEndPos)
72 SolarMutexGuard g;
74 bool bHasSelection = false;
75 GetQtInstance().RunInMainThread([&] {
76 bHasSelection = m_pLineEdit->hasSelectedText();
77 rStartPos = m_pLineEdit->selectionStart();
78 rEndPos = m_pLineEdit->selectionEnd();
79 });
81 return bHasSelection;
84 void QtInstanceEntry::replace_selection(const OUString& rText)
86 SolarMutexGuard g;
87 GetQtInstance().RunInMainThread([&] { m_pLineEdit->insert(toQString(rText)); });
90 void QtInstanceEntry::set_position(int nCursorPos)
92 SolarMutexGuard g;
93 if (nCursorPos == -1)
94 nCursorPos = m_pLineEdit->text().length();
96 GetQtInstance().RunInMainThread([&] { m_pLineEdit->setCursorPosition(nCursorPos); });
99 int QtInstanceEntry::get_position() const
101 SolarMutexGuard g;
102 int nCursorPos = 0;
103 GetQtInstance().RunInMainThread([&] { nCursorPos = m_pLineEdit->cursorPosition(); });
105 return nCursorPos;
108 void QtInstanceEntry::set_editable(bool bEditable)
110 SolarMutexGuard g;
111 GetQtInstance().RunInMainThread([&] { m_pLineEdit->setReadOnly(!bEditable); });
114 bool QtInstanceEntry::get_editable() const
116 SolarMutexGuard g;
117 bool bEditable = false;
118 GetQtInstance().RunInMainThread([&] { bEditable = !m_pLineEdit->isReadOnly(); });
120 return bEditable;
123 void QtInstanceEntry::set_visibility(bool bVisible)
125 SolarMutexGuard g;
126 GetQtInstance().RunInMainThread(
127 [&] { m_pLineEdit->setEchoMode(!bVisible ? QLineEdit::Password : QLineEdit::Normal); });
130 void QtInstanceEntry::setMessageType(QLineEdit& rLineEdit, weld::EntryMessageType eType)
132 SolarMutexGuard g;
134 GetQtInstance().RunInMainThread([&] {
135 for (QAction* pAction : rLineEdit.actions())
136 rLineEdit.removeAction(pAction);
138 switch (eType)
140 case weld::EntryMessageType::Normal:
141 // don't do anything special
142 return;
143 case weld::EntryMessageType::Warning:
144 rLineEdit.addAction(QIcon::fromTheme("dialog-warning"),
145 QLineEdit::TrailingPosition);
146 return;
147 case weld::EntryMessageType::Error:
148 rLineEdit.addAction(QIcon::fromTheme("dialog-error"), QLineEdit::TrailingPosition);
149 return;
150 default:
151 assert(false && "Unknown EntryMessageType");
152 return;
157 void QtInstanceEntry::set_message_type(weld::EntryMessageType eType)
159 setMessageType(*m_pLineEdit, eType);
162 void QtInstanceEntry::set_placeholder_text(const OUString& rText)
164 SolarMutexGuard g;
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");
173 return false;
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;
191 signal_changed();
194 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */