File indexing completed on 2024-10-06 12:22:44

0001 /*
0002     This file is part of the KDE libraries
0003     SPDX-FileCopyrightText: 2003 Scott Wheeler <wheeler@kde.org>
0004     SPDX-FileCopyrightText: 2005 Rafal Rzepecki <divide@users.sourceforge.net>
0005     SPDX-FileCopyrightText: 2006 Hamish Rodda <rodda@kde.org>
0006 
0007     SPDX-License-Identifier: LGPL-2.0-only
0008 */
0009 
0010 #include "ktreewidgetsearchlinewidget.h"
0011 #include "ktreewidgetsearchline.h"
0012 
0013 #include <QHBoxLayout>
0014 #include <QTreeWidget>
0015 
0016 class KTreeWidgetSearchLineWidgetPrivate
0017 {
0018 public:
0019     QTreeWidget *treeWidget = nullptr;
0020     KTreeWidgetSearchLine *searchLine = nullptr;
0021 };
0022 
0023 KTreeWidgetSearchLineWidget::KTreeWidgetSearchLineWidget(QWidget *parent, QTreeWidget *treeWidget)
0024     : QWidget(parent)
0025     , d(new KTreeWidgetSearchLineWidgetPrivate)
0026 {
0027     d->treeWidget = treeWidget;
0028 
0029     // can't call createWidgets directly because it calls virtual functions
0030     // that might not work if called directly from here due to how inheritance works
0031     QMetaObject::invokeMethod(this, "createWidgets", Qt::QueuedConnection);
0032 }
0033 
0034 KTreeWidgetSearchLineWidget::~KTreeWidgetSearchLineWidget() = default;
0035 
0036 KTreeWidgetSearchLine *KTreeWidgetSearchLineWidget::createSearchLine(QTreeWidget *treeWidget) const
0037 {
0038     return new KTreeWidgetSearchLine(const_cast<KTreeWidgetSearchLineWidget *>(this), treeWidget);
0039 }
0040 
0041 void KTreeWidgetSearchLineWidget::createWidgets()
0042 {
0043     searchLine()->show();
0044 
0045     QHBoxLayout *layout = new QHBoxLayout(this);
0046     layout->setContentsMargins(0, 0, 0, 0);
0047     layout->addWidget(d->searchLine);
0048     setFocusProxy(searchLine());
0049 }
0050 
0051 KTreeWidgetSearchLine *KTreeWidgetSearchLineWidget::searchLine() const
0052 {
0053     if (!d->searchLine) {
0054         d->searchLine = createSearchLine(d->treeWidget);
0055     }
0056 
0057     return d->searchLine;
0058 }
0059 
0060 #include "moc_ktreewidgetsearchlinewidget.cpp"