00001 #ifndef EDITMETADATA_H_ 00002 #define EDITMETADATA_H_ 00003 00004 #include <iostream> 00005 using namespace std; 00006 00007 #include <mythscreentype.h> 00008 #include "metadata.h" 00009 00010 class MythUIStateType; 00011 class MythUIImage; 00012 class MythUIButton; 00013 class MythUIButtonList; 00014 class MythUIButtonListItem; 00015 class MythUICheckBox; 00016 class MythUISearchDialog; 00017 00018 class EditMetadataCommon : public MythScreenType 00019 { 00020 Q_OBJECT 00021 00022 public: 00023 EditMetadataCommon(MythScreenStack *parent, Metadata *source_metadata, const QString &name); 00024 EditMetadataCommon(MythScreenStack *parent, const QString &name); 00025 00026 ~EditMetadataCommon(void); 00027 00028 bool CreateCommon(void); 00029 00030 bool keyPressEvent(QKeyEvent *event); 00031 00032 void setSaveMetadataOnly(void); 00033 00034 signals: 00035 void metadataChanged(void); 00036 00037 protected slots: 00038 void showSaveMenu(void); 00039 void saveToDatabase(void); 00040 void saveToMetadata(void); 00041 void saveAll(void); 00042 void cleanupAndClose(void); 00043 00044 protected: 00045 bool hasMetadataChanged(void); 00046 void updateMetadata(void); 00047 void searchForAlbumImages(void); 00048 void scanForImages(void); 00049 00050 static bool metadataOnly; 00051 static Metadata *m_metadata, *m_sourceMetadata; 00052 00053 MythUIButton *m_doneButton; 00054 }; 00055 00056 class EditMetadataDialog : public EditMetadataCommon 00057 { 00058 Q_OBJECT 00059 00060 public: 00061 EditMetadataDialog(MythScreenStack *parent, Metadata *source_metadata); 00062 EditMetadataDialog(MythScreenStack *parent); 00063 ~EditMetadataDialog(void); 00064 00065 bool Create(void); 00066 00067 bool keyPressEvent(QKeyEvent *event); 00068 void customEvent(QEvent *event); 00069 00070 protected slots: 00071 void searchArtist(void); 00072 void searchCompilationArtist(void); 00073 void searchAlbum(void); 00074 void searchGenre(void); 00075 00076 void setArtist(QString artist); 00077 void setCompArtist(QString compArtist); 00078 void setAlbum(QString album); 00079 void setGenre(QString genre); 00080 void ratingSpinChanged(MythUIButtonListItem *item); 00081 00082 void artistLostFocus(void); 00083 void albumLostFocus(void); 00084 void genreLostFocus(void); 00085 00086 void incRating(void); 00087 void decRating(void); 00088 00089 void checkClicked(bool state); 00090 00091 void switchToAlbumArt(void); 00092 00093 private: 00094 void showMenu(void); 00095 void fillWidgets(void); 00096 00097 void updateArtistImage(void); 00098 void updateAlbumImage(void); 00099 void updateGenreImage(void); 00100 00101 void updateRating(void); 00102 00103 void searchForArtistImages(void); 00104 void searchForGenreImages(void); 00105 00106 // 00107 // GUI stuff 00108 // 00109 MythUITextEdit *m_artistEdit; 00110 MythUITextEdit *m_compArtistEdit; 00111 MythUITextEdit *m_albumEdit; 00112 MythUITextEdit *m_titleEdit; 00113 MythUITextEdit *m_genreEdit; 00114 00115 MythUISpinBox *m_yearSpin; 00116 MythUISpinBox *m_trackSpin; 00117 MythUISpinBox *m_ratingSpin; 00118 00119 MythUIStateType *m_ratingState; 00120 MythUIButton *m_incRatingButton; 00121 MythUIButton *m_decRatingButton; 00122 00123 MythUIButton *m_searchArtistButton; 00124 MythUIButton *m_searchCompArtistButton; 00125 MythUIButton *m_searchAlbumButton; 00126 MythUIButton *m_searchGenreButton; 00127 00128 MythUIImage *m_artistIcon; 00129 MythUIImage *m_albumIcon; 00130 MythUIImage *m_genreIcon; 00131 00132 MythUICheckBox *m_compilationCheck; 00133 00134 MythUIButton *m_albumartButton; 00135 }; 00136 00137 class EditAlbumartDialog : public EditMetadataCommon 00138 { 00139 Q_OBJECT 00140 00141 public: 00142 EditAlbumartDialog(MythScreenStack *parent); 00143 ~EditAlbumartDialog(); 00144 00145 bool Create(void); 00146 00147 bool keyPressEvent(QKeyEvent *event); 00148 void customEvent(QEvent *event); 00149 00150 signals: 00151 void metadataChanged(void); 00152 00153 protected slots: 00154 void switchToMetadata(void); 00155 void showMenu(void); 00156 void showTypeMenu(bool changeType = true); 00157 void gridItemChanged(MythUIButtonListItem *item); 00158 00159 void rescanForImages(void); 00160 00161 void doRemoveImageFromTag(bool doIt); 00162 00163 private: 00164 void updateImageGrid(void); 00165 void copySelectedImageToTag(void); 00166 void removeSelectedImageFromTag(void); 00167 void startCopyImageToTag(void); 00168 void copyImageToTag(ImageType imageType); 00169 void doCopyImageToTag(const AlbumArtImage *image); 00170 void removeCachedImage(const AlbumArtImage *image); 00171 00172 QString m_imageFilename; 00173 AlbumArtImages *m_albumArt; 00174 bool m_albumArtChanged; 00175 00176 // 00177 // GUI stuff 00178 // 00179 MythUIButton *m_metadataButton; 00180 MythUIButton *m_doneButton; 00181 00182 MythUIImage *m_coverartImage; 00183 MythUIButtonList *m_coverartList; 00184 MythUIText *m_imagetypeText; 00185 MythUIText *m_imagefilenameText; 00186 }; 00187 00188 #endif
1.6.3