diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-08-11 09:08:12 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-08-11 09:08:12 +0000 |
| commit | 017d2d27bfbcd97ada407212e925b280ff3482b5 (patch) | |
| tree | 2a832873a52ee7c8546b6262be58f41d1bdd480e /src/plugins/Ui/qsui/playlistheader.h | |
| parent | 22cf3c55368be9361b43eb002e7a2fb7f2868ac2 (diff) | |
| download | qmmp-017d2d27bfbcd97ada407212e925b280ff3482b5.tar.gz qmmp-017d2d27bfbcd97ada407212e925b280ff3482b5.tar.bz2 qmmp-017d2d27bfbcd97ada407212e925b280ff3482b5.zip | |
added qsui plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@5367 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Ui/qsui/playlistheader.h')
| -rw-r--r-- | src/plugins/Ui/qsui/playlistheader.h | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/src/plugins/Ui/qsui/playlistheader.h b/src/plugins/Ui/qsui/playlistheader.h new file mode 100644 index 000000000..d9836e7d8 --- /dev/null +++ b/src/plugins/Ui/qsui/playlistheader.h @@ -0,0 +1,129 @@ +/*************************************************************************** + * Copyright (C) 2015 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * 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. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef PLAYLISTHEADER_H +#define PLAYLISTHEADER_H + +#include <QWidget> +#include <QPixmap> + +class QFontMetrics; +class QFont; +class QMouseEvent; +class QContextMenuEvent; +class QMenu; +class QAction; +class QStyleOptionHeader; +class PlayListHeaderModel; + +/** + @author Ilya Kotov <forkotov02@hotmail.ru> +*/ +class PlayListHeader : public QWidget +{ + Q_OBJECT +public: + explicit PlayListHeader(QWidget *parent = 0); + ~PlayListHeader(); + + void readSettings(); + void setNumberWidth(int width); + void setScrollBarWidth(int width); + int requiredHeight() const; + QList<int> sizes() const; + int trackStateColumn() const; + int maxScrollValue() const; + int offset() const; + bool hasAutoResizeColumn() const; + +public slots: + void scroll(int offset); + void updateColumns(); + void showSortIndicator(int column, bool reverted); + void hideSortIndicator(); + +private slots: + void addColumn(); + void editColumn(); + void removeColumn(); + void setAutoResize(bool on); + void showTrackState(bool yes); + void onColumnAdded(int index); + void onColumnRemoved(); + +private: + void mousePressEvent(QMouseEvent *e); + void mouseReleaseEvent(QMouseEvent *); + void mouseMoveEvent(QMouseEvent *e); + void resizeEvent(QResizeEvent *e); + void contextMenuEvent(QContextMenuEvent *e); + void paintEvent(QPaintEvent *); + int findColumn(QPoint pos); + void initStyleOption(QStyleOptionHeader *opt); + int size(int index) const; + void setSize(int index, int size); + const QString name(int index) const; + void adjustColumn(int index); + int autoResizeColumn() const; + void writeSettings(); + void showEvent(QShowEvent *); + void hideEvent(QHideEvent *); + + enum DataKey + { + NAME = 0, + SIZE, + RECT, //geometry + AUTO_RESIZE, + TRACK_STATE + }; + + QSize m_size_hint; + QFontMetrics *m_metrics; + QMenu *m_menu; + QPoint m_pressed_pos; + QPoint m_mouse_pos; + PlayListHeaderModel *m_model; + QAction *m_trackStateAction; + QAction *m_autoResizeAction; + bool m_reverted; + bool m_auto_resize; + int m_number_width; + int m_scrollbar_width; + int m_pressed_column; + int m_old_size; + int m_press_offset; + int m_pl_padding; + int m_sorting_column; + + int m_offset; + + enum + { + NO_TASK = -1, + RESIZE, + MOVE, + SORT + } m_task; + + +}; + +#endif // PLAYLISTHEADER_H |
