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 
16 class MusicMetadata;
17 class ImportMusicDialog;
18 
19 class MythUIText;
20 class MythUITextEdit;
21 class MythUIImage;
22 class MythUIButton;
23 class MythUIButtonList;
24 class MythUICheckBox;
25 class MythDialogBox;
26 
27 struct TrackInfo
28 {
30  bool isNewTune;
32 };
33 
35 {
36  public:
37  explicit FileScannerThread(ImportMusicDialog *parent);
38  void run() override; // MThread
39 
40  private:
42 };
43 
44 class FileCopyThread: public MThread
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;
121  int m_currentTrack {0};
123 
124  // GUI stuff
129 
136  MythUIText *m_yearText {nullptr};
138 
141 
144 
149 
151 
152  // default metadata values
153  bool m_defaultCompilation {false};
156  QString m_defaultAlbum;
157  QString m_defaultGenre;
158  int m_defaultYear {0};
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;
198  int m_currentFile {0};
199  QString m_saveFilename;
200 
201  //
202  // GUI stuff
203  //
208 
211 
216 };
217 
218 #endif
ImportMusicDialog::nextPressed
void nextPressed(void)
Definition: importmusic.cpp:336
ImportCoverArtDialog::m_prevButton
MythUIButton * m_prevButton
Definition: importmusic.h:213
ImportMusicDialog::m_currentTrack
int m_currentTrack
Definition: importmusic.h:121
ImportMusicDialog::m_albumText
MythUIText * m_albumText
Definition: importmusic.h:133
ImportCoverArtDialog::keyPressEvent
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
Definition: importmusic.cpp:881
ImportMusicDialog::m_defaultAlbum
QString m_defaultAlbum
Definition: importmusic.h:156
ImportMusicDialog::setTitleWordCaps
void setTitleWordCaps(void)
Definition: importmusic.cpp:832
MythUIImage
Image widget, displays a single image or multiple images in sequence.
Definition: mythuiimage.h:97
ImportMusicDialog::setArtist
void setArtist(void)
Definition: importmusic.cpp:755
ImportMusicDialog::m_somethingWasImported
bool m_somethingWasImported
Definition: importmusic.h:118
ImportMusicDialog::m_defaultYear
int m_defaultYear
Definition: importmusic.h:158
ImportMusicDialog::playPressed
void playPressed(void)
Definition: importmusic.cpp:317
ImportMusicDialog::importFinished
void importFinished(void)
ImportMusicDialog::nextNewPressed
void nextNewPressed(void)
Definition: importmusic.cpp:442
ImportCoverArtDialog::Create
bool Create(void) override
Definition: importmusic.cpp:912
TrackInfo::metadataHasChanged
bool metadataHasChanged
Definition: importmusic.h:31
ImportMusicDialog::setCompilationArtist
void setCompilationArtist(void)
Definition: importmusic.cpp:744
ImportMusicDialog::keyPressEvent
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
Definition: importmusic.cpp:134
ImportMusicDialog::m_scanButton
MythUIButton * m_scanButton
Definition: importmusic.h:127
ImportMusicDialog::addPressed
void addPressed(void)
Definition: importmusic.cpp:345
FileScannerThread
Definition: importmusic.h:34
ImportMusicDialog::m_genreText
MythUIText * m_genreText
Definition: importmusic.h:135
FileCopyThread::m_srcFile
QString m_srcFile
Definition: importmusic.h:55
ImportMusicDialog::m_statusText
MythUIText * m_statusText
Definition: importmusic.h:143
ImportMusicDialog::somethingWasImported
bool somethingWasImported() const
Definition: importmusic.h:73
MythScreenStack
Definition: mythscreenstack.h:16
ImportCoverArtDialog::m_currentFile
int m_currentFile
Definition: importmusic.h:198
ImportCoverArtDialog::prevPressed
void prevPressed(void)
Definition: importmusic.cpp:1003
ImportMusicDialog::m_compilationCheck
MythUICheckBox * m_compilationCheck
Definition: importmusic.h:150
MythUITextEdit
A text entry and edit widget.
Definition: mythuitextedit.h:34
ImportMusicDialog::m_sourceFiles
QStringList m_sourceFiles
Definition: importmusic.h:120
ImportCoverArtDialog::m_filenameText
MythUIText * m_filenameText
Definition: importmusic.h:204
ImportMusicDialog::coverArtPressed
void coverArtPressed(void)
Definition: importmusic.cpp:312
ImportMusicDialog::m_defaultCompilation
bool m_defaultCompilation
Definition: importmusic.h:153
MythScreenType
Screen in which all other widgets are contained and rendered.
Definition: mythscreentype.h:45
ImportMusicDialog::m_tracks
std::vector< TrackInfo * > * m_tracks
Definition: importmusic.h:119
ImportMusicDialog::startScan
void startScan(void)
Definition: importmusic.cpp:501
ImportMusicDialog::locationPressed
void locationPressed(void)
Definition: importmusic.cpp:297
ImportCoverArtDialog::updateTypeSelector
void updateTypeSelector(void)
Definition: importmusic.cpp:1119
MusicMetadata
Definition: musicmetadata.h:80
ImportMusicDialog::Create
bool Create(void) override
Definition: importmusic.cpp:238
ImportMusicDialog::m_defaultRating
int m_defaultRating
Definition: importmusic.h:159
ImportMusicDialog::ShowMenu
void ShowMenu(void) override
Definition: importmusic.cpp:624
ImportCoverArtDialog::m_copyButton
MythUIButton * m_copyButton
Definition: importmusic.h:214
ImportCoverArtDialog::m_currentText
MythUIText * m_currentText
Definition: importmusic.h:205
ImportCoverArtDialog::~ImportCoverArtDialog
~ImportCoverArtDialog() override=default
ImportMusicDialog::m_addButton
MythUIButton * m_addButton
Definition: importmusic.h:146
ImportMusicDialog::setRating
void setRating(void)
Definition: importmusic.cpp:813
ImportMusicDialog::setTitleInitialCap
void setTitleInitialCap(void)
Definition: importmusic.cpp:822
ImportMusicDialog::m_titleText
MythUIText * m_titleText
Definition: importmusic.h:134
ImportMusicDialog::metadataChanged
void metadataChanged(void)
Definition: importmusic.cpp:615
TrackInfo::isNewTune
bool isNewTune
Definition: importmusic.h:30
ImportCoverArtDialog::m_metadata
MusicMetadata * m_metadata
Definition: importmusic.h:197
ImportCoverArtDialog::nextPressed
void nextPressed(void)
Definition: importmusic.cpp:1013
ImportCoverArtDialog::m_musicStorageDir
QString m_musicStorageDir
Definition: importmusic.h:196
ImportMusicDialog::setTrack
void setTrack(void)
Definition: importmusic.cpp:794
ImportMusicDialog::m_playingMetaData
MusicMetadata * m_playingMetaData
Definition: importmusic.h:122
ImportMusicDialog::m_prevButton
MythUIButton * m_prevButton
Definition: importmusic.h:140
ImportMusicDialog::~ImportMusicDialog
~ImportMusicDialog() override
Definition: importmusic.cpp:68
FileCopyThread
Definition: importmusic.h:44
MythDialogBox
Basic menu dialog, message and a list of options.
Definition: mythdialogbox.h:166
ImportMusicDialog::m_nextButton
MythUIButton * m_nextButton
Definition: importmusic.h:139
ImportMusicDialog::showEditMetadataDialog
void showEditMetadataDialog(void)
Definition: importmusic.cpp:591
ImportMusicDialog::doScan
void doScan(void)
Definition: importmusic.cpp:540
ImportMusicDialog::m_artistText
MythUIText * m_artistText
Definition: importmusic.h:132
ImportMusicDialog::m_compartistText
MythUIText * m_compartistText
Definition: importmusic.h:131
ImportCoverArtDialog::ImportCoverArtDialog
ImportCoverArtDialog(MythScreenStack *parent, QString sourceDir, MusicMetadata *metadata, QString storageDir)
Definition: importmusic.h:172
ImportMusicDialog::m_nextnewButton
MythUIButton * m_nextnewButton
Definition: importmusic.h:148
MythUIButton
A single button widget.
Definition: mythuibutton.h:21
ImportCoverArtDialog::m_filelist
QStringList m_filelist
Definition: importmusic.h:194
ImportCoverArtDialog::m_exitButton
MythUIButton * m_exitButton
Definition: importmusic.h:215
ImportCoverArtDialog::selectorChanged
void selectorChanged(void)
Definition: importmusic.cpp:971
ImportMusicDialog::setYear
void setYear(void)
Definition: importmusic.cpp:783
ImportMusicDialog::ImportMusicDialog
ImportMusicDialog(MythScreenStack *parent)
Definition: importmusic.cpp:58
ImportMusicDialog::saveDefaults
void saveDefaults(void)
Definition: importmusic.cpp:709
TrackInfo
Definition: importmusic.h:27
ImportMusicDialog::m_filenameText
MythUIText * m_filenameText
Definition: importmusic.h:130
ImportMusicDialog::scanDirectory
void scanDirectory(QString &directory, std::vector< TrackInfo * > *tracks)
Definition: importmusic.cpp:548
FileCopyThread::FileCopyThread
FileCopyThread(QString src, QString dst)
Definition: importmusic.h:47
ImportMusicDialog::doExit
void doExit(bool ok)
Definition: importmusic.cpp:291
MythUICheckBox
A checkbox widget supporting three check states - on,off,half and two conditions - selected and unsel...
Definition: mythuicheckbox.h:15
FileCopyThread::m_dstFile
QString m_dstFile
Definition: importmusic.h:56
FileCopyThread::m_result
bool m_result
Definition: importmusic.h:57
ImportCoverArtDialog::updateStatus
void updateStatus(void)
Definition: importmusic.cpp:1053
ImportMusicDialog::chooseBackend
void chooseBackend(void) const
Definition: importmusic.cpp:658
ImportMusicDialog::fillWidgets
void fillWidgets()
Definition: importmusic.cpp:85
ImportMusicDialog::m_locationEdit
MythUITextEdit * m_locationEdit
Definition: importmusic.h:125
ImportMusicDialog::m_locationButton
MythUIButton * m_locationButton
Definition: importmusic.h:126
ImportCoverArtDialog::copyPressed
void copyPressed(void)
Definition: importmusic.cpp:976
ImportMusicDialog::m_musicStorageDir
QString m_musicStorageDir
Definition: importmusic.h:117
ImportMusicDialog
Definition: importmusic.h:60
ImportCoverArtDialog::m_typeList
MythUIButtonList * m_typeList
Definition: importmusic.h:210
MythUIText
All purpose text widget, displays a text string.
Definition: mythuitext.h:28
ImportCoverArtDialog
Definition: importmusic.h:165
ImportMusicDialog::m_addallnewButton
MythUIButton * m_addallnewButton
Definition: importmusic.h:147
ImportCoverArtDialog::scanDirectory
void scanDirectory(void)
Definition: importmusic.cpp:1023
ImportMusicDialog::m_playButton
MythUIButton * m_playButton
Definition: importmusic.h:145
FileCopyThread::GetResult
bool GetResult(void) const
Definition: importmusic.h:52
ImportMusicDialog::m_defaultCompArtist
QString m_defaultCompArtist
Definition: importmusic.h:154
ImportMusicDialog::doFileCopy
void doFileCopy(const QString &src, const QString &dst)
FileScannerThread::m_parent
ImportMusicDialog * m_parent
Definition: importmusic.h:41
std
Definition: mythchrono.h:23
FileCopyThread::run
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
ImportMusicDialog::m_haveDefaults
bool m_haveDefaults
Definition: importmusic.h:160
ImportMusicDialog::m_defaultArtist
QString m_defaultArtist
Definition: importmusic.h:155
MThread
This is a wrapper around QThread that does several additional things.
Definition: mthread.h:48
mthread.h
ImportCoverArtDialog::m_coverartImage
MythUIImage * m_coverartImage
Definition: importmusic.h:209
ImportMusicDialog::setAlbum
void setAlbum(void)
Definition: importmusic.cpp:769
ImportMusicDialog::copyFile
static bool copyFile(const QString &src, const QString &dst)
Definition: importmusic.cpp:460
ImportCoverArtDialog::m_destinationText
MythUIText * m_destinationText
Definition: importmusic.h:207
ImportMusicDialog::m_coverartButton
MythUIButton * m_coverartButton
Definition: importmusic.h:128
ImportMusicDialog::m_currentText
MythUIText * m_currentText
Definition: importmusic.h:142
ImportCoverArtDialog::m_statusText
MythUIText * m_statusText
Definition: importmusic.h:206
ImportMusicDialog::m_yearText
MythUIText * m_yearText
Definition: importmusic.h:136
ImportCoverArtDialog::m_saveFilename
QString m_saveFilename
Definition: importmusic.h:199
ImportMusicDialog::m_trackText
MythUIText * m_trackText
Definition: importmusic.h:137
ImportMusicDialog::setSaveHost
void setSaveHost(const QString &host)
Definition: importmusic.cpp:699
ImportMusicDialog::showImportCoverArtDialog
void showImportCoverArtDialog()
Definition: importmusic.cpp:847
TrackInfo::metadata
MusicMetadata * metadata
Definition: importmusic.h:29
ImportMusicDialog::setCompilation
void setCompilation(void)
Definition: importmusic.cpp:723
ImportMusicDialog::m_defaultGenre
QString m_defaultGenre
Definition: importmusic.h:157
ImportMusicDialog::prevPressed
void prevPressed(void)
Definition: importmusic.cpp:327
ImportCoverArtDialog::m_nextButton
MythUIButton * m_nextButton
Definition: importmusic.h:212
ImportCoverArtDialog::m_sourceDir
QString m_sourceDir
Definition: importmusic.h:195
MythUIButtonList
List widget, displays list items in a variety of themeable arrangements and can trigger signals when ...
Definition: mythuibuttonlist.h:191
ImportMusicDialog::setGenre
void setGenre(void)
Definition: importmusic.cpp:802
ImportMusicDialog::customEvent
void customEvent(QEvent *event) override
Definition: importmusic.cpp:867
mythscreentype.h
FileScannerThread::run
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
FileScannerThread::FileScannerThread
FileScannerThread(ImportMusicDialog *parent)
Definition: importmusic.cpp:34
ImportMusicDialog::addAllNewPressed
void addAllNewPressed(void)
Definition: importmusic.cpp:413