File indexing completed on 2024-12-08 04:34:24
0001 /* 0002 SPDX-FileCopyrightText: 2021-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 #pragma once 0007 0008 #include "libruqolawidgets_private_export.h" 0009 #include <QWidget> 0010 class QLabel; 0011 class SearchWithDelayLineEdit; 0012 class QTreeView; 0013 class CustomBaseModel; 0014 class QVBoxLayout; 0015 class SearchTreeBaseFilterProxyModel; 0016 class RocketChatAccount; 0017 class LIBRUQOLAWIDGETS_TESTS_EXPORT SearchTreeBaseWidget : public QWidget 0018 { 0019 Q_OBJECT 0020 public: 0021 explicit SearchTreeBaseWidget(RocketChatAccount *account, QWidget *parent = nullptr); 0022 ~SearchTreeBaseWidget() override; 0023 0024 void initialize(); 0025 Q_SIGNALS: 0026 void loadMoreElements(); 0027 void doubleClicked(const QModelIndex &index); 0028 0029 protected: 0030 virtual void slotCustomContextMenuRequested(const QPoint &pos) = 0; 0031 virtual void updateLabel() = 0; 0032 virtual void slotLoadElements(int offset = -1, int count = -1, const QString &searchName = {}) = 0; 0033 void slotLoadMoreElementDone(const QJsonObject &obj); 0034 void slotSearchDone(const QJsonObject &obj); 0035 void connectModel(); 0036 void hideColumns(); 0037 void finishSearching(); 0038 void resizeColumToContents(); 0039 QLabel *const mLabelResultSearch; 0040 SearchWithDelayLineEdit *const mSearchLineEdit; 0041 QTreeView *const mTreeView; 0042 CustomBaseModel *mModel = nullptr; 0043 SearchTreeBaseFilterProxyModel *mProxyModelModel = nullptr; 0044 QVBoxLayout *mSearchLayout = nullptr; 0045 RocketChatAccount *const mRocketChatAccount; 0046 [[nodiscard]] QString clickableStr() const; 0047 0048 private: 0049 LIBRUQOLAWIDGETS_NO_EXPORT void slotSearchCleared(); 0050 LIBRUQOLAWIDGETS_NO_EXPORT void slotSearchRequested(const QString &str); 0051 LIBRUQOLAWIDGETS_NO_EXPORT void slotLoadMoreElements(); 0052 };