summaryrefslogtreecommitdiffstats
path: root/juk/tageditor.h
diff options
context:
space:
mode:
Diffstat (limited to 'juk/tageditor.h')
-rw-r--r--juk/tageditor.h118
1 files changed, 118 insertions, 0 deletions
diff --git a/juk/tageditor.h b/juk/tageditor.h
new file mode 100644
index 00000000..e9d9b1bf
--- /dev/null
+++ b/juk/tageditor.h
@@ -0,0 +1,118 @@
+/***************************************************************************
+ begin : Sat Sep 7 2002
+ copyright : (C) 2002 - 2004 by Scott Wheeler
+ email : wheeler@kde.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef TAGEDITOR_H
+#define TAGEDITOR_H
+
+#include <qwidget.h>
+
+class KComboBox;
+class KLineEdit;
+class KIntSpinBox;
+class KEdit;
+class KPushButton;
+class KConfigBase;
+
+class QCheckBox;
+class QBoxLayout;
+
+class Playlist;
+class PlaylistItem;
+typedef QValueList<PlaylistItem *> PlaylistItemList;
+
+class CollectionObserver;
+
+class TagEditor : public QWidget
+{
+ Q_OBJECT
+
+public:
+ TagEditor(QWidget *parent = 0, const char *name = 0);
+ virtual ~TagEditor();
+ PlaylistItemList items() const { return m_items; }
+ void setupObservers();
+
+public slots:
+ void slotSave() { save(m_items); }
+ void slotSetItems(const PlaylistItemList &list);
+ void slotRefresh();
+ void slotClear();
+ void slotPlaylistDestroyed(Playlist *p);
+ /**
+ * Update collection if we're visible, or defer otherwise
+ */
+ void slotUpdateCollection();
+
+private:
+ void updateCollection();
+
+ void setupActions();
+ void setupLayout();
+ void readConfig();
+ void readCompletionMode(KConfigBase *config, KComboBox *box, const QString &key);
+ void saveConfig();
+ void save(const PlaylistItemList &list);
+ void saveChangesPrompt();
+ /**
+ * Adds an item to JuK's tagging layout. This handles the creation and
+ * placement of the "enable" box as well.
+ */
+ void addItem(const QString &text, QWidget *item, QBoxLayout *layout, const QString &iconName = QString::null);
+
+ /**
+ * Adds a widget to m_hideList and returns that widget.
+ */
+ QWidget *addHidden(QWidget *w) { m_hideList.append(w); return w; }
+
+ virtual void showEvent(QShowEvent *e);
+ virtual bool eventFilter(QObject *watched, QEvent *e);
+
+private slots:
+ void slotDataChanged(bool c = true);
+ void slotItemRemoved(PlaylistItem *item);
+ void slotPlaylistRemoved() { m_currentPlaylist = 0; }
+
+private:
+ typedef QMap<QWidget *, QCheckBox *> BoxMap;
+ BoxMap m_enableBoxes;
+
+ QStringList m_genreList;
+
+ KComboBox *m_artistNameBox;
+ KLineEdit *m_trackNameBox;
+ KComboBox *m_albumNameBox;
+ KComboBox *m_genreBox;
+ KLineEdit *m_fileNameBox;
+ KIntSpinBox *m_trackSpin;
+ KIntSpinBox *m_yearSpin;
+ KLineEdit *m_lengthBox;
+ KLineEdit *m_bitrateBox;
+ KEdit *m_commentBox;
+
+ QValueList<QWidget *> m_hideList;
+
+ PlaylistItemList m_items;
+ Playlist *m_currentPlaylist;
+
+ CollectionObserver *m_observer;
+
+ bool m_dataChanged;
+ bool m_collectionChanged;
+ bool m_performingSave;
+
+ friend class CollectionObserver;
+};
+
+#endif