File indexing completed on 2024-05-12 05:07:57

0001 /*
0002     SPDX-FileCopyrightText: 2004-2011 Thomas Baumgart <tbaumgart@kde.org>
0003     SPDX-FileCopyrightText: 2017 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef KMYMONEYCOMPLETION_H
0008 #define KMYMONEYCOMPLETION_H
0009 
0010 #include "kmm_base_widgets_export.h"
0011 
0012 // ----------------------------------------------------------------------------
0013 // QT Includes
0014 
0015 #include <QWidget>
0016 
0017 // ----------------------------------------------------------------------------
0018 // KDE Includes
0019 
0020 // ----------------------------------------------------------------------------
0021 // Project Includes
0022 
0023 class QTreeWidgetItem;
0024 class QTreeWidget;
0025 
0026 class KMyMoneySelector;
0027 
0028 /**
0029   * @author Thomas Baumgart
0030   */
0031 
0032 class KMyMoneyCompletionPrivate;
0033 class KMM_BASE_WIDGETS_EXPORT KMyMoneyCompletion : public QWidget
0034 {
0035     Q_OBJECT
0036     Q_DISABLE_COPY(KMyMoneyCompletion)
0037 
0038 public:
0039 
0040     explicit  KMyMoneyCompletion(QWidget* parent = nullptr);
0041     virtual ~KMyMoneyCompletion();
0042 
0043     /**
0044       * Re-implemented for internal reasons.  API is unaffected.
0045       */
0046     virtual void hide();
0047 
0048     /**
0049       * This method sets the current account with id @p id as
0050       * the current selection.
0051       *
0052       * @param id id of account to be selected
0053       */
0054     void setSelected(const QString& id);
0055 
0056     KMyMoneySelector* selector() const;
0057 
0058 public Q_SLOTS:
0059     void slotMakeCompletion(const QString& txt);
0060 
0061     void slotItemSelected(QTreeWidgetItem *item, int col);
0062 
0063 protected:
0064     /**
0065       * Reimplemented from KMyMoneyAccountSelector to get events from the viewport (to hide
0066       * this widget on mouse-click, Escape-presses, etc.
0067       */
0068     bool eventFilter(QObject *, QEvent *) override;
0069 
0070     /**
0071       * Re-implemented for internal reasons.  API is unaffected.
0072       */
0073     void showEvent(QShowEvent*) override;
0074 
0075     /**
0076       * This method resizes the widget to show a maximum of @p count
0077       * or @a MAX_ITEMS items.
0078       *
0079       * @param count maximum number to be shown if < MAX_ITEMS
0080       */
0081     void adjustSize(const int count);
0082 
0083     /**
0084       * This method counts the number of items currently visible and
0085       * calls adjustSize(count).
0086       */
0087     void adjustSize();
0088 
0089     void connectSignals(QWidget *widget, QTreeWidget* lv);
0090 
0091     void show(bool presetSelected);
0092 
0093 Q_SIGNALS:
0094     void itemSelected(const QString& id);
0095 
0096 protected:
0097     KMyMoneyCompletionPrivate * const d_ptr;
0098     KMyMoneyCompletion(KMyMoneyCompletionPrivate &dd, QWidget* parent = nullptr);
0099     Q_DECLARE_PRIVATE(KMyMoneyCompletion)
0100 };
0101 
0102 #endif