defuze.me  Client
audioplayerwidget.cpp
00001 /**************************************************************************
00002 ** defuze.me Epitech Innovative Project
00003 **
00004 ** Copyright 2010-2011
00005 **   Athena Calmettes - Jocelyn De La Rosa - Francois Gaillard
00006 **   Adrien Jarthon - Alexandre Moore - Luc Peres - Arnaud Sellier
00007 **
00008 ** All rights reserved.
00009 **************************************************************************/
00010 
00011 #include "audioplayerwidget.hpp"
00012 #include <QDebug>
00013 #include "audiocore.hpp"
00014 
00015 using namespace Player;
00016 
00017 AudioPlayerWidget::AudioPlayerWidget(QWidget *parent) :
00018     QWidget(parent)
00019 {
00020     setupUi(this);
00021     playButton->setIcon(this->style()->standardIcon(QStyle::SP_MediaPlay));
00022     stopButton->setIcon(this->style()->standardIcon(QStyle::SP_MediaStop));
00023     _state = Stopped;
00024     _duration = 0;
00025     _updatePosition = true;
00026 }
00027 
00028 void AudioPlayerWidget::changeEvent(QEvent *e)
00029 {
00030     QWidget::changeEvent(e);
00031     switch (e->type()) {
00032     case QEvent::LanguageChange:
00033         retranslateUi(this);
00034         break;
00035     default:
00036         break;
00037     }
00038 }
00039 
00040 void    AudioPlayerWidget::invertDirection()
00041 {
00042     setLayoutDirection(Qt::RightToLeft);
00043     positionSlider->setLayoutDirection(Qt::LeftToRight);
00044     //trackNameLabel->setAlignment(Qt::AlignRight);
00045 }
00046 
00047 void AudioPlayerWidget::on_playButton_clicked()
00048 {
00049     emit playButton_clicked();
00050 }
00051 
00052 void AudioPlayerWidget::on_stopButton_clicked()
00053 {
00054     emit stopButton_clicked();
00055 }
00056 
00057 void AudioPlayerWidget::setState(PlayerWidgetState s)
00058 {
00059     positionSlider->setEnabled(true);
00060     stopButton->setEnabled(true);
00061     playButton->setEnabled(true);
00062     playButton->setIcon(this->style()->standardIcon(QStyle::SP_MediaPlay));
00063     if (s == Playing)
00064     {
00065         playButton->setIcon(this->style()->standardIcon(QStyle::SP_MediaPause));
00066         _state = Playing;
00067     }
00068     else if (s == Paused)
00069         _state = Paused;
00070     else if (s == Stopped)
00071     {
00072         _state = Stopped;
00073         positionSlider->setValue(0);
00074         timeLabel->setText("00:00");
00075         stopButton->setEnabled(false);
00076     }
00077     else if (s == Disabled)
00078     {
00079         _state = Disabled;
00080         positionSlider->setEnabled(false);
00081         stopButton->setEnabled(false);
00082         playButton->setEnabled(false);
00083 
00084     }
00085     else
00086     {
00087         _state = NoFile;
00088         timeLabel->setText("--:--");
00089         positionSlider->setEnabled(false);
00090         stopButton->setEnabled(false);
00091     }
00092 }
00093 
00094 PlayerWidgetState AudioPlayerWidget::state() const
00095 {
00096     return _state;
00097 }
00098 
00099 void    AudioPlayerWidget::setTimeLabel(const QString &text)
00100 {
00101     timeLabel->setText(text);
00102 }
00103 
00104 void    AudioPlayerWidget::setDuration(int duration)
00105 {
00106     _duration = duration;
00107     positionSlider->setRange(0, duration);
00108     positionSlider->setValue(0);
00109 }
00110 
00111 void    AudioPlayerWidget::setTrackName(const QString& trackName)
00112 {
00113     trackNameLabel->setText(trackName);
00114 }
00115 
00116 void    AudioPlayerWidget::setTrackInfo(Library::AudioTrack *track)
00117 {
00118     if (track != 0)
00119     {
00120         trackNameLabel->setText(track->getTitle());
00121 //      artistLabel->setText(track->getArtist());
00122 //      albumLabel->setText(track->getAlbum());
00123     }
00124     else
00125     {
00126         trackNameLabel->setText("No track loaded");
00127 //      artistLabel->setText("Artist");
00128 //      albumLabel->setText("Album");
00129     }
00130 }
00131 
00132 void    AudioPlayerWidget::setPosition(int position)
00133 {
00134     if (_updatePosition && _state != NoFile)
00135     {
00136         positionSlider->setValue(position);
00137         timeLabel->setText(Audio::AudioCore::formatSeconds(position));
00138     }
00139 }
00140 
00141 void AudioPlayerWidget::on_positionSlider_sliderMoved(int)
00142 {
00143     _updatePosition = false;
00144 }
00145 
00146 void AudioPlayerWidget::on_positionSlider_sliderPressed()
00147 {
00148     _updatePosition = false;
00149 }
00150 
00151 void AudioPlayerWidget::on_positionSlider_sliderReleased()
00152 {
00153     _updatePosition = true;
00154     emit positionSlider_released(positionSlider->value());
00155 }
00156 
00157 void AudioPlayerWidget::on_positionSlider_valueChanged(int value)
00158 {
00159     timeLabel->setText(Audio::AudioCore::formatSeconds(value));
00160 }