Diffstat (limited to 'noncore/multimedia/opieplayer2/playlistselection.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/multimedia/opieplayer2/playlistselection.cpp | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/noncore/multimedia/opieplayer2/playlistselection.cpp b/noncore/multimedia/opieplayer2/playlistselection.cpp new file mode 100644 index 0000000..85228a9 --- a/dev/null +++ b/noncore/multimedia/opieplayer2/playlistselection.cpp | |||
@@ -0,0 +1,215 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | ||
3 | ** | ||
4 | ** This file is part of the Qtopia Environment. | ||
5 | ** | ||
6 | ** This file may be distributed and/or modified under the terms of the | ||
7 | ** GNU General Public License version 2 as published by the Free Software | ||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
9 | ** packaging of this file. | ||
10 | ** | ||
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | ||
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
13 | ** | ||
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | ||
15 | ** | ||
16 | ** Contact info@trolltech.com if any conditions of this licensing are | ||
17 | ** not clear to you. | ||
18 | ** | ||
19 | **********************************************************************/ | ||
20 | #include <qpe/applnk.h> | ||
21 | #include <qpe/resource.h> | ||
22 | #include <qpe/config.h> | ||
23 | |||
24 | #include <qpainter.h> | ||
25 | #include <qimage.h> | ||
26 | #include <qheader.h> | ||
27 | #include <qlistview.h> | ||
28 | #include <qlist.h> | ||
29 | #include <qpixmap.h> | ||
30 | |||
31 | #include "playlistselection.h" | ||
32 | |||
33 | #include <stdlib.h> | ||
34 | |||
35 | class PlayListSelectionItem : public QListViewItem { | ||
36 | public: | ||
37 | PlayListSelectionItem( QListView *parent, const DocLnk *f ) : QListViewItem( parent ), fl( f ) { | ||
38 | setText( 0, f->name() ); | ||
39 | setPixmap( 0, f->pixmap() ); | ||
40 | } | ||
41 | |||
42 | ~PlayListSelectionItem() { | ||
43 | }; | ||
44 | |||
45 | const DocLnk *file() const { return fl; } | ||
46 | |||
47 | private: | ||
48 | const DocLnk *fl; | ||
49 | }; | ||
50 | |||
51 | |||
52 | PlayListSelection::PlayListSelection( QWidget *parent, const char *name ) | ||
53 | : QListView( parent, name ) | ||
54 | { | ||
55 | // qDebug("starting playlistselector"); | ||
56 | // #ifdef USE_PLAYLIST_BACKGROUND | ||
57 | // setStaticBackground( TRUE ); | ||
58 | // setBackgroundPixmap( Resource::loadPixmap( "opieplayer/background" ) ); | ||
59 | |||
60 | // setBackgroundPixmap( Resource::loadPixmap( "launcher/opielogo" ) ); | ||
61 | // #endif | ||
62 | // addColumn("Title",236); | ||
63 | // setAllColumnsShowFocus( TRUE ); | ||
64 | addColumn( tr( "Playlist Selection" ) ); | ||
65 | header()->hide(); | ||
66 | setSorting( -1, FALSE ); | ||
67 | } | ||
68 | |||
69 | |||
70 | PlayListSelection::~PlayListSelection() { | ||
71 | } | ||
72 | |||
73 | |||
74 | // #ifdef USE_PLAYLIST_BACKGROUND | ||
75 | void PlayListSelection::drawBackground( QPainter *p, const QRect &r ) { | ||
76 | // qDebug("drawBackground"); | ||
77 | p->fillRect( r, QBrush( white ) ); | ||
78 | // QImage logo = Resource::loadImage( "launcher/opielogo" ); | ||
79 | // if ( !logo.isNull() ) | ||
80 | // p->drawImage( (width() - logo.width()) / 2, (height() - logo.height()) / 2, logo ); | ||
81 | } | ||
82 | // #endif | ||
83 | |||
84 | |||
85 | void PlayListSelection::contentsMouseMoveEvent( QMouseEvent *event ) { | ||
86 | if ( event->state() == QMouseEvent::LeftButton ) { | ||
87 | QListViewItem *currentItem = selectedItem(); | ||
88 | QListViewItem *itemUnder = itemAt( QPoint( event->pos().x(), event->pos().y() - contentsY() ) ); | ||
89 | if ( currentItem && currentItem->itemAbove() == itemUnder ) | ||
90 | moveSelectedUp(); | ||
91 | else if ( currentItem && currentItem->itemBelow() == itemUnder ) | ||
92 | moveSelectedDown(); | ||
93 | } | ||
94 | } | ||
95 | |||
96 | |||
97 | const DocLnk *PlayListSelection::current() { | ||
98 | PlayListSelectionItem *item = (PlayListSelectionItem *)selectedItem(); | ||
99 | if ( item ) | ||
100 | return item->file(); | ||
101 | return NULL; | ||
102 | } | ||
103 | |||
104 | |||
105 | void PlayListSelection::addToSelection( const DocLnk &lnk ) { | ||
106 | PlayListSelectionItem *item = new PlayListSelectionItem( this, new DocLnk( lnk ) ); | ||
107 | QListViewItem *current = selectedItem(); | ||
108 | if ( current ) | ||
109 | item->moveItem( current ); | ||
110 | setSelected( item, TRUE ); | ||
111 | ensureItemVisible( selectedItem() ); | ||
112 | } | ||
113 | |||
114 | |||
115 | void PlayListSelection::removeSelected() { | ||
116 | QListViewItem *item = selectedItem(); | ||
117 | if ( item ) | ||
118 | delete item; | ||
119 | setSelected( currentItem(), TRUE ); | ||
120 | ensureItemVisible( selectedItem() ); | ||
121 | } | ||
122 | |||
123 | |||
124 | void PlayListSelection::moveSelectedUp() { | ||
125 | QListViewItem *item = selectedItem(); | ||
126 | if ( item && item->itemAbove() ) | ||
127 | item->itemAbove()->moveItem( item ); | ||
128 | ensureItemVisible( selectedItem() ); | ||
129 | } | ||
130 | |||
131 | |||
132 | void PlayListSelection::moveSelectedDown() { | ||
133 | QListViewItem *item = selectedItem(); | ||
134 | if ( item && item->itemBelow() ) | ||
135 | item->moveItem( item->itemBelow() ); | ||
136 | ensureItemVisible( selectedItem() ); | ||
137 | } | ||
138 | |||
139 | |||
140 | bool PlayListSelection::prev() { | ||
141 | QListViewItem *item = selectedItem(); | ||
142 | if ( item && item->itemAbove() ) | ||
143 | setSelected( item->itemAbove(), TRUE ); | ||
144 | else | ||
145 | return FALSE; | ||
146 | ensureItemVisible( selectedItem() ); | ||
147 | return TRUE; | ||
148 | } | ||
149 | |||
150 | bool PlayListSelection::next() { | ||
151 | QListViewItem *item = selectedItem(); | ||
152 | if ( item && item->itemBelow() ) | ||
153 | setSelected( item->itemBelow(), TRUE ); | ||
154 | else | ||
155 | return FALSE; | ||
156 | ensureItemVisible( selectedItem() ); | ||
157 | return TRUE; | ||
158 | } | ||
159 | |||
160 | |||
161 | bool PlayListSelection::first() { | ||
162 | QListViewItem *item = firstChild(); | ||
163 | if ( item ) | ||
164 | setSelected( item, TRUE ); | ||
165 | else | ||
166 | return FALSE; | ||
167 | ensureItemVisible( selectedItem() ); | ||
168 | return TRUE; | ||
169 | } | ||
170 | |||
171 | |||
172 | bool PlayListSelection::last() { | ||
173 | QListViewItem *prevItem = NULL; | ||
174 | QListViewItem *item = firstChild(); | ||
175 | while ( ( item = item->nextSibling() ) ) | ||
176 | prevItem = item; | ||
177 | if ( prevItem ) | ||
178 | setSelected( prevItem, TRUE ); | ||
179 | else | ||
180 | return FALSE; | ||
181 | ensureItemVisible( selectedItem() ); | ||
182 | return TRUE; | ||
183 | } | ||
184 | |||
185 | void PlayListSelection::unSelect() | ||
186 | { | ||
187 | QListViewItem *item = selectedItem(); | ||
188 | setSelected( currentItem(), FALSE); | ||
189 | } | ||
190 | |||
191 | void PlayListSelection::writeCurrent( Config& cfg ) { | ||
192 | cfg.setGroup("PlayList"); | ||
193 | QListViewItem *item = selectedItem(); | ||
194 | if ( item ) | ||
195 | cfg.writeEntry("current", item->text(0) ); | ||
196 | qDebug(item->text(0)); | ||
197 | |||
198 | } | ||
199 | |||
200 | void PlayListSelection::setSelectedItem(const QString &strk ) { | ||
201 | |||
202 | unSelect(); | ||
203 | QListViewItemIterator it( this ); | ||
204 | for ( ; it.current(); ++it ) { | ||
205 | // qDebug( it.current()->text(0)); | ||
206 | if( strk == it.current()->text(0)) { | ||
207 | // qDebug( "We have a match "+strk); | ||
208 | setSelected( it.current(), TRUE); | ||
209 | ensureItemVisible( it.current() ); | ||
210 | return; | ||
211 | } | ||
212 | } | ||
213 | // setSelected( item, TRUE ); | ||
214 | // ensureItemVisible( selectedItem() ); | ||
215 | } | ||