1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-09-07 04:30:43 +02:00

Compare commits

...

14 Commits
0.5.1 ... 0.4.2

Author SHA1 Message Date
Christian Muehlhaeuser
a104e92471 * Merged ChangeLog. 2012-04-07 10:10:52 +02:00
Christian Muehlhaeuser
1929804541 * Merged audio backend fixes from master. 2012-04-07 10:10:10 +02:00
Christian Muehlhaeuser
a564b3b272 * Don't update seek slider too often, use less cpu. 2012-04-07 10:07:05 +02:00
Christian Muehlhaeuser
d083528ad5 * Updated ChangeLog. 2012-04-07 08:10:31 +02:00
Christian Muehlhaeuser
4d63a9462d * Updated translations. 2012-04-07 08:09:37 +02:00
Christian Muehlhaeuser
5a64886b7c * Bumped to 0.4.2 and updated ChangeLog. 2012-04-07 06:46:13 +02:00
Leo Franchi
76986e8908 Backport case-insensitivity fix from master 2012-04-06 22:07:38 -03:00
Christian Muehlhaeuser
9a9a7148af * Properly fix time display in stable. 2012-04-05 06:17:40 +02:00
Christian Muehlhaeuser
aec7a0b140 * Fixed crash in AudioControls. (merge) 2012-04-05 05:39:50 +02:00
Christian Muehlhaeuser
eff42af593 * Updated ChangeLog. 2012-04-04 02:44:18 +02:00
Christian Muehlhaeuser
ad2b54ad90 * Bump version to 0.4.1. 2012-04-04 01:55:00 +02:00
Christian Muehlhaeuser
4e316a48ea * Fixed non debug builds. 2012-04-04 01:54:14 +02:00
Christian Muehlhaeuser
87863ae7e2 * Fixed about dialog for non debug releases. 2012-04-04 01:54:05 +02:00
Jeff Mitchell
5e439b990f See if this fixes Chris' time-updating problem 2012-03-31 13:06:50 -04:00
16 changed files with 12766 additions and 6947 deletions

View File

@@ -16,7 +16,7 @@ SET( TOMAHAWK_DESCRIPTION_SUMMARY "The social media player" )
SET( TOMAHAWK_VERSION_MAJOR 0 ) SET( TOMAHAWK_VERSION_MAJOR 0 )
SET( TOMAHAWK_VERSION_MINOR 4 ) SET( TOMAHAWK_VERSION_MINOR 4 )
SET( TOMAHAWK_VERSION_PATCH 0 ) SET( TOMAHAWK_VERSION_PATCH 2 )
#SET( TOMAHAWK_VERSION_RC 0 ) #SET( TOMAHAWK_VERSION_RC 0 )

View File

@@ -1,38 +1,55 @@
Version 0.4.2:
* Updated translations for various languages.
* Resuming playback restores correct volume settings.
* Reduced CPU usage during playback.
* Fixed not starting up due to case sensitivity issue on OS X.
* Fixed volume issue (too quiet) on Windows.
Version 0.4.1:
* Fixed various crashes.
* Fixed issues with auto-updating XSPF playlists.
* Double-clicking a playlist starts playing it.
* Resolvers can now return disc number and album position for results.
* Fixed sorting playlists by track number.
* Fixed issues with changing proxy.
* Fixed Twitter authentication issues.
* Fixed Grooveshark support on Windows.
Version 0.4.0: Version 0.4.0:
* Added visual notification for database indexing job. * Added visual notification for database indexing job.
* Fixed icons not appearing in resolvers list. * Fixed icons not appearing in resolvers list.
* Fixed various UI glitches and stray error messages in stations. * Fixed various UI glitches and stray error messages in stations.
* Fixed bug where album page would resolve bottom-to-top. * Fixed bug where album page would resolve bottom-to-top.
* Fixed bug where Footnotes would not update when changing selected album in Album View. * Fixed bug where Footnotes would not update when changing selected album in Album View.
* Fixed dragging albums and artists from charts, album, and artist views. * Fixed dragging albums and artists from charts, album, and artist views.
* Fixed bug where filter text would be one step behind filter value. * Fixed bug where filter text would be one step behind filter value.
* Fixed bug where resolvers would enable themselves after auto-updating. * Fixed bug where resolvers would enable themselves after auto-updating.
* Fixed occasional crash when dropping tracks onto New Station item. * Fixed occasional crash when dropping tracks onto New Station item.
* Added jump-to-current-track support for search results page. * Added jump-to-current-track support for search results page.
* Fixed out of sync Show/Hide menu items on OS X when hidden with cmd-h. * Fixed non-resolving tracks when dragging from album view.
* Fixed non-resolving tracks when dragging from album view. * Fixed fetching album covers for albums with special characters.
* Fixed /Volumes directory not showing up on OS X. * Show errors and continue gracefully when resolved audio is not available.
* Fixed fetching album covers for albums with special characters. * Fixed various crashes on exit.
* Show errors and continue gracefully when resolved audio is not available. * Added basic command-line options for playback control.
* Fixed various crashes on exit. * Bumped up web api timeouts to allow web clients to finish resolving.
* Added basic command-line options for playback control. * Added filename suggestion when exporting a playlist.
* Bumped up web api timeouts to allow web clients to finish resolving. * Cleaned up highlighting of artist names in album view.
* Added filename suggestion when exporting a playlist. * Cleaned up alignment of playlist items.
* Cleaned up highlighting of artist names in album view. * Fixed potential crash when searching.
* Cleaned up alignment of playlist items. * Added support for disc number.
* Fixed potential crash when searching. * Added SoundCloudWall.com charts.
* Added support for disc number. * Added ability to "lock on" to a user when listening along, to skip along.
* Added SoundCloudWall.com charts. * Fixed bug where loved tracks would be refreshed much too often.
* Added ability to "lock on" to a user when listening along, to skip along. * Fixed some font size issues.
* Fixed bug where loved tracks would be refreshed much too often. * Sped up Tomahawk startup by moving chart loading into a separate thread.
* Fixed startup crash on OS X. * Added support for parsing Grooveshark and Tinysong tracks and playlists.
* Fixed some font size issues. * Reorganized sidebar to follow more logical item groupings.
* Sped up Tomahawk startup by moving chart loading into a separate thread. * Added artist and album results to global searches.
* Added support for parsing Grooveshark and Tinysong tracks and playlists. * Fixed style and contrast issues when using GTK styles.
* Reorganized sidebar to follow more logical item groupings. * Fixed paths to artwork when using MPRIS2 interface.
* Added artist and album results to global searches. * Fixed out of sync Show/Hide menu items on OS X when hidden with cmd-h.
* Fixed style and contrast issues when using GTK styles. * Fixed /Volumes directory not showing up on OS X.
* Fixed paths to artwork when using MPRIS2 interface. * Fixed startup crash on OS X.
Version 0.3.3: Version 0.3.3:
* Automatically load Super Collection tracks when no official release * Automatically load Super Collection tracks when no official release

View File

@@ -250,7 +250,7 @@ frameworks_dir = os.path.join(bundle_dir, 'Contents', 'Frameworks')
commands.append(['mkdir', '-p', frameworks_dir]) commands.append(['mkdir', '-p', frameworks_dir])
resources_dir = os.path.join(bundle_dir, 'Contents', 'Resources') resources_dir = os.path.join(bundle_dir, 'Contents', 'Resources')
commands.append(['mkdir', '-p', resources_dir]) commands.append(['mkdir', '-p', resources_dir])
plugins_dir = os.path.join(bundle_dir, 'Contents', 'plugins') plugins_dir = os.path.join(bundle_dir, 'Contents', 'PlugIns')
binary = os.path.join(bundle_dir, 'Contents', 'MacOS', bundle_name) binary = os.path.join(bundle_dir, 'Contents', 'MacOS', bundle_name)
fixed_libraries = [] fixed_libraries = []

3541
lang/tomahawk_bg.ts Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -4,6 +4,8 @@
<file>tomahawk_de.qm</file> <file>tomahawk_de.qm</file>
<file>tomahawk_sv.qm</file> <file>tomahawk_sv.qm</file>
<file>tomahawk_es.qm</file> <file>tomahawk_es.qm</file>
<file>tomahawk_bg.qm</file>
<file>tomahawk_pl.qm</file>
<file>tomahawk_pt_BR.qm</file> <file>tomahawk_pt_BR.qm</file>
</qresource> </qresource>
</RCC> </RCC>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -92,14 +92,12 @@ AudioControls::AudioControls( QWidget* parent )
ui->metaDataArea->setStyleSheet( "QWidget#metaDataArea {\nborder-width: 4px;\nborder-image: url(" RESPATH "images/now-playing-panel.png) 4 4 4 4 stretch stretch; }" ); ui->metaDataArea->setStyleSheet( "QWidget#metaDataArea {\nborder-width: 4px;\nborder-image: url(" RESPATH "images/now-playing-panel.png) 4 4 4 4 stretch stretch; }" );
ui->seekSlider->setEnabled( true ); ui->seekSlider->setEnabled( true );
ui->seekSlider->setTimeLine( &m_sliderTimeLine );
ui->volumeSlider->setRange( 0, 100 ); ui->volumeSlider->setRange( 0, 100 );
ui->volumeSlider->setValue( AudioEngine::instance()->volume() ); ui->volumeSlider->setValue( AudioEngine::instance()->volume() );
m_phononTickCheckTimer.setSingleShot( true ); m_phononTickCheckTimer.setSingleShot( true );
m_sliderTimeLine.setCurveShape( QTimeLine::LinearCurve );
ui->seekSlider->setTimeLine( &m_sliderTimeLine );
connect( &m_phononTickCheckTimer, SIGNAL( timeout() ), SLOT( phononTickCheckTimeout() ) ); connect( &m_phononTickCheckTimer, SIGNAL( timeout() ), SLOT( phononTickCheckTimeout() ) );
connect( &m_sliderTimeLine, SIGNAL( frameChanged( int ) ), ui->seekSlider, SLOT( setValue( int ) ) ); connect( &m_sliderTimeLine, SIGNAL( frameChanged( int ) ), ui->seekSlider, SLOT( setValue( int ) ) );
@@ -199,6 +197,7 @@ AudioControls::onPlaybackStarted( const Tomahawk::result_ptr& result )
ui->seekSlider->setRange( 0, duration ); ui->seekSlider->setRange( 0, duration );
ui->seekSlider->setValue( 0 ); ui->seekSlider->setValue( 0 );
ui->seekSlider->setEnabled( AudioEngine::instance()->canSeek() );
m_phononTickCheckTimer.stop(); m_phononTickCheckTimer.stop();
@@ -210,6 +209,9 @@ AudioControls::onPlaybackStarted( const Tomahawk::result_ptr& result )
ui->seekSlider->setVisible( true ); ui->seekSlider->setVisible( true );
int updateRate = (double)1000 / ( (double)ui->seekSlider->contentsRect().width() / (double)( duration / 1000 ) );
m_sliderTimeLine.setUpdateInterval( qBound( 40, updateRate, 500 ) );
m_noTimeChange = false; m_noTimeChange = false;
m_lastSliderCheck = 0; m_lastSliderCheck = 0;
} }
@@ -237,6 +239,7 @@ AudioControls::onPlaybackLoading( const Tomahawk::result_ptr& result )
ui->timeLabel->setText( TomahawkUtils::timeToString( 0 ) ); ui->timeLabel->setText( TomahawkUtils::timeToString( 0 ) );
ui->timeLeftLabel->setFixedWidth( ui->timeLeftLabel->fontMetrics().width( QString( duration.length() + 1, QChar( '0' ) ) ) ); ui->timeLeftLabel->setFixedWidth( ui->timeLeftLabel->fontMetrics().width( QString( duration.length() + 1, QChar( '0' ) ) ) );
ui->timeLeftLabel->setText( "-" + duration ); ui->timeLeftLabel->setText( "-" + duration );
m_lastTextSecondShown = 0;
ui->stackedLayout->setCurrentWidget( ui->pauseButton ); ui->stackedLayout->setCurrentWidget( ui->pauseButton );
@@ -361,6 +364,14 @@ AudioControls::onPlaybackStopped()
void void
AudioControls::onPlaybackTimer( qint64 msElapsed ) AudioControls::onPlaybackTimer( qint64 msElapsed )
{ {
const int seconds = msElapsed / 1000;
if ( seconds != m_lastTextSecondShown && !m_currentTrack.isNull() )
{
ui->timeLabel->setText( TomahawkUtils::timeToString( seconds ) );
ui->timeLeftLabel->setText( "-" + TomahawkUtils::timeToString( m_currentTrack->duration() - seconds ) );
m_lastTextSecondShown = seconds;
}
//tDebug( LOGEXTRA ) << Q_FUNC_INFO << "msElapsed =" << msElapsed << "and timer current time =" << m_sliderTimeLine.currentTime() << "and m_seekMsecs =" << m_seekMsecs; //tDebug( LOGEXTRA ) << Q_FUNC_INFO << "msElapsed =" << msElapsed << "and timer current time =" << m_sliderTimeLine.currentTime() << "and m_seekMsecs =" << m_seekMsecs;
if ( msElapsed > 0 && msElapsed != m_lastSliderCheck && m_seekMsecs == -1 && msElapsed - 500 < m_lastSliderCheck ) if ( msElapsed > 0 && msElapsed != m_lastSliderCheck && m_seekMsecs == -1 && msElapsed - 500 < m_lastSliderCheck )
return; return;
@@ -377,13 +388,10 @@ AudioControls::onPlaybackTimer( qint64 msElapsed )
if ( sender() != &m_phononTickCheckTimer ) if ( sender() != &m_phononTickCheckTimer )
m_phononTickCheckTimer.start( 1000 ); m_phononTickCheckTimer.start( 1000 );
const int seconds = msElapsed / 1000; int currentTime = m_sliderTimeLine.currentTime();
ui->timeLabel->setText( TomahawkUtils::timeToString( seconds ) );
ui->timeLeftLabel->setText( "-" + TomahawkUtils::timeToString( m_currentTrack->duration() - seconds ) );
if ( m_noTimeChange ) if ( m_noTimeChange )
{ {
if ( m_sliderTimeLine.currentTime() != msElapsed ) if ( currentTime != msElapsed )
{ {
m_sliderTimeLine.setPaused( true ); m_sliderTimeLine.setPaused( true );
m_noTimeChange = false; m_noTimeChange = false;
@@ -392,12 +400,12 @@ AudioControls::onPlaybackTimer( qint64 msElapsed )
m_sliderTimeLine.resume(); m_sliderTimeLine.resume();
} }
} }
else if ( m_sliderTimeLine.currentTime() >= msElapsed || m_seekMsecs != -1 ) else if ( currentTime >= msElapsed || m_seekMsecs != -1 )
{ {
m_sliderTimeLine.setPaused( true ); m_sliderTimeLine.setPaused( true );
m_noTimeChange = false; m_noTimeChange = false;
if ( m_sliderTimeLine.currentTime() == msElapsed ) if ( currentTime == msElapsed )
m_noTimeChange = true; m_noTimeChange = true;
m_sliderTimeLine.setCurrentTime( msElapsed ); m_sliderTimeLine.setCurrentTime( msElapsed );
@@ -407,12 +415,10 @@ AudioControls::onPlaybackTimer( qint64 msElapsed )
} }
else if ( m_sliderTimeLine.duration() > msElapsed && m_sliderTimeLine.state() == QTimeLine::NotRunning && AudioEngine::instance()->state() == AudioEngine::Playing ) else if ( m_sliderTimeLine.duration() > msElapsed && m_sliderTimeLine.state() == QTimeLine::NotRunning && AudioEngine::instance()->state() == AudioEngine::Playing )
{ {
ui->seekSlider->setEnabled( AudioEngine::instance()->canSeek() );
m_sliderTimeLine.start(); m_sliderTimeLine.start();
} }
else if ( m_sliderTimeLine.state() == QTimeLine::Paused && AudioEngine::instance()->state() != AudioEngine::Paused ) else if ( m_sliderTimeLine.state() == QTimeLine::Paused && AudioEngine::instance()->state() != AudioEngine::Paused )
{ {
ui->seekSlider->setEnabled( AudioEngine::instance()->canSeek() );
m_sliderTimeLine.resume(); m_sliderTimeLine.resume();
} }

View File

@@ -100,6 +100,7 @@ private:
qint64 m_seekMsecs; qint64 m_seekMsecs;
qint64 m_lastSliderCheck; qint64 m_lastSliderCheck;
bool m_noTimeChange; bool m_noTimeChange;
qint64 m_lastTextSecondShown;
}; };
#endif // AUDIOCONTROLS_H #endif // AUDIOCONTROLS_H

View File

@@ -131,8 +131,11 @@ AudioEngine::play()
if ( isPaused() ) if ( isPaused() )
{ {
setVolume( m_volume );
m_mediaObject->play(); m_mediaObject->play();
setVolume( m_volume );
emit resumed(); emit resumed();
Tomahawk::InfoSystem::InfoStringHash trackInfo; Tomahawk::InfoSystem::InfoStringHash trackInfo;
trackInfo["title"] = m_currentTrack->track(); trackInfo["title"] = m_currentTrack->track();
@@ -152,6 +155,7 @@ AudioEngine::pause()
{ {
tDebug( LOGEXTRA ) << Q_FUNC_INFO; tDebug( LOGEXTRA ) << Q_FUNC_INFO;
m_volume = volume();
m_mediaObject->pause(); m_mediaObject->pause();
emit paused(); emit paused();

View File

@@ -155,6 +155,7 @@ private:
mutable QStringList m_supportedMimeTypes; mutable QStringList m_supportedMimeTypes;
AudioState m_state; AudioState m_state;
unsigned int m_volume;
static AudioEngine* s_instance; static AudioEngine* s_instance;
}; };

View File

@@ -741,11 +741,21 @@ TomahawkWindow::setWindowTitle( const QString& title )
void void
TomahawkWindow::showAboutTomahawk() TomahawkWindow::showAboutTomahawk()
{ {
QMessageBox::about( this, tr( "About Tomahawk" ), QString head, desc;
tr( "<h2><b>Tomahawk %1<br/>(%2)</h2>Copyright 2010 - 2012<br/>Christian Muehlhaeuser &lt;muesli@tomahawk-player.org&gt;<br/><br/>"
"Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindstr&ouml;m, Michael Zanetti, Harald Sitter and Steve Robertson" ) #ifdef DEBUG_BUILD
.arg( TomahawkUtils::appFriendlyVersion() ) head = tr( "<h2><b>Tomahawk %1<br/>(%2)</h2>" )
.arg( qApp->applicationVersion() ) ); .arg( TomahawkUtils::appFriendlyVersion() )
.arg( qApp->applicationVersion() );
#else
head = tr( "<h2><b>Tomahawk %1</h2>" )
.arg( TomahawkUtils::appFriendlyVersion() );
#endif
desc = tr( "Copyright 2010 - 2012<br/>Christian Muehlhaeuser &lt;muesli@tomahawk-player.org&gt;<br/><br/>"
"Thanks to: Leo Franchi, Jeff Mitchell, Dominik Schmidt, Jason Herskowitz, Alejandro Wainzinger, Hugo Lindstr&ouml;m, Michael Zanetti, Harald Sitter and Steve Robertson" );
QMessageBox::about( this, tr( "About Tomahawk" ), head + desc );
} }