File indexing completed on 2024-05-12 17:22:01

0001 /*
0002     SPDX-FileCopyrightText: 2009 Csaba Karai <cskarai@freemail.hu>
0003     SPDX-FileCopyrightText: 2009-2022 Krusader Krew <https://krusader.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef KRINTERBRIEFVIEW_H
0009 #define KRINTERBRIEFVIEW_H
0010 
0011 // QtCore
0012 #include <QVector>
0013 // QtGui
0014 #include <QFont>
0015 // QtWidgets
0016 #include <QAbstractItemView>
0017 #include <QHeaderView>
0018 #include <QWidget>
0019 
0020 #include "krinterview.h"
0021 
0022 /**
0023  * @brief Compact view showing only icon and file name of view items
0024  */
0025 class KrInterBriefView : public QAbstractItemView, public KrInterView
0026 {
0027     Q_OBJECT
0028 public:
0029     KrInterBriefView(QWidget *parent, KrViewInstance &instance, KConfig *cfg);
0030     ~KrInterBriefView() override;
0031 
0032     // ---- reimplemented from QAbstractItemView ----
0033     QRect visualRect(const QModelIndex &) const override;
0034     QModelIndex indexAt(const QPoint &) const override;
0035     void scrollTo(const QModelIndex &, QAbstractItemView::ScrollHint = QAbstractItemView::EnsureVisible) override;
0036 
0037     // ---- reimplemented from KrView ----
0038     int itemsPerPage() override;
0039     void updateView() override;
0040     bool ensureVisibilityAfterSelect() override
0041     {
0042         return false;
0043     }
0044     void setSortMode(KrViewProperties::ColumnType sortColumn, bool descending) override;
0045 
0046     // ---- reimplemented from QAbstractItemView ----
0047     // Don't do anything, selections are handled by the mouse handler
0048     void setSelection(const QRect &, QItemSelectionModel::SelectionFlags) override
0049     {
0050     }
0051     void selectAll() override
0052     {
0053     }
0054     // this shouldn't be called
0055     QRegion visualRegionForSelection(const QItemSelection &) const override
0056     {
0057         return QRegion();
0058     }
0059 
0060     // ---- reimplemented from KrView ----
0061     void setFileIconSize(int size) override;
0062 
0063 protected slots:
0064     // ---- reimplemented from QAbstractItemView ----
0065     void updateGeometries() override;
0066 
0067     // ---- reimplemented from KrView ----
0068     void currentChanged(const QModelIndex &current, const QModelIndex &previous) override;
0069 
0070     void renameCurrentItem() override;
0071 
0072 protected:
0073     // ---- reimplemented from KrView ----
0074     bool handleKeyEvent(QKeyEvent *e) override;
0075     // ---- reimplemented from QAbstractItemView ----
0076     bool eventFilter(QObject *object, QEvent *event) override;
0077     void keyPressEvent(QKeyEvent *e) override;
0078     void paintEvent(QPaintEvent *e) override;
0079     QModelIndex moveCursor(QAbstractItemView::CursorAction, Qt::KeyboardModifiers) override;
0080     int horizontalOffset() const override;
0081     int verticalOffset() const override;
0082     bool isIndexHidden(const QModelIndex &) const override;
0083     //     QRegion visualRegionForSelection(const QItemSelection&) const override;
0084     bool event(QEvent *e) override;
0085     void mousePressEvent(QMouseEvent *) override;
0086     void mouseReleaseEvent(QMouseEvent *) override;
0087     void mouseDoubleClickEvent(QMouseEvent *ev) override;
0088     void mouseMoveEvent(QMouseEvent *) override;
0089     void wheelEvent(QWheelEvent *) override;
0090     void dragEnterEvent(QDragEnterEvent *e) override;
0091     void dragMoveEvent(QDragMoveEvent *e) override;
0092     void dragLeaveEvent(QDragLeaveEvent *e) override;
0093     void dropEvent(QDropEvent *) override;
0094 
0095     // ---- reimplemented from KrView ----
0096     void setup() override;
0097     void doRestoreSettings(KConfigGroup group) override;
0098     void saveSettings(KConfigGroup grp, KrViewProperties::PropertyType properties) override;
0099     void copySettingsFrom(KrView *other) override;
0100     QRect itemRect(const FileItem *fileitem) override;
0101     void showContextMenu(const QPoint &p) override;
0102     QRect mapToViewport(const QRect &rect) const;
0103 
0104     int getItemHeight() const;
0105     int elementWidth(const QModelIndex &index);
0106     void intersectionSet(const QRect &, QVector<QModelIndex> &);
0107 
0108 private:
0109     QFont _viewFont;
0110     int _numOfColumns;
0111     QHeaderView *_header;
0112 };
0113 
0114 #endif // KRINTERBRIEFVIEW_H