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

0001 /*
0002     SPDX-FileCopyrightText: 2002 Shie Erlich <erlich@users.sourceforge.net>
0003     SPDX-FileCopyrightText: 2002 Rafi Yanai <yanai@users.sourceforge.net>
0004     SPDX-FileCopyrightText: 2004-2022 Krusader Krew <https://krusader.org>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #ifndef KRINTERDETAILEDVIEW_H
0010 #define KRINTERDETAILEDVIEW_H
0011 
0012 // QtCore
0013 #include <QVector>
0014 // QtGui
0015 #include <QFont>
0016 // QtWidgets
0017 #include <QTreeView>
0018 
0019 #include "krinterview.h"
0020 
0021 class QMouseEvent;
0022 class QKeyEvent;
0023 class QDragEnterEvent;
0024 
0025 class KrInterDetailedView : public QTreeView, public KrInterView
0026 {
0027     Q_OBJECT
0028 
0029 public:
0030     KrInterDetailedView(QWidget *parent, KrViewInstance &instance, KConfig *cfg);
0031     ~KrInterDetailedView() override;
0032 
0033     void updateView() override;
0034 
0035     bool ensureVisibilityAfterSelect() override
0036     {
0037         return false;
0038     }
0039     int itemsPerPage() override;
0040     void setSortMode(KrViewProperties::ColumnType sortColumn, bool descending) override;
0041     void setFileIconSize(int size) override;
0042     void doRestoreSettings(KConfigGroup grp) override;
0043 
0044 protected slots:
0045     void renameCurrentItem() override;
0046     void sectionResized(int, int, int);
0047     void sectionMoved(int, int, int);
0048     void currentChanged(const QModelIndex &current, const QModelIndex &previous) override;
0049 
0050 protected:
0051     void setup() override;
0052     void copySettingsFrom(KrView *other) override;
0053     void saveSettings(KConfigGroup grp, KrViewProperties::PropertyType properties) override;
0054 
0055     // Don't do anything, selections are handled by the mouse handler
0056     void setSelection(const QRect &, QItemSelectionModel::SelectionFlags) override
0057     {
0058     }
0059     void selectAll() override
0060     {
0061     }
0062 
0063     void keyPressEvent(QKeyEvent *e) override;
0064     void mousePressEvent(QMouseEvent *) override;
0065     void mouseReleaseEvent(QMouseEvent *) override;
0066     void mouseDoubleClickEvent(QMouseEvent *ev) override;
0067     void mouseMoveEvent(QMouseEvent *) override;
0068     void wheelEvent(QWheelEvent *) override;
0069     bool event(QEvent *e) override;
0070     void dragEnterEvent(QDragEnterEvent *e) override;
0071     void dragMoveEvent(QDragMoveEvent *e) override;
0072     void dragLeaveEvent(QDragLeaveEvent *e) override;
0073     void dropEvent(QDropEvent *) override;
0074     bool eventFilter(QObject *object, QEvent *event) override;
0075     bool viewportEvent(QEvent *event) override;
0076     void drawRow(QPainter *painter, const QStyleOptionViewItem &options, const QModelIndex &index) const override;
0077 
0078     QRect itemRect(const FileItem *fileitem) override;
0079 
0080     void showContextMenu(const QPoint &p) override;
0081     void recalculateColumnSizes();
0082 
0083 private:
0084     QFont _viewFont;
0085     bool _autoResizeColumns;
0086 };
0087 #endif // __krinterview__