xbmc
GUIWindowMusicBase.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2005-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
16 #include "music/MusicDatabase.h"
17 #include "music/MusicInfoLoader.h"
18 #include "music/MusicThumbLoader.h"
19 #include "music/infoscanner/MusicInfoScraper.h"
20 #include "windows/GUIMediaWindow.h"
21 
22 #include <vector>
23 
24 enum MusicSelectAction
25 {
26  MUSIC_SELECT_ACTION_PLAY,
27  MUSIC_SELECT_ACTION_RESUME,
28 };
29 
38 {
39 public:
40  CGUIWindowMusicBase(int id, const std::string &xmlFile);
41  ~CGUIWindowMusicBase(void) override;
42  bool OnMessage(CGUIMessage& message) override;
43  bool OnAction(const CAction &action) override;
44  bool OnBack(int actionID) override;
45 
46  void DoScan(const std::string &strPath, bool bRescan = false);
47  void RefreshContent(const std::string& strContent);
48 
54  static void OnAssignContent(const std::string& oldName, const CMediaSource& source);
55 
56 protected:
57  void OnInitWindow() override;
62  void GetContextButtons(int itemNumber, CContextButtons &buttons) override;
63  void GetNonContextButtons(CContextButtons &buttons);
64  bool OnContextButton(int itemNumber, CONTEXT_BUTTON button) override;
65  bool OnAddMediaSource() override;
69  void UpdateButtons() override;
70 
71  bool GetDirectory(const std::string &strDirectory, CFileItemList &items) override;
72  virtual void OnRetrieveMusicInfo(CFileItemList& items);
73  void OnPrepareFileItems(CFileItemList& items) override;
74  void OnRipCD();
75  std::string GetStartFolder(const std::string &dir) override;
76  void OnItemLoaded(CFileItem* pItem) override {}
77 
78  virtual void OnScan(int iItem, bool bPromptRescan = false);
79 
80  bool CheckFilterAdvanced(CFileItemList &items) const override;
81  bool CanContainFilter(const std::string &strDirectory) const override;
82 
83  bool OnSelect(int iItem) override;
84 
85  // new methods
86  virtual void PlayItem(int iItem);
87  bool OnPlayMedia(int iItem, const std::string &player = "") override;
88 
89  void RetrieveMusicInfo();
90  void OnItemInfo(int iItem);
91  void OnItemInfoAll(const std::string& strPath, bool refresh = false);
92  virtual void OnQueueItem(int iItem, bool first = false);
93  enum ALLOW_SELECTION { SELECTION_ALLOWED = 0, SELECTION_AUTO, SELECTION_FORCED };
94 
95  void OnRipTrack(int iItem);
96  void LoadPlayList(const std::string& strPlayList) override;
97  virtual void OnRemoveSource(int iItem);
98 
99  typedef std::vector <CFileItem*>::iterator ivecItems;
101 
102  CMusicDatabase m_musicdatabase;
103  MUSIC_INFO::CMusicInfoLoader m_musicInfoLoader;
104 
105  CMusicThumbLoader m_thumbLoader;
106 };
Definition: MusicThumbLoader.h:19
virtual void OnRetrieveMusicInfo(CFileItemList &items)
Can be overwritten to implement an own tag filling function.
Definition: GUIWindowMusicBase.cpp:753
bool OnPlayMedia(int iItem, const std::string &player="") override
On media play.
Definition: GUIWindowMusicBase.cpp:722
std::vector< CFileItem * >::iterator ivecItems
CFileItem* vector Iterator.
Definition: GUIWindowMusicBase.h:99
void OnInitWindow() override
Called on window open.
Definition: GUIWindowMusicBase.cpp:953
Class to store and read tag information.
Definition: MusicDatabase.h:98
void OnPrepareFileItems(CFileItemList &items) override
On prepare file items.
Definition: GUIWindowMusicBase.cpp:1063
Represents a list of files.
Definition: FileItem.h:713
Definition: BackgroundInfoLoader.h:22
The base class for music windows.
Definition: GUIWindowMusicBase.h:37
void RetrieveMusicInfo()
Retrieve tag information for m_vecItems.
Definition: GUIWindowMusicBase.cpp:339
Definition: MusicInfoLoader.h:19
virtual void OnQueueItem(int iItem, bool first=false)
Add selected list/thumb control item to playlist and start playing.
Definition: GUIWindowMusicBase.cpp:385
Represents a share.
Definition: MediaSource.h:22
bool CanContainFilter(const std::string &strDirectory) const override
Check if the given path can contain a "filter" parameter.
Definition: GUIWindowMusicBase.cpp:911
bool OnMessage(CGUIMessage &message) override
Handle messages on window.
Definition: GUIWindowMusicBase.cpp:129
class encapsulating information regarding a particular user action to be sent to windows and controls...
Definition: Action.h:22
virtual void PlayItem(int iItem)
Definition: GUIWindowMusicBase.cpp:616
std::string GetStartFolder(const std::string &dir) override
Translate the folder to start in from the given quick path.
Definition: GUIWindowMusicBase.cpp:990
void GetContextButtons(int itemNumber, CContextButtons &buttons) override
Will be called when an popup context menu has been asked for.
Definition: GUIWindowMusicBase.cpp:420
CGUIDialogProgress * m_dlgProgress
Progress dialog.
Definition: GUIWindowMusicBase.h:100
Definition: GUIMessage.h:365
virtual void OnScan(int iItem, bool bPromptRescan=false)
Definition: GUIWindowMusicBase.cpp:1000
bool GetDirectory(const std::string &strDirectory, CFileItemList &items) override
Overwrite to fill fileitems from a source.
Definition: GUIWindowMusicBase.cpp:803
Definition: GUIDialogProgress.h:16
static void OnAssignContent(const std::string &oldName, const CMediaSource &source)
Once a music source is added, store source in library, and prompt the user to scan this folder into t...
Definition: GUIWindowMusicBase.cpp:1071
Definition: GUIMediaWindow.h:28
Definition: GUIDialogContextMenu.h:95
bool CheckFilterAdvanced(CFileItemList &items) const override
Check if the given list can be advance filtered or not.
Definition: GUIWindowMusicBase.cpp:899
void UpdateButtons() override
Overwrite to update your gui buttons (visible, enable,...)
Definition: GUIWindowMusicBase.cpp:404
Represents a file on a share.
Definition: FileItem.h:102