-
Notifications
You must be signed in to change notification settings - Fork 1
/
mainwindow.h
494 lines (467 loc) · 10.7 KB
/
mainwindow.h
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QListWidgetItem>
#include <QMap>
#include <QDebug>
#include "tcpsocket.h"
#include "audiocomponent.h"
#include "joinserver.h"
#include "colors.h"
#include "ui_colors.h"
#include "ui_joinserver.h"
#include "remoteSong.h"
#include "downloads.h"
#include "hostmulticast.h"
#include "joinmulticast.h"
#include <QGraphicsView>
#include <QGraphicsItem>
#include <QTimeLine>
#include <QGraphicsItemAnimation>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
/**
* gets full path of song
*
* @param filename, song title
*
* @author Joel Stewart
*/
QString findFullPath(QString filename);
/**
* Returns the window's Ui interface.
*
* @author Tom Nightingale
*/
Ui::MainWindow* getUi() { return ui; }
/**
* Expose the windows message loop for us to respond to socket events.
* The first of many attrocities...
*
* @param msg The windows message received.
* @param result ... not sure >_>
*
* @author Tom Nightingale
*/
bool winEvent(PMSG msg, long * result);
/**
* adds to the QMap
*
* @param songList, the song list recieved
* @param ipAddress, ip address where fileList was revieved from
*
* @author Joel Stewart
*/
void appendToRemote(QStringList songList, QString ipAddress, short port);
AudioComponent* getAudioPlayer() { return player_; }
/**
* adds to the visualization
*
* @param n, size of bars in visual window
*
* @author Joel Stewart
*/
void visualization(int n);
HostMulticast* getHostMulticast() { return multicast_; }
JoinMulticast* getJoinMulticast() { return joinMulticast_; }
/*
-- FUNCTION: getLocalFileList
--
-- DATE: March 21, 2011
--
-- REVISIONS: (Date and Description)
--
-- DESIGNER: Luke Queenan
--
-- PROGRAMMER: Luke Queenan
--
-- INTERFACE: QStringList MainWindow::getLocalFileList()
--
-- RETURNS: The local filelist stored in the audio player
--
-- NOTES:
-- Gets the local filelist stored in the audio player in main window.
*/
QStringList getLocalFileList();
/**
* adds a theme to main window
*
* @param background, color of background
* @param font, font color
*
* @author Joel Stewart
*/
void backgroundColor(QString background, QString font);
/**
* updates music list
*
* @param currentSongs, current list of songs
*
* @author Joel Stewart
*/
void updateMusicContent(QStringList currentSongs);
/**
* updates clientlist of music content
*
*
* @author Joel Stewart
*/
void updateClientlist();
/**
* loads choosen playlist
*
* @author Joel Stewart
*/
void loadlastPlaylist();
/**
* saves playlist
*
*
* @author Joel Stewart
*/
void savePlaylist();
/**
* updates list of songs currently in playlist
*
* @author Joel Stewart
*/
void updatePlaylist();
/**
* add individual song to clientlist
*
* @param song, song thats going to be added
*
* @author Joel Stewart
*/
void addSongToLocal(QString song);
bool requestVoiceChat(QString);
bool getVoiceCallActive();
void setVoiceCallActive(bool);
signals:
void signalWMWSASyncTCPRx(int, int);
void signalWMWSASyncUDPRx(int, int);
void requestPlaylist(QString, short);
void requestFile(QString,short, QString);
void initiateVoiceStream(short port, QString hostAddr, AudioComponent* player);
void disconnectVoiceStream();
void voicePressed(AudioComponent*);
void voiceReleased(AudioComponent*);
/**
* signal for hosting a multicast
*
* @param songs, songs the client knows about
*
* @author Joel Stewart
*/
void multicastList(QStringList *songs);
void startMulticast(QStringList* list);
private:
QSlider *slider_;
Ui::MainWindow *ui;
TCPSocket *controlSocket_;
AudioComponent* player_;
QMediaPlayer* playerlink_;
JoinServer joinServer_;
JoinServer requestPlaylist_;
Colors changeColor_;
QTimeLine *timer_;
QMediaPlaylist* playlist_;
bool muted_;
bool voiceCallActive_;
QStringList songList_;
QStringList playlistData_;
QMap<QString,RemoteSong> remoteList_;
Downloads downloads_;
HostMulticast *multicast_;
JoinMulticast *joinMulticast_;
private slots:
void on_talkButton_clicked();
void playlistIndexChanged(int index);
/**
* seek bar for song playing
*
* @param seconds, using seconds of song
*
* @author Joel Stewart
*/
void seek(int seconds);
/**
* the song duration changed
*
* @param duration, adjust the seek bar
*
* @author Joel Stewart
*/
void durationChanged(qint64 duration);
/**
* position of seek bar changed
*
* @param progress, adjust seek bar accordingly
*
* @author Joel Stewart
*/
void positionChanged(qint64 progress);
/**
* pop up window to join multicast
*
*
* @author Joel Stewart
*/
void on_action_Join_Multicast_triggered();
/**
* pops uo window for custom theme
*
*
* @author Joel Stewart
*/
void on_action_Modify_triggered();
/**
* pops up window to request a playlist
*
*
* @author Joel Stewart
*/
void on_action_Request_Playlist_triggered();
void on_action_Visible_toggled(bool status);
/*
-- FUNCTION: on_clientListWidget_itemDoubleClicked
--
-- DATE: March 21, 2011
--
-- REVISIONS: (Date and Description)
--
-- DESIGNER: Joel Stewart
--
-- PROGRAMMER: Joel Stewart
--
-- INTERFACE: void MainWindow::on_clientListWidget_itemDoubleClicked(QListWidgetItem* item)
--
-- RETURNS:
--
-- NOTES:
-- allows clicking on a song in the item list
*/
void on_clientListWidget_itemDoubleClicked(QListWidgetItem* item);
/*
-- FUNCTION: on_playButton_clicked
--
-- DATE: March 21, 2011
--
-- REVISIONS: (Date and Description)
--
-- DESIGNER: Joel Stewart
--
-- PROGRAMMER: Joel Stewart
--
-- INTERFACE: void MainWindow::on_playButton_clicked()
--
-- RETURNS:
--
-- NOTES:
-- Plays song
*/
void on_playButton_clicked();
/*
-- FUNCTION: on_stopButton_clicked
--
-- DATE: March 21, 2011
--
-- REVISIONS: (Date and Description)
--
-- DESIGNER: Joel Stewart
--
-- PROGRAMMER: Joel Stewart
--
-- INTERFACE: void MainWindow::on_stopButton_clicked()
--
-- RETURNS:
--
-- NOTES:
-- Stops song
*/
void on_stopButton_clicked();
/*
-- FUNCTION: on_remoteListWidget_itemDoubleClicked
--
-- DATE: March 21, 2011
--
-- REVISIONS: (Date and Description)
--
-- DESIGNER: Joel Stewart
--
-- PROGRAMMER: Joel Stewart
--
-- INTERFACE: void MainWindow::on_remoteListWidget_itemDoubleClicked(QListWidgetItem* item)
--
-- RETURNS:
--
-- NOTES:
-- combined list of clients
*/
void on_remoteListWidget_itemDoubleClicked(QListWidgetItem* item);
/**
* current tab in use
*
* @param index, index of page
*
* @author Joel Stewart
*/
void on_tabWidget_currentChanged(int index);
/**
* goes to next song
*
* @author Joel Stewart
*/
void on_nextButton_clicked();
/**
* goes to previous song
*
* @author Joel Stewart
*/
void on_previousButton_clicked();
/**
* mutes song
*
* @author Joel Stewart
*/
void on_muteToolButton_clicked();
/**
* adjusts volume
*
* @param volume, current volume of song
*
* @author Joel Stewart
*/
void on_horizontalSlider_valueChanged(int volume);
/**
* playlist item double-clicked
*
* @param item, item clicked
*
* @author Joel Stewart
*/
void on_playlistWidget_itemDoubleClicked(QListWidgetItem* item);
/**
* adjusts playback rate
*
* @param double, value of playback rate
*
* @author Joel Stewart
*/
void on_playbackBox_valueChanged(double );
/**
* adjusts view
*
* @param status, if advanced view is checked
*
* @author Joel Stewart
*/
void on_action_Advanced_toggled(bool status);
/**
* pops up save playlist dialog
*
*
* @author Joel Stewart
*/
void on_savePlaylistButton_clicked();
/**
* load playlist dialog pops up
*
* @author Joel Stewart
*/
void on_loadPlaylistButton_clicked();
/**
* clears playlist
*
* @author Joel Stewart
*/
void on_clearPlaylistButton_clicked();
/**
* clears local library
*
* @author Joel Stewart
*/
void on_clearLocalButton_clicked();
/**
* clears remote library
*
* @author Joel Stewart
*/
void on_clearRemoteButton_clicked();
/**
* removes song
*
* @author Joel Stewart
*/
void on_removeButton_clicked();
/**
* playlist item changed
*
* @param currentrow, current row of playlist
*
* @author Joel Stewart
*/
void on_playlistWidget_currentRowChanged(int currentRow);
/**
* adds a folder of music to local library
*
* @author Joel Stewart
*/
void on_action_Folder_triggered();
/**
* add an individual song to local library
*
* @author Joel Stewart
*/
void on_action_Song_triggered();
/**
* tiger theme
*
* @author Joel Stewart
*/
void on_action_Tiger_triggered();
/**
* default theme
*
* @author Joel Stewart
*/
void on_action_Default_triggered();
/**
* download started
*
* @param filesize, size of file
* @param packsizeRecv, size of packet
* @param file, name of file
*
* @author Joel Stewart
*/
void downloadStarted(int filesize, int packsizeRecv, QString file);
/**
* download is full
*
* @param full, is download queue full
*
* @author Joel Stewart
*/
void downloadQueueFull(bool full);
/**
* host multicast dialog pops up
*
* @author Joel Stewart
*/
void on_action_Host_Multicast_triggered();
void on_addAllButton_clicked();
void on_shuffleButton_clicked();
void on_loopCurrentSongButton_clicked();
void on_randomButton_clicked();
void on_normalButton_clicked();
void on_loopButton_clicked();
};
#endif // MAINWINDOW_H