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
39 protected:
40 void run() override; // MThread
41
42 private:
44};
45
47{
48 public:
49 FileCopyThread(QString src, QString dst)
50 : MThread("FileCopy"), m_srcFile(std::move(src)),
51 m_dstFile(std::move(dst)) {}
52
53 bool GetResult(void) const { return m_result; }
54
55 protected:
56 void run() override; // MThread
57
58 private:
59 QString m_srcFile;
60 QString m_dstFile;
61 bool m_result {false};
62};
63
65{
66
67 Q_OBJECT
68
69 public:
70 explicit ImportMusicDialog(MythScreenStack *parent);
71 ~ImportMusicDialog() override;
72
73 bool Create(void) override; // MythScreenType
74 bool keyPressEvent(QKeyEvent *event) override; // MythScreenType
75
77 void doScan(void);
78 void doFileCopy(const QString &src, const QString &dst);
79
80 public slots:
81 void addAllNewPressed(void);
82 void playPressed(void);
83 void addPressed(void);
84 void nextNewPressed(void);
85 void locationPressed(void);
86 void coverArtPressed(void);
87
88 void nextPressed(void);
89 void prevPressed(void);
90 void showEditMetadataDialog(void);
91 void startScan(void);
92 void doExit(bool ok);
93
94 // popup menu
95 void ShowMenu(void) override; // MythScreenType
96 void saveDefaults(void);
97 void setCompilation(void);
98 void setCompilationArtist(void);
99 void setArtist(void);
100 void setAlbum(void);
101 void setYear(void);
102 void setTrack(void);
103 void setGenre(void);
104 void setRating(void);
105 void setTitleWordCaps(void);
106 void setTitleInitialCap(void);
107 void metadataChanged(void);
108 void chooseBackend(void) const;
109 void setSaveHost(const QString& host);
110
111 signals:
112 void importFinished(void);
113
114 protected:
115 void customEvent(QEvent *event) override; // MythUIType
116
117 private:
118 void fillWidgets();
119 void scanDirectory(QString &directory, std::vector<TrackInfo*> *tracks);
121 static bool copyFile(const QString &src, const QString &dst);
122
125 std::vector<TrackInfo*> *m_tracks {nullptr};
126 QStringList m_sourceFiles;
129
130 // GUI stuff
135
144
147
150
155
157
158 // default metadata values
166 bool m_haveDefaults {false};
167};
168
170
172{
173
174 Q_OBJECT
175
176 public:
177
178 ImportCoverArtDialog(MythScreenStack *parent, QString sourceDir,
179 MusicMetadata *metadata, QString storageDir)
180 : MythScreenType(parent, "import_coverart"),
181 m_sourceDir(std::move(sourceDir)),
182 m_musicStorageDir(std::move(storageDir)),
183 m_metadata(metadata) {}
184 ~ImportCoverArtDialog() override = default;
185
186 bool Create(void) override; // MythScreenType
187 bool keyPressEvent(QKeyEvent *event) override; // MythScreenType
188
189 public slots:
190 void copyPressed(void);
191 void prevPressed(void);
192 void nextPressed(void);
193 void selectorChanged(void);
194
195 private:
196 void scanDirectory(void);
197 void updateStatus(void);
198 void updateTypeSelector(void);
199
200 QStringList m_filelist;
201 QString m_sourceDir;
206
207 //
208 // GUI stuff
209 //
214
217
222};
223
224#endif
bool GetResult(void) const
Definition: importmusic.h:53
QString m_srcFile
Definition: importmusic.h:59
FileCopyThread(QString src, QString dst)
Definition: importmusic.h:49
QString m_dstFile
Definition: importmusic.h:60
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:50
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:41
ImportMusicDialog * m_parent
Definition: importmusic.h:43
FileScannerThread(ImportMusicDialog *parent)
Definition: importmusic.cpp:36
MythUIImage * m_coverartImage
Definition: importmusic.h:215
ImportCoverArtDialog(MythScreenStack *parent, QString sourceDir, MusicMetadata *metadata, QString storageDir)
Definition: importmusic.h:178
MusicMetadata * m_metadata
Definition: importmusic.h:203
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
MythUIButton * m_exitButton
Definition: importmusic.h:221
MythUIButton * m_prevButton
Definition: importmusic.h:219
void updateTypeSelector(void)
MythUIText * m_currentText
Definition: importmusic.h:211
~ImportCoverArtDialog() override=default
MythUIButton * m_nextButton
Definition: importmusic.h:218
void selectorChanged(void)
bool Create(void) override
MythUIButton * m_copyButton
Definition: importmusic.h:220
MythUIText * m_filenameText
Definition: importmusic.h:210
MythUIButtonList * m_typeList
Definition: importmusic.h:216
MythUIText * m_statusText
Definition: importmusic.h:212
QStringList m_filelist
Definition: importmusic.h:200
MythUIText * m_destinationText
Definition: importmusic.h:213
void prevPressed(void)
static bool copyFile(const QString &src, const QString &dst)
void setGenre(void)
void startScan(void)
MythUIText * m_trackText
Definition: importmusic.h:143
void chooseBackend(void) const
void saveDefaults(void)
void setTitleWordCaps(void)
~ImportMusicDialog() override
Definition: importmusic.cpp:70
MythUIButton * m_locationButton
Definition: importmusic.h:132
MythUIText * m_currentText
Definition: importmusic.h:148
MythUIButton * m_addButton
Definition: importmusic.h:152
MythUIText * m_genreText
Definition: importmusic.h:141
void importFinished(void)
QString m_musicStorageDir
Definition: importmusic.h:123
MythUIButton * m_prevButton
Definition: importmusic.h:146
QStringList m_sourceFiles
Definition: importmusic.h:126
void addAllNewPressed(void)
MythUIText * m_titleText
Definition: importmusic.h:140
void nextPressed(void)
void showImportCoverArtDialog()
void setRating(void)
MythUIText * m_statusText
Definition: importmusic.h:149
void scanDirectory(QString &directory, std::vector< TrackInfo * > *tracks)
MythUIButton * m_addallnewButton
Definition: importmusic.h:153
MythUIButton * m_playButton
Definition: importmusic.h:151
ImportMusicDialog(MythScreenStack *parent)
Definition: importmusic.cpp:60
MythUIButton * m_nextButton
Definition: importmusic.h:145
void metadataChanged(void)
QString m_defaultCompArtist
Definition: importmusic.h:160
bool m_somethingWasImported
Definition: importmusic.h:124
MythUIText * m_compartistText
Definition: importmusic.h:137
void setArtist(void)
void doExit(bool ok)
MythUIButton * m_nextnewButton
Definition: importmusic.h:154
MythUIButton * m_scanButton
Definition: importmusic.h:133
void playPressed(void)
MusicMetadata * m_playingMetaData
Definition: importmusic.h:128
void showEditMetadataDialog(void)
std::vector< TrackInfo * > * m_tracks
Definition: importmusic.h:125
MythUITextEdit * m_locationEdit
Definition: importmusic.h:131
void addPressed(void)
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
void locationPressed(void)
void setYear(void)
MythUIButton * m_coverartButton
Definition: importmusic.h:134
MythUIText * m_artistText
Definition: importmusic.h:138
void nextNewPressed(void)
QString m_defaultGenre
Definition: importmusic.h:163
void coverArtPressed(void)
void doFileCopy(const QString &src, const QString &dst)
MythUICheckBox * m_compilationCheck
Definition: importmusic.h:156
void customEvent(QEvent *event) override
QString m_defaultAlbum
Definition: importmusic.h:162
void setCompilationArtist(void)
void ShowMenu(void) override
void setTrack(void)
void setSaveHost(const QString &host)
MythUIText * m_albumText
Definition: importmusic.h:139
MythUIText * m_filenameText
Definition: importmusic.h:136
bool somethingWasImported() const
Definition: importmusic.h:76
bool Create(void) override
MythUIText * m_yearText
Definition: importmusic.h:142
void setTitleInitialCap(void)
void setAlbum(void)
QString m_defaultArtist
Definition: importmusic.h:161
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
bool isNewTune
Definition: importmusic.h:30
MusicMetadata * metadata
Definition: importmusic.h:29
bool metadataHasChanged
Definition: importmusic.h:31