defuze.me
Client
|
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 }