1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
|
/* AUDEX CDDA EXTRACTOR
* Copyright (C) 2007-2014 Marco Nelles (audex@maniatek.com)
* <http://kde.maniatek.com/audex>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef CDDAHEADERWIDGET_H
#define CDDAHEADERWIDGET_H
#include <cmath>
#include <QDebug>
#include <QTimer>
#include <QWidget>
#include <QImage>
#include <QPainter>
#include <QMouseEvent>
#include <QApplication>
#include <QDesktopServices>
#include <QFontMetrics>
#include <QFont>
#include <QX11Info>
#include <KAction>
#include <KActionCollection>
#include <KFileDialog>
#include <KMenu>
#include <KLocale>
#include <KDebug>
#include <KStandardDirs>
#include <KUrl>
#include <KColorScheme>
#include <KMessageBox>
#include "preferences.h"
#include "models/cddamodel.h"
#include "dialogs/coverbrowserdialog.h"
#include "dialogs/cddaheaderdatadialog.h"
#include "utils/coverfetcher.h"
#include "utils/cachedimage.h"
#include "utils/tmpdir.h"
// fixed point defines
#define FP_BITS 10
#define FP_FACTOR (1 << FP_BITS)
enum FadeStyle {
NoFade,
FadeDown,
FadeRight,
FadeUp,
FadeLeft
};
enum MirrorStyle {
NoMirror,
MirrorOverX,
MirrorOverY
};
class CDDAHeaderWidget : public QWidget {
Q_OBJECT
public:
explicit CDDAHeaderWidget(CDDAModel *cddaModel, QWidget* parent = 0, const int coverSize = 128, const int padding = 20);
~CDDAHeaderWidget();
QSize sizeHint() const;
void setCover(CachedImage *cover);
bool isEnabled() const;
public slots:
void setEnabled(bool enabled);
void googleAuto();
signals:
void headerDataChanged();
void coverUp();
void coverDown();
protected:
void paintEvent(QPaintEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event);
void fetchCoverFinished(bool showDialog);
private slots:
void update();
void trigger_repaint();
void cover_is_down();
void google();
void load();
void save();
void view_cover();
void remove();
void edit_data();
void wikipedia();
void set_cover(const QByteArray& cover);
void fetch_first_cover();
void fetch_cover_failed();
void auto_fetch_cover_failed();
void context_menu(const QPoint& point);
private:
CDDAModel *cdda_model;
KActionCollection *action_collection;
int cover_size;
int padding;
quint16 i_cover_checksum;
QImage i_cover;
QImage i_cover_holding;
QTimer timer;
bool animation_up;
bool animation_down;
qreal scale_factor;
bool scale_up;
bool scale_down;
qreal opacity_factor;
bool fade_in;
bool fade_out;
QRect cover_rect;
bool cursor_on_cover;
QRect link1_rect;
bool cursor_on_link1;
QRect link2_rect;
bool cursor_on_link2;
void setup_actions();
bool enabled;
bool fetching_cover_in_progress;
CoverBrowserDialog *cover_browser_dialog;
TmpDir *tmp_dir;
};
#endif
|