summaryrefslogtreecommitdiff
path: root/src/qtui/playlist-qt.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qtui/playlist-qt.h')
-rw-r--r--src/qtui/playlist-qt.h94
1 files changed, 94 insertions, 0 deletions
diff --git a/src/qtui/playlist-qt.h b/src/qtui/playlist-qt.h
new file mode 100644
index 0000000..a289432
--- /dev/null
+++ b/src/qtui/playlist-qt.h
@@ -0,0 +1,94 @@
+/*
+ * playlist.h
+ * Copyright 2014 MichaƂ Lipski
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions, and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions, and the following disclaimer in the documentation
+ * provided with the distribution.
+ *
+ * This software is provided "as is" and without any warranty, express or
+ * implied. In no event shall the authors be liable for any damages arising from
+ * the use of this software.
+ */
+
+#ifndef PLAYLIST_H
+#define PLAYLIST_H
+
+#include <QTreeView>
+
+#include <libaudcore/hook.h>
+#include <libaudcore/mainloop.h>
+#include <libaudcore/playlist.h>
+
+class PlaylistModel;
+class PlaylistProxyModel;
+class QContextMenuEvent;
+class QMenu;
+
+class PlaylistWidget : public QTreeView
+{
+public:
+ PlaylistWidget (QWidget * parent, Playlist playlist);
+ ~PlaylistWidget ();
+
+ Playlist playlist () const
+ { return m_playlist; }
+
+ bool scrollToCurrent (bool force = false);
+ void updatePlaybackIndicator ();
+ void playlistUpdate ();
+ void playCurrentIndex ();
+ void setFilter (const char * text);
+ void setFirstVisibleColumn (int col);
+ void moveFocus (int distance);
+
+ void setContextMenu (QMenu * menu)
+ { contextMenu = menu; }
+
+private:
+ Playlist m_playlist;
+ PlaylistModel * model;
+ PlaylistProxyModel * proxyModel;
+ QMenu * contextMenu = nullptr;
+
+ int currentPos = -1;
+ bool inUpdate = false;
+ int firstVisibleColumn = 0;
+
+ int m_popup_pos = -1;
+ QueuedFunc m_popup_timer;
+
+ QModelIndex rowToIndex (int row);
+ int indexToRow (const QModelIndex & index);
+
+ void getSelectedRanges (int rowsBefore, int rowsAfter,
+ QItemSelection & selected, QItemSelection & deselected);
+ void updateSelection (int rowsBefore, int rowsAfter);
+
+ void contextMenuEvent (QContextMenuEvent * event);
+ void keyPressEvent (QKeyEvent * event);
+ void mouseDoubleClickEvent (QMouseEvent * event);
+ void mouseMoveEvent (QMouseEvent * event);
+ void leaveEvent (QEvent *);
+ void dragMoveEvent (QDragMoveEvent * event);
+ void dropEvent (QDropEvent * event);
+ void currentChanged (const QModelIndex & current, const QModelIndex & previous);
+ void selectionChanged (const QItemSelection & selected, const QItemSelection & deselected);
+
+ void showPopup ();
+ void triggerPopup (int pos);
+ void hidePopup ();
+
+ void updateSettings ();
+
+ const HookReceiver<PlaylistWidget>
+ hook1 {"qtui update playlist settings", this, & PlaylistWidget::updateSettings};
+};
+
+#endif