1/*
2 * Copyright (C) 2020-2022 Roy Qu (royqh1979@gmail.com)
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <https://www.gnu.org/licenses/>.
16 */
17#include "codecompletionlistview.h"
18#include "../mainwindow.h"
19#include "../editor.h"
20#include "../editorlist.h"
21#include <QDebug>
22
23CodeCompletionListView::CodeCompletionListView(QWidget *parent) : QListView(parent)
24{
25 setUniformItemSizes(true);
26// setItemDelegate(&mDelegate);
27}
28
29void CodeCompletionListView::keyPressEvent(QKeyEvent *event)
30{
31
32 if (event->key() == Qt::Key_Up
33 || event->key() == Qt::Key_Down
34 || event->key() == Qt::Key_PageDown
35 || event->key() == Qt::Key_PageUp
36 || event->key() == Qt::Key_Home
37 || event->key() == Qt::Key_End
38 || event->key() == Qt::Key_CapsLock
39 ) {
40 QListView::keyPressEvent(event);
41 return;
42 }
43 if (!mKeypressedCallback || !mKeypressedCallback(event)) {
44 QListView::keyPressEvent(event);
45 }
46}
47
48void CodeCompletionListView::focusInEvent(QFocusEvent *)
49{
50 Editor *editor = pMainWindow->editorList()->getEditor();
51 if (editor) {
52 editor->showCaret();
53 }
54}
55
56void CodeCompletionListView::mouseDoubleClickEvent(QMouseEvent */*event*/)
57{
58 QKeyEvent keyEvent(QKeyEvent::Type::KeyPress,Qt::Key_Tab,Qt::KeyboardModifier::NoModifier,
59 "\t");
60 keyPressEvent(&keyEvent);
61}
62
63const KeyPressedCallback &CodeCompletionListView::keypressedCallback() const
64{
65 return mKeypressedCallback;
66}
67
68void CodeCompletionListView::setKeypressedCallback(const KeyPressedCallback &newKeypressedCallback)
69{
70 mKeypressedCallback = newKeypressedCallback;
71}
72