aboutsummaryrefslogtreecommitdiff
path: root/src/ui/playlist.h
blob: 4e8bdc1f83fd8a85156ad6b39cf0101e4f78aa30 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/***************************************************************************
 *   Copyright (C) 2006 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.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/
#ifndef PLAYLIST_H
#define PLAYLIST_H

#include <QWidget>

class KeyboardManager;

/**
   @author Ilya Kotov <forkotov02@hotmail.ru>
*/

class QMenu;

class Skin;
class ListWidget;
class MediaFile;
class Button;
class PlayListModel;
class PlayListTitleBar;
class PlayListSlider;
class MainWindow;
class SymbolDisplay;
class OutputState;
class PixmapWidget;
class PlaylistControl;

class PlayList : public QWidget
{
        Q_OBJECT
    public:
        PlayList ( QWidget *parent = 0 );

        ~PlayList();
        void load ( MediaFile * );
        void setModel ( PlayListModel * );
        void readSettings();
        void setInfo ( const OutputState &,int,int );
        MediaFile *currentItem();
        ListWidget* listWidget() const{return m_listWidget;}

    signals:
        void play();
        void next();
        void prev();
        void pause();
        void stop();
        void eject();
        void loadPlaylist();
        void savePlaylist();
        void newPlaylist();
        void closed();

    private slots:
        void showAddMenu();
        void showSubMenu();
        void showSelectMenu();
        void showSortMenu();
        void showPlaylistMenu();


    private:
        QString formatTime ( int sec );
        void drawPixmap ( int, int );
        void writeSettings();
        void createMenus();
        void createActions();
        QMenu *m_addMenu;
        QMenu *m_subMenu;
        QMenu *m_selectMenu;
        QMenu *m_sortMenu;
        QMenu *m_playlistMenu;
        Button *m_buttonAdd;
        Button *m_buttonSub;
        Button *m_selectButton;
        Button *m_sortButton;
        Button* m_playlistButton;

        PlaylistControl* m_pl_control;
        SymbolDisplay* m_length_totalLength;
        SymbolDisplay* m_current_time;

        Skin *m_skin;
        ListWidget *m_listWidget;
        PlayListModel *m_playListModel;
        PlayListTitleBar *m_titleBar;
        PlayListSlider *m_plslider;
        QList <QAction *> m_actions;
        QPoint m_pos;
        bool m_resize;
        bool m_update;
        int m_anchor_row;
        KeyboardManager* m_keyboardManager;

    protected:
        virtual void paintEvent ( QPaintEvent * );
        virtual void resizeEvent ( QResizeEvent * );
        virtual void mouseMoveEvent ( QMouseEvent * );
        virtual void mousePressEvent ( QMouseEvent * );
        virtual void mouseReleaseEvent ( QMouseEvent * );
        virtual void changeEvent ( QEvent* );
        virtual void closeEvent ( QCloseEvent* );
        virtual void keyPressEvent ( QKeyEvent* );
};

#endif