browsecoverartdialog.h 2.92 KB
Newer Older
Urs Fleisch's avatar
Urs Fleisch committed
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
/**
 * \file browsecoverartdialog.h
 * Browse cover art dialog.
 *
 * \b Project: Kid3
 * \author Urs Fleisch
 * \date 11-Jan-2009
 *
 * Copyright (C) 2009  Urs Fleisch
 *
 * This file is part of Kid3.
 *
 * Kid3 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 2 of the License, or
 * (at your option) any later version.
 *
 * Kid3 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 BROWSECOVERARTDIALOG_H
#define BROWSECOVERARTDIALOG_H

#include <qdialog.h>
#include <qstringlist.h>
#include "frame.h"

class QTextEdit;
class QLineEdit;
class QComboBox;
class ExternalProcess;
class ConfigTable;

/**
 * Browse cover art dialog.
 */
class BrowseCoverArtDialog : public QDialog {
Q_OBJECT

public:
	/**
	 * Constructor.
	 *
	 * @param parent parent widget
	 */
	BrowseCoverArtDialog(QWidget* parent);

	/**
	 * Destructor.
	 */
	virtual ~BrowseCoverArtDialog();

	/**
	 * Read the local settings from the configuration.
	 */
	void readConfig();

	/**
	 * Set frames for which picture has to be found.
	 *
	 * @param frames track data
	 */
	void setFrames(const FrameCollection& frames);

	/**
	 * Get the URL of an image file.
	 * The input URL is transformed using the match picture URL table to
	 * get the URL of an image file.
	 *
	 * @param url URL from image drag
	 *
	 * @return URL of image file, empty if no image URL found.
	 */
	static QString getImageUrl(const QString& url);

public slots:
	/**
	 * Hide modal dialog, start browse command.
	 */
	virtual void accept();

	/**
	 * Set the source lineedits to the source selected in the combo box.
	 *
	 * @param index current index of the combo box
	 */
	void setSourceLineEdit(int index);

private slots:
	/**
	 * Show browse command as preview.
	 */
	void showPreview();

	/**
	 * Save the local settings to the configuration.
	 */
	void saveConfig();

	/**
	 * Show help.
	 */
	void showHelp();

private:
	/**
	 * Set the source combo box and line edits from the configuration.
	 */
	void setSourceFromConfig();

	/** Text editor with command preview */
	QTextEdit* m_edit;
	/** Combobox with artist */
	QLineEdit* m_artistLineEdit;
	/** Combobox with album */
	QLineEdit* m_albumLineEdit;
	/** Combobox with sources */
	QComboBox* m_sourceComboBox;
	/** LineEdit for URL */
	QLineEdit* m_urlLineEdit;
	/** Table to extract picture URL */
	ConfigTable* m_matchUrlTable;
	/** URLs */
	QStringList m_urls;
	/** Formatted URL */
	QString m_url;

	/** Track data */
	FrameCollection m_frames;
	/** Process for browser command */
	ExternalProcess* m_process;
};

#endif