#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QObject>
#include <QDebug>
#include <QTcpServer>
#include <QTcpSocket>
#include <QFileDialog>
#include <QListWidgetItem>

#include "clientthread.h"
#include "channelthread.h"

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    QStringList parseList(QStringList list);

private:
    Ui::MainWindow      *ui;
    QTcpServer          *server;
    QTcpSocket          *socket;
    clientThread        *threads[100];
    QString             currentFilepath;
    QStringList         fileList;
    channelthread       *musicThread;
    int                 threadID, currentSongIndex;
    bool                Bpause, Bsliderpressed;

private slots:
    void on_pushButton_clicked();
    void on_playBtn_clicked();
    void on_pauseBtn_clicked();
    void on_stopBtn_clicked();
    void on_addBtn_clicked();
    void on_nextBtn_clicked();
    void on_horizontalSlider_sliderReleased();
    void on_horizontalSlider_sliderPressed();
    void on_listWidget_2_itemClicked(QListWidgetItem *item);
    void on_pushButton_2_clicked();
    void on_pushButton_3_clicked();
    void on_pushButton_4_clicked();
    void on_checkBox_2_toggled(bool checked);

public slots:
    void newConnection();
    void onSocketDestroy(QString peerIP);
    void onRecvCommand(QString command);
    void updatePos(double position, double total);
    void nextSong();

signals:
    void play(QString filename);
    void pause();
    void resume();
    void stop();
    void next();
    void changePos(int pos);
    void sendFileList(QStringList list);
    void openPort(QString name);
    void closePort();
    void checkChange(bool checked);

};

#endif // MAINWINDOW_H
