Sayonara Player
InfoDialogContainer.h
1 /* InfoDialogContainer.h */
2 
3 /* Copyright (C) 2011-2020 Michael Lugmair (Lucio Carreras)
4  *
5  * This file is part of sayonara player
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11 
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16 
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  */
20 
21 #ifndef INFO_DIALOG_CONTAINER_H_
22 #define INFO_DIALOG_CONTAINER_H_
23 
24 #include "Utils/Pimpl.h"
25 #include <QObject>
26 
27 enum class OpenMode : uint8_t
28 {
29  Info,
30  Edit,
31  Lyrics,
32  Cover
33 };
34 
35 class GUI_InfoDialog;
36 
38 class InfoDialogContainerAsyncHandler : public QObject
39 {
40  Q_OBJECT
42 
43  friend class InfoDialogContainer;
44 
45  private:
46  InfoDialogContainerAsyncHandler(InfoDialogContainer* container, OpenMode mode);
48 
49  bool start();
50  bool isRunning() const;
51 
52  private slots:
53  void scannerFinished();
54 };
55 
64 {
66 
67  PIMPL(InfoDialogContainer)
68 
69  friend class GUI_InfoDialog;
70 
71  public:
73  virtual ~InfoDialogContainer();
74 
80 
81  private:
82  void checkInfoDialog();
83  bool initDialog(OpenMode open_mode);
84 
85  void go(OpenMode open_mode, const MetaDataList& v_md);
86 
87  protected:
88  enum EditTab
89  {
90  TabText,
91  TabCover,
92  TabTagsFromPath
93  };
94 
101  virtual MD::Interpretation metadataInterpretation() const = 0;
102 
108  virtual MetaDataList infoDialogData() const = 0;
109 
115  virtual bool hasMetadata() const;
116 
122  virtual QStringList pathlist() const;
123 
127  virtual void showInfo();
128 
132  virtual void showLyrics();
133 
137  virtual void showEdit();
138 
142  virtual void showCoverEdit();
143 };
144 
145 #endif
InfoDialogContainer::pathlist
virtual QStringList pathlist() const
Returns a list of paths. This is only used if has_metadata() returns false.
InfoDialogContainer::showLyrics
virtual void showLyrics()
Show the Info dialogs' lyrics tab.
InfoDialogContainer::showEdit
virtual void showEdit()
Show the tag editor.
InfoDialogContainerAsyncHandler
Definition: InfoDialogContainer.h:39
MetaDataList
The MetaDataList class.
Definition: MetaDataList.h:37
GUI_InfoDialog
The GUI_InfoDialog class.
Definition: GUI_InfoDialog.h:47
InfoDialogContainer::metadataInterpretation
virtual MD::Interpretation metadataInterpretation() const =0
get the interpretation for the metadata. Maybe a list of metadata should be intrepeted as albums whil...
InfoDialogContainer::showCoverEdit
virtual void showCoverEdit()
Show the cover tab withing the tag editor.
InfoDialogContainer::infoDialogClosed
void infoDialogClosed()
this function should not be called from outside. This function is triggered when the info dialog was ...
InfoDialogContainer::hasMetadata
virtual bool hasMetadata() const
returns, if the widget can provide metadata instantly If false, the info dialog will the pathlist
InfoDialogContainer::infoDialogData
virtual MetaDataList infoDialogData() const =0
get the metadata that should be used for the info dialog So for lists, the selected tracks are used h...
InfoDialogContainer::showInfo
virtual void showInfo()
Show the Info dialogs' info tab.
InfoDialogContainer
An interface used to abstract the usage of the info dialog. An implementing class has to return the i...
Definition: InfoDialogContainer.h:64