File indexing completed on 2024-04-28 17:06:25

0001 /*
0002     SPDX-FileCopyrightText: 2003 Shie Erlich <erlich@users.sourceforge.net>
0003     SPDX-FileCopyrightText: 2003 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 SIDEBAR_H
0010 #define SIDEBAR_H
0011 
0012 // QtCore
0013 #include <QPointer>
0014 // QtWidgets
0015 #include <QButtonGroup>
0016 #include <QStackedWidget>
0017 #include <QToolButton>
0018 #include <QWidget>
0019 
0020 #include <KConfigCore/KConfigGroup>
0021 #include <KIO/PreviewJob>
0022 #include <KIOFileWidgets/KImageFilePreview>
0023 
0024 class KrSqueezedTextLabel;
0025 class PanelViewer;
0026 class DiskUsageViewer;
0027 class KrFileTreeView;
0028 class FileItem;
0029 
0030 /**
0031  * Additional side widget showing various meta information for the current file/directories.
0032  */
0033 class Sidebar : public QWidget
0034 {
0035     Q_OBJECT
0036 
0037     enum Parts {
0038         /** Folder tree view */
0039         Tree,
0040         /** Preview image for current file/directory */
0041         Preview,
0042         /** File view: show file in most appropriate, read-only editor */
0043         View,
0044         /** Disk usage for current directory structure */
0045         DskUsage,
0046         /** Dummy */
0047         Last = 0xFF
0048     };
0049 
0050 public:
0051     explicit Sidebar(QWidget *parent);
0052     ~Sidebar() override;
0053     inline int currentPage() const
0054     {
0055         return stack->currentWidget()->property("KrusaderWidgetId").toInt();
0056     }
0057     void saveSettings(const KConfigGroup &cfg) const;
0058     void restoreSettings(const KConfigGroup &cfg);
0059     void setCurrentPage(int);
0060 
0061 public slots:
0062     void update(const FileItem *fileitem);
0063     void onPanelPathChange(const QUrl &url);
0064     void show();
0065     void hide();
0066 
0067 signals:
0068     void urlActivated(const QUrl &url);
0069     void hideMe();
0070 
0071 protected slots:
0072     void tabSelected(int id);
0073     void handleOpenUrlRequest(const QUrl &url);
0074 
0075 protected:
0076     void focusInEvent(QFocusEvent *) override;
0077 
0078     bool _hidden;
0079     QStackedWidget *stack;
0080     KImageFilePreview *imageFilePreview;
0081     KrSqueezedTextLabel *dataLine;
0082     QPointer<KIO::PreviewJob> pjob;
0083     KrFileTreeView *tree;
0084     QToolButton *treeBtn, *previewBtn, *viewerBtn, *duBtn;
0085     QButtonGroup *btns;
0086     PanelViewer *fileViewer;
0087     DiskUsageViewer *diskusage;
0088 };
0089 
0090 #endif