├── .gitmodules ├── admin ├── dist │ ├── win │ │ ├── wix │ │ │ ├── qt.conf │ │ │ ├── eula.rtf │ │ │ ├── wixboff.cmd │ │ │ └── wixclient.cmd │ │ ├── wizard.bmp │ │ ├── UninsHs.exe │ │ ├── installer.ico │ │ ├── wizard_small.bmp │ │ ├── installer1_icon.bmp │ │ ├── installer2_icon.bmp │ │ └── isspp │ ├── mac │ │ ├── fm.last.Scrobbler.scpt │ │ ├── dacp.fm.last.Scrobbler.scpt │ │ ├── sign_update.rb │ │ ├── Growl Registration Ticket.growlRegDict │ │ └── dsa_pub.pem │ └── updates │ │ └── Changelog.txt ├── qmake │ ├── QtOverride.pro.inc │ ├── debug.pro.inc │ └── 1stparty.pro.inc └── tests │ ├── run_tests.sh │ └── log_test.sh ├── lib ├── unicorn │ ├── qrc │ │ ├── unicorn.qrc │ │ ├── spinner.mng │ │ ├── down_arrow.png │ │ ├── profile_on.png │ │ ├── default_user.png │ │ ├── profile_hover.png │ │ ├── profile_off.png │ │ ├── right_arrow.png │ │ ├── default_user_small.png │ │ └── as.svg │ ├── dialogs │ │ ├── CloseAppsDialog_mac.mm │ │ └── AboutDialog.h │ ├── DesktopServices.h │ ├── CrashReporter │ │ └── CrashReporter.h │ ├── widgets │ │ └── GhostWidget.h │ └── qtwin.h ├── listener │ ├── win │ │ ├── SpotifyListener.cpp │ │ └── NamedPipeServer.h │ ├── tests │ │ └── test_liblistener.pro │ └── PlayerCommand.h ├── 3rdparty │ ├── iTunesCOMAPI │ │ ├── iTunesCOM.chm │ │ ├── SampleScripts │ │ │ ├── RemoveDeadTracks.js │ │ │ ├── CreateAlbumPlaylists.js │ │ │ └── RemoveUserPlaylists.js │ │ └── ReadMe.rtf │ ├── patches │ │ └── README │ ├── README │ └── fetch.sh └── logger │ └── logger.pro ├── plugins ├── winamp │ ├── Gen_AudioScrobbler.h │ ├── StdString.h │ ├── VersionApp.h │ ├── VersionApp.cpp │ ├── tools │ │ └── RCStamp.exe │ ├── UTF.h │ ├── StdAfx.cpp │ ├── WinampBootstrap.h │ ├── GEN.H │ ├── res │ │ └── Gen_AudioScrobbler.rc2 │ ├── StdAfx.h │ ├── Gen_AudioScrobbler.dsw │ └── Gen_AudioScrobbler.sln ├── foobar09 │ ├── foobar_sdk │ │ ├── foobar2000 │ │ │ ├── SDK │ │ │ │ ├── shortcut_actions.h │ │ │ │ ├── playlist_lock.cpp │ │ │ │ ├── stdafx.cpp │ │ │ │ ├── component_client.h │ │ │ │ ├── components_menu.h │ │ │ │ ├── playback_control.cpp │ │ │ │ ├── app_close_blocker.cpp │ │ │ │ ├── popup_message.cpp │ │ │ │ ├── shared.h │ │ │ │ ├── preferences_page.cpp │ │ │ │ ├── utf8api.cpp │ │ │ │ ├── link_resolver.cpp │ │ │ │ ├── mem_block_container.cpp │ │ │ │ ├── config_io_callback.h │ │ │ │ ├── abort_callback.cpp │ │ │ │ ├── config_io_callback.cpp │ │ │ │ ├── initquit.h │ │ │ │ ├── modeless_dialog.cpp │ │ │ │ ├── packet_decoder.cpp │ │ │ │ ├── chapterizer.cpp │ │ │ │ ├── genrand.h │ │ │ │ ├── hasher_md5.cpp │ │ │ │ ├── commandline.cpp │ │ │ │ ├── app_close_blocker.h │ │ │ │ ├── service.cpp │ │ │ │ ├── coreversion.h │ │ │ │ ├── completion_notify.cpp │ │ │ │ ├── playable_location.cpp │ │ │ │ ├── mainmenu.cpp │ │ │ │ ├── modeless_dialog.h │ │ │ │ ├── ui.cpp │ │ │ │ ├── audio_postprocessor.h │ │ │ │ ├── main_thread_callback.h │ │ │ │ └── console.cpp │ │ │ ├── shared │ │ │ │ └── shared.lib │ │ │ ├── foo_input_raw │ │ │ │ └── readme.txt │ │ │ ├── foo_input_validator │ │ │ │ └── foo_input_validator.dll │ │ │ └── helpers │ │ │ │ ├── format_title_group.h │ │ │ │ ├── StdAfx.cpp │ │ │ │ ├── dynamic_bitrate_helper.h │ │ │ │ ├── cue_creator.h │ │ │ │ ├── text_file_loader.h │ │ │ │ ├── wildcard.h │ │ │ │ ├── create_directory_helper.h │ │ │ │ ├── preload_info_helper.h │ │ │ │ ├── file_wrapper_simple.h │ │ │ │ ├── dropdown_helper.h │ │ │ │ ├── stream_buffer_helper.h │ │ │ │ ├── StdAfx.h │ │ │ │ ├── cfg_structlist.h │ │ │ │ ├── file_list_helper.h │ │ │ │ ├── string_filter.h │ │ │ │ ├── cfg_guidlist.h │ │ │ │ ├── cuesheet_index_list.h │ │ │ │ ├── helpers.h │ │ │ │ ├── window_placement_helper.h │ │ │ │ └── wildcard.cpp │ │ └── pfc │ │ │ ├── stdafx.cpp │ │ │ ├── bsearch.cpp │ │ │ ├── selftest.cpp │ │ │ ├── profiler.cpp │ │ │ ├── bsearch_inline.h │ │ │ ├── guid.h │ │ │ ├── ptr_list.h │ │ │ ├── other.cpp │ │ │ └── instance_tracker.h │ ├── tools │ │ └── append_once.bat │ ├── resource.h │ └── ChangeLog.txt ├── iTunes │ ├── tests │ │ ├── tests.pro │ │ ├── comtest.cpp │ │ ├── ITunesPlaysDatabaseMac.pro │ │ └── comtest.sln │ ├── tools │ │ ├── RCStamp.exe │ │ └── append_once.bat │ ├── scripts │ │ ├── currentTrack.scpt │ │ ├── currentTrackLocation.scpt │ │ ├── playCountForDatabaseId.scpt │ │ ├── currentTrackPersistentId.scpt │ │ ├── playCountForPersistentId.scpt │ │ └── uninstall.sh │ ├── README.dist │ ├── _iTunes.plist │ └── resource.h ├── wmp │ ├── StdString.h │ ├── VersionApp.h │ ├── tools │ │ ├── RCStamp.exe │ │ └── append_once.bat │ ├── wmp_scrobbler.def │ ├── StdAfx.cpp │ ├── WMPScrobbler.cpp │ ├── wmpBootStrap.h │ ├── WMPScrobbler.h │ ├── wmp_scrobbler.sln │ ├── wmp_scrobbler.rgs │ ├── wmp_scrobbler.7.10.sln │ └── StdAfx.h ├── scrobsub │ ├── StdString.h │ ├── resource.h │ └── resource1.h └── foobar08 │ └── tools │ └── append_once.bat ├── common ├── qt │ ├── override │ │ ├── QHttp │ │ ├── QMessageBox │ │ ├── QNetworkAccessManager │ │ └── README │ ├── README │ └── msleep.cpp ├── HideStupidWarnings.h ├── precompiled.h └── c++ │ └── string.h ├── app ├── client │ ├── Services │ │ ├── AnalyticsService.h │ │ ├── ScrobbleService.h │ │ └── AnalyticsService │ │ │ └── PersistentCookieJar.h │ ├── qrc │ │ ├── as.png │ │ ├── 16x16.png │ │ ├── 22x22.png │ │ ├── delete.png │ │ ├── beta_sash.png │ │ ├── highlight.png │ │ ├── icon_eq.gif │ │ ├── on_tour.png │ │ ├── start_bg.png │ │ ├── header_tags.png │ │ ├── volume_high.png │ │ ├── volume_low.png │ │ ├── volume_mid.png │ │ ├── volume_mute.png │ │ ├── asterisk_small.png │ │ ├── loading_meta.gif │ │ ├── loading_radio.gif │ │ ├── message_close.png │ │ ├── message_error.png │ │ ├── message_info.png │ │ ├── meta_ban_REST.png │ │ ├── meta_buy_HOVER.png │ │ ├── meta_buy_PRESS.png │ │ ├── meta_buy_REST.png │ │ ├── meta_skip_REST.png │ │ ├── meta_tag_HOVER.png │ │ ├── meta_tag_PRESS.png │ │ ├── meta_tag_REST.png │ │ ├── radio_eq_small.gif │ │ ├── radio_mix_REST.png │ │ ├── radio_rec_REST.png │ │ ├── scrobble_OFF.png │ │ ├── settings_HOVER.png │ │ ├── settings_PRESS.png │ │ ├── settings_REST.png │ │ ├── slider_nubbin.png │ │ ├── subscribe_bg.png │ │ ├── tab_radio_REST.png │ │ ├── tag_29x29_rest.png │ │ ├── user_default.png │ │ ├── wizard │ │ │ ├── arrow.png │ │ │ ├── bg_clouds.png │ │ │ ├── graphic_access.png │ │ │ ├── graphic_finish.png │ │ │ ├── graphic_radio.png │ │ │ ├── lastfm_icon_32.png │ │ │ ├── lastfm_icon_64.png │ │ │ ├── player_wmp_64.png │ │ │ ├── graphic_connect.png │ │ │ ├── graphic_importing.gif │ │ │ ├── graphic_metadata.png │ │ │ ├── graphic_plugins.png │ │ │ ├── graphic_scrobbles.png │ │ │ ├── player_foobar_64.png │ │ │ ├── player_itunes_64.png │ │ │ ├── player_winamp_64.png │ │ │ ├── graphic_import_wmp.png │ │ │ ├── button_grey_LEFT_HOVER.png │ │ │ ├── button_grey_LEFT_REST.png │ │ │ ├── button_grey_RIGHT_REST.png │ │ │ ├── button_red_LEFT_HOVER.png │ │ │ ├── button_red_LEFT_REST.png │ │ │ ├── button_red_MIDDLE_REST.png │ │ │ ├── button_red_RIGHT_HOVER.png │ │ │ ├── button_red_RIGHT_REST.png │ │ │ ├── graphic_import_foobar.png │ │ │ ├── graphic_import_itunes.png │ │ │ ├── graphic_import_winamp.png │ │ │ ├── graphic_location_MAC.png │ │ │ ├── graphic_location_WIN.png │ │ │ ├── button_grey_MIDDLE_HOVER.png │ │ │ ├── button_grey_MIDDLE_REST.png │ │ │ ├── button_grey_RIGHT_HOVER.png │ │ │ ├── button_red_MIDDLE_HOVER.png │ │ │ ├── arrow_bigger_than_dropbox.png │ │ │ └── arrow_even_bigger_than_dropbox.png │ │ ├── button_LEFT_REST.png │ │ ├── control_bar_back.png │ │ ├── meta_share_HOVER.png │ │ ├── meta_share_PRESS.png │ │ ├── meta_share_REST.png │ │ ├── now-playing-REST.png │ │ ├── progress_slot_ON.png │ │ ├── radio_mix_HOVER.png │ │ ├── radio_mix_PRESS.png │ │ ├── radio_rec_HOVER.png │ │ ├── radio_rec_PRESS.png │ │ ├── share_29x29_rest.png │ │ ├── subscribe_radio.png │ │ ├── tab_friends_REST.png │ │ ├── tab_profile_REST.png │ │ ├── tab_radio_ACTIVE.png │ │ ├── tab_radio_HOVER.png │ │ ├── tag_29x29_hover.png │ │ ├── volume_knob_REST.png │ │ ├── 22x22_transparent.png │ │ ├── button_LEFT_HOVER.png │ │ ├── button_LEFT_PRESS.png │ │ ├── button_MIDDLE_HOVER.png │ │ ├── button_MIDDLE_PRESS.png │ │ ├── button_MIDDLE_REST.png │ │ ├── button_RIGHT_HOVER.png │ │ ├── button_RIGHT_PRESS.png │ │ ├── button_RIGHT_REST.png │ │ ├── controls_ban_HOVER.png │ │ ├── controls_ban_PRESS.png │ │ ├── controls_ban_REST.png │ │ ├── controls_pause_REST.png │ │ ├── controls_play_HOVER.png │ │ ├── controls_play_PRESS.png │ │ ├── controls_play_REST.png │ │ ├── controls_skip_HOVER.png │ │ ├── controls_skip_PRESS.png │ │ ├── controls_skip_REST.png │ │ ├── meta_album_no_art.png │ │ ├── meta_context_arrow.png │ │ ├── meta_love_OFF_HOVER.png │ │ ├── meta_love_OFF_PRESS.png │ │ ├── meta_love_OFF_REST.png │ │ ├── meta_love_ON_HOVER.png │ │ ├── meta_love_ON_PRESS.png │ │ ├── meta_love_ON_REST.png │ │ ├── meta_tag_LEFT_HOVER.png │ │ ├── meta_tag_LEFT_REST.png │ │ ├── meta_tag_RIGHT_REST.png │ │ ├── now-playing-PRESS.png │ │ ├── preferences_devices.png │ │ ├── preferences_general.png │ │ ├── progress_slot_OFF.png │ │ ├── radio_friends_HOVER.png │ │ ├── radio_friends_PRESS.png │ │ ├── radio_friends_REST.png │ │ ├── radio_library_HOVER.png │ │ ├── radio_library_PRESS.png │ │ ├── radio_library_REST.png │ │ ├── scrobble_marker_OFF.png │ │ ├── scrobble_marker_ON.png │ │ ├── scrobbles_refresh.png │ │ ├── share_29x29_hover.png │ │ ├── share_29x29_pressed.png │ │ ├── tab_friends_ACTIVE.png │ │ ├── tab_friends_HOVER.png │ │ ├── tab_profile_ACTIVE.png │ │ ├── tab_profile_HOVER.png │ │ ├── tab_scrobbles_HOVER.png │ │ ├── tab_scrobbles_REST.png │ │ ├── tag_29x29_disabled.png │ │ ├── tag_29x29_pressed.png │ │ ├── taskbar-ban-16x16.png │ │ ├── taskbar-info-16x16.png │ │ ├── taskbar-play-16x16.png │ │ ├── taskbar-skip-16x16.png │ │ ├── titlebar_highlight.png │ │ ├── volume_knob_PRESS.png │ │ ├── window_drag_corner.png │ │ ├── button_dark_LEFT_REST.png │ │ ├── control_bar_radio_as.png │ │ ├── control_bar_radio_mix.png │ │ ├── control_bar_radio_rec.png │ │ ├── control_bar_radio_tag.png │ │ ├── controls_love_ON_REST.png │ │ ├── controls_pause_HOVER.png │ │ ├── controls_pause_PRESS.png │ │ ├── meta_artist_no_photo.png │ │ ├── meta_radio_LEFT_HOVER.png │ │ ├── meta_radio_LEFT_PRESS.png │ │ ├── meta_radio_LEFT_REST.png │ │ ├── meta_radio_RIGHT_REST.png │ │ ├── meta_tag_MIDDLE_HOVER.png │ │ ├── meta_tag_MIDDLE_REST.png │ │ ├── meta_tag_RIGHT_HOVER.png │ │ ├── preferences_accounts.png │ │ ├── preferences_advanced.png │ │ ├── radio_play_large_REST.png │ │ ├── radio_play_small_REST.png │ │ ├── scrobble_progress_OFF.png │ │ ├── scrobble_progress_ON.png │ │ ├── share_29x29_disabled.png │ │ ├── systray_icon_rest_mac.png │ │ ├── tab_now_playing_HOVER.png │ │ ├── tab_now_playing_REST.png │ │ ├── tab_scrobbles_ACTIVE.png │ │ ├── taskbar-love-ON-16x16.png │ │ ├── button_dark_LEFT_HOVER.png │ │ ├── button_dark_LEFT_PRESS.png │ │ ├── button_dark_MIDDLE_HOVER.png │ │ ├── button_dark_MIDDLE_PRESS.png │ │ ├── button_dark_MIDDLE_REST.png │ │ ├── button_dark_RIGHT_HOVER.png │ │ ├── button_dark_RIGHT_PRESS.png │ │ ├── button_dark_RIGHT_REST.png │ │ ├── control_bar_radio_artist.png │ │ ├── control_bar_scrobble_wmp.png │ │ ├── controls_love_OFF_HOVER.png │ │ ├── controls_love_OFF_PRESS.png │ │ ├── controls_love_OFF_REST.png │ │ ├── controls_love_ON_HOVER.png │ │ ├── controls_love_ON_PRESS.png │ │ ├── lastfm_icon_16_grayscale.png │ │ ├── lastfm_icon_22_grayscale.png │ │ ├── mac_control_bar_as_OFF.png │ │ ├── meta_radio_MIDDLE_HOVER.png │ │ ├── meta_radio_MIDDLE_PRESS.png │ │ ├── meta_radio_MIDDLE_REST.png │ │ ├── meta_radio_RIGHT_HOVER.png │ │ ├── meta_radio_RIGHT_PRESS.png │ │ ├── preferences_scrobbling.png │ │ ├── radio_play_large_HOVER.png │ │ ├── radio_play_large_PRESS.png │ │ ├── radio_play_small_HOVER.png │ │ ├── radio_play_small_PRESS.png │ │ ├── systray_icon_pressed_mac.png │ │ ├── tab_now_playing_ACTIVE.png │ │ ├── taskbar-love-OFF-16x16.png │ │ ├── control_bar_radio_friends.png │ │ ├── control_bar_radio_library.png │ │ ├── window_drag_corner_minimum.png │ │ ├── control_bar_scrobble_foobar.png │ │ ├── control_bar_scrobble_itunes.png │ │ ├── control_bar_scrobble_spotify.png │ │ ├── control_bar_scrobble_winamp.png │ │ └── control_bar_scrobble_applemusic.png │ ├── PrefPane │ │ ├── icon.png │ │ ├── English.lproj │ │ │ └── InfoPlist.strings │ │ ├── PrefPane.pro │ │ ├── PrefPane_prefix.pch │ │ ├── Info.plist │ │ ├── FmLastPrefPaneQtView.h │ │ ├── FmLastPrefPane.h │ │ └── FmLastPrefPanePrefWidget.h │ ├── audioscrobbler.icns │ ├── audioscrobbler.ico │ ├── icons │ │ ├── 16x16 │ │ │ └── lastfm-scrobbler.png │ │ ├── 22x22 │ │ │ └── lastfm-scrobbler.png │ │ ├── 32x32 │ │ │ └── lastfm-scrobbler.png │ │ ├── 48x48 │ │ │ └── lastfm-scrobbler.png │ │ ├── 64x64 │ │ │ └── lastfm-scrobbler.png │ │ └── 128x128 │ │ │ └── lastfm-scrobbler.png │ ├── lastfm-scrobbler.desktop │ ├── Widgets │ │ ├── NothingPlayingWidget_mac.mm │ │ ├── TitleBar.h │ │ ├── ContextLabel.h │ │ ├── ProfileArtistWidget.h │ │ └── RefreshButton.h │ ├── Settings │ │ ├── AccountSettingsWidget.ui │ │ └── IpodSettingsWidget.h │ ├── Dialogs │ │ ├── LicensesDialog.ui │ │ ├── LicensesDialog.h │ │ └── BetaDialog.h │ ├── audioscrobbler.rc │ ├── Wizard │ │ └── TourScrobblesPage.h │ └── Mpris2 │ │ └── Mpris2.h ├── boffin │ ├── qrc │ │ ├── play.png │ │ ├── skip.png │ │ ├── stop.png │ │ ├── pause.png │ │ └── boffin.qrc │ └── json_spirit │ │ ├── README │ │ ├── json_spirit_value.cpp │ │ ├── json_spirit.h │ │ └── json_spirit_writer.h ├── twiddly │ ├── README │ ├── Utils.h │ ├── Twiddly.rc │ ├── TwiddlyApplication.h │ └── TwiddlyApplication.cpp └── fingerprinter │ └── fingerprinter.pro ├── .gitignore └── Last.fm.pro /.gitmodules: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /admin/dist/win/wix/qt.conf: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/unicorn/qrc/unicorn.qrc: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /plugins/winamp/Gen_AudioScrobbler.h: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /common/qt/override/QHttp: -------------------------------------------------------------------------------- 1 | #error Use QNetworkManager instead. 2 | -------------------------------------------------------------------------------- /common/qt/README: -------------------------------------------------------------------------------- 1 | These functions are small utility functions that only depend on Qt. 2 | -------------------------------------------------------------------------------- /common/qt/override/QMessageBox: -------------------------------------------------------------------------------- 1 | #error Use lib/unicorn/QMessageBoxBuilder.h instead. 2 | -------------------------------------------------------------------------------- /common/qt/override/QNetworkAccessManager: -------------------------------------------------------------------------------- 1 | #error Use lib/ws/WsNetworkManager instead. 2 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/shortcut_actions.h: -------------------------------------------------------------------------------- 1 | #error DEPRECATED 2 | -------------------------------------------------------------------------------- /app/client/Services/AnalyticsService.h: -------------------------------------------------------------------------------- 1 | #include "AnalyticsService/AnalyticsService.h" 2 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/playlist_lock.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | -------------------------------------------------------------------------------- /app/boffin/qrc/play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/boffin/qrc/play.png -------------------------------------------------------------------------------- /app/boffin/qrc/skip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/boffin/qrc/skip.png -------------------------------------------------------------------------------- /app/boffin/qrc/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/boffin/qrc/stop.png -------------------------------------------------------------------------------- /app/client/qrc/as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/as.png -------------------------------------------------------------------------------- /plugins/iTunes/tests/tests.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | 3 | SUBDIRS = ITunesPlaysDatabaseMac.pro 4 | -------------------------------------------------------------------------------- /plugins/wmp/StdString.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/plugins/wmp/StdString.h -------------------------------------------------------------------------------- /admin/dist/win/wizard.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/admin/dist/win/wizard.bmp -------------------------------------------------------------------------------- /app/boffin/qrc/pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/boffin/qrc/pause.png -------------------------------------------------------------------------------- /app/client/qrc/16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/16x16.png -------------------------------------------------------------------------------- /app/client/qrc/22x22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/22x22.png -------------------------------------------------------------------------------- /app/client/qrc/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/delete.png -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/pfc/stdafx.cpp: -------------------------------------------------------------------------------- 1 | //cpp used to generate precompiled header 2 | #include "pfc.h" -------------------------------------------------------------------------------- /plugins/wmp/VersionApp.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/plugins/wmp/VersionApp.h -------------------------------------------------------------------------------- /admin/dist/win/UninsHs.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/admin/dist/win/UninsHs.exe -------------------------------------------------------------------------------- /admin/dist/win/installer.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/admin/dist/win/installer.ico -------------------------------------------------------------------------------- /app/client/PrefPane/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/PrefPane/icon.png -------------------------------------------------------------------------------- /app/client/qrc/beta_sash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/beta_sash.png -------------------------------------------------------------------------------- /app/client/qrc/highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/highlight.png -------------------------------------------------------------------------------- /app/client/qrc/icon_eq.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/icon_eq.gif -------------------------------------------------------------------------------- /app/client/qrc/on_tour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/on_tour.png -------------------------------------------------------------------------------- /app/client/qrc/start_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/start_bg.png -------------------------------------------------------------------------------- /lib/unicorn/qrc/spinner.mng: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/lib/unicorn/qrc/spinner.mng -------------------------------------------------------------------------------- /plugins/scrobsub/StdString.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/plugins/scrobsub/StdString.h -------------------------------------------------------------------------------- /plugins/winamp/StdString.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/plugins/winamp/StdString.h -------------------------------------------------------------------------------- /plugins/winamp/VersionApp.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/plugins/winamp/VersionApp.h -------------------------------------------------------------------------------- /app/client/audioscrobbler.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/audioscrobbler.icns -------------------------------------------------------------------------------- /app/client/audioscrobbler.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/audioscrobbler.ico -------------------------------------------------------------------------------- /app/client/qrc/header_tags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/header_tags.png -------------------------------------------------------------------------------- /app/client/qrc/volume_high.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/volume_high.png -------------------------------------------------------------------------------- /app/client/qrc/volume_low.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/volume_low.png -------------------------------------------------------------------------------- /app/client/qrc/volume_mid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/volume_mid.png -------------------------------------------------------------------------------- /app/client/qrc/volume_mute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/volume_mute.png -------------------------------------------------------------------------------- /lib/unicorn/qrc/down_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/lib/unicorn/qrc/down_arrow.png -------------------------------------------------------------------------------- /lib/unicorn/qrc/profile_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/lib/unicorn/qrc/profile_on.png -------------------------------------------------------------------------------- /plugins/winamp/VersionApp.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/plugins/winamp/VersionApp.cpp -------------------------------------------------------------------------------- /plugins/wmp/tools/RCStamp.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/plugins/wmp/tools/RCStamp.exe -------------------------------------------------------------------------------- /admin/dist/win/wizard_small.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/admin/dist/win/wizard_small.bmp -------------------------------------------------------------------------------- /app/client/qrc/asterisk_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/asterisk_small.png -------------------------------------------------------------------------------- /app/client/qrc/loading_meta.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/loading_meta.gif -------------------------------------------------------------------------------- /app/client/qrc/loading_radio.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/loading_radio.gif -------------------------------------------------------------------------------- /app/client/qrc/message_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/message_close.png -------------------------------------------------------------------------------- /app/client/qrc/message_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/message_error.png -------------------------------------------------------------------------------- /app/client/qrc/message_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/message_info.png -------------------------------------------------------------------------------- /app/client/qrc/meta_ban_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_ban_REST.png -------------------------------------------------------------------------------- /app/client/qrc/meta_buy_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_buy_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/meta_buy_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_buy_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/meta_buy_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_buy_REST.png -------------------------------------------------------------------------------- /app/client/qrc/meta_skip_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_skip_REST.png -------------------------------------------------------------------------------- /app/client/qrc/meta_tag_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_tag_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/meta_tag_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_tag_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/meta_tag_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_tag_REST.png -------------------------------------------------------------------------------- /app/client/qrc/radio_eq_small.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_eq_small.gif -------------------------------------------------------------------------------- /app/client/qrc/radio_mix_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_mix_REST.png -------------------------------------------------------------------------------- /app/client/qrc/radio_rec_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_rec_REST.png -------------------------------------------------------------------------------- /app/client/qrc/scrobble_OFF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/scrobble_OFF.png -------------------------------------------------------------------------------- /app/client/qrc/settings_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/settings_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/settings_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/settings_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/settings_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/settings_REST.png -------------------------------------------------------------------------------- /app/client/qrc/slider_nubbin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/slider_nubbin.png -------------------------------------------------------------------------------- /app/client/qrc/subscribe_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/subscribe_bg.png -------------------------------------------------------------------------------- /app/client/qrc/tab_radio_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tab_radio_REST.png -------------------------------------------------------------------------------- /app/client/qrc/tag_29x29_rest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tag_29x29_rest.png -------------------------------------------------------------------------------- /app/client/qrc/user_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/user_default.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/arrow.png -------------------------------------------------------------------------------- /lib/unicorn/qrc/default_user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/lib/unicorn/qrc/default_user.png -------------------------------------------------------------------------------- /lib/unicorn/qrc/profile_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/lib/unicorn/qrc/profile_hover.png -------------------------------------------------------------------------------- /lib/unicorn/qrc/profile_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/lib/unicorn/qrc/profile_off.png -------------------------------------------------------------------------------- /lib/unicorn/qrc/right_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/lib/unicorn/qrc/right_arrow.png -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/stdafx.cpp: -------------------------------------------------------------------------------- 1 | //cpp used to generate precompiled header 2 | #include "foobar2000.h" -------------------------------------------------------------------------------- /plugins/iTunes/tools/RCStamp.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/plugins/iTunes/tools/RCStamp.exe -------------------------------------------------------------------------------- /plugins/winamp/tools/RCStamp.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/plugins/winamp/tools/RCStamp.exe -------------------------------------------------------------------------------- /admin/dist/win/installer1_icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/admin/dist/win/installer1_icon.bmp -------------------------------------------------------------------------------- /admin/dist/win/installer2_icon.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/admin/dist/win/installer2_icon.bmp -------------------------------------------------------------------------------- /app/client/qrc/button_LEFT_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_LEFT_REST.png -------------------------------------------------------------------------------- /app/client/qrc/control_bar_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/control_bar_back.png -------------------------------------------------------------------------------- /app/client/qrc/meta_share_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_share_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/meta_share_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_share_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/meta_share_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_share_REST.png -------------------------------------------------------------------------------- /app/client/qrc/now-playing-REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/now-playing-REST.png -------------------------------------------------------------------------------- /app/client/qrc/progress_slot_ON.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/progress_slot_ON.png -------------------------------------------------------------------------------- /app/client/qrc/radio_mix_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_mix_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/radio_mix_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_mix_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/radio_rec_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_rec_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/radio_rec_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_rec_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/share_29x29_rest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/share_29x29_rest.png -------------------------------------------------------------------------------- /app/client/qrc/subscribe_radio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/subscribe_radio.png -------------------------------------------------------------------------------- /app/client/qrc/tab_friends_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tab_friends_REST.png -------------------------------------------------------------------------------- /app/client/qrc/tab_profile_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tab_profile_REST.png -------------------------------------------------------------------------------- /app/client/qrc/tab_radio_ACTIVE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tab_radio_ACTIVE.png -------------------------------------------------------------------------------- /app/client/qrc/tab_radio_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tab_radio_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/tag_29x29_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tag_29x29_hover.png -------------------------------------------------------------------------------- /app/client/qrc/volume_knob_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/volume_knob_REST.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/bg_clouds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/bg_clouds.png -------------------------------------------------------------------------------- /admin/dist/mac/fm.last.Scrobbler.scpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/admin/dist/mac/fm.last.Scrobbler.scpt -------------------------------------------------------------------------------- /app/boffin/json_spirit/README: -------------------------------------------------------------------------------- 1 | json spirit v3.0 2 | From: 3 | http://www.codeproject.com/KB/recipes/JSON_Spirit.aspx 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/client/Services/ScrobbleService.h: -------------------------------------------------------------------------------- 1 | #include "ScrobbleService/ScrobbleService.h" 2 | #include "ScrobbleService/StopWatch.h" 3 | -------------------------------------------------------------------------------- /app/client/qrc/22x22_transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/22x22_transparent.png -------------------------------------------------------------------------------- /app/client/qrc/button_LEFT_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_LEFT_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/button_LEFT_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_LEFT_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/button_MIDDLE_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_MIDDLE_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/button_MIDDLE_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_MIDDLE_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/button_MIDDLE_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_MIDDLE_REST.png -------------------------------------------------------------------------------- /app/client/qrc/button_RIGHT_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_RIGHT_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/button_RIGHT_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_RIGHT_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/button_RIGHT_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_RIGHT_REST.png -------------------------------------------------------------------------------- /app/client/qrc/controls_ban_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_ban_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/controls_ban_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_ban_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/controls_ban_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_ban_REST.png -------------------------------------------------------------------------------- /app/client/qrc/controls_pause_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_pause_REST.png -------------------------------------------------------------------------------- /app/client/qrc/controls_play_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_play_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/controls_play_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_play_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/controls_play_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_play_REST.png -------------------------------------------------------------------------------- /app/client/qrc/controls_skip_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_skip_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/controls_skip_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_skip_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/controls_skip_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_skip_REST.png -------------------------------------------------------------------------------- /app/client/qrc/meta_album_no_art.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_album_no_art.png -------------------------------------------------------------------------------- /app/client/qrc/meta_context_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_context_arrow.png -------------------------------------------------------------------------------- /app/client/qrc/meta_love_OFF_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_love_OFF_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/meta_love_OFF_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_love_OFF_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/meta_love_OFF_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_love_OFF_REST.png -------------------------------------------------------------------------------- /app/client/qrc/meta_love_ON_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_love_ON_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/meta_love_ON_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_love_ON_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/meta_love_ON_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_love_ON_REST.png -------------------------------------------------------------------------------- /app/client/qrc/meta_tag_LEFT_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_tag_LEFT_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/meta_tag_LEFT_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_tag_LEFT_REST.png -------------------------------------------------------------------------------- /app/client/qrc/meta_tag_RIGHT_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_tag_RIGHT_REST.png -------------------------------------------------------------------------------- /app/client/qrc/now-playing-PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/now-playing-PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/preferences_devices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/preferences_devices.png -------------------------------------------------------------------------------- /app/client/qrc/preferences_general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/preferences_general.png -------------------------------------------------------------------------------- /app/client/qrc/progress_slot_OFF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/progress_slot_OFF.png -------------------------------------------------------------------------------- /app/client/qrc/radio_friends_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_friends_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/radio_friends_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_friends_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/radio_friends_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_friends_REST.png -------------------------------------------------------------------------------- /app/client/qrc/radio_library_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_library_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/radio_library_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_library_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/radio_library_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_library_REST.png -------------------------------------------------------------------------------- /app/client/qrc/scrobble_marker_OFF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/scrobble_marker_OFF.png -------------------------------------------------------------------------------- /app/client/qrc/scrobble_marker_ON.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/scrobble_marker_ON.png -------------------------------------------------------------------------------- /app/client/qrc/scrobbles_refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/scrobbles_refresh.png -------------------------------------------------------------------------------- /app/client/qrc/share_29x29_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/share_29x29_hover.png -------------------------------------------------------------------------------- /app/client/qrc/share_29x29_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/share_29x29_pressed.png -------------------------------------------------------------------------------- /app/client/qrc/tab_friends_ACTIVE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tab_friends_ACTIVE.png -------------------------------------------------------------------------------- /app/client/qrc/tab_friends_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tab_friends_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/tab_profile_ACTIVE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tab_profile_ACTIVE.png -------------------------------------------------------------------------------- /app/client/qrc/tab_profile_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tab_profile_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/tab_scrobbles_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tab_scrobbles_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/tab_scrobbles_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tab_scrobbles_REST.png -------------------------------------------------------------------------------- /app/client/qrc/tag_29x29_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tag_29x29_disabled.png -------------------------------------------------------------------------------- /app/client/qrc/tag_29x29_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tag_29x29_pressed.png -------------------------------------------------------------------------------- /app/client/qrc/taskbar-ban-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/taskbar-ban-16x16.png -------------------------------------------------------------------------------- /app/client/qrc/taskbar-info-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/taskbar-info-16x16.png -------------------------------------------------------------------------------- /app/client/qrc/taskbar-play-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/taskbar-play-16x16.png -------------------------------------------------------------------------------- /app/client/qrc/taskbar-skip-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/taskbar-skip-16x16.png -------------------------------------------------------------------------------- /app/client/qrc/titlebar_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/titlebar_highlight.png -------------------------------------------------------------------------------- /app/client/qrc/volume_knob_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/volume_knob_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/window_drag_corner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/window_drag_corner.png -------------------------------------------------------------------------------- /lib/listener/win/SpotifyListener.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/lib/listener/win/SpotifyListener.cpp -------------------------------------------------------------------------------- /lib/unicorn/qrc/default_user_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/lib/unicorn/qrc/default_user_small.png -------------------------------------------------------------------------------- /app/client/qrc/button_dark_LEFT_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_dark_LEFT_REST.png -------------------------------------------------------------------------------- /app/client/qrc/control_bar_radio_as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/control_bar_radio_as.png -------------------------------------------------------------------------------- /app/client/qrc/control_bar_radio_mix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/control_bar_radio_mix.png -------------------------------------------------------------------------------- /app/client/qrc/control_bar_radio_rec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/control_bar_radio_rec.png -------------------------------------------------------------------------------- /app/client/qrc/control_bar_radio_tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/control_bar_radio_tag.png -------------------------------------------------------------------------------- /app/client/qrc/controls_love_ON_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_love_ON_REST.png -------------------------------------------------------------------------------- /app/client/qrc/controls_pause_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_pause_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/controls_pause_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_pause_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/meta_artist_no_photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_artist_no_photo.png -------------------------------------------------------------------------------- /app/client/qrc/meta_radio_LEFT_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_radio_LEFT_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/meta_radio_LEFT_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_radio_LEFT_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/meta_radio_LEFT_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_radio_LEFT_REST.png -------------------------------------------------------------------------------- /app/client/qrc/meta_radio_RIGHT_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_radio_RIGHT_REST.png -------------------------------------------------------------------------------- /app/client/qrc/meta_tag_MIDDLE_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_tag_MIDDLE_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/meta_tag_MIDDLE_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_tag_MIDDLE_REST.png -------------------------------------------------------------------------------- /app/client/qrc/meta_tag_RIGHT_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_tag_RIGHT_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/preferences_accounts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/preferences_accounts.png -------------------------------------------------------------------------------- /app/client/qrc/preferences_advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/preferences_advanced.png -------------------------------------------------------------------------------- /app/client/qrc/radio_play_large_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_play_large_REST.png -------------------------------------------------------------------------------- /app/client/qrc/radio_play_small_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_play_small_REST.png -------------------------------------------------------------------------------- /app/client/qrc/scrobble_progress_OFF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/scrobble_progress_OFF.png -------------------------------------------------------------------------------- /app/client/qrc/scrobble_progress_ON.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/scrobble_progress_ON.png -------------------------------------------------------------------------------- /app/client/qrc/share_29x29_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/share_29x29_disabled.png -------------------------------------------------------------------------------- /app/client/qrc/systray_icon_rest_mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/systray_icon_rest_mac.png -------------------------------------------------------------------------------- /app/client/qrc/tab_now_playing_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tab_now_playing_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/tab_now_playing_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tab_now_playing_REST.png -------------------------------------------------------------------------------- /app/client/qrc/tab_scrobbles_ACTIVE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tab_scrobbles_ACTIVE.png -------------------------------------------------------------------------------- /app/client/qrc/taskbar-love-ON-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/taskbar-love-ON-16x16.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/graphic_access.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/graphic_access.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/graphic_finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/graphic_finish.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/graphic_radio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/graphic_radio.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/lastfm_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/lastfm_icon_32.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/lastfm_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/lastfm_icon_64.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/player_wmp_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/player_wmp_64.png -------------------------------------------------------------------------------- /lib/3rdparty/iTunesCOMAPI/iTunesCOM.chm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/lib/3rdparty/iTunesCOMAPI/iTunesCOM.chm -------------------------------------------------------------------------------- /plugins/iTunes/scripts/currentTrack.scpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/plugins/iTunes/scripts/currentTrack.scpt -------------------------------------------------------------------------------- /admin/dist/mac/dacp.fm.last.Scrobbler.scpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/admin/dist/mac/dacp.fm.last.Scrobbler.scpt -------------------------------------------------------------------------------- /app/client/icons/16x16/lastfm-scrobbler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/icons/16x16/lastfm-scrobbler.png -------------------------------------------------------------------------------- /app/client/icons/22x22/lastfm-scrobbler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/icons/22x22/lastfm-scrobbler.png -------------------------------------------------------------------------------- /app/client/icons/32x32/lastfm-scrobbler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/icons/32x32/lastfm-scrobbler.png -------------------------------------------------------------------------------- /app/client/icons/48x48/lastfm-scrobbler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/icons/48x48/lastfm-scrobbler.png -------------------------------------------------------------------------------- /app/client/icons/64x64/lastfm-scrobbler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/icons/64x64/lastfm-scrobbler.png -------------------------------------------------------------------------------- /app/client/qrc/button_dark_LEFT_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_dark_LEFT_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/button_dark_LEFT_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_dark_LEFT_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/button_dark_MIDDLE_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_dark_MIDDLE_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/button_dark_MIDDLE_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_dark_MIDDLE_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/button_dark_MIDDLE_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_dark_MIDDLE_REST.png -------------------------------------------------------------------------------- /app/client/qrc/button_dark_RIGHT_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_dark_RIGHT_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/button_dark_RIGHT_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_dark_RIGHT_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/button_dark_RIGHT_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/button_dark_RIGHT_REST.png -------------------------------------------------------------------------------- /app/client/qrc/control_bar_radio_artist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/control_bar_radio_artist.png -------------------------------------------------------------------------------- /app/client/qrc/control_bar_scrobble_wmp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/control_bar_scrobble_wmp.png -------------------------------------------------------------------------------- /app/client/qrc/controls_love_OFF_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_love_OFF_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/controls_love_OFF_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_love_OFF_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/controls_love_OFF_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_love_OFF_REST.png -------------------------------------------------------------------------------- /app/client/qrc/controls_love_ON_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_love_ON_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/controls_love_ON_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/controls_love_ON_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/lastfm_icon_16_grayscale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/lastfm_icon_16_grayscale.png -------------------------------------------------------------------------------- /app/client/qrc/lastfm_icon_22_grayscale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/lastfm_icon_22_grayscale.png -------------------------------------------------------------------------------- /app/client/qrc/mac_control_bar_as_OFF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/mac_control_bar_as_OFF.png -------------------------------------------------------------------------------- /app/client/qrc/meta_radio_MIDDLE_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_radio_MIDDLE_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/meta_radio_MIDDLE_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_radio_MIDDLE_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/meta_radio_MIDDLE_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_radio_MIDDLE_REST.png -------------------------------------------------------------------------------- /app/client/qrc/meta_radio_RIGHT_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_radio_RIGHT_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/meta_radio_RIGHT_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/meta_radio_RIGHT_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/preferences_scrobbling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/preferences_scrobbling.png -------------------------------------------------------------------------------- /app/client/qrc/radio_play_large_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_play_large_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/radio_play_large_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_play_large_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/radio_play_small_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_play_small_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/radio_play_small_PRESS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/radio_play_small_PRESS.png -------------------------------------------------------------------------------- /app/client/qrc/systray_icon_pressed_mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/systray_icon_pressed_mac.png -------------------------------------------------------------------------------- /app/client/qrc/tab_now_playing_ACTIVE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/tab_now_playing_ACTIVE.png -------------------------------------------------------------------------------- /app/client/qrc/taskbar-love-OFF-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/taskbar-love-OFF-16x16.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/graphic_connect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/graphic_connect.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/graphic_importing.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/graphic_importing.gif -------------------------------------------------------------------------------- /app/client/qrc/wizard/graphic_metadata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/graphic_metadata.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/graphic_plugins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/graphic_plugins.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/graphic_scrobbles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/graphic_scrobbles.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/player_foobar_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/player_foobar_64.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/player_itunes_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/player_itunes_64.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/player_winamp_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/player_winamp_64.png -------------------------------------------------------------------------------- /app/client/icons/128x128/lastfm-scrobbler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/icons/128x128/lastfm-scrobbler.png -------------------------------------------------------------------------------- /app/client/qrc/control_bar_radio_friends.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/control_bar_radio_friends.png -------------------------------------------------------------------------------- /app/client/qrc/control_bar_radio_library.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/control_bar_radio_library.png -------------------------------------------------------------------------------- /app/client/qrc/window_drag_corner_minimum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/window_drag_corner_minimum.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/graphic_import_wmp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/graphic_import_wmp.png -------------------------------------------------------------------------------- /app/client/qrc/control_bar_scrobble_foobar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/control_bar_scrobble_foobar.png -------------------------------------------------------------------------------- /app/client/qrc/control_bar_scrobble_itunes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/control_bar_scrobble_itunes.png -------------------------------------------------------------------------------- /app/client/qrc/control_bar_scrobble_spotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/control_bar_scrobble_spotify.png -------------------------------------------------------------------------------- /app/client/qrc/control_bar_scrobble_winamp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/control_bar_scrobble_winamp.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/button_grey_LEFT_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/button_grey_LEFT_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/button_grey_LEFT_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/button_grey_LEFT_REST.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/button_grey_RIGHT_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/button_grey_RIGHT_REST.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/button_red_LEFT_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/button_red_LEFT_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/button_red_LEFT_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/button_red_LEFT_REST.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/button_red_MIDDLE_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/button_red_MIDDLE_REST.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/button_red_RIGHT_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/button_red_RIGHT_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/button_red_RIGHT_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/button_red_RIGHT_REST.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/graphic_import_foobar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/graphic_import_foobar.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/graphic_import_itunes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/graphic_import_itunes.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/graphic_import_winamp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/graphic_import_winamp.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/graphic_location_MAC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/graphic_location_MAC.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/graphic_location_WIN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/graphic_location_WIN.png -------------------------------------------------------------------------------- /plugins/iTunes/scripts/currentTrackLocation.scpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/plugins/iTunes/scripts/currentTrackLocation.scpt -------------------------------------------------------------------------------- /app/client/qrc/control_bar_scrobble_applemusic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/control_bar_scrobble_applemusic.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/button_grey_MIDDLE_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/button_grey_MIDDLE_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/button_grey_MIDDLE_REST.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/button_grey_MIDDLE_REST.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/button_grey_RIGHT_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/button_grey_RIGHT_HOVER.png -------------------------------------------------------------------------------- /app/client/qrc/wizard/button_red_MIDDLE_HOVER.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/button_red_MIDDLE_HOVER.png -------------------------------------------------------------------------------- /plugins/iTunes/scripts/playCountForDatabaseId.scpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/plugins/iTunes/scripts/playCountForDatabaseId.scpt -------------------------------------------------------------------------------- /app/client/PrefPane/English.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/PrefPane/English.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /app/client/qrc/wizard/arrow_bigger_than_dropbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/arrow_bigger_than_dropbox.png -------------------------------------------------------------------------------- /plugins/iTunes/scripts/currentTrackPersistentId.scpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/plugins/iTunes/scripts/currentTrackPersistentId.scpt -------------------------------------------------------------------------------- /plugins/iTunes/scripts/playCountForPersistentId.scpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/plugins/iTunes/scripts/playCountForPersistentId.scpt -------------------------------------------------------------------------------- /app/client/qrc/wizard/arrow_even_bigger_than_dropbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/app/client/qrc/wizard/arrow_even_bigger_than_dropbox.png -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/shared/shared.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/plugins/foobar09/foobar_sdk/foobar2000/shared/shared.lib -------------------------------------------------------------------------------- /lib/3rdparty/iTunesCOMAPI/SampleScripts/RemoveDeadTracks.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/lib/3rdparty/iTunesCOMAPI/SampleScripts/RemoveDeadTracks.js -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/component_client.h: -------------------------------------------------------------------------------- 1 | #ifndef _COMPONENT_CLIENT_H_ 2 | #define _COMPONENT_CLIENT_H_ 3 | 4 | 5 | 6 | #endif //_COMPONENT_CLIENT_H_ -------------------------------------------------------------------------------- /lib/3rdparty/iTunesCOMAPI/SampleScripts/CreateAlbumPlaylists.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/lib/3rdparty/iTunesCOMAPI/SampleScripts/CreateAlbumPlaylists.js -------------------------------------------------------------------------------- /lib/3rdparty/iTunesCOMAPI/SampleScripts/RemoveUserPlaylists.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/lib/3rdparty/iTunesCOMAPI/SampleScripts/RemoveUserPlaylists.js -------------------------------------------------------------------------------- /lib/3rdparty/patches/README: -------------------------------------------------------------------------------- 1 | tbytevector_cpp.patch is for Taglib 1.5 to fix v.slow parsing of 2 | some rare MP3 files, see: http://bugs.kde.org/show_bug.cgi?id=159821 3 | 4 | **** -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/components_menu.h: -------------------------------------------------------------------------------- 1 | #ifndef _COMPONENTS_MENU_H_ 2 | #define _COMPONENTS_MENU_H_ 3 | 4 | #error deprecated, see menu_item.h 5 | 6 | 7 | #endif -------------------------------------------------------------------------------- /app/boffin/qrc/boffin.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | pause.png 4 | play.png 5 | skip.png 6 | stop.png 7 | 8 | 9 | -------------------------------------------------------------------------------- /plugins/iTunes/tools/append_once.bat: -------------------------------------------------------------------------------- 1 | REM %1 - string to append 2 | REM %2 - file to append it to 3 | find /C /I %1 %2 4 | if not errorlevel 1 goto end 5 | echo start /WAIT "" %1 /SILENT >> %2 6 | :end -------------------------------------------------------------------------------- /plugins/wmp/tools/append_once.bat: -------------------------------------------------------------------------------- 1 | REM %1 - string to append 2 | REM %2 - file to append it to 3 | find /C /I %1 %2 4 | if not errorlevel 1 goto end 5 | echo start /WAIT "" %1 /SILENT >> %2 6 | :end -------------------------------------------------------------------------------- /plugins/foobar08/tools/append_once.bat: -------------------------------------------------------------------------------- 1 | REM %1 - string to append 2 | REM %2 - file to append it to 3 | find /C /I %1 %2 4 | if not errorlevel 1 goto end 5 | echo start /WAIT "" %1 /SILENT >> %2 6 | :end -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/foo_input_raw/readme.txt: -------------------------------------------------------------------------------- 1 | Foo_input_raw is a sample component demonstrating implementation of a simple audio input service, use of filesystem APIs and service registration. -------------------------------------------------------------------------------- /plugins/foobar09/tools/append_once.bat: -------------------------------------------------------------------------------- 1 | REM %1 - string to append 2 | REM %2 - file to append it to 3 | find /C /I %1 %2 4 | if not errorlevel 1 goto end 5 | echo start /WAIT "" %1 /SILENT >> %2 6 | :end -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/foo_input_validator/foo_input_validator.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lastfm/lastfm-desktop/HEAD/plugins/foobar09/foobar_sdk/foobar2000/foo_input_validator/foo_input_validator.dll -------------------------------------------------------------------------------- /admin/qmake/QtOverride.pro.inc: -------------------------------------------------------------------------------- 1 | !CONFIG( no_override ) { 2 | win32:QMAKE_INCDIR_QT = $$ROOT_DIR/common/qt/override $$QMAKE_INCDIR_QT 3 | else:!macx-xcode::QMAKE_CXX = $$QMAKE_CXX -I$$ROOT_DIR/common/qt/override 4 | } 5 | -------------------------------------------------------------------------------- /common/HideStupidWarnings.h: -------------------------------------------------------------------------------- 1 | #ifdef Q_CC_MSVC //prevent gcc issuing warning about the pragma! lol ;) 2 | // ms admits its lousy compiler doesn't care about throw declarations 3 | #pragma warning( disable : 4290 ) 4 | #endif 5 | -------------------------------------------------------------------------------- /admin/dist/win/wix/eula.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\deff0\deflang2057{\fonttbl{\f0\fswiss\fcharset0 Arial;}} 2 | {\*\generator Msftedit 5.41.21.2509;}\viewkind4\uc1\pard\f0\fs20 Last.fm EULA.\par 3 | \par 4 | \fs32 Rock on!\fs20\par 5 | } 6 | -------------------------------------------------------------------------------- /app/boffin/json_spirit/json_spirit_value.cpp: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2007 John W Wilkinson 2 | 3 | This source code can be used for any purpose as long as 4 | this comment is retained. */ 5 | 6 | // json spirit version 2.00 7 | 8 | #include "json_spirit_value.h" 9 | -------------------------------------------------------------------------------- /lib/listener/tests/test_liblistener.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = app 2 | QT = testlib 3 | CONFIG += core types 4 | INCLUDEPATH += .. 5 | include( admin/include.qmake ) 6 | 7 | DEFINES += LASTFM_COLLAPSE_NAMESPACE 8 | SOURCES = TestPlayerCommandParser.cpp ../PlayerCommandParser.cpp 9 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/format_title_group.h: -------------------------------------------------------------------------------- 1 | void format_title_group(pfc::list_base_const_t const & p_list,titleformat_hook * p_hook,pfc::string_base & p_out,service_ptr_t p_script,titleformat_text_filter * p_filter); -------------------------------------------------------------------------------- /plugins/wmp/wmp_scrobbler.def: -------------------------------------------------------------------------------- 1 | ; wmp_scrobbler.def : Declares the module parameters. 2 | 3 | LIBRARY "WMP_SCROBBLER.DLL" 4 | 5 | EXPORTS 6 | DllCanUnloadNow PRIVATE 7 | DllGetClassObject PRIVATE 8 | DllRegisterServer PRIVATE 9 | DllUnregisterServer PRIVATE 10 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/StdAfx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // foobar2000_sdk_helpers.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | -------------------------------------------------------------------------------- /admin/dist/mac/sign_update.rb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/ruby 2 | if ARGV.length < 2 3 | puts "Usage: ruby sign_update.rb update_archive private_key" 4 | exit 5 | end 6 | openssl = "/usr/bin/openssl" 7 | puts `#{openssl} dgst -sha1 -binary < "#{ARGV[0]}" | #{openssl} dgst -dss1 -sign "#{ARGV[1]}" | #{openssl} enc -base64` -------------------------------------------------------------------------------- /plugins/winamp/UTF.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | class UTF 4 | { 5 | public: 6 | static bool wchartoutf8(const wchar_t* in, std::string &out); 7 | static bool utf8towstring(const unsigned char* in, std::wstring &out); 8 | static bool utf8towstring(const char* in, std::wstring &out); 9 | }; 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | _build/ 2 | _files.qmake 3 | _build_parameters.pl.h 4 | Makefile* 5 | /_bin/ 6 | /_include/ 7 | admin/dist/mac/dsa_priv.pem 8 | *.idb 9 | *.pdb 10 | *.ncb 11 | *.vcproj* 12 | *.sln 13 | *.suo 14 | .DS_Store 15 | *.breakpad 16 | *.user 17 | *.qm 18 | *.exe 19 | *.vscode 20 | Growl 21 | Sparkle 22 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/playback_control.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | 4 | double playback_control::playback_get_length() 5 | { 6 | double rv = 0; 7 | metadb_handle_ptr ptr; 8 | if (get_now_playing(ptr)) 9 | { 10 | rv = ptr->get_length(); 11 | } 12 | return rv; 13 | } 14 | -------------------------------------------------------------------------------- /plugins/iTunes/README.dist: -------------------------------------------------------------------------------- 1 | Edit the version in: 2 | 3 | main.h 4 | iScrobbleWin.rc 5 | itunes_install.iss 6 | iTunes Scrobbler.plist 7 | 8 | Note there are two version numbers in the iss file. 9 | 10 | Build the release build in Visual Studio. 11 | 12 | Then open the iss and compile to get the installer exe. 13 | 14 | -------------------------------------------------------------------------------- /plugins/wmp/StdAfx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // stdafx.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | #ifdef _ATL_STATIC_REGISTRY 8 | #include 9 | #endif 10 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/app_close_blocker.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | bool app_close_blocker::g_query() 4 | { 5 | service_ptr_t ptr; 6 | service_enum_t e; 7 | while(e.next(ptr)) 8 | { 9 | if (!ptr->query()) return false; 10 | } 11 | return true; 12 | } -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/popup_message.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | void popup_message::g_show_ex(const char * p_msg,unsigned p_msg_length,const char * p_title,unsigned p_title_length,t_icon p_icon) 4 | { 5 | static_api_ptr_t()->show_ex(p_msg,p_msg_length,p_title,p_title_length,p_icon); 6 | } 7 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/shared.h: -------------------------------------------------------------------------------- 1 | //DEPRECATED 2 | 3 | #ifndef _FOOBAR2000_SHARED_H_ 4 | #define _FOOBAR2000_SHARED_H_ 5 | 6 | #include "../shared/shared.h" 7 | 8 | HWND uCreateDialog(UINT id,HWND parent,DLGPROC proc,LPARAM param=0); 9 | int uDialogBox(UINT id,HWND parent,DLGPROC proc,LPARAM param=0); 10 | 11 | #endif -------------------------------------------------------------------------------- /plugins/winamp/StdAfx.cpp: -------------------------------------------------------------------------------- 1 | // stdafx.cpp : source file that includes just the standard includes 2 | // Gen_AudioScrobbler.pch will be the pre-compiled header 3 | // stdafx.obj will contain the pre-compiled type information 4 | 5 | #include "stdafx.h" 6 | 7 | // TODO: reference any additional headers you need in STDAFX.H 8 | // and not in this file 9 | -------------------------------------------------------------------------------- /plugins/winamp/WinampBootstrap.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "..\ScrobSub\Bootstrap.h" 4 | 5 | class WinampBootStrap : 6 | public BootStrap 7 | { 8 | public: 9 | WinampBootStrap(); 10 | ~WinampBootStrap(void); 11 | 12 | void sethWndWinampML( HWND hWndWinampML ); 13 | 14 | private: 15 | HWND m_hWndWinampML; 16 | bool start(); 17 | }; 18 | -------------------------------------------------------------------------------- /app/client/lastfm-scrobbler.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=1.0 3 | Name=Last.fm Scrobbler 4 | Comment=Listen to Last.fm radio 5 | Exec=lastfm-scrobbler %u 6 | Icon=lastfm-scrobbler 7 | Terminal=false 8 | Type=Application 9 | MimeType=x-scheme-handler/lastfm; 10 | Categories=Qt;AudioVideo;Audio;Player; 11 | X-KDE-Protocols=lastfm 12 | StartupNotify=true 13 | Keywords=Player;Audio; 14 | -------------------------------------------------------------------------------- /admin/dist/updates/Changelog.txt: -------------------------------------------------------------------------------- 1 | The changelog is publicly places into the update files, which live on cdn.last.fm. Add your changes there. 2 | 3 | Note that build-release.rb will output a stub Sparkle update XML block (called update.xml in the project root) to be added to various files here (beta, then release versions) which is correctly signed with our dsa_priv.pem key. You must incorporate this into the update XMLs. -------------------------------------------------------------------------------- /admin/qmake/debug.pro.inc: -------------------------------------------------------------------------------- 1 | CONFIG( debug, debug|release ) { 2 | mac* { 3 | #speeds up debug builds by only compiling x86 4 | CONFIG -= ppc 5 | } 6 | 7 | unix:!mac { 8 | QMAKE_CXXFLAGS_DEBUG = -ggdb 9 | } 10 | 11 | VERSION_UPDATE_PATTERN = *.*.*.* 12 | } 13 | else { 14 | CONFIG += warn_off 15 | DEFINES += NDEBUG 16 | #macx*:CONFIG += ppc x86 17 | } 18 | -------------------------------------------------------------------------------- /plugins/winamp/GEN.H: -------------------------------------------------------------------------------- 1 | typedef struct { 2 | int version; 3 | char *description; 4 | int (*init)(); 5 | void (*config)(); 6 | void (*quit)(); 7 | HWND hwndParent; 8 | HINSTANCE hDllInstance; 9 | } winampGeneralPurposePlugin; 10 | 11 | #define GPPHDR_VER 0x10 12 | 13 | extern winampGeneralPurposePlugin *gen_plugins[256]; 14 | typedef winampGeneralPurposePlugin * (*winampGeneralPurposePluginGetter)(); -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/pfc/bsearch.cpp: -------------------------------------------------------------------------------- 1 | #include "pfc.h" 2 | 3 | 4 | 5 | /* 6 | class NOVTABLE bsearch_callback 7 | { 8 | public: 9 | virtual int test(t_size p_index) const = 0; 10 | }; 11 | */ 12 | 13 | namespace pfc { 14 | 15 | bool pfc::bsearch(t_size p_count, bsearch_callback const & p_callback,t_size & p_result) { 16 | return bsearch_inline_t(p_count,p_callback,p_result); 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/preferences_page.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | bool preferences_page::get_help_url(pfc::string_base & p_out) 4 | { 5 | p_out = "http://help.foobar2000.org/"; 6 | p_out += core_version_info::g_get_version_string(); 7 | p_out += "/preferences/"; 8 | p_out += (const char*) pfc::print_guid(get_guid()); 9 | p_out += "/"; 10 | p_out += get_name(); 11 | return true; 12 | } -------------------------------------------------------------------------------- /lib/logger/logger.pro: -------------------------------------------------------------------------------- 1 | TARGET = logger 2 | TEMPLATE = lib 3 | QT -= gui 4 | CONFIG += dll 5 | unix:!mac { 6 | CONFIG -= dll 7 | CONFIG += staticlib 8 | QMAKE_DISTCLEAN += -f ../../_bin/liblogger.a 9 | } 10 | 11 | include( ../../admin/include.qmake ) 12 | 13 | DEFINES += _LOGGER_DLLEXPORT LASTFM_COLLAPSE_NAMESPACE 14 | 15 | SOURCES += $$ROOT_DIR/common/c++/Logger.cpp 16 | 17 | HEADERS += $$ROOT_DIR/common/c++/Logger.h 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/twiddly/README: -------------------------------------------------------------------------------- 1 | Twiddly is coupled to the iPod handling component of the iTunes plugin and the 2 | Last.fm Client software. 3 | 4 | It is launched when an iPod has finished syncing with iTunes and compares the 5 | iTunesPlaysDatabase with the iTunes Library Database, and thus determines what 6 | has been played by an iPod. 7 | 8 | It is a separate process for the purpose of writing simpler code, and the 9 | use-case where the client is not running. 10 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/utf8api.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | HWND uCreateDialog(UINT id,HWND parent,DLGPROC proc,LPARAM param) 4 | { 5 | return CreateDialogParam(core_api::get_my_instance(),MAKEINTRESOURCE(id),parent,proc,param); 6 | } 7 | 8 | int uDialogBox(UINT id,HWND parent,DLGPROC proc,LPARAM param) 9 | { 10 | return (int)DialogBoxParam(core_api::get_my_instance(),MAKEINTRESOURCE(id),parent,proc,param); 11 | } 12 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/link_resolver.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | bool link_resolver::g_find(service_ptr_t & p_out,const char * p_path) 4 | { 5 | service_enum_t e; 6 | service_ptr_t ptr; 7 | pfc::string_extension ext(p_path); 8 | while(e.next(ptr)) 9 | { 10 | if (ptr->is_our_path(p_path,ext)) 11 | { 12 | p_out = ptr; 13 | return true; 14 | } 15 | } 16 | return false; 17 | } 18 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/dynamic_bitrate_helper.h: -------------------------------------------------------------------------------- 1 | class dynamic_bitrate_helper 2 | { 3 | public: 4 | dynamic_bitrate_helper(); 5 | void on_frame(double p_duration,t_size p_bits); 6 | bool on_update(file_info & p_out, double & p_timestamp_delta); 7 | void reset(); 8 | private: 9 | void init(); 10 | double m_last_duration; 11 | t_size m_update_bits; 12 | double m_update_time; 13 | double m_update_interval; 14 | bool m_inited, m_enabled; 15 | }; -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/mem_block_container.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | void mem_block_container::from_stream(stream_reader * p_stream,t_size p_bytes,abort_callback & p_abort) { 4 | if (p_bytes == 0) {set_size(0);} 5 | set_size(p_bytes); 6 | p_stream->read_object(get_ptr(),p_bytes,p_abort); 7 | } 8 | 9 | void mem_block_container::set(const void * p_buffer,t_size p_size) { 10 | set_size(p_size); 11 | memcpy(get_ptr(),p_buffer,p_size); 12 | } 13 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/cue_creator.h: -------------------------------------------------------------------------------- 1 | namespace cue_creator 2 | { 3 | struct t_entry 4 | { 5 | file_info_impl m_infos; 6 | pfc::string8 m_file,m_flags; 7 | unsigned m_track_number; 8 | 9 | t_cuesheet_index_list m_index_list; 10 | 11 | void set_simple_index(double p_time); 12 | }; 13 | 14 | typedef pfc::chain_list_t t_entry_list; 15 | 16 | void create(pfc::string_formatter & p_out,const pfc::chain_list_t & p_list); 17 | }; -------------------------------------------------------------------------------- /plugins/foobar09/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by foo_audioscrobbler.rc 4 | 5 | // Next default values for new objects 6 | // 7 | #ifdef APSTUDIO_INVOKED 8 | #ifndef APSTUDIO_READONLY_SYMBOLS 9 | #define _APS_NEXT_RESOURCE_VALUE 101 10 | #define _APS_NEXT_COMMAND_VALUE 40001 11 | #define _APS_NEXT_CONTROL_VALUE 1001 12 | #define _APS_NEXT_SYMED_VALUE 101 13 | #endif 14 | #endif 15 | -------------------------------------------------------------------------------- /plugins/winamp/res/Gen_AudioScrobbler.rc2: -------------------------------------------------------------------------------- 1 | // 2 | // GEN_AUDIOSCROBBLER.RC2 - resources Microsoft Visual C++ does not edit directly 3 | // 4 | 5 | #ifdef APSTUDIO_INVOKED 6 | #error this file is not editable by Microsoft Visual C++ 7 | #endif //APSTUDIO_INVOKED 8 | 9 | 10 | ///////////////////////////////////////////////////////////////////////////// 11 | // Add manually edited resources here... 12 | 13 | ///////////////////////////////////////////////////////////////////////////// 14 | -------------------------------------------------------------------------------- /admin/dist/mac/Growl Registration Ticket.growlRegDict: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | TicketVersion 6 | 1 7 | AllNotifications 8 | 9 | New track 10 | 11 | DefaultNotifications 12 | 13 | New track 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/config_io_callback.h: -------------------------------------------------------------------------------- 1 | #ifndef _config_io_callback_h_ 2 | #define _config_io_callback_h_ 3 | 4 | class NOVTABLE config_io_callback : public service_base 5 | { 6 | public: 7 | virtual void on_read() = 0; 8 | virtual void on_write(bool reset) = 0; 9 | 10 | //for core use only 11 | static void g_on_read(); 12 | static void g_on_write(bool reset); 13 | 14 | FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(config_io_callback); 15 | }; 16 | 17 | #endif //_config_io_callback_h_ -------------------------------------------------------------------------------- /app/boffin/json_spirit/json_spirit.h: -------------------------------------------------------------------------------- 1 | #ifndef JASON_SPIRIT 2 | #define JASON_SPIRIT 3 | 4 | /* Copyright (c) 2007-2009 John W Wilkinson 5 | 6 | This source code can be used for any purpose as long as 7 | this comment is retained. */ 8 | 9 | // json spirit version 3.00 10 | 11 | #if defined(_MSC_VER) && (_MSC_VER >= 1020) 12 | # pragma once 13 | #endif 14 | 15 | #include "json_spirit_value.h" 16 | #include "json_spirit_reader.h" 17 | #include "json_spirit_writer.h" 18 | #include "json_spirit_utils.h" 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/text_file_loader.h: -------------------------------------------------------------------------------- 1 | namespace text_file_loader 2 | { 3 | void write(const service_ptr_t & p_file,abort_callback & p_abort,const char * p_string,bool is_utf8); 4 | void read(const service_ptr_t & p_file,abort_callback & p_abort,pfc::string_base & p_out,bool & is_utf8); 5 | 6 | void write(const char * p_path,abort_callback & p_abort,const char * p_string,bool is_utf8); 7 | void read(const char * p_path,abort_callback & p_abort,pfc::string_base & p_out,bool & is_utf8); 8 | 9 | }; -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/wildcard.h: -------------------------------------------------------------------------------- 1 | #ifndef __FOOBAR2000_HELPER_WILDCARD_H__ 2 | #define __FOOBAR2000_HELPER_WILDCARD_H__ 3 | 4 | namespace wildcard_helper 5 | { 6 | bool test_path(const char * path,const char * pattern,bool b_separate_by_semicolon = false);//will extract filename from path first 7 | bool test(const char * str,const char * pattern,bool b_separate_by_semicolon = false);//tests if str matches pattern 8 | bool has_wildcards(const char * str); 9 | }; 10 | 11 | #endif //__FOOBAR2000_HELPER_WILDCARD_H__ -------------------------------------------------------------------------------- /admin/tests/run_tests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # @author 3 | # expects to located in _bin, otherwise it doesn't work 4 | 5 | d=`dirname $0` 6 | 7 | source $d/../admin/utils.bash 8 | 9 | 10 | case `uname` in 11 | Darwin) export DYLD_LIBRARY_PATH=$d:DYLD_LIBRARY_PATH;; 12 | Linux) export LD_LIBRARY_PATH=$d:$LD_LIBRARY_PATH;; 13 | esac 14 | 15 | # reverse sorted because test_client takes 3 minutes and it is boring to wait 16 | for x in `find . -type f -perm +1 -name test_\* | sort -r` 17 | do 18 | header $x 19 | $x 20 | done 21 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/abort_callback.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | void abort_callback::check() const { 4 | if (is_aborting()) throw exception_aborted(); 5 | } 6 | 7 | void abort_callback::sleep(double p_timeout_seconds) const { 8 | if (!sleep_ex(p_timeout_seconds)) throw exception_aborted(); 9 | } 10 | 11 | bool abort_callback::sleep_ex(double p_timeout_seconds) const { 12 | #ifdef _WIN32 13 | return !win32_event::g_wait_for(get_abort_event(),p_timeout_seconds); 14 | #else 15 | #error PORTME 16 | #endif 17 | } -------------------------------------------------------------------------------- /plugins/wmp/WMPScrobbler.cpp: -------------------------------------------------------------------------------- 1 | // WMPScrobbler.cpp: implementation of the CWMPScrobbler class. 2 | // 3 | ////////////////////////////////////////////////////////////////////// 4 | 5 | #include "stdafx.h" 6 | #include "WMPScrobbler.h" 7 | 8 | ////////////////////////////////////////////////////////////////////// 9 | // Construction/Destruction 10 | ////////////////////////////////////////////////////////////////////// 11 | 12 | CWMPScrobbler::CWMPScrobbler() 13 | { 14 | 15 | } 16 | 17 | CWMPScrobbler::~CWMPScrobbler() 18 | { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/config_io_callback.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | void config_io_callback::g_on_read() 4 | { 5 | service_enum_t e; 6 | service_ptr_t ptr; 7 | if (e.first(ptr)) do { 8 | ptr->on_read(); 9 | } while(e.next(ptr)); 10 | } 11 | 12 | void config_io_callback::g_on_write(bool reset) 13 | { 14 | service_enum_t e; 15 | service_ptr_t ptr; 16 | if (e.first(ptr)) do { 17 | ptr->on_write(reset); 18 | } while(e.next(ptr)); 19 | } 20 | -------------------------------------------------------------------------------- /Last.fm.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | CONFIG += ordered 3 | SUBDIRS = lib/logger \ 4 | lib/unicorn \ 5 | lib/listener \ 6 | i18n \ 7 | app/client \ 8 | app/twiddly \ 9 | app/fingerprinter 10 | #app/boffin 11 | 12 | unix:!mac:SUBDIRS -= app/twiddly 13 | 14 | CONFIG( tests ) { 15 | SUBDIRS += \ 16 | lib/lastfm/core/tests/test_libcore.pro \ 17 | lib/lastfm/types/tests/test_libtypes.pro \ 18 | lib/lastfm/scrobble/tests/test_libscrobble.pro \ 19 | lib/listener/tests/test_liblistener.pro 20 | } 21 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/initquit.h: -------------------------------------------------------------------------------- 1 | #ifndef _INITQUIT_H_ 2 | #define _INITQUIT_H_ 3 | 4 | #include "service.h" 5 | 6 | //init/quit callback, on_init is called after main window has been created, on_quit is called before main window is destroyed 7 | class NOVTABLE initquit : public service_base 8 | { 9 | public: 10 | virtual void on_init() {} 11 | virtual void on_quit() {} 12 | 13 | FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(initquit); 14 | }; 15 | 16 | template 17 | class initquit_factory_t : public service_factory_single_t {}; 18 | 19 | #endif -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/modeless_dialog.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | void modeless_dialog_manager::g_add(HWND p_wnd) 4 | { 5 | service_enum_t e; 6 | service_ptr_t ptr; 7 | if (e.first(ptr)) do { 8 | ptr->add(p_wnd); 9 | } while(e.next(ptr)); 10 | } 11 | 12 | void modeless_dialog_manager::g_remove(HWND p_wnd) 13 | { 14 | service_enum_t e; 15 | service_ptr_t ptr; 16 | if (e.first(ptr)) do { 17 | ptr->remove(p_wnd); 18 | } while(e.next(ptr)); 19 | } -------------------------------------------------------------------------------- /plugins/iTunes/scripts/uninstall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #@author Max Howell 3 | 4 | if [[ "$1" != "--db-only" ]] 5 | then 6 | # clearly, we have to be started with AudioScrobbler.bundle/Contents/MacOS 7 | # as the working directory, then we explicitly delete the directory by name 8 | # this is a safety precaution 9 | cd ../../../ 10 | rm -rf AudioScrobbler.bundle 11 | fi 12 | 13 | cd ~/Library/Application\ Support/Last.fm || exit 1 14 | 15 | # automatic iPod database 16 | rm iTunesPlays.db 17 | # manual iPod databases 18 | find devices -name playcounts.db -delete 19 | -------------------------------------------------------------------------------- /admin/dist/win/isspp: -------------------------------------------------------------------------------- 1 | use File::Copy; 2 | 3 | open FILE, '_build/build_parameters.pl.h' or die $!; 4 | while ($line = ) { 5 | $str .= $line; 6 | } 7 | eval $str; 8 | close FILE; 9 | 10 | 11 | $root_dir = `cygpath -m '$ROOT_DIR'`; 12 | $qt_dir = `cygpath -m '$QMAKE_LIBDIR_QT\\..'`; 13 | 14 | 15 | copy( $ARGV[0], $ARGV[1] ) or die $!; 16 | open FILE, $ARGV[1] or die $!; 17 | while (<>) { 18 | s/@VERSION@/$VERSION-$REVISION/g; 19 | s/@SHORT_VERSION@/$VERSION/g; 20 | s/@ROOT_DIR@/$ROOT_DIR/g; 21 | s/@QT_DIR@/$qt_dir/g; 22 | s/@BIN_DIR@/$root_dir\\_bin/g; 23 | } 24 | close FILE; 25 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/packet_decoder.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | void packet_decoder::g_open(service_ptr_t & p_out,bool p_decode,const GUID & p_owner,t_size p_param1,const void * p_param2,t_size p_param2size,abort_callback & p_abort) 4 | { 5 | service_enum_t e; 6 | service_ptr_t ptr; 7 | while(e.next(ptr)) { 8 | if (ptr->is_our_setup(p_owner,p_param1,p_param2,p_param2size)) { 9 | ptr->open(p_out,p_decode,p_owner,p_param1,p_param2,p_param2size,p_abort); 10 | return; 11 | } 12 | } 13 | throw exception_io_data(); 14 | } -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/create_directory_helper.h: -------------------------------------------------------------------------------- 1 | #ifndef _CREATE_DIRECTORY_HELPER_H_ 2 | #define _CREATE_DIRECTORY_HELPER_H_ 3 | 4 | namespace create_directory_helper { 5 | void create_path(const char * p_path,abort_callback & p_abort); 6 | void make_path(const char * parent,const char * filename,const char * extension,bool allow_new_dirs,pfc::string8 & out,bool b_really_create_dirs,abort_callback & p_dir_create_abort); 7 | void format_filename(const metadb_handle_ptr & handle,titleformat_hook * p_hook,const char * spec,pfc::string8 & out); 8 | }; 9 | 10 | #endif//_CREATE_DIRECTORY_HELPER_H_ -------------------------------------------------------------------------------- /plugins/winamp/StdAfx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #pragma once 7 | 8 | // Insert your headers here 9 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 10 | 11 | #include 12 | #include 13 | extern CComModule _Module; 14 | #include 15 | #include 16 | #include 17 | #pragma warning( disable : 4192 ) 18 | 19 | #include "stdstring.h" 20 | #include "dbg.h" 21 | #include "ComDATE.h" -------------------------------------------------------------------------------- /lib/3rdparty/README: -------------------------------------------------------------------------------- 1 | Windows 2 | ======= 3 | 4 | You need to install: 5 | * mad 6 | * fftw3 (single precision) 7 | * libsamplerate 8 | * taglib 9 | 10 | The fetch.sh will attempt to fetch and build them all. But you need to use 11 | MinGW in order to compile fftw and libsamplerate. 12 | 13 | We have binaries at /svn/clientside/bin/win. 14 | Minimal headers are also in lib/3rdparty, though we don't keep these up to date. 15 | 16 | 17 | Mac OS X 18 | ======== 19 | Use macports to install: 20 | 21 | * taglib 22 | * fftw3-3 23 | * libsamplerate 24 | * taglib 25 | 26 | Linux 27 | ===== 28 | Install the same as for the Mac with your package manager. 29 | -------------------------------------------------------------------------------- /app/client/Widgets/NothingPlayingWidget_mac.mm: -------------------------------------------------------------------------------- 1 | 2 | 3 | #include "NothingPlayingWidget.h" 4 | 5 | void 6 | NothingPlayingWidget::oniTunesClicked() 7 | { 8 | // launch iTunes! 9 | [[NSWorkspace sharedWorkspace] launchAppWithBundleIdentifier:@"com.apple.iTunes" options:NSWorkspaceLaunchDefault additionalEventParamDescriptor:nil launchIdentifier:NULL]; 10 | } 11 | 12 | void 13 | NothingPlayingWidget::onAppleMusicClicked() 14 | { 15 | // launch Apple Music! 16 | [[NSWorkspace sharedWorkspace] launchAppWithBundleIdentifier:@"com.apple.Music" options:NSWorkspaceLaunchDefault additionalEventParamDescriptor:nil launchIdentifier:NULL]; 17 | } 18 | -------------------------------------------------------------------------------- /app/client/PrefPane/PrefPane.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = app 2 | 3 | debug { 4 | pp.commands = xcodebuild -project PrefPane.xcodeproj -configuration Debug 5 | } 6 | 7 | release { 8 | pp.commands = xcodebuild -project PrefPane.xcodeproj -configuration Release 9 | } 10 | 11 | pp.target=PrefPane.prefpane 12 | 13 | QMAKE_CLEAN = -r build 14 | 15 | # Disable the linker: 16 | QMAKE_LINK=@\\$$LITERAL_HASH 17 | 18 | CONFIG-=app_bundle 19 | CONFIG+=lib_bundle 20 | OBJECTS_DIR=. 21 | 22 | QMAKE_BUNDLE_EXTENSION=.prefpane 23 | debug:TARGET=Scrobbler_debug.prefpane 24 | release:TARGET=Scrobbler.prefpane 25 | 26 | QMAKE_EXTRA_TARGETS = pp 27 | PRE_TARGETDEPS = $$pp.target 28 | 29 | -------------------------------------------------------------------------------- /plugins/wmp/wmpBootStrap.h: -------------------------------------------------------------------------------- 1 | #ifndef _WMP_BOOTSTRAP_H 2 | #define _WMP_BOOTSTRAP_H 3 | 4 | #include "Bootstrap.h" 5 | #include "wmp.h" 6 | 7 | class wmpBootStrap : 8 | public BootStrap 9 | { 10 | public: 11 | wmpBootStrap(); 12 | ~wmpBootStrap(void); 13 | 14 | void setCore( IWMPCore *pCore ); 15 | 16 | private: 17 | IWMPCore *m_core; 18 | void readAttributes( IWMPMedia* media ); 19 | bool start(); 20 | std::map<_bstr_t, enum BootStrapDetails > attributes; 21 | void getDateTimeFormat(); 22 | 23 | std::stringstream m_dateFormat; 24 | std::stringstream m_timeFormat; 25 | }; 26 | 27 | #endif // _WMP_BOOTSTRAP_H -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/chapterizer.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | void chapter_list::copy(const chapter_list & p_source) 4 | { 5 | t_size n, count = p_source.get_chapter_count(); 6 | set_chapter_count(count); 7 | for(n=0;n & p_out,const char * p_path,abort_callback & p_abort) 12 | { 13 | service_ptr_t ptr; 14 | service_enum_t e; 15 | while(e.next(ptr)) 16 | { 17 | if (ptr->is_our_file(p_path,p_abort)) 18 | { 19 | p_out = ptr; 20 | return true; 21 | } 22 | } 23 | return false; 24 | } -------------------------------------------------------------------------------- /admin/dist/win/wix/wixboff.cmd: -------------------------------------------------------------------------------- 1 | rem @echo off 2 | rem Requires Wix 3.0.x 3 | rem Run with current directory same as .cmd location 4 | 5 | rem set VCREDISTDIR=C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86\ 6 | set VCREDISTDIR=C:\Program Files\Common Files\Merge Modules\ 7 | 8 | echo WIX = %WIX% 9 | echo QTDIR = %QTDIR% 10 | echo VCREDISTDIR = %VCREDISTDIR% 11 | 12 | "%WIX%"\bin\candle boffin.wxs 13 | if ERRORLEVEL 1 goto ERROR 14 | 15 | "%WIX%"\bin\light -ext WixUIExtension boffin.wixobj -b ..\..\..\..\_bin\ -b %QTDIR%\bin -b %QTDIR%\plugins -b "%VCREDISTDIR%\" 16 | if ERRORLEVEL 1 goto ERROR 17 | 18 | goto END 19 | 20 | :ERROR 21 | echo "***Fail" 22 | 23 | :END -------------------------------------------------------------------------------- /plugins/wmp/WMPScrobbler.h: -------------------------------------------------------------------------------- 1 | // WMPScrobbler.h: interface for the CWMPScrobbler class. 2 | // 3 | ////////////////////////////////////////////////////////////////////// 4 | 5 | #if !defined(AFX_WMPSCROBBLER_H__9E9C7CB2_8718_4C0C_8BA3_E5F7D55D5118__INCLUDED_) 6 | #define AFX_WMPSCROBBLER_H__9E9C7CB2_8718_4C0C_8BA3_E5F7D55D5118__INCLUDED_ 7 | 8 | #if _MSC_VER > 1000 9 | #pragma once 10 | #endif // _MSC_VER > 1000 11 | 12 | #include "Scrobbler.h" 13 | 14 | class CWMPScrobbler : public CScrobbler 15 | { 16 | public: 17 | CWMPScrobbler(); 18 | virtual ~CWMPScrobbler(); 19 | 20 | }; 21 | 22 | #endif // !defined(AFX_WMPSCROBBLER_H__9E9C7CB2_8718_4C0C_8BA3_E5F7D55D5118__INCLUDED_) 23 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/preload_info_helper.h: -------------------------------------------------------------------------------- 1 | namespace preload_info_helper { 2 | bool __declspec(deprecated("Use metadb_io_v2 methods instead.")) preload_info(metadb_handle_ptr p_item,HWND p_parent_window,bool p_showerror); 3 | bool __declspec(deprecated("Use metadb_io_v2 methods instead.")) preload_info_multi(const pfc::list_base_const_t & p_items,HWND p_parent_window,bool p_showerror); 4 | bool __declspec(deprecated("Use metadb_io_v2 methods instead.")) preload_info_multi_modalcheck(const pfc::list_base_const_t & p_items,HWND p_parent_window,bool p_showerror); 5 | bool are_all_loaded(const pfc::list_base_const_t & p_items); 6 | }; -------------------------------------------------------------------------------- /plugins/iTunes/tests/comtest.cpp: -------------------------------------------------------------------------------- 1 | // comtest.cpp : Defines the entry point for the console application. 2 | // 3 | 4 | #include "ITunesComThread.h" 5 | #include "common/logger.h" 6 | 7 | #include 8 | #include 9 | 10 | #include 11 | #include 12 | 13 | //class ComtestModule : public CAtlExeModuleT< ComtestModule > 14 | //{ 15 | //}; 16 | 17 | //ComtestModule _AtlModule; 18 | 19 | int _tmain(int argc, _TCHAR* argv[]) 20 | { 21 | Logger::GetLogger().Init( L"test.log" ); 22 | 23 | printf("main"); 24 | 25 | ITunesComThread t; 26 | 27 | //Sleep( 1000 * 1000 ); 28 | 29 | getchar(); 30 | 31 | return 0; 32 | } 33 | 34 | -------------------------------------------------------------------------------- /plugins/winamp/Gen_AudioScrobbler.dsw: -------------------------------------------------------------------------------- 1 | Microsoft Developer Studio Workspace File, Format Version 6.00 2 | # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! 3 | 4 | ############################################################################### 5 | 6 | Project: "Gen_AudioScrobbler"=.\Gen_AudioScrobbler.dsp - Package Owner=<4> 7 | 8 | Package=<5> 9 | {{{ 10 | }}} 11 | 12 | Package=<4> 13 | {{{ 14 | }}} 15 | 16 | ############################################################################### 17 | 18 | Global: 19 | 20 | Package=<5> 21 | {{{ 22 | }}} 23 | 24 | Package=<3> 25 | {{{ 26 | }}} 27 | 28 | ############################################################################### 29 | 30 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/genrand.h: -------------------------------------------------------------------------------- 1 | #ifndef _SDK_GENRAND_H_ 2 | #define _SDK_GENRAND_H_ 3 | 4 | //! PRNG service. Implemented by the core, do not reimplement. Use g_create() helper function to instantiate. 5 | class NOVTABLE genrand_service : public service_base 6 | { 7 | public: 8 | //! Seeds the PRNG with specified value. 9 | virtual void seed(unsigned val) = 0; 10 | //! Returns random value N, where 0 <= N < range. 11 | virtual unsigned genrand(unsigned range)=0; 12 | 13 | static service_ptr_t g_create() {return standard_api_create_t();} 14 | 15 | FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(genrand_service); 16 | }; 17 | 18 | 19 | #endif //_SDK_GENRAND_H_ -------------------------------------------------------------------------------- /app/fingerprinter/fingerprinter.pro: -------------------------------------------------------------------------------- 1 | TARGET = fingerprinter 2 | QT = core network xml sql 3 | 4 | CONFIG += lastfm unicorn logger fingerprint ffmpeg 5 | CONFIG -= app_bundle 6 | 7 | include( ../../admin/include.qmake ) 8 | 9 | # TODO: FIX THIS: I think this means that we can only build bundles 10 | mac { 11 | DESTDIR = "../../_bin/Last.fm Scrobbler.app/Contents/Helpers" 12 | QMAKE_POST_LINK += ../../admin/dist/mac/bundleFrameworks.sh \"$$DESTDIR/$$TARGET\" 13 | } 14 | 15 | SOURCES += main.cpp \ 16 | Fingerprinter.cpp \ 17 | LAV_Source.cpp 18 | 19 | HEADERS += LAV_Source.h \ 20 | Fingerprinter.h 21 | 22 | 23 | 24 | 25 | 26 | DEFINES += LASTFM_COLLAPSE_NAMESPACE LASTFM_FINGERPRINTER 27 | 28 | -------------------------------------------------------------------------------- /admin/dist/win/wix/wixclient.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | rem Requires Wix 3.0.x 3 | rem Run with current directory same as .cmd location 4 | 5 | rem set VCREDISTDIR=C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86\ 6 | set VCREDISTDIR=C:\Program Files\Common Files\Merge Modules\ 7 | 8 | echo WIX = %WIX% 9 | echo QTDIR = %QTDIR% 10 | echo VCREDISTDIR = %VCREDISTDIR% 11 | 12 | "%WIX%"\bin\candle client.wxs 13 | if ERRORLEVEL 1 goto ERROR 14 | 15 | "%WIX%"\bin\light -ext WixUIExtension client.wixobj -b ..\..\..\..\ -b ..\..\..\..\_bin\ -b %QTDIR%\bin -b %QTDIR%\plugins -b "%VCREDISTDIR%\" 16 | if ERRORLEVEL 1 goto ERROR 17 | 18 | goto END 19 | 20 | :ERROR 21 | echo "***Fail" 22 | 23 | :END 24 | -------------------------------------------------------------------------------- /plugins/scrobsub/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Bootstrap.rc 4 | // 5 | #define IDD_PROGRESSFORM 101 6 | #define IDC_PROGRESS1 1002 7 | #define IDC_BUTTONOK 1005 8 | #define IDC_BUTTONCANCEL 1006 9 | #define IDC_LABEL 1007 10 | 11 | // Next default values for new objects 12 | // 13 | #ifdef APSTUDIO_INVOKED 14 | #ifndef APSTUDIO_READONLY_SYMBOLS 15 | #define _APS_NEXT_RESOURCE_VALUE 101 16 | #define _APS_NEXT_COMMAND_VALUE 40001 17 | #define _APS_NEXT_CONTROL_VALUE 1001 18 | #define _APS_NEXT_SYMED_VALUE 101 19 | #endif 20 | #endif 21 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/hasher_md5.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | GUID hasher_md5::guid_from_result(const hasher_md5_result & param) 4 | { 5 | assert(sizeof(GUID) == sizeof(hasher_md5_result)); 6 | GUID temp = * reinterpret_cast(¶m); 7 | byte_order::order_le_to_native_t(temp); 8 | return temp; 9 | } 10 | 11 | hasher_md5_result hasher_md5::process_single(const void * p_buffer,t_size p_bytes) 12 | { 13 | hasher_md5_state state; 14 | initialize(state); 15 | process(state,p_buffer,p_bytes); 16 | return get_result(state); 17 | } 18 | 19 | GUID hasher_md5::process_single_guid(const void * p_buffer,t_size p_bytes) 20 | { 21 | return guid_from_result(process_single(p_buffer,p_bytes)); 22 | } -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/file_wrapper_simple.h: -------------------------------------------------------------------------------- 1 | class file_wrapper_simple 2 | { 3 | public: 4 | explicit file_wrapper_simple(const service_ptr_t & p_file,abort_callback & p_abort) : m_file(p_file), m_abort(p_abort), m_has_failed(false) {} 5 | 6 | inline bool has_failed() const {return m_has_failed;} 7 | inline void reset_status() {m_has_failed = false;} 8 | 9 | 10 | t_size read(void * p_buffer,t_size p_bytes); 11 | t_size write(const void * p_buffer,t_size p_bytes); 12 | bool seek(t_filesize p_offset); 13 | t_filesize get_position(); 14 | t_filesize get_size(); 15 | bool can_seek(); 16 | bool truncate(); 17 | private: 18 | service_ptr_t m_file; 19 | abort_callback & m_abort; 20 | bool m_has_failed; 21 | }; 22 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/dropdown_helper.h: -------------------------------------------------------------------------------- 1 | #ifndef _DROPDOWN_HELPER_H_ 2 | #define _DROPDOWN_HELPER_H_ 3 | 4 | 5 | class cfg_dropdown_history 6 | { 7 | enum {separator = '\n'}; 8 | cfg_string data; 9 | unsigned max; 10 | void build_list(pfc::ptr_list_t & out); 11 | void parse_list(const pfc::ptr_list_t & src); 12 | public: 13 | cfg_dropdown_history(const GUID & p_guid,unsigned p_max = 10,const char * init_vals = "") : data(p_guid,init_vals) {max = p_max;} 14 | void setup_dropdown(HWND wnd); 15 | void setup_dropdown(HWND wnd,UINT id) {setup_dropdown(GetDlgItem(wnd,id));} 16 | void add_item(const char * item); 17 | bool is_empty(); 18 | void on_context(HWND wnd,LPARAM coords); 19 | }; 20 | 21 | 22 | #endif //_DROPDOWN_HELPER_H_ -------------------------------------------------------------------------------- /plugins/scrobsub/resource1.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by Bootstrap.rc 4 | // 5 | #define IDD_PROGRESSFORM 101 6 | #define IDC_PROGRESS1 1002 7 | #define IDC_BUTTONOK 1005 8 | #define IDC_BUTTONCANCEL 1006 9 | #define IDC_LABEL 1007 10 | #define IDC_LABEL1 1007 11 | 12 | // Next default values for new objects 13 | // 14 | #ifdef APSTUDIO_INVOKED 15 | #ifndef APSTUDIO_READONLY_SYMBOLS 16 | #define _APS_NEXT_RESOURCE_VALUE 101 17 | #define _APS_NEXT_COMMAND_VALUE 40001 18 | #define _APS_NEXT_CONTROL_VALUE 1001 19 | #define _APS_NEXT_SYMED_VALUE 101 20 | #endif 21 | #endif 22 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/commandline.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | void commandline_handler_metadb_handle::on_file(const char * url) 4 | { 5 | 6 | abort_callback_impl blah; 7 | 8 | { 9 | playlist_loader_callback_impl callback(blah); 10 | 11 | bool fail = false; 12 | try { 13 | playlist_loader::g_process_path_ex(url,callback); 14 | } catch(std::exception const & e) { 15 | console::formatter() << "Unhandled exception in playlist loader: " << e; 16 | fail = true; 17 | } catch(...) { 18 | console::formatter() << "Unhandled exception in playlist loader"; 19 | fail = true; 20 | } 21 | 22 | if (!fail) { 23 | t_size n,m=callback.get_count(); 24 | for(n=0;n m_buffer; 9 | t_size m_buffer_ptr, m_buffer_max; 10 | }; 11 | 12 | class stream_writer_buffered : public stream_writer 13 | { 14 | public: 15 | stream_writer_buffered(stream_writer * p_base,t_size p_buffer); 16 | 17 | void write(const void * p_buffer,t_size p_bytes,abort_callback & p_abort); 18 | 19 | void flush(abort_callback & p_abort); 20 | 21 | private: 22 | stream_writer * m_base; 23 | pfc::array_t m_buffer; 24 | t_size m_buffer_ptr; 25 | }; 26 | 27 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/StdAfx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, but 3 | // are changed infrequently 4 | // 5 | 6 | #if !defined(AFX_STDAFX_H__6356EC2B_6DD1_4BE8_935C_87ECBA8697E4__INCLUDED_) 7 | #define AFX_STDAFX_H__6356EC2B_6DD1_4BE8_935C_87ECBA8697E4__INCLUDED_ 8 | 9 | #if _MSC_VER > 1000 10 | #pragma once 11 | #endif // _MSC_VER > 1000 12 | 13 | 14 | #include "../SDK/foobar2000.h" 15 | #include "helpers.h" 16 | 17 | // TODO: reference additional headers your program requires here 18 | 19 | //{{AFX_INSERT_LOCATION}} 20 | // Microsoft Visual C++ will insert additional declarations immediately before the previous line. 21 | 22 | #endif // !defined(AFX_STDAFX_H__6356EC2B_6DD1_4BE8_935C_87ECBA8697E4__INCLUDED_) 23 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/cfg_structlist.h: -------------------------------------------------------------------------------- 1 | template 2 | class cfg_structlist_t : public cfg_var, public pfc::list_t 3 | { 4 | public: 5 | void get_data_raw(stream_writer * p_stream,abort_callback & p_abort) { 6 | t_uint32 n, m = get_count(); 7 | p_stream->write_lendian_t(m,p_abort); 8 | for(n=0;nwrite_object(&m_buffer[n],sizeof(T),p_abort); 10 | } 11 | } 12 | 13 | void set_data_raw(stream_reader * p_stream,t_size,abort_callback & p_abort) { 14 | t_uint32 n,count; 15 | p_stream->read_lendian_t(count,p_abort); 16 | m_buffer.set_size_e(count); 17 | for(n=0;nread_object(&m_buffer[n],sizeof(T),p_abort); 20 | } catch(...) {m_buffer.set_size(0); throw;} 21 | } 22 | } 23 | public: 24 | cfg_structlist_t(const GUID & p_guid) : cfg_var(p_guid) {} 25 | }; -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/file_list_helper.h: -------------------------------------------------------------------------------- 1 | #ifndef _foobar2000_helpers_file_list_helper_ 2 | #define _foobar2000_helpers_file_list_helper_ 3 | 4 | 5 | namespace file_list_helper 6 | { 7 | //list guaranteed to be sorted by metadb::path_compare 8 | class file_list_from_metadb_handle_list : public pfc::list_base_const_t { 9 | public: 10 | 11 | void init_from_list(const list_base_const_t & p_list); 12 | void init_from_list_display(const list_base_const_t & p_list); 13 | 14 | t_size get_count() const; 15 | void get_item_ex(const char * & p_out,t_size n) const; 16 | 17 | ~file_list_from_metadb_handle_list(); 18 | 19 | private: 20 | void __add(const char * p_what); 21 | pfc::ptr_list_t m_data; 22 | }; 23 | 24 | 25 | }; 26 | 27 | 28 | #endif //_foobar2000_helpers_file_list_helper_ -------------------------------------------------------------------------------- /app/client/PrefPane/PrefPane_prefix.pch: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2010 Last.fm Ltd. 3 | - Primarily authored by Jono Cole 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/service.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | #include "component.h" 3 | 4 | foobar2000_api * g_api; 5 | 6 | service_class_ref service_factory_base::enum_find_class(const GUID & p_guid) 7 | { 8 | PFC_ASSERT(core_api::are_services_available() && g_api); 9 | return g_api->service_enum_find_class(p_guid); 10 | } 11 | 12 | bool service_factory_base::enum_create(service_ptr_t & p_out,service_class_ref p_class,t_size p_index) 13 | { 14 | PFC_ASSERT(core_api::are_services_available() && g_api); 15 | return g_api->service_enum_create(p_out,p_class,p_index); 16 | } 17 | 18 | t_size service_factory_base::enum_get_count(service_class_ref p_class) 19 | { 20 | PFC_ASSERT(core_api::are_services_available() && g_api); 21 | return g_api->service_enum_get_count(p_class); 22 | } 23 | 24 | service_factory_base * service_factory_base::__internal__list = NULL; 25 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/coreversion.h: -------------------------------------------------------------------------------- 1 | #ifndef _COREVERSION_H_ 2 | #define _COREVERSION_H_ 3 | 4 | class NOVTABLE core_version_info : public service_base { 5 | public: 6 | virtual const char * get_version_string() = 0; 7 | static const char * g_get_version_string() {return static_api_ptr_t()->get_version_string();} 8 | FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(core_version_info); 9 | }; 10 | 11 | struct t_core_version_data { 12 | t_uint32 m_major, m_minor1, m_minor2, m_minor3; 13 | }; 14 | 15 | //! New (0.9.4.2) 16 | class NOVTABLE core_version_info_v2 : public core_version_info { 17 | public: 18 | virtual const char * get_name() = 0;//"foobar2000" 19 | virtual const char * get_version_as_text() = 0;//"N.N.N.N" 20 | virtual t_core_version_data get_version() = 0; 21 | 22 | FB2K_MAKE_SERVICE_INTERFACE(core_version_info_v2, core_version_info); 23 | }; 24 | 25 | #endif //_COREVERSION_H_ 26 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/string_filter.h: -------------------------------------------------------------------------------- 1 | class string_filter_noncasesensitive { 2 | public: 3 | string_filter_noncasesensitive(const char * p_string,t_size p_string_len = infinite) { 4 | uStringLower(m_pattern,p_string,p_string_len); 5 | } 6 | 7 | bool test(const char * p_string,t_size p_string_len = infinite) const { 8 | ::uStringLower(m_lowercasebuffer,p_string,p_string_len); 9 | t_size walk = 0; 10 | while(m_pattern[walk] != 0) { 11 | while(m_pattern[walk] == ' ') walk++; 12 | t_size delta = 0; 13 | while(m_pattern[walk+delta] != 0 && m_pattern[walk+delta] != ' ') delta++; 14 | if (delta > 0) { 15 | if (pfc::string_find_first_ex(m_lowercasebuffer,infinite,m_pattern+walk,delta) == infinite) return false; 16 | } 17 | walk += delta; 18 | } 19 | return true; 20 | } 21 | private: 22 | mutable pfc::string8_fastalloc m_lowercasebuffer; 23 | pfc::string8 m_pattern; 24 | }; 25 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/pfc/selftest.cpp: -------------------------------------------------------------------------------- 1 | #include "pfc.h" 2 | 3 | static void selftest() //never called, testing done at compile time 4 | { 5 | pfc::static_assert_t(); 6 | pfc::static_assert_t(); 7 | pfc::static_assert_t(); 8 | pfc::static_assert_t(); 9 | 10 | pfc::static_assert_t(); 11 | pfc::static_assert_t(); 12 | pfc::static_assert_t(); 13 | pfc::static_assert_t(); 14 | 15 | pfc::static_assert_t(); 16 | pfc::static_assert_t(); 17 | 18 | pfc::static_assert_t(); 19 | pfc::static_assert_t(); 20 | 21 | pfc::static_assert_t(); 22 | 23 | pfc::static_assert_t(); 24 | 25 | } -------------------------------------------------------------------------------- /app/client/PrefPane/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleIdentifier 8 | fm.last.prefpane 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | ${PRODUCT_NAME} 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleSignature 16 | ???? 17 | CFBundleVersion 18 | 1.0 19 | NSPrefPaneIconLabel 20 | Last.fm 21 | NSPrefPaneIconFile 22 | icon.png 23 | NSMainNibFile 24 | MainWindow 25 | NSPrincipalClass 26 | FmLastPrefPane 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/client/Settings/AccountSettingsWidget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | AccountSettingsWidget 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 300 11 | 12 | 13 | 14 | Form 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | UserManagerWidget 25 | QWidget 26 |
lib/unicorn/widgets/UserManagerWidget.h
27 | 1 28 |
29 |
30 | 31 | 32 |
33 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/pfc/profiler.cpp: -------------------------------------------------------------------------------- 1 | #include "pfc.h" 2 | 3 | #ifdef _WINDOWS 4 | namespace pfc { 5 | 6 | profiler_static::profiler_static(const char * p_name) 7 | { 8 | name = p_name; 9 | total_time = 0; 10 | num_called = 0; 11 | } 12 | 13 | profiler_static::~profiler_static() 14 | { 15 | try { 16 | pfc::string_fixed_t<511> message; 17 | message << "profiler: " << pfc::format_pad_left >(48,' ',name) << " - " << 18 | pfc::format_pad_right >(16,' ',pfc::format_uint(total_time) ) << " cycles"; 19 | 20 | if (num_called > 0) { 21 | message << " (executed " << num_called << " times, " << (total_time / num_called) << " average)"; 22 | } 23 | message << "\n"; 24 | OutputDebugStringA(message); 25 | } catch(...) { 26 | //should never happen 27 | OutputDebugString(_T("unexpected profiler failure\n")); 28 | } 29 | } 30 | 31 | } 32 | #else 33 | //PORTME 34 | #endif 35 | -------------------------------------------------------------------------------- /plugins/iTunes/tests/comtest.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 9.00 3 | # Visual Studio 2005 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "comtest", "comtest.vcproj", "{13C49490-5E37-4616-AC77-52F340DE07D8}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {13C49490-5E37-4616-AC77-52F340DE07D8}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {13C49490-5E37-4616-AC77-52F340DE07D8}.Debug|Win32.Build.0 = Debug|Win32 14 | {13C49490-5E37-4616-AC77-52F340DE07D8}.Release|Win32.ActiveCfg = Release|Win32 15 | {13C49490-5E37-4616-AC77-52F340DE07D8}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /plugins/wmp/wmp_scrobbler.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 11.00 2 | # Visual Studio 2010 3 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wmp_scrobbler", "wmp_scrobbler.vcxproj", "{CF8AD3FB-2EAF-4A9D-8619-F6701B9A9BDE}" 4 | EndProject 5 | Global 6 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 7 | Debug|Win32 = Debug|Win32 8 | Release|Win32 = Release|Win32 9 | EndGlobalSection 10 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 11 | {CF8AD3FB-2EAF-4A9D-8619-F6701B9A9BDE}.Debug|Win32.ActiveCfg = Debug|Win32 12 | {CF8AD3FB-2EAF-4A9D-8619-F6701B9A9BDE}.Debug|Win32.Build.0 = Debug|Win32 13 | {CF8AD3FB-2EAF-4A9D-8619-F6701B9A9BDE}.Release|Win32.ActiveCfg = Release|Win32 14 | {CF8AD3FB-2EAF-4A9D-8619-F6701B9A9BDE}.Release|Win32.Build.0 = Release|Win32 15 | EndGlobalSection 16 | GlobalSection(SolutionProperties) = preSolution 17 | HideSolutionNode = FALSE 18 | EndGlobalSection 19 | EndGlobal 20 | -------------------------------------------------------------------------------- /plugins/wmp/wmp_scrobbler.rgs: -------------------------------------------------------------------------------- 1 | HKCR 2 | { 3 | NoRemove CLSID 4 | { 5 | ForceRemove {E7C0F450-9B76-4481-B3DF-B3447B383762} = s 'Wmp_scrobbler Class' 6 | { 7 | InprocServer32 = s '%MODULE%' 8 | { 9 | val ThreadingModel = s 'Apartment' 10 | } 11 | } 12 | } 13 | } 14 | HKEY_LOCAL_MACHINE 15 | { 16 | NoRemove SOFTWARE 17 | { 18 | NoRemove Microsoft 19 | { 20 | NoRemove MediaPlayer 21 | { 22 | NoRemove UIPlugins 23 | { 24 | ForceRemove {E7C0F450-9B76-4481-B3DF-B3447B383762} 25 | { 26 | val FriendlyName = s 'res://wmp_scrobbler.dll/RT_STRING/#102' 27 | val Description = s 'res://wmp_scrobbler.dll/RT_STRING/#103' 28 | val Capabilities = d '3758096385' 29 | } 30 | } 31 | } 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/completion_notify.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | namespace { 4 | class main_thread_callback_myimpl : public main_thread_callback { 5 | public: 6 | void callback_run() { 7 | m_notify->on_completion(m_code); 8 | } 9 | 10 | main_thread_callback_myimpl(completion_notify_ptr p_notify,unsigned p_code) : m_notify(p_notify), m_code(p_code) {} 11 | private: 12 | completion_notify_ptr m_notify; 13 | unsigned m_code; 14 | }; 15 | } 16 | 17 | void completion_notify::g_signal_completion_async(completion_notify_ptr p_notify,unsigned p_code) { 18 | if (p_notify.is_valid()) { 19 | static_api_ptr_t()->add_callback(new service_impl_t(p_notify,p_code)); 20 | } 21 | } 22 | 23 | void completion_notify::on_completion_async(unsigned p_code) { 24 | static_api_ptr_t()->add_callback(new service_impl_t(this,p_code)); 25 | } -------------------------------------------------------------------------------- /plugins/winamp/Gen_AudioScrobbler.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 11.00 2 | # Visual Studio 2010 3 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Gen_AudioScrobbler", "Gen_AudioScrobbler.vcxproj", "{07D89C03-8770-45C7-A766-A8C4F3656BAF}" 4 | EndProject 5 | Global 6 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 7 | Debug|Win32 = Debug|Win32 8 | Release|Win32 = Release|Win32 9 | EndGlobalSection 10 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 11 | {07D89C03-8770-45C7-A766-A8C4F3656BAF}.Debug|Win32.ActiveCfg = Debug|Win32 12 | {07D89C03-8770-45C7-A766-A8C4F3656BAF}.Debug|Win32.Build.0 = Debug|Win32 13 | {07D89C03-8770-45C7-A766-A8C4F3656BAF}.Release|Win32.ActiveCfg = Release|Win32 14 | {07D89C03-8770-45C7-A766-A8C4F3656BAF}.Release|Win32.Build.0 = Release|Win32 15 | EndGlobalSection 16 | GlobalSection(SolutionProperties) = preSolution 17 | HideSolutionNode = FALSE 18 | EndGlobalSection 19 | EndGlobal 20 | -------------------------------------------------------------------------------- /common/precompiled.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2005-2009 Last.fm Ltd. 3 | - Primarily authored by Max Howell, Jono Cole and Doug Mansell 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | #include 21 | #include 22 | #include 23 | #include 24 | -------------------------------------------------------------------------------- /plugins/wmp/wmp_scrobbler.7.10.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 8.00 2 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wmp_scrobbler", "wmp_scrobbler.vcproj", "{CF8AD3FB-2EAF-4A9D-8619-F6701B9A9BDE}" 3 | ProjectSection(ProjectDependencies) = postProject 4 | EndProjectSection 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfiguration) = preSolution 8 | Debug = Debug 9 | Release = Release 10 | EndGlobalSection 11 | GlobalSection(ProjectConfiguration) = postSolution 12 | {CF8AD3FB-2EAF-4A9D-8619-F6701B9A9BDE}.Debug.ActiveCfg = Debug|Win32 13 | {CF8AD3FB-2EAF-4A9D-8619-F6701B9A9BDE}.Debug.Build.0 = Debug|Win32 14 | {CF8AD3FB-2EAF-4A9D-8619-F6701B9A9BDE}.Release.ActiveCfg = Release|Win32 15 | {CF8AD3FB-2EAF-4A9D-8619-F6701B9A9BDE}.Release.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(ExtensibilityGlobals) = postSolution 18 | EndGlobalSection 19 | GlobalSection(ExtensibilityAddIns) = postSolution 20 | EndGlobalSection 21 | EndGlobal 22 | -------------------------------------------------------------------------------- /app/client/Dialogs/LicensesDialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | LicensesDialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 480 10 | 503 11 | 12 | 13 | 14 | Licenses 15 | 16 | 17 | 18 | 0 19 | 20 | 21 | 0 22 | 23 | 24 | 25 | 26 | QFrame::NoFrame 27 | 28 | 29 | true 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /plugins/iTunes/_iTunes.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | AudioScrobbler 9 | CFBundleGetInfoString 10 | The official Last.fm iTunes AudioScrobbler plugin 11 | CFBundleIdentifier 12 | fm.last.iTunes Scrobbler 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | AudioScrobbler 17 | CFBundleDisplayName 18 | Last.fm iTunes AudioScrobbler 19 | CFBundlePackageType 20 | hvpl 21 | CFBundleSignature 22 | hook 23 | CFBundleVersion 24 | 6.0.5.4 25 | CFBundleShortVersionString 26 | 6.0.5 27 | 28 | 29 | -------------------------------------------------------------------------------- /plugins/foobar09/ChangeLog.txt: -------------------------------------------------------------------------------- 1 | 20/8/12 2.3.1.3 2 | ------------------------------------------------------------------------------- 3 | * Now sends album artist as parameter d in scrob sub protocol. 4 | 5 | 6 | 13/5/08 2.3.1.2 7 | ------------------------------------------------------------------------------- 8 | * Updates broken Updater.exe in client if installed. 9 | 10 | 11 | 16/1/08 2.3.1.1 12 | ------------------------------------------------------------------------------- 13 | * Fix installer package to actually contain 2.3.1 and not 2.2! 14 | 15 | 16 | 9/1/08 2.3.1.0 17 | ------------------------------------------------------------------------------- 18 | * Make Scrobsubmitter global instead of heap-allocated to see if removing the 19 | delete helps fixing crashes. 20 | * Only print to console on errors. 21 | * Only send Stop when playback stops. 22 | 23 | 24 | 31/7/07 2.3.0.0 25 | ------------------------------------------------------------------------------- 26 | * Recompiled with new ScrobSub for Vista compatibility. 27 | 28 | -------------------------------------------------------------------------------- /common/qt/override/README: -------------------------------------------------------------------------------- 1 | Brief 2 | ===== 3 | Force this directory first in the -I g++ directives to use these overrides. 4 | 5 | With QMake: CXX = $$CXX -IlibMoose/QtOverrides 6 | 7 | There is danger with this system. But it beats the system where developers 8 | could accidentally use the Qt version of a class or function and for some 9 | reason it is absolutely essential our override is used. 10 | 11 | NOTE, the cpp files are named without the Q as this seems to break qmake, heh :) 12 | 13 | NOTE, new classes should be as minimal as possible, even Qt will use your versions of the classes, but only if they are used in inline functions in headers, so you should be mostly safe. Still be careful. If you change more than a tiny amount of the class do '#error include "blah.h" instead' and write a separate class. 14 | 15 | NOTE Beware overriding non virtual functions if the base class may use that function. 16 | 17 | Implementations 18 | =============== 19 | QSystemTrayIcon 20 | --------------- 21 | For sendMessage() on mac, to show a notification when Growl is not installed. 22 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/playable_location.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | int playable_location::g_compare(const playable_location & p_item1,const playable_location & p_item2) { 4 | int ret = metadb::path_compare(p_item1.get_path(),p_item2.get_path()); 5 | if (ret != 0) return 0; 6 | return pfc::compare_t(p_item1.get_subsong(),p_item2.get_subsong()); 7 | } 8 | 9 | pfc::string_base & operator<<(pfc::string_base & p_fmt,const playable_location & p_location) 10 | { 11 | p_fmt << "\"" << file_path_display(p_location.get_path()) << "\""; 12 | t_uint32 index = p_location.get_subsong_index(); 13 | if (index != 0) p_fmt << " / index: " << p_location.get_subsong_index(); 14 | return p_fmt; 15 | } 16 | 17 | 18 | bool playable_location::operator==(const playable_location & p_other) const { 19 | return metadb::path_compare(get_path(),p_other.get_path()) == 0 && get_subsong() == p_other.get_subsong(); 20 | } 21 | bool playable_location::operator!=(const playable_location & p_other) const { 22 | return !(*this == p_other); 23 | } 24 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/cfg_guidlist.h: -------------------------------------------------------------------------------- 1 | class cfg_guidlist : public cfg_var, public pfc::list_t 2 | { 3 | public: 4 | void get_data_raw(stream_writer * p_stream,abort_callback & p_abort) { 5 | t_uint32 n, m = pfc::downcast_guarded(get_count()); 6 | p_stream->write_lendian_t(m,p_abort); 7 | for(n=0;nwrite_lendian_t(get_item(n),p_abort); 8 | } 9 | void set_data_raw(stream_reader * p_stream,t_size p_sizehint,abort_callback & p_abort) { 10 | t_uint32 n,count; 11 | p_stream->read_lendian_t(count,p_abort); 12 | m_buffer.set_size(count); 13 | for(n=0;nread_lendian_t(m_buffer[n],p_abort); 16 | } catch(...) {m_buffer.set_size(0); throw;} 17 | } 18 | } 19 | 20 | void sort() {sort_t(pfc::guid_compare);} 21 | 22 | bool have_item_bsearch(const GUID & p_item) { 23 | t_size dummy; 24 | return bsearch_t(pfc::guid_compare,p_item,dummy); 25 | } 26 | 27 | public: 28 | cfg_guidlist(const GUID & p_guid) : cfg_var(p_guid) {} 29 | }; 30 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/mainmenu.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | bool mainmenu_commands::g_execute(const GUID & p_guid,service_ptr_t p_callback) { 4 | service_enum_t e; 5 | service_ptr_t ptr; 6 | while(e.next(ptr)) { 7 | const t_uint32 count = ptr->get_command_count(); 8 | for(t_uint32 n=0;nget_command(n) == p_guid) { 10 | ptr->execute(n,p_callback); 11 | return true; 12 | } 13 | } 14 | } 15 | return false; 16 | } 17 | 18 | bool mainmenu_commands::g_find_by_name(const char * p_name,GUID & p_guid) { 19 | service_enum_t e; 20 | service_ptr_t ptr; 21 | pfc::string8_fastalloc temp; 22 | while(e.next(ptr)) { 23 | const t_uint32 count = ptr->get_command_count(); 24 | for(t_uint32 n=0;nget_name(n,temp); 26 | if (stricmp_utf8(temp,p_name) == 0) { 27 | p_guid = ptr->get_command(n); 28 | return true; 29 | } 30 | } 31 | } 32 | return false; 33 | 34 | } -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/modeless_dialog.h: -------------------------------------------------------------------------------- 1 | #ifndef _MODELESS_DIALOG_H_ 2 | #define _MODELESS_DIALOG_H_ 3 | 4 | 5 | //! Service for plugging your nonmodal dialog windows into main app loop to receive IsDialogMessage()-translated messages.\n 6 | //! Note that all methods are valid from main app thread only.\n 7 | //! Usage: static_api_ptr_t or modeless_dialog_manager::g_add / modeless_dialog_manager::g_remove. 8 | class NOVTABLE modeless_dialog_manager : public service_base 9 | { 10 | public: 11 | //! Adds specified window to global list of windows to receive IsDialogMessage(). 12 | virtual void add(HWND p_wnd) = 0; 13 | //! Removes specified window from global list of windows to receive IsDialogMessage(). 14 | virtual void remove(HWND p_wnd) = 0; 15 | 16 | //! Static helper; see add(). 17 | static void g_add(HWND p_wnd); 18 | //! Static helper; see remove(). 19 | static void g_remove(HWND p_wnd); 20 | 21 | FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(modeless_dialog_manager); 22 | }; 23 | 24 | #endif //_MODELESS_DIALOG_H_ -------------------------------------------------------------------------------- /app/twiddly/Utils.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2005-2012 Last.fm Ltd. 3 | - Primarily authored by Michael Coffey 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | #ifndef UTILS_H 22 | #define UTILS_H 23 | 24 | #include 25 | 26 | class Utils 27 | { 28 | public: 29 | static void startAudioscrobbler( QStringList& vargs ); 30 | }; 31 | 32 | #endif // UTILS_H 33 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/cuesheet_index_list.h: -------------------------------------------------------------------------------- 1 | struct t_cuesheet_index_list 2 | { 3 | enum {count = 100}; 4 | inline t_cuesheet_index_list() {reset();} 5 | inline t_cuesheet_index_list(const t_cuesheet_index_list & p_source) {*this=p_source;} 6 | void reset() {for(unsigned n=0;n. 19 | */ 20 | #include 21 | 22 | 23 | namespace Qt 24 | { 25 | static inline void msleep( uint ms ) 26 | { 27 | struct Thread : QThread { using QThread::msleep; }; 28 | Thread::msleep( ms ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/ui.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | bool ui_drop_item_callback::g_on_drop(interface IDataObject * pDataObject) 4 | { 5 | service_enum_t e; 6 | service_ptr_t ptr; 7 | if (e.first(ptr)) do { 8 | if (ptr->on_drop(pDataObject)) return true; 9 | } while(e.next(ptr)); 10 | return false; 11 | } 12 | 13 | bool ui_drop_item_callback::g_is_accepted_type(interface IDataObject * pDataObject, DWORD * p_effect) 14 | { 15 | service_enum_t e; 16 | service_ptr_t ptr; 17 | if (e.first(ptr)) do { 18 | if (ptr->is_accepted_type(pDataObject,p_effect)) return true; 19 | } while(e.next(ptr)); 20 | return false; 21 | } 22 | 23 | bool user_interface::g_find(service_ptr_t & p_out,const GUID & p_guid) 24 | { 25 | service_enum_t e; 26 | service_ptr_t ptr; 27 | if (e.first(ptr)) do { 28 | if (ptr->get_guid() == p_guid) 29 | { 30 | p_out = ptr; 31 | return true; 32 | } 33 | } while(e.next(ptr)); 34 | return false; 35 | } 36 | -------------------------------------------------------------------------------- /common/c++/string.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2005-2009 Last.fm Ltd. 3 | - Primarily authored by Max Howell, Jono Cole and Doug Mansell 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | #ifdef WIN32 21 | #define COMMON_STD_STRING std::wstring 22 | #define COMMON_CHAR wchar_t 23 | #else 24 | #define COMMON_STD_STRING std::string 25 | #define COMMON_CHAR char 26 | #endif 27 | 28 | #include 29 | -------------------------------------------------------------------------------- /lib/unicorn/dialogs/CloseAppsDialog_mac.mm: -------------------------------------------------------------------------------- 1 | #include "CloseAppsDialog.h" 2 | 3 | QString qt_mac_NSStringToQString(const NSString *nsstr) 4 | { 5 | NSRange range; 6 | range.location = 0; 7 | range.length = [nsstr length]; 8 | 9 | unichar *chars = new unichar[range.length]; 10 | [nsstr getCharacters:chars range:range]; 11 | QString result = QString::fromUtf16(chars, range.length); 12 | delete[] chars; 13 | return result; 14 | } 15 | 16 | QStringList 17 | unicorn::CloseAppsDialog::runningApps() 18 | { 19 | // we only ever test for iTunes on Mac 20 | 21 | QStringList apps; 22 | 23 | // make sure iTunes isn't running 24 | NSArray* runningApps = [[NSWorkspace sharedWorkspace] runningApplications]; 25 | 26 | for ( unsigned int i = 0 ; i < [runningApps count] ; ++i ) 27 | { 28 | if ( [[[runningApps objectAtIndex:i] bundleIdentifier] isEqualToString:@"com.apple.iTunes"] ) 29 | { 30 | NSString* appName = [[runningApps objectAtIndex:i] localizedName]; 31 | apps << qt_mac_NSStringToQString( appName ); 32 | break; 33 | } 34 | } 35 | 36 | return apps; 37 | } 38 | -------------------------------------------------------------------------------- /app/client/Widgets/TitleBar.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2010 Last.fm Ltd. 3 | - Primarily authored by Jono Cole and Micahel Coffey 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | #include 22 | 23 | class QLabel; 24 | 25 | class TitleBar : public QFrame 26 | { 27 | Q_OBJECT 28 | public: 29 | TitleBar( QWidget* parent = 0 ); 30 | 31 | signals: 32 | void closeClicked(); 33 | }; 34 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/pfc/bsearch_inline.h: -------------------------------------------------------------------------------- 1 | namespace pfc { 2 | 3 | template 4 | inline bool bsearch_inline_t(t_size p_count, const t_callback & p_callback,t_size & p_result) 5 | { 6 | t_size max = p_count; 7 | t_size min = 0; 8 | t_size ptr; 9 | while(min> 1); 12 | int result = p_callback.test(ptr); 13 | if (result<0) min = ptr + 1; 14 | else if (result>0) max = ptr; 15 | else 16 | { 17 | p_result = ptr; 18 | return true; 19 | } 20 | } 21 | p_result = min; 22 | return false; 23 | } 24 | 25 | template 26 | inline bool bsearch_simple_inline_t(const t_buffer & p_buffer,t_size p_count,t_value const & p_value,t_size & p_result) 27 | { 28 | t_size max = p_count; 29 | t_size min = 0; 30 | t_size ptr; 31 | while(min> 1); 34 | if (p_value > p_buffer[ptr]) min = ptr + 1; 35 | else if (p_value < p_buffer[ptr]) max = ptr; 36 | else 37 | { 38 | p_result = ptr; 39 | return true; 40 | } 41 | } 42 | p_result = min; 43 | return false; 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /app/client/PrefPane/FmLastPrefPaneQtView.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2010 Last.fm Ltd. 3 | - Primarily authored by Jono Cole 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | #import 22 | 23 | @interface FmLastPrefPaneQtView : NSView { 24 | class FmLastPrefPanePrefWidget* pw; 25 | } 26 | 27 | - (id) initWithFrame:(NSRect)frameRect; 28 | - (void) drawRect:(NSRect)rect; 29 | - (FmLastPrefPanePrefWidget*) prefWidget; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /plugins/iTunes/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by iScrobbleWin.rc 4 | // 5 | #define IDHELP2 10 6 | #define IDCLEAR 10 7 | #define IDD_DIALOG1 101 8 | #define IDC_LIST1 1002 9 | #define IDC_LIST 1003 10 | #define IDC_USERNAME 1004 11 | #define IDC_PASSWORD 1005 12 | #define IDC_PROXY_CHECK 1007 13 | #define IDC_AUTH_CHECK 1008 14 | #define IDC_SERVER 1010 15 | #define IDC_PUSERNAME 1011 16 | #define IDC_PPASS 1013 17 | #define IDC_CHECK1 1015 18 | #define IDC_ENABLED 1016 19 | 20 | // Next default values for new objects 21 | // 22 | #ifdef APSTUDIO_INVOKED 23 | #ifndef APSTUDIO_READONLY_SYMBOLS 24 | #define _APS_NEXT_RESOURCE_VALUE 110 25 | #define _APS_NEXT_COMMAND_VALUE 40001 26 | #define _APS_NEXT_CONTROL_VALUE 1017 27 | #define _APS_NEXT_SYMED_VALUE 101 28 | #endif 29 | #endif 30 | -------------------------------------------------------------------------------- /app/client/PrefPane/FmLastPrefPane.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2010 Last.fm Ltd. 3 | - Primarily authored by Jono Cole 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | #import 22 | #import 23 | #import "FmLastPrefPaneQtView.h" 24 | 25 | @interface FmLastPrefPane : NSPreferencePane { 26 | IBOutlet FmLastPrefPaneQtView* qtView; 27 | } 28 | 29 | - (void)mainViewDidLoad; 30 | - (void)didSelect; 31 | @end 32 | -------------------------------------------------------------------------------- /lib/listener/PlayerCommand.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2005-2009 Last.fm Ltd. 3 | - Primarily authored by Max Howell, Jono Cole and Doug Mansell 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | #ifndef PLAYER_COMMAND_H 21 | #define PLAYER_COMMAND_H 22 | 23 | enum PlayerCommand 24 | { 25 | CommandInit, 26 | CommandStart, 27 | CommandPause, 28 | CommandResume, 29 | CommandStop, 30 | CommandTerm, 31 | 32 | CommandBootstrap 33 | }; 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /lib/unicorn/dialogs/AboutDialog.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2005-2009 Last.fm Ltd. 3 | - Primarily authored by Max Howell, Jono Cole and Doug Mansell 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | #include "lib/DllExportMacro.h" 21 | #include 22 | 23 | namespace Ui { class AboutDialog; } 24 | 25 | class UNICORN_DLLEXPORT AboutDialog : public QDialog 26 | { 27 | public: 28 | AboutDialog( QWidget* parent ); 29 | 30 | private: 31 | Ui::AboutDialog* ui; 32 | }; 33 | -------------------------------------------------------------------------------- /app/twiddly/Twiddly.rc: -------------------------------------------------------------------------------- 1 | IDI_ICON1 ICON DISCARDABLE "..\\..\\admin\\dist\\win\\installer.ico" 2 | 3 | // The first entry ('1') on the below line is normally written as the define 4 | // VS_VERSION_INFO, but we can't always be sure that value has been included 5 | // in a Qt build so we just hardcode 1 in. 6 | 1 VERSIONINFO 7 | FILEVERSION 0,0,0,0 8 | PRODUCTVERSION 0,0,0,0 9 | FILEFLAGSMASK 0x3fL 10 | #ifdef _DEBUG 11 | FILEFLAGS 0x1L 12 | #else 13 | FILEFLAGS 0x0L 14 | #endif 15 | FILEOS 0x4L 16 | FILETYPE 0x1L 17 | FILESUBTYPE 0x0L 18 | BEGIN 19 | BLOCK "StringFileInfo" 20 | BEGIN 21 | BLOCK "040904b0" 22 | BEGIN 23 | VALUE "Comments", "http://www.last.fm" 24 | VALUE "CompanyName", "Last.fm" 25 | VALUE "FileDescription", "Last.fm iPodScrobbler" 26 | VALUE "FileVersion", "0.0.0.0\0" 27 | VALUE "InternalName", "Last.fm iPodScrobbler" 28 | VALUE "LegalCopyright", "Copyright (C) 2008" 29 | VALUE "OriginalFilename", "iPodScrobbler.exe" 30 | VALUE "ProductName", "Last.fm iPodScrobbler" 31 | VALUE "ProductVersion", "0.0.0.0\0" 32 | END 33 | END 34 | END 35 | -------------------------------------------------------------------------------- /plugins/wmp/StdAfx.h: -------------------------------------------------------------------------------- 1 | // stdafx.h : include file for standard system include files, 2 | // or project specific include files that are used frequently, 3 | // but are changed infrequently 4 | 5 | #if !defined(AFX_STDAFX_H__970E5960_5209_4AE7_8DD2_ACD4C1165941__INCLUDED_) 6 | #define AFX_STDAFX_H__970E5960_5209_4AE7_8DD2_ACD4C1165941__INCLUDED_ 7 | 8 | #if _MSC_VER > 1000 9 | #pragma once 10 | #endif // _MSC_VER > 1000 11 | 12 | #define STRICT 13 | #ifndef _WIN32_WINNT 14 | #define _WIN32_WINNT 0x0500 15 | #endif 16 | #define _ATL_APARTMENT_THREADED 17 | 18 | #include 19 | //You may derive a class from CComModule and use it if you want to override 20 | //something, but do not change the name of _Module 21 | extern CComModule _Module; 22 | #include 23 | #include // Added by ClassView 24 | #include 25 | #include 26 | #pragma warning( disable : 4192 ) 27 | 28 | 29 | #include "stdstring.h" 30 | #include "dbg.h" 31 | #include "ComDATE.h" 32 | 33 | //{{AFX_INSERT_LOCATION}} 34 | // Microsoft Visual C++ will insert additional declarations immediately before the previous line. 35 | 36 | #endif // !defined(AFX_STDAFX_H__970E5960_5209_4AE7_8DD2_ACD4C1165941__INCLUDED) -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/pfc/guid.h: -------------------------------------------------------------------------------- 1 | #ifndef _PFC_GUID_H_ 2 | #define _PFC_GUID_H_ 3 | 4 | namespace pfc { 5 | 6 | class GUID_from_text : public GUID 7 | { 8 | unsigned read_hex(char c); 9 | unsigned read_byte(const char * ptr); 10 | unsigned read_word(const char * ptr); 11 | unsigned read_dword(const char * ptr); 12 | void read_bytes(unsigned char * out,unsigned num,const char * ptr); 13 | 14 | public: 15 | GUID_from_text(const char * text); 16 | }; 17 | 18 | class print_guid 19 | { 20 | public: 21 | print_guid(const GUID & p_guid); 22 | inline operator const char * () const {return m_data;} 23 | inline const char * get_ptr() {return m_data;} 24 | private: 25 | char m_data[64]; 26 | }; 27 | 28 | inline int guid_compare(const GUID & g1,const GUID & g2) {return memcmp(&g1,&g2,sizeof(GUID));} 29 | 30 | inline bool guid_equal(const GUID & g1,const GUID & g2) {return (g1 == g2) ? true : false;} 31 | template<> inline int compare_t(const GUID & p_item1,const GUID & p_item2) {return guid_compare(p_item1,p_item2);} 32 | 33 | extern const GUID guid_null; 34 | 35 | PFC_DLL_EXPORT void print_hex_raw(const void * buffer,unsigned bytes,char * p_out); 36 | } 37 | 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /app/boffin/json_spirit/json_spirit_writer.h: -------------------------------------------------------------------------------- 1 | #ifndef JASON_SPIRIT_WRITER 2 | #define JASON_SPIRIT_WRITER 3 | 4 | /* Copyright (c) 2007-2009 John W Wilkinson 5 | 6 | This source code can be used for any purpose as long as 7 | this comment is retained. */ 8 | 9 | // json spirit version 3.00 10 | 11 | #if defined(_MSC_VER) && (_MSC_VER >= 1020) 12 | # pragma once 13 | #endif 14 | 15 | #include "json_spirit_value.h" 16 | #include 17 | 18 | namespace json_spirit 19 | { 20 | // functions to convert JSON Values to text, 21 | // the "formatted" versions add whitespace to format the output nicely 22 | 23 | void write ( const Value& value, std::ostream& os ); 24 | void write_formatted( const Value& value, std::ostream& os ); 25 | std::string write ( const Value& value ); 26 | std::string write_formatted( const Value& value ); 27 | 28 | #ifndef BOOST_NO_STD_WSTRING 29 | std::wstring write ( const wValue& value ); 30 | std::wstring write_formatted( const wValue& value ); 31 | void write ( const wValue& value, std::wostream& os ); 32 | void write_formatted( const wValue& value, std::wostream& os ); 33 | #endif 34 | } 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /app/client/Widgets/ContextLabel.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2011 Last.fm Ltd. 3 | - Primarily authored by Michael Coffey 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | #ifndef CONTEXTLABEL_H 22 | #define CONTEXTLABEL_H 23 | 24 | #include "lib/unicorn/widgets/Label.h" 25 | 26 | class ContextLabel : public unicorn::Label 27 | { 28 | Q_OBJECT 29 | public: 30 | explicit ContextLabel( QWidget *parent = 0); 31 | 32 | private: 33 | void paintEvent( QPaintEvent* event ); 34 | 35 | }; 36 | 37 | #endif // CONTEXTLABEL_H 38 | -------------------------------------------------------------------------------- /lib/unicorn/DesktopServices.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2011 Last.fm Ltd. 3 | - Primarily authored by Michael Coffey 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | #ifndef DESKTOPSERVICES_H 22 | #define DESKTOPSERVICES_H 23 | 24 | #include 25 | 26 | #include "lib/DllExportMacro.h" 27 | 28 | namespace unicorn 29 | { 30 | 31 | class UNICORN_DLLEXPORT DesktopServices 32 | { 33 | public: 34 | DesktopServices(); 35 | 36 | static void openUrl( QUrl url ); 37 | }; 38 | 39 | } 40 | 41 | #endif // DESKTOPSERVICES_H 42 | -------------------------------------------------------------------------------- /app/client/audioscrobbler.rc: -------------------------------------------------------------------------------- 1 | IDI_ICON1 ICON DISCARDABLE "audioscrobbler.ico" 2 | 3 | #include 4 | 5 | // Get updates from this appcast feed: 6 | FeedURL APPCAST {"https://cdn.last.fm/client/Win/updates.xml"} 7 | 8 | // Version information; this, too, is used by WinSparkle 9 | 1 VERSIONINFO 10 | FILEVERSION 2,1,36,0 11 | PRODUCTVERSION 2,1,36,0 12 | FILEFLAGSMASK VS_FFI_FILEFLAGSMASK 13 | FILEFLAGS 0 14 | FILEOS VOS_NT_WINDOWS32 15 | FILETYPE VFT_APP 16 | FILESUBTYPE VFT2_UNKNOWN 17 | BEGIN 18 | BLOCK "StringFileInfo" 19 | BEGIN 20 | BLOCK "040904B0" // US English, Unicode 21 | BEGIN 22 | VALUE "Comments", "Last.fm\0" 23 | VALUE "CompanyName", "Last.fm\0" 24 | VALUE "FileDescription", "Last.fm\0" 25 | VALUE "FileVersion", "2.1.36\0" 26 | VALUE "InternalName", "Last.fm\0" 27 | VALUE "OriginalFilename", "Last.fm.exe\0" 28 | VALUE "LegalCopyright", "Public Domain\0" 29 | VALUE "ProductName", "Last.fm\0" 30 | VALUE "ProductVersion", "2.1.36\0" 31 | END 32 | END 33 | 34 | BLOCK "VarFileInfo" 35 | BEGIN 36 | VALUE "Translation", 0x0409, 0x04B0 37 | END 38 | END -------------------------------------------------------------------------------- /app/twiddly/TwiddlyApplication.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2005-2009 Last.fm Ltd. 3 | - Primarily authored by Max Howell, Jono Cole, Erik Jaelevik, 4 | Christian Muehlhaeuser 5 | 6 | This file is part of the Last.fm Desktop Application Suite. 7 | 8 | lastfm-desktop is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | lastfm-desktop is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with lastfm-desktop. If not, see . 20 | */ 21 | 22 | #include "lib/unicorn/UnicornCoreApplication.h" 23 | 24 | class TwiddlyApplication : public unicorn::CoreApplication 25 | { 26 | Q_OBJECT 27 | public: 28 | TwiddlyApplication(int& argc, char** argv); 29 | 30 | void sendBusMessage( const QByteArray& msg ); 31 | }; 32 | -------------------------------------------------------------------------------- /admin/dist/mac/dsa_pub.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIDPDCCAi4GByqGSM44BAEwggIhAoIBAQDagjvSe6+JNNvHjB6aWriA6YXnVdqS 3 | s//YkmhwiCwkHGk0set/4P4IZbl2xkpd/hyo9qQnnhjou0llHOaljU8Yp6g61lt9 4 | n/BhlhPt7tvBkTtsugJ4YIRkaakzscLUIoeHneF8D3B3Ej2xoZ734Rq/LDc9jZgd 5 | UNjS+sZec69waEp2ikcmkvfAbZ0yPHHhl0xftaA0A9OqaBBDUyxiBOqWfLQexj9L 6 | DHlx38kGy3lsuqY9DQQ0BbIv24QKDWDFf9GD/TEXgVOBAiIC4cGVUh2JgQVAZ0nk 7 | 86pwavc1uIPynTyje902MI0ojFPLuhuod7QAO9NNBFD3024n+uv7mPi5AhUAqo2v 8 | msdlE3NsONzW4uBVGujvNNUCggEBANlg+4w6ikFI8agyolAl9YepP0dcwk33MSXY 9 | 2Plwqp/41yIpFzb9qp0QKjfmtwy+cAdWcVcN8xKM9MghVgTukttdV9Rz8fwnfHAa 10 | QMoYVhHBNDaipR0RRpx+NPnMkKPrYiH1+J4C8/MYAsDEB0xa7Vv/EasA0yWD3mhK 11 | ydm9O2Njj1J2ZEQ4Nz+9ba7wDLpZVM/P9fitZalVyWxFVPxhYs3ifUSCgE+fYGR2 12 | VBiwBZiQ8uKf+yJpmYQkUA4/h54S2hiCQHrSS9A9L0Ekdj+Jy07lPGv6IAlhzcfQ 13 | OyiNzmbEgsR8LLo6H54/JxTwElt/TsdpWP8n83l4KFVN00eAZSgDggEGAAKCAQEA 14 | us92grNvv1zRXmBpsEPPhy5hGhcslBy5ZWygUytgwupjq8MkpkD3yez649qVTUAt 15 | E4SJUW+6EKbcLZSBRBdMWZNwudrHCly4n6OMOh4ZqHDA2YQFqMFnLaOHMBxHDU7b 16 | YiBPYxjHlm7yBXTnXIVqOnts3yRPRfHUCvNdiMvNzLQaDtP343jew2W4R8arwFpC 17 | U01NbHWoOiQ6GggTJEfGIxTHhjkd5Xd0hB97KccPF4YvOTGnXpNiHN+hGteF2CrZ 18 | pZAyYIqshyeijR9ipbOpYxdrYOGKfA5nUSDjeGpG2Yqg6R6eJrrBw49JsJP6VqhD 19 | VM0wmv7fyfPZHD/g9CAx0w== 20 | -----END PUBLIC KEY----- 21 | -------------------------------------------------------------------------------- /lib/listener/win/NamedPipeServer.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2012 Last.fm Ltd. 3 | - Primarily authored by Michael Coffey 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | #ifndef NAMEDPIPESERVER_H 22 | #define NAMEDPIPESERVER_H 23 | 24 | #include 25 | 26 | class NamedPipeServer : public QThread 27 | { 28 | Q_OBJECT 29 | public: 30 | explicit NamedPipeServer( QObject* parent = 0 ); 31 | 32 | private: 33 | void run(); 34 | 35 | signals: 36 | QString lineReady( const QString& line ); 37 | }; 38 | 39 | #endif // NAMEDPIPESERVER_H 40 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/audio_postprocessor.h: -------------------------------------------------------------------------------- 1 | #ifndef _CVT_FLOAT_TO_LINEAR_H_ 2 | #define _CVT_FLOAT_TO_LINEAR_H_ 3 | 4 | //! This class handles conversion of audio data (audio_chunk) to various linear PCM types, with optional dithering. 5 | 6 | class NOVTABLE audio_postprocessor : public service_base 7 | { 8 | public: 9 | //! Processes one chunk of audio data. 10 | //! @param p_chunk Chunk of audio data to process. 11 | //! @param p_output Receives output linear signed PCM data. 12 | //! @param p_out_bps Desired bit depth of output. 13 | //! @param p_out_bps_physical Desired physical word width of output. Must be either 8, 16, 24 or 32, greater or equal to p_out_bps. This is typically set to same value as p_out_bps. 14 | //! @param p_dither Indicates whether dithering should be used. Note that dithering is CPU-heavy. 15 | //! @param p_prescale Value to scale all audio samples by when converting. Set to 1.0 to do nothing. 16 | 17 | virtual void run(const audio_chunk & p_chunk, 18 | mem_block_container & p_output, 19 | t_uint32 p_out_bps, 20 | t_uint32 p_out_bps_physical, 21 | bool p_dither, 22 | audio_sample p_prescale 23 | ) = 0; 24 | 25 | 26 | 27 | FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(audio_postprocessor); 28 | }; 29 | 30 | #endif -------------------------------------------------------------------------------- /admin/tests/log_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # author 3 | # meant to be run from the /tests dir 4 | 5 | RUNDIR=`pwd` 6 | mkdir $RUNDIR/output 7 | 8 | TOTERRORS=0 9 | 10 | pushd ../_bin > /dev/null 11 | 12 | for i in $* 13 | do 14 | BINDIR=`dirname $i` 15 | LEN=${#BINDIR} 16 | let LEN=$LEN+1 17 | OUTPUTDIR=${i:$LEN} 18 | OUTPUTFILE=$RUNDIR/output/$OUTPUTDIR.output 19 | 20 | $i -xml > "$OUTPUTFILE" 21 | 22 | # check for program errors 23 | RETURNCODE=$? 24 | if [[ RETURNCODE -gt 0 ]]; 25 | then 26 | echo "Bailing out - bad return code: $RETURNCODE" 27 | echo "$i" 28 | exit 29 | fi 30 | 31 | # count number of test failures 32 | NUMERRORS=`grep -c \"fail\" $OUTPUTFILE` 33 | XPASS=`grep -c \"xpass\" $OUTPUTFILE` 34 | let NUMERRORS=$NUMERRORS+$XPASS 35 | let TOTERRORS=TOTERRORS+NUMERRORS 36 | 37 | if [[ NUMERRORS -gt 0 ]]; 38 | then 39 | echo "$NUMERRORS errors where encountered in $i" 40 | fi 41 | 42 | # transform outputted xml into junit-xml 43 | xsltproc $RUNDIR/QtTest_to_JUnit.xslt $OUTPUTFILE > "$OUTPUTFILE.junit.xml" 44 | done 45 | 46 | popd > /dev/null 47 | 48 | 49 | if [[ TOTERRORS -gt 0 ]]; 50 | then 51 | echo "Total: $TOTERRORS errors" 52 | fi 53 | -------------------------------------------------------------------------------- /app/client/Widgets/ProfileArtistWidget.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2011 Last.fm Ltd. 3 | - Primarily authored by Michael Coffey 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | #ifndef ProfileArtistWidget_H 22 | #define ProfileArtistWidget_H 23 | 24 | #include 25 | 26 | namespace lastfm { class XmlQuery; } 27 | 28 | class ProfileArtistWidget : public QFrame 29 | { 30 | Q_OBJECT 31 | public: 32 | explicit ProfileArtistWidget( const lastfm::XmlQuery& artist, int maxPlays, QWidget *parent = 0); 33 | 34 | }; 35 | 36 | #endif // ProfileArtistWidget_H 37 | -------------------------------------------------------------------------------- /app/client/Widgets/RefreshButton.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2011 Last.fm Ltd. 3 | - Primarily authored by Michael Coffey 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | #ifndef REFRESHBUTTON_H 22 | #define REFRESHBUTTON_H 23 | 24 | #include 25 | #include 26 | 27 | class RefreshButton : public QPushButton 28 | { 29 | Q_OBJECT 30 | public: 31 | explicit RefreshButton(QWidget *parent = 0); 32 | 33 | private: 34 | void paintEvent(QPaintEvent *); 35 | 36 | private: 37 | QPixmap m_pixmap; 38 | }; 39 | 40 | #endif // REFRESHBUTTON_H 41 | -------------------------------------------------------------------------------- /lib/unicorn/CrashReporter/CrashReporter.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2012 Last.fm Ltd. 3 | - Primarily authored by Michael Coffey 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | #ifndef CRASHREPORTER_H 22 | #define CRASHREPORTER_H 23 | 24 | #include 25 | 26 | #include "lib/DllExportMacro.h" 27 | 28 | namespace unicorn 29 | { 30 | 31 | class UNICORN_DLLEXPORT CrashReporter : public QObject 32 | { 33 | Q_OBJECT 34 | public: 35 | explicit CrashReporter(QObject *parent = 0); 36 | ~CrashReporter(); 37 | }; 38 | 39 | } 40 | 41 | #endif // CRASHREPORTER_H 42 | -------------------------------------------------------------------------------- /app/client/Dialogs/LicensesDialog.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2012 Last.fm Ltd. 3 | - Primarily authored by Michael Coffey 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | #ifndef LICENCEDIALOG_H 22 | #define LICENCEDIALOG_H 23 | 24 | #include 25 | 26 | namespace Ui { 27 | class LicensesDialog; 28 | } 29 | 30 | class LicensesDialog : public QDialog 31 | { 32 | Q_OBJECT 33 | 34 | public: 35 | explicit LicensesDialog(QWidget *parent = 0); 36 | ~LicensesDialog(); 37 | 38 | private: 39 | Ui::LicensesDialog *ui; 40 | }; 41 | 42 | #endif // LICENCEDIALOG_H 43 | -------------------------------------------------------------------------------- /lib/3rdparty/fetch.sh: -------------------------------------------------------------------------------- 1 | source ../../common/bash/utils.sh.inc 2 | 3 | function go 4 | { 5 | tar=`basename $1` 6 | dir=`basename $1 .tar.gz` 7 | 8 | shift 9 | 10 | header $dir 11 | 12 | test -f $tar || wget $1 13 | # test -d $dir || tar xzf $tar 14 | } 15 | 16 | function co 17 | { 18 | svn co $1 $2 19 | pushd $2 20 | ./configure 21 | make 22 | popd 23 | } 24 | 25 | 26 | ################################################################################ 27 | 28 | case `uname` 29 | CYGWIN_NT_5.1) 30 | which make || die "You need to install GNU make" 31 | which ld || die "You need to install cygwin binutils" 32 | which wget || die "You need to install wget" 33 | 34 | go http://surfnet.dl.sourceforge.net/sourceforge/mad/libmad-0.15.1b.tar.gz --disable-debug 35 | go http://www.fftw.org/fftw-3.1.3.tar.gz --enable-float --disable-debug 36 | go http://www.mega-nerd.com/SRC/libsamplerate-0.1.4.tar.gz --disable-debug 37 | go http://developer.kde.org/~wheeler/files/src/taglib-1.5.tar.gz --disable-debug 38 | ;; 39 | *) 40 | echo Please refer to the README file. 41 | ;; 42 | esac 43 | 44 | #co http://google-breakpad.googlecode.com/svn/trunk/ breakpad 45 | 46 | 47 | header Done! 48 | echo "Now do make install in each directory or something" 49 | echo -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/helpers.h: -------------------------------------------------------------------------------- 1 | #ifndef _FOOBAR2000_SDK_HELPERS_H_ 2 | #define _FOOBAR2000_SDK_HELPERS_H_ 3 | 4 | #include "input_helpers.h" 5 | #include "create_directory_helper.h" 6 | #include "dialog_resize_helper.h" 7 | #include "dropdown_helper.h" 8 | #include "window_placement_helper.h" 9 | #include "win32_dialog.h" 10 | #include "wildcard.h" 11 | #include "cuesheet_index_list.h" 12 | #include "cue_creator.h" 13 | #include "cue_parser.h" 14 | #include "search_filter.h" 15 | #include "text_file_loader.h" 16 | #include "file_list_helper.h" 17 | #include "preload_info_helper.h" 18 | #include "listview_helper.h" 19 | #include "stream_buffer_helper.h" 20 | #include "file_info_const_impl.h" 21 | #include "file_wrapper_simple.h" 22 | #include "dynamic_bitrate_helper.h" 23 | #include "cfg_guidlist.h" 24 | #include "cfg_structlist.h" 25 | #include "file_win32_wrapper.h" 26 | #include "file_move_helper.h" 27 | #include "file_cached.h" 28 | #include "seekabilizer.h" 29 | #include "string_filter.h" 30 | #include "bitreader_helper.h" 31 | #include "mp3_utils.h" 32 | #include "win32_misc.h" 33 | #include "metadb_io_hintlist.h" 34 | #include "format_title_group.h" 35 | #include "inplace_edit.h" 36 | #include "meta_table_builder.h" 37 | 38 | #endif //_FOOBAR2000_SDK_HELPERS_H_ -------------------------------------------------------------------------------- /app/twiddly/TwiddlyApplication.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2005-2009 Last.fm Ltd. 3 | - Primarily authored by Max Howell, Jono Cole, Erik Jaelevik, 4 | Christian Muehlhaeuser 5 | 6 | This file is part of the Last.fm Desktop Application Suite. 7 | 8 | lastfm-desktop is free software: you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation, either version 3 of the License, or 11 | (at your option) any later version. 12 | 13 | lastfm-desktop is distributed in the hope that it will be useful, 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 | GNU General Public License for more details. 17 | 18 | You should have received a copy of the GNU General Public License 19 | along with lastfm-desktop. If not, see . 20 | */ 21 | 22 | #include "TwiddlyApplication.h" 23 | 24 | TwiddlyApplication::TwiddlyApplication( int& argc, char** argv ) 25 | :unicorn::CoreApplication( "fm.last.Twiddly", argc, argv ) 26 | { 27 | } 28 | 29 | void 30 | TwiddlyApplication::sendBusMessage( const QByteArray& /*msg*/ ) 31 | { 32 | //m_bus.sendMessage( msg ); 33 | } 34 | 35 | -------------------------------------------------------------------------------- /lib/unicorn/widgets/GhostWidget.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2010-2011 Last.fm Ltd. 3 | - Primarily authored by Jono Cole and Michael Coffey 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | #ifndef GHOST_WIDGET_H 22 | #define GHOST_WIDGET_H 23 | 24 | #include 25 | #include "lib/DllExportMacro.h" 26 | 27 | class UNICORN_DLLEXPORT GhostWidget : public QWidget 28 | { 29 | public: 30 | GhostWidget(QWidget* parent = 0 ); 31 | void setOrigin( QWidget* origin ); 32 | 33 | protected: 34 | bool eventFilter( QObject* obj, QEvent* event ); 35 | }; 36 | 37 | #endif //GHOST_WIDGET_H 38 | 39 | -------------------------------------------------------------------------------- /app/client/Dialogs/BetaDialog.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2012 Last.fm Ltd. 3 | - Primarily authored by Michael Coffey 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | #ifndef BETADIALOG_H 22 | #define BETADIALOG_H 23 | 24 | #include 25 | 26 | namespace Ui { 27 | class BetaDialog; 28 | } 29 | 30 | class BetaDialog : public QDialog 31 | { 32 | Q_OBJECT 33 | 34 | public: 35 | explicit BetaDialog(QWidget *parent = 0); 36 | ~BetaDialog(); 37 | 38 | private slots: 39 | void createIssue(); 40 | 41 | private: 42 | Ui::BetaDialog *ui; 43 | }; 44 | 45 | #endif // BETADIALOG_H 46 | -------------------------------------------------------------------------------- /app/client/Services/AnalyticsService/PersistentCookieJar.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2005-2012 Last.fm Ltd. 3 | - Primarily authored by Frantz Joseph 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | #pragma once 21 | 22 | #include 23 | 24 | class PersistentCookieJar : public QNetworkCookieJar 25 | { 26 | Q_OBJECT 27 | public: 28 | PersistentCookieJar(QObject *parent); 29 | ~PersistentCookieJar(); 30 | 31 | void load(); 32 | 33 | private: 34 | bool setCookiesFromUrl(const QList &cookieList, const QUrl &url); 35 | 36 | public slots: 37 | void save(); 38 | }; 39 | -------------------------------------------------------------------------------- /lib/unicorn/qtwin.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | ** 3 | ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). 4 | ** 5 | ** Use, modification and distribution is allowed without limitation, 6 | ** warranty, liability or support of any kind. 7 | ** 8 | ****************************************************************************/ 9 | 10 | #ifndef QTWIN_H 11 | #define QTWIN_H 12 | #include 13 | #include 14 | #include 15 | /** 16 | * This is a helper class for using the Desktop Window Manager 17 | * functionality on Windows 7 and Windows Vista. On other platforms 18 | * these functions will simply not do anything. 19 | */ 20 | 21 | class WindowNotifier; 22 | 23 | class UNICORN_DLLEXPORT QtWin 24 | { 25 | public: 26 | static bool enableBlurBehindWindow(QWidget *widget, bool enable = true); 27 | static bool extendFrameIntoClientArea(QWidget *widget, 28 | int left = -1, int top = -1, 29 | int right = -1, int bottom = -1); 30 | static bool isCompositionEnabled(); 31 | static QColor colorizatinColor(); 32 | 33 | private: 34 | static WindowNotifier *windowNotifier(); 35 | }; 36 | 37 | #endif // QTWIN_H 38 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/main_thread_callback.h: -------------------------------------------------------------------------------- 1 | //! Callback object class for main_thread_callback_manager service. 2 | class NOVTABLE main_thread_callback : public service_base { 3 | public: 4 | //! Gets called from main app thread. See main_thread_callback_manager description for more info. 5 | virtual void callback_run() = 0; 6 | 7 | FB2K_MAKE_SERVICE_INTERFACE(main_thread_callback,service_base); 8 | }; 9 | 10 | /*! 11 | Allows you to queue a callback object to be called from main app thread. This is commonly used to trigger main-thread-only API calls from worker threads.\n 12 | This can be also used from main app thread, to avoid race conditions when trying to use APIs that dispatch global callbacks from inside some other global callback, or using message loops / modal dialogs inside global callbacks. 13 | */ 14 | class NOVTABLE main_thread_callback_manager : public service_base { 15 | public: 16 | //! Queues a callback object. This can be called from any thread, implementation ensures multithread safety. Implementation will call p_callback->callback_run() once later. To get it called repeatedly, you would need to add your callback again. 17 | virtual void add_callback(service_ptr_t p_callback) = 0; 18 | 19 | FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(main_thread_callback_manager); 20 | }; -------------------------------------------------------------------------------- /admin/qmake/1stparty.pro.inc: -------------------------------------------------------------------------------- 1 | CONFIG( unicorn ) { 2 | LIBS += -lunicorn 3 | QT += gui 4 | CONFIG += lastfm 5 | } 6 | CONFIG( listener ) { 7 | LIBS += -llistener 8 | CONFIG += lastfm 9 | } 10 | CONFIG( fingerprint ) { 11 | LIBS += -llastfm_fingerprint 12 | CONFIG += lastfm 13 | } 14 | CONFIG( logger ) { 15 | LIBS += -llogger 16 | CONFIG += lastfm 17 | } 18 | CONFIG( lastfm ) { 19 | QT += core network xml 20 | LIBS += -llastfm 21 | win32 { 22 | CONFIG += link_pkgconfig 23 | 24 | CONFIG(debug, debug|release) { 25 | PKGCONFIG += lastfm-debug 26 | } 27 | else { 28 | PKGCONFIG += lastfm-release 29 | } 30 | 31 | } 32 | mac{ 33 | CONFIG( notifications ) { 34 | MAC_SDK = $$system(xcode-select --print-path)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk 35 | 36 | if( !exists( $$MAC_SDK) ) { 37 | message("You do not have the MacOSX10.8 SDK installed. User Notifications will not be built.") 38 | } 39 | else { 40 | macx:QMAKE_MAC_SDK = $$MAC_SDK 41 | DEFINES += LASTFM_USER_NOTIFICATIONS 42 | } 43 | } 44 | 45 | LIBS += -weak_framework Carbon -weak_framework CoreFoundation -weak_framework Foundation 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/window_placement_helper.h: -------------------------------------------------------------------------------- 1 | #ifndef _WINDOW_PLACEMENT_HELPER_H_ 2 | #define _WINDOW_PLACEMENT_HELPER_H_ 3 | 4 | class cfg_window_placement : public cfg_var 5 | { 6 | public: 7 | bool on_window_creation(HWND window);//returns true if window position has been changed, false if not 8 | void on_window_destruction(HWND window); 9 | bool read_from_window(HWND window); 10 | void get_data_raw(stream_writer * p_stream,abort_callback & p_abort); 11 | void set_data_raw(stream_reader * p_stream,t_size p_sizehint,abort_callback & p_abort); 12 | cfg_window_placement(const GUID & p_guid); 13 | private: 14 | pfc::list_hybrid_t m_windows; 15 | WINDOWPLACEMENT m_data; 16 | }; 17 | 18 | class cfg_window_size : public cfg_var 19 | { 20 | public: 21 | bool on_window_creation(HWND window);//returns true if window position has been changed, false if not 22 | void on_window_destruction(HWND window); 23 | bool read_from_window(HWND window); 24 | void get_data_raw(stream_writer * p_stream,abort_callback & p_abort); 25 | void set_data_raw(stream_reader * p_stream,t_size p_sizehint,abort_callback & p_abort); 26 | cfg_window_size(const GUID & p_guid); 27 | private: 28 | pfc::list_hybrid_t m_windows; 29 | t_uint32 m_width,m_height; 30 | }; 31 | 32 | 33 | #endif //_WINDOW_PLACEMENT_HELPER_H_ -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/pfc/ptr_list.h: -------------------------------------------------------------------------------- 1 | #ifndef __PFC_PTR_LIST_H_ 2 | #define __PFC_PTR_LIST_H_ 3 | 4 | namespace pfc { 5 | 6 | template > 7 | class ptr_list_t : public B 8 | { 9 | public: 10 | ptr_list_t() {} 11 | ptr_list_t(const ptr_list_t & p_source) {*this = p_source;} 12 | 13 | void free_by_idx(t_size n) {free_mask(bit_array_one(n));} 14 | void free_all() {this->remove_all_ex(free);} 15 | void free_mask(const bit_array & p_mask) {this->remove_mask_ex(p_mask,free);} 16 | 17 | void delete_item(T* ptr) {delete_by_idx(find_item(ptr));} 18 | 19 | void delete_by_idx(t_size p_index) { 20 | delete_mask(bit_array_one(p_index)); 21 | } 22 | 23 | void delete_all() { 24 | this->remove_all_ex(pfc::delete_t); 25 | } 26 | 27 | void delete_mask(const bit_array & p_mask) { 28 | this->remove_mask_ex(p_mask,pfc::delete_t); 29 | } 30 | 31 | T * operator[](t_size n) const {return this->get_item(n);} 32 | }; 33 | 34 | template 35 | class ptr_list_hybrid_t : public ptr_list_t > { 36 | public: 37 | ptr_list_hybrid_t() {} 38 | ptr_list_hybrid_t(const ptr_list_hybrid_t & p_source) {*this = p_source;} 39 | }; 40 | 41 | typedef ptr_list_t ptr_list; 42 | } 43 | 44 | 45 | #endif //__PFC_PTR_LIST_H_ 46 | -------------------------------------------------------------------------------- /app/client/PrefPane/FmLastPrefPanePrefWidget.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2010 Last.fm Ltd. 3 | - Primarily authored by Jono Cole 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | #ifndef PREF_WIDGET_H_ 22 | #define PREF_WIDGET_H_ 23 | 24 | #include 25 | #include 26 | 27 | class FmLastPrefPanePrefWidget { 28 | public: 29 | FmLastPrefPanePrefWidget(); 30 | NSView* view(); 31 | QMacNativeWidget* qWidget(){ return widget; } 32 | void updateGeometry(); 33 | 34 | private: 35 | QMacNativeWidget* widget; 36 | class SettingsDialog* dialog; 37 | }; 38 | 39 | #endif //PREF_WIDGET_H_ 40 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/helpers/wildcard.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | 3 | static bool test_recur(const char * fn,const char * rm,bool b_sep) 4 | { 5 | for(;;) 6 | { 7 | if ((b_sep && *rm==';') || *rm==0) return *fn==0; 8 | else if (*rm=='*') 9 | { 10 | rm++; 11 | do 12 | { 13 | if (test_recur(fn,rm,b_sep)) return true; 14 | } while(pfc::utf8_advance(fn)); 15 | return false; 16 | } 17 | else if (*fn==0) return false; 18 | else if (*rm!='?' && char_lower(pfc::utf8_get_char(fn))!=char_lower(pfc::utf8_get_char(rm))) return false; 19 | 20 | fn = pfc::utf8_char_next(fn); rm = pfc::utf8_char_next(rm); 21 | } 22 | } 23 | 24 | bool wildcard_helper::test_path(const char * path,const char * pattern,bool b_sep) {return test(path + pfc::scan_filename(path),pattern,b_sep);} 25 | 26 | bool wildcard_helper::test(const char * fn,const char * pattern,bool b_sep) 27 | { 28 | if (!b_sep) return test_recur(fn,pattern,false); 29 | const char * rm=pattern; 30 | while(*rm) 31 | { 32 | if (test_recur(fn,rm,true)) return true; 33 | while(*rm && *rm!=';') rm++; 34 | if (*rm==';') 35 | { 36 | while(*rm==';') rm++; 37 | while(*rm==' ') rm++; 38 | } 39 | }; 40 | 41 | return false; 42 | } 43 | 44 | bool wildcard_helper::has_wildcards(const char * str) {return strchr(str,'*') || strchr(str,'?');} -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/pfc/other.cpp: -------------------------------------------------------------------------------- 1 | #include "pfc.h" 2 | 3 | #include 4 | 5 | 6 | void order_helper::g_swap(t_size * data,t_size ptr1,t_size ptr2) 7 | { 8 | t_size temp = data[ptr1]; 9 | data[ptr1] = data[ptr2]; 10 | data[ptr2] = temp; 11 | } 12 | 13 | 14 | t_size order_helper::g_find_reverse(const t_size * order,t_size val) 15 | { 16 | t_size prev = val, next = order[val]; 17 | while(next != val) 18 | { 19 | prev = next; 20 | next = order[next]; 21 | } 22 | return prev; 23 | } 24 | 25 | 26 | void order_helper::g_reverse(t_size * order,t_size base,t_size count) 27 | { 28 | t_size max = count>>1; 29 | t_size n; 30 | t_size base2 = base+count-1; 31 | for(n=0;n>1;n++) swap_t(ptr[n],ptr[p_bytes-n-1]); 49 | } 50 | 51 | #if defined(_DEBUG) && defined(_WIN32) 52 | void pfc::myassert(const wchar_t * _Message, const wchar_t *_File, unsigned _Line) { 53 | if (IsDebuggerPresent()) pfc::crash(); 54 | _wassert(_Message,_File,_Line); 55 | } 56 | #endif -------------------------------------------------------------------------------- /app/client/Settings/IpodSettingsWidget.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2010 Last.fm Ltd. 3 | - Primarily authored by Jono Cole, Michael Coffey, and William Viana 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | #ifndef IPOD_SETTINGS_H 22 | #define IPOD_SETTINGS_H 23 | 24 | #include "SettingsWidget.h" 25 | 26 | namespace Ui { class IpodSettingsWidget; } 27 | 28 | class IpodSettingsWidget: public SettingsWidget 29 | { 30 | Q_OBJECT 31 | 32 | public: 33 | IpodSettingsWidget( QWidget* parent = 0 ); 34 | 35 | public slots: 36 | virtual void saveSettings(); 37 | 38 | private: 39 | Ui::IpodSettingsWidget* ui; 40 | }; 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /app/client/Wizard/TourScrobblesPage.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2011 Last.fm Ltd. 3 | - Primarily authored by Michael Coffey 4 | 5 | This file is part of the Last.fm Desktop Application Suite. 6 | 7 | lastfm-desktop is free software: you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation, either version 3 of the License, or 10 | (at your option) any later version. 11 | 12 | lastfm-desktop is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License 18 | along with lastfm-desktop. If not, see . 19 | */ 20 | 21 | #ifndef TOURSCROBBLESPAGE_H 22 | #define TOURSCROBBLESPAGE_H 23 | 24 | #include "WizardPage.h" 25 | 26 | class TourScrobblesPage : public WizardPage 27 | { 28 | Q_OBJECT 29 | private: 30 | struct 31 | { 32 | class QLabel* image; 33 | class QLabel* description; 34 | } ui; 35 | 36 | public: 37 | explicit TourScrobblesPage(); 38 | 39 | private: 40 | void initializePage(); 41 | void cleanupPage(); 42 | }; 43 | 44 | #endif // TOURSCROBBLESPAGE_H 45 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/foobar2000/SDK/console.cpp: -------------------------------------------------------------------------------- 1 | #include "foobar2000.h" 2 | 3 | 4 | void console::info(const char * p_message) {print(p_message);} 5 | void console::error(const char * p_message) {formatter() << "ERROR : " << p_message;} 6 | void console::warning(const char * p_message) {formatter() << "WARNING : " << p_message;} 7 | 8 | void console::info_location(const playable_location & src) {print_location(src);} 9 | void console::info_location(const metadb_handle_ptr & src) {print_location(src);} 10 | 11 | void console::print_location(const metadb_handle_ptr & src) 12 | { 13 | print_location(src->get_location()); 14 | } 15 | 16 | void console::print_location(const playable_location & src) 17 | { 18 | formatter() << src; 19 | } 20 | 21 | void console::print(const char* p_message) 22 | { 23 | if (core_api::are_services_available()) { 24 | service_ptr_t ptr; 25 | service_enum_t e; 26 | while(e.next(ptr)) ptr->print(p_message,infinite); 27 | } 28 | } 29 | 30 | void console::printf(const char* p_format,...) 31 | { 32 | va_list list; 33 | va_start(list,p_format); 34 | printfv(p_format,list); 35 | va_end(list); 36 | } 37 | 38 | void console::printfv(const char* p_format,va_list p_arglist) 39 | { 40 | pfc::string8_fastalloc temp; 41 | uPrintfV(temp,p_format,p_arglist); 42 | print(temp); 43 | } -------------------------------------------------------------------------------- /lib/3rdparty/iTunesCOMAPI/ReadMe.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\mac\ansicpg10000\cocoartf102 2 | {\fonttbl\f0\fswiss\fcharset77 Helvetica;} 3 | {\colortbl;\red255\green255\blue255;} 4 | \margl1440\margr1440\vieww10620\viewh12220\viewkind0 5 | \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural 6 | 7 | \f0\fs24 \cf0 iTunesCOM.chm\ 8 | \ 9 | Compressed HTML help file containing the documentation on the iTunes COM\ 10 | interface. It's built directly from the IDL files, so anything you see\ 11 | documented is guaranteed to be available in iTunes.\ 12 | \ 13 | iTunesCOMInterface.h\ 14 | iTunesCOMInterface_i.c\ 15 | \ 16 | The iTunes COM header file (along with IID constants), needed for building clients in a high level\ 17 | language like C++. Note that the type library is built into iTunes.exe,\ 18 | you can browse it using OLEView or similar tools.\ 19 | \ 20 | SampleScripts folder\ 21 | \ 22 | A few sample JScripts that use the iTunes COM interface:\ 23 | \ 24 | CreateAlbumPlaylists.js\ 25 | \ 26 | Iterates over all tracks in your library, creates a new playlist for\ 27 | each album, and adds the tracks for that album to the playlist.\ 28 | \ 29 | RemoveDeadTracks.js\ 30 | \ 31 | Iterates over your library and removes any tracks that can no longer be\ 32 | found on disk.\ 33 | \ 34 | RemoveUserPlaylists.js\ 35 | \ 36 | Deletes all non-smart user playlists your library.\ 37 | } -------------------------------------------------------------------------------- /app/client/Mpris2/Mpris2.h: -------------------------------------------------------------------------------- 1 | /*********************************************************************** 2 | * Copyright 2012 Eike Hein 3 | * 4 | * This program is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU General Public License as 6 | * published by the Free Software Foundation; either version 2 of 7 | * the License or (at your option) version 3 or any later version 8 | * accepted by the membership of KDE e.V. (or its successor approved 9 | * by the membership of KDE e.V.), which shall act as a proxy 10 | * defined in Section 14 of version 3 of the license. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | * GNU General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program. If not, see . 19 | ***********************************************************************/ 20 | 21 | #ifndef MPRIS2_H 22 | #define MPRIS2_H 23 | 24 | #include 25 | 26 | class Mpris2 : public QObject 27 | { 28 | Q_OBJECT 29 | 30 | public: 31 | explicit Mpris2( QObject *parent = 0 ); 32 | ~Mpris2(); 33 | }; 34 | 35 | #endif // MPRIS2_H 36 | -------------------------------------------------------------------------------- /lib/unicorn/qrc/as.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 14 | 15 | -------------------------------------------------------------------------------- /plugins/foobar09/foobar_sdk/pfc/instance_tracker.h: -------------------------------------------------------------------------------- 1 | namespace pfc { 2 | template 3 | class instance_tracker_server_t { 4 | public: 5 | void add(t_object * p_object) { 6 | m_list.add_item(p_object); 7 | } 8 | void remove(t_object * p_object) { 9 | m_list.remove_item(p_object); 10 | } 11 | 12 | t_size get_count() const {return m_list.get_count();} 13 | t_object * get_item(t_size p_index) {return m_list[p_index];} 14 | t_object * operator[](t_size p_index) {return m_list[p_index];} 15 | 16 | private: 17 | ptr_list_hybrid_t m_list; 18 | }; 19 | 20 | 21 | template & p_server> 22 | class instance_tracker_client_t { 23 | public: 24 | instance_tracker_client_t(t_object* p_ptr) : m_ptr(NULL), m_added(false) {initialize(p_ptr);} 25 | instance_tracker_client_t() : m_ptr(NULL), m_added(false) {} 26 | 27 | void initialize(t_object * p_ptr) { 28 | uninitialize(); 29 | p_server.add(p_ptr); 30 | m_ptr = p_ptr; 31 | m_added = true; 32 | } 33 | 34 | void uninitialize() { 35 | if (m_added) { 36 | p_server.remove(m_ptr); 37 | m_ptr = NULL; 38 | m_added = false; 39 | } 40 | } 41 | 42 | ~instance_tracker_client_t() { 43 | uninitialize(); 44 | } 45 | private: 46 | bool m_added; 47 | t_object * m_ptr; 48 | }; 49 | } --------------------------------------------------------------------------------