File indexing completed on 2024-04-14 04:43:18
0001 /* AUDEX CDDA EXTRACTOR 0002 * SPDX-FileCopyrightText: Copyright (C) 2007 Marco Nelles 0003 * <https://userbase.kde.org/Audex> 0004 * 0005 * SPDX-License-Identifier: GPL-3.0-or-later 0006 */ 0007 0008 #ifndef CDDAHEADERWIDGET_H 0009 #define CDDAHEADERWIDGET_H 0010 0011 #include <cmath> 0012 0013 #include <QApplication> 0014 #include <QDesktopServices> 0015 #include <QFont> 0016 #include <QFontMetrics> 0017 #include <QImage> 0018 #include <QMouseEvent> 0019 #include <QPainter> 0020 #include <QTemporaryDir> 0021 #include <QTimer> 0022 #include <QWidget> 0023 0024 #include <KActionCollection> 0025 #include <KColorScheme> 0026 #include <KLocalizedString> 0027 0028 #include "preferences.h" 0029 0030 #include "dialogs/cddaheaderdatadialog.h" 0031 #include "dialogs/errordialog.h" 0032 #include "models/cddamodel.h" 0033 0034 // fixed point defines 0035 #define FP_BITS 10 0036 #define FP_FACTOR (1 << FP_BITS) 0037 0038 enum FadeStyle { NoFade, FadeDown, FadeRight, FadeUp, FadeLeft }; 0039 0040 enum MirrorStyle { NoMirror, MirrorOverX, MirrorOverY }; 0041 0042 class CDDAHeaderWidget : public QWidget 0043 { 0044 Q_OBJECT 0045 0046 public: 0047 explicit CDDAHeaderWidget(CDDAModel *cddaModel, 0048 QWidget *parent = nullptr, 0049 const int cover_size_min = 200, 0050 const int cover_size_max = 400, 0051 const int padding = 20); 0052 ~CDDAHeaderWidget() override; 0053 QSize sizeHint() const override; 0054 // void setCover(const QImage &cover); 0055 0056 bool isEnabled() const; 0057 0058 public Q_SLOTS: 0059 void setEnabled(bool enabled); 0060 void edit_data(); 0061 0062 Q_SIGNALS: 0063 void headerDataChanged(); 0064 0065 protected: 0066 void paintEvent(QPaintEvent *event) override; 0067 void mouseMoveEvent(QMouseEvent *event) override; 0068 void mousePressEvent(QMouseEvent *event) override; 0069 void fetchCoverFinished(bool showDialog); 0070 0071 private Q_SLOTS: 0072 0073 void update(); 0074 0075 void load(); 0076 void save(); 0077 void view_cover(); 0078 void remove(); 0079 0080 void set_cover(const QByteArray &cover); 0081 0082 void context_menu(const QPoint &point); 0083 0084 private: 0085 CDDAModel *cdda_model; 0086 KActionCollection *action_collection; 0087 int cover_size_min; 0088 int cover_size_max; 0089 int padding; 0090 0091 QImage cd_case; 0092 void construct_cd_case(); 0093 0094 QRect cover_rect; 0095 bool cursor_on_cover; 0096 0097 QRect artist_label_rect; 0098 bool cursor_on_artist_label; 0099 0100 QRect title_label_rect; 0101 bool cursor_on_title_label; 0102 0103 QRect year_label_rect; 0104 bool cursor_on_year_label; 0105 0106 void setup_actions(); 0107 0108 bool enabled; 0109 0110 QTemporaryDir tmp_dir; 0111 }; 0112 0113 #endif