MythTV master
importmusic.h
Go to the documentation of this file.
1#ifndef IMPORTMUSIC_H_
2#define IMPORTMUSIC_H_
3
4// C++
5#include <iostream>
6#include <utility>
7#include <vector>
8
9// Qt
10#include <QStringList>
11
12// MythTV
13#include <libmythbase/mthread.h>
15
16class MusicMetadata;
18
19class MythUIText;
20class MythUITextEdit;
21class MythUIImage;
22class MythUIButton;
24class MythUICheckBox;
25class MythDialogBox;
26
28{
32};
33
35{
36 public:
37 explicit FileScannerThread(ImportMusicDialog *parent);
38 void run() override; // MThread
39
40 private:
42};
43
45{
46 public:
47 FileCopyThread(QString src, QString dst)
48 : MThread("FileCopy"), m_srcFile(std::move(src)),
49 m_dstFile(std::move(dst)) {}
50 void run() override; // MThread
51
52 bool GetResult(void) const { return m_result; }
53
54 private:
55 QString m_srcFile;
56 QString m_dstFile;
57 bool m_result {false};
58};
59
61{
62
63 Q_OBJECT
64
65 public:
66 explicit ImportMusicDialog(MythScreenStack *parent);
67 ~ImportMusicDialog() override;
68
69 bool Create(void) override; // MythScreenType
70 bool keyPressEvent(QKeyEvent *event) override; // MythScreenType
71 void customEvent(QEvent *event) override; // MythUIType
72
74 void doScan(void);
75 void doFileCopy(const QString &src, const QString &dst);
76
77 public slots:
78 void addAllNewPressed(void);
79 void playPressed(void);
80 void addPressed(void);
81 void nextNewPressed(void);
82 void locationPressed(void);
83 void coverArtPressed(void);
84
85 void nextPressed(void);
86 void prevPressed(void);
87 void showEditMetadataDialog(void);
88 void startScan(void);
89 void doExit(bool ok);
90
91 // popup menu
92 void ShowMenu(void) override; // MythScreenType
93 void saveDefaults(void);
94 void setCompilation(void);
95 void setCompilationArtist(void);
96 void setArtist(void);
97 void setAlbum(void);
98 void setYear(void);
99 void setTrack(void);
100 void setGenre(void);
101 void setRating(void);
102 void setTitleWordCaps(void);
103 void setTitleInitialCap(void);
104 void metadataChanged(void);
105 void chooseBackend(void) const;
106 void setSaveHost(const QString& host);
107
108 signals:
109 void importFinished(void);
110
111 private:
112 void fillWidgets();
113 void scanDirectory(QString &directory, std::vector<TrackInfo*> *tracks);
115 static bool copyFile(const QString &src, const QString &dst);
116
119 std::vector<TrackInfo*> *m_tracks {nullptr};
120 QStringList m_sourceFiles;
123
124 // GUI stuff
129
138
141
144
149
151
152 // default metadata values
160 bool m_haveDefaults {false};
161};
162
164
166{
167
168 Q_OBJECT
169
170 public:
171
172 ImportCoverArtDialog(MythScreenStack *parent, QString sourceDir,
173 MusicMetadata *metadata, QString storageDir)
174 : MythScreenType(parent, "import_coverart"),
175 m_sourceDir(std::move(sourceDir)),
176 m_musicStorageDir(std::move(storageDir)),
177 m_metadata(metadata) {}
178 ~ImportCoverArtDialog() override = default;
179
180 bool Create(void) override; // MythScreenType
181 bool keyPressEvent(QKeyEvent *event) override; // MythScreenType
182
183 public slots:
184 void copyPressed(void);
185 void prevPressed(void);
186 void nextPressed(void);
187 void selectorChanged(void);
188
189 private:
190 void scanDirectory(void);
191 void updateStatus(void);
192 void updateTypeSelector(void);
193
194 QStringList m_filelist;
195 QString m_sourceDir;
200
201 //
202 // GUI stuff
203 //
208
211
216};
217
218#endif
bool GetResult(void) const
Definition: importmusic.h:52
QString m_srcFile
Definition: importmusic.h:55
FileCopyThread(QString src, QString dst)
Definition: importmusic.h:47
QString m_dstFile
Definition: importmusic.h:56
void run() override
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.
Definition: importmusic.cpp:48
void run() override
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.
Definition: importmusic.cpp:39
ImportMusicDialog * m_parent
Definition: importmusic.h:41
FileScannerThread(ImportMusicDialog *parent)
Definition: importmusic.cpp:34
MythUIImage * m_coverartImage
Definition: importmusic.h:209
ImportCoverArtDialog(MythScreenStack *parent, QString sourceDir, MusicMetadata *metadata, QString storageDir)
Definition: importmusic.h:172
MusicMetadata * m_metadata
Definition: importmusic.h:197
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
MythUIButton * m_exitButton
Definition: importmusic.h:215
MythUIButton * m_prevButton
Definition: importmusic.h:213
void updateTypeSelector(void)
MythUIText * m_currentText
Definition: importmusic.h:205
~ImportCoverArtDialog() override=default
MythUIButton * m_nextButton
Definition: importmusic.h:212
void selectorChanged(void)
bool Create(void) override
MythUIButton * m_copyButton
Definition: importmusic.h:214
MythUIText * m_filenameText
Definition: importmusic.h:204
MythUIButtonList * m_typeList
Definition: importmusic.h:210
MythUIText * m_statusText
Definition: importmusic.h:206
QStringList m_filelist
Definition: importmusic.h:194
MythUIText * m_destinationText
Definition: importmusic.h:207
void prevPressed(void)
static bool copyFile(const QString &src, const QString &dst)
void setGenre(void)
void startScan(void)
MythUIText * m_trackText
Definition: importmusic.h:137
void chooseBackend(void) const
void saveDefaults(void)
void setTitleWordCaps(void)
~ImportMusicDialog() override
Definition: importmusic.cpp:68
MythUIButton * m_locationButton
Definition: importmusic.h:126
MythUIText * m_currentText
Definition: importmusic.h:142
MythUIButton * m_addButton
Definition: importmusic.h:146
MythUIText * m_genreText
Definition: importmusic.h:135
void importFinished(void)
QString m_musicStorageDir
Definition: importmusic.h:117
MythUIButton * m_prevButton
Definition: importmusic.h:140
QStringList m_sourceFiles
Definition: importmusic.h:120
void addAllNewPressed(void)
MythUIText * m_titleText
Definition: importmusic.h:134
void nextPressed(void)
void showImportCoverArtDialog()
void setRating(void)
MythUIText * m_statusText
Definition: importmusic.h:143
void scanDirectory(QString &directory, std::vector< TrackInfo * > *tracks)
MythUIButton * m_addallnewButton
Definition: importmusic.h:147
MythUIButton * m_playButton
Definition: importmusic.h:145
ImportMusicDialog(MythScreenStack *parent)
Definition: importmusic.cpp:58
MythUIButton * m_nextButton
Definition: importmusic.h:139
void metadataChanged(void)
QString m_defaultCompArtist
Definition: importmusic.h:154
bool m_somethingWasImported
Definition: importmusic.h:118
MythUIText * m_compartistText
Definition: importmusic.h:131
void setArtist(void)
void doExit(bool ok)
MythUIButton * m_nextnewButton
Definition: importmusic.h:148
MythUIButton * m_scanButton
Definition: importmusic.h:127
void playPressed(void)
MusicMetadata * m_playingMetaData
Definition: importmusic.h:122
void showEditMetadataDialog(void)
std::vector< TrackInfo * > * m_tracks
Definition: importmusic.h:119
MythUITextEdit * m_locationEdit
Definition: importmusic.h:125
void addPressed(void)
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
void locationPressed(void)
void setYear(void)
MythUIButton * m_coverartButton
Definition: importmusic.h:128
MythUIText * m_artistText
Definition: importmusic.h:132
void nextNewPressed(void)
QString m_defaultGenre
Definition: importmusic.h:157
void coverArtPressed(void)
void doFileCopy(const QString &src, const QString &dst)
MythUICheckBox * m_compilationCheck
Definition: importmusic.h:150
void customEvent(QEvent *event) override
QString m_defaultAlbum
Definition: importmusic.h:156
void setCompilationArtist(void)
void ShowMenu(void) override
void setTrack(void)
void setSaveHost(const QString &host)
MythUIText * m_albumText
Definition: importmusic.h:133
MythUIText * m_filenameText
Definition: importmusic.h:130
bool somethingWasImported() const
Definition: importmusic.h:73
bool Create(void) override
MythUIText * m_yearText
Definition: importmusic.h:136
void setTitleInitialCap(void)
void setAlbum(void)
QString m_defaultArtist
Definition: importmusic.h:155
void setCompilation(void)
This is a wrapper around QThread that does several additional things.
Definition: mthread.h:49
Basic menu dialog, message and a list of options.
Screen in which all other widgets are contained and rendered.
List widget, displays list items in a variety of themeable arrangements and can trigger signals when ...
A single button widget.
Definition: mythuibutton.h:22
A checkbox widget supporting three check states - on,off,half and two conditions - selected and unsel...
Image widget, displays a single image or multiple images in sequence.
Definition: mythuiimage.h:98
A text entry and edit widget.
All purpose text widget, displays a text string.
Definition: mythuitext.h:29
STL namespace.
bool isNewTune
Definition: importmusic.h:30
MusicMetadata * metadata
Definition: importmusic.h:29
bool metadataHasChanged
Definition: importmusic.h:31