├── Android ├── MusicPlayer │ ├── .gitignore │ ├── app │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── proguard-rules.pro │ │ └── src │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── com │ │ │ │ └── witekio │ │ │ │ └── whitepaper │ │ │ │ └── musicplayer │ │ │ │ ├── MainActivity.java │ │ │ │ ├── SharedViewModel.java │ │ │ │ ├── layout │ │ │ │ ├── adapter │ │ │ │ │ ├── AlbumListAdapter.java │ │ │ │ │ ├── AlbumSectionAdapter.java │ │ │ │ │ ├── AlbumViewHolder.java │ │ │ │ │ ├── ArtistAlbumListAdapter.java │ │ │ │ │ ├── ArtistSectionAdapter.java │ │ │ │ │ ├── ArtistViewHolder.java │ │ │ │ │ ├── BaseViewHolder.java │ │ │ │ │ ├── GenreListAdapter.java │ │ │ │ │ ├── SectionAdapter.java │ │ │ │ │ ├── SongSectionAdapter.java │ │ │ │ │ └── SongViewHolder.java │ │ │ │ ├── fragment │ │ │ │ │ ├── AbstractListFragment.java │ │ │ │ │ ├── AlbumFragment.java │ │ │ │ │ ├── AlbumListFragment.java │ │ │ │ │ ├── ArtistFilteredAlbumListFragment.java │ │ │ │ │ ├── ArtistListFragment.java │ │ │ │ │ ├── BackFragment.java │ │ │ │ │ ├── DashboardFragment.java │ │ │ │ │ ├── FilteredAlbumListFragment.java │ │ │ │ │ ├── GenreListFragment.java │ │ │ │ │ ├── PlayFragment.java │ │ │ │ │ ├── SongListFragment.java │ │ │ │ │ └── SplashScreenFragment.java │ │ │ │ └── model │ │ │ │ │ └── Section.java │ │ │ │ └── view │ │ │ │ └── SongView.java │ │ │ └── res │ │ │ ├── color │ │ │ ├── category_text_color.xml │ │ │ ├── play_pause_color.xml │ │ │ └── song_artist.xml │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ ├── album_border.xml │ │ │ ├── album_song_background.xml │ │ │ ├── back_arrow_selector.xml │ │ │ ├── category_button_background.xml │ │ │ ├── dashboard_player_background.xml │ │ │ ├── ic_launcher_background.xml │ │ │ ├── icon.png │ │ │ ├── icon_album.png │ │ │ ├── icon_album_drawable.xml │ │ │ ├── icon_back_dark.png │ │ │ ├── icon_back_light.png │ │ │ ├── icon_next.png │ │ │ ├── icon_pause.png │ │ │ ├── icon_play.png │ │ │ ├── icon_play_disabled.xml │ │ │ ├── icon_prev.png │ │ │ ├── icon_repeat_dark.png │ │ │ ├── icon_repeat_light.png │ │ │ ├── icon_shuffle_dark.png │ │ │ ├── icon_shuffle_light.png │ │ │ ├── icon_vol_down.png │ │ │ ├── icon_vol_up.png │ │ │ ├── play_pause.xml │ │ │ ├── play_pause_icon.xml │ │ │ ├── repeat_selector.xml │ │ │ ├── shuffle_selector.xml │ │ │ ├── song_background.xml │ │ │ ├── timing_seek_bar.xml │ │ │ ├── volume_seek_bar.xml │ │ │ └── volume_seek_bar_thumb.xml │ │ │ ├── font │ │ │ ├── titillium_web.xml │ │ │ ├── titillium_web_black.ttf │ │ │ ├── titillium_web_bold.ttf │ │ │ ├── titillium_web_bold_italic.ttf │ │ │ ├── titillium_web_extra_ligh_italic.ttf │ │ │ ├── titillium_web_extra_light.ttf │ │ │ ├── titillium_web_italic.ttf │ │ │ ├── titillium_web_light.ttf │ │ │ ├── titillium_web_light_italic.ttf │ │ │ ├── titillium_web_regular.ttf │ │ │ ├── titillium_web_semi_bold.ttf │ │ │ └── titillium_web_semi_bold_italic.ttf │ │ │ ├── layout │ │ │ ├── album_layout.xml │ │ │ ├── back_button.xml │ │ │ ├── category_button.xml │ │ │ ├── category_buttons.xml │ │ │ ├── dashboard_layout.xml │ │ │ ├── generic_list_layout.xml │ │ │ ├── header.xml │ │ │ ├── item_album.xml │ │ │ ├── item_album_song.xml │ │ │ ├── item_artist.xml │ │ │ ├── item_artist_album.xml │ │ │ ├── item_genre.xml │ │ │ ├── item_song.xml │ │ │ ├── list_section.xml │ │ │ ├── main_layout.xml │ │ │ ├── play_layout.xml │ │ │ ├── simple_list_layout.xml │ │ │ └── splash_screen_layout.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── navigation │ │ │ └── nav_item.xml │ │ │ ├── values-sw600dp │ │ │ └── dimens.xml │ │ │ └── values │ │ │ ├── attrs.xml │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ ├── build.gradle │ ├── gradle.properties │ └── settings.gradle └── MusicPlayerBackend │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── witekio │ │ └── whitepaper │ │ └── musicplayer │ │ └── backend │ │ ├── ListMediaPlayer.java │ │ ├── MediaModel.java │ │ ├── MediaModelBuilder.java │ │ ├── MetadataExtractor.java │ │ ├── ParsingException.java │ │ ├── RetrieverHandler.java │ │ └── model │ │ ├── Album.java │ │ ├── Artist.java │ │ ├── Filter.java │ │ ├── FilterType.java │ │ ├── Filterable.java │ │ ├── Song.java │ │ └── TerFunction.java │ └── res │ └── values │ └── strings.xml ├── Qt ├── .gitignore └── MusicPlayerApp │ ├── .clang-format │ ├── MusicPlayer2 components for PS Bridge.psd │ ├── MusicPlayerApp.pro │ ├── MusicPlayerBackend │ ├── MusicPlayerBackend.pro │ ├── albummodel.cpp │ ├── albummodel.h │ ├── artistmodel.cpp │ ├── artistmodel.h │ ├── genremodel.cpp │ ├── genremodel.h │ ├── mediametadataparser.cpp │ ├── mediametadataparser.h │ ├── musicPlayer.qmltypes │ ├── musicPlayerBackend.json │ ├── musicplayerbackend.cpp │ ├── musicplayerbackend.h │ ├── musicplayerbackendplugin.cpp │ ├── musicplayerbackendplugin.h │ ├── qmldir │ ├── songmodel.cpp │ ├── songmodel.h │ └── songs.qrc │ └── MusicPlayerUI │ ├── MusicPlayer2 │ ├── AlbumGridItem.qml │ ├── AlbumListItem.qml │ ├── AlbumSongsView.ui.qml │ ├── AlbumsListView.qml │ ├── AlbumsView.ui.qml │ ├── AllSongsView.ui.qml │ ├── AppView.qml │ ├── ArtistAlbumsView.ui.qml │ ├── ArtistListItem.qml │ ├── ArtistsListView.qml │ ├── ArtistsView.ui.qml │ ├── CategoryButton.qml │ ├── GenreListItem.qml │ ├── GenresListView.qml │ ├── GenresView.ui.qml │ ├── IconButton.qml │ ├── IconToggleButton.qml │ ├── ListHighlight.qml │ ├── ListSectionHeader.qml │ ├── MainView.ui.qml │ ├── MusicPlayer2.qml │ ├── MusicPlayer2.qmlproject │ ├── MusicPlayer2.qmlproject.qtds │ ├── NavigationButton.qml │ ├── NowPlayingButton.qml │ ├── PlayView.ui.qml │ ├── ResolutionsComboBox.qml │ ├── ScreenArea.qml │ ├── SimpleSongListItem.qml │ ├── SongListItem.qml │ ├── SongListView.qml │ ├── SplashView.ui.qml │ ├── ViewHeader.qml │ ├── assets │ │ ├── icon_album.png │ │ ├── icon_back_dark.png │ │ ├── icon_back_light.png │ │ ├── icon_builtWithQt.png │ │ ├── icon_close_dark.png │ │ ├── icon_close_light.png │ │ ├── icon_next.png │ │ ├── icon_pause.png │ │ ├── icon_play.png │ │ ├── icon_prev.png │ │ ├── icon_qt.png │ │ ├── icon_repeat_dark.png │ │ ├── icon_repeat_light.png │ │ ├── icon_shuffle_dark.png │ │ ├── icon_shuffle_light.png │ │ ├── icon_vol_down.png │ │ └── icon_vol_up.png │ ├── imports │ │ ├── MusicPlayer2 │ │ │ ├── Constants.qml │ │ │ ├── QtFontBold.qml │ │ │ ├── QtFontRegular.qml │ │ │ ├── TitilliumWeb-Bold.ttf │ │ │ ├── TitilliumWeb-Regular.ttf │ │ │ └── qmldir │ │ └── QtQuick │ │ │ └── Studio │ │ │ ├── Components │ │ │ ├── ArcItem.qml │ │ │ ├── BorderItem.qml │ │ │ ├── FlipableItem.qml │ │ │ ├── IsoItem.qml │ │ │ ├── PieItem.qml │ │ │ ├── RectangleItem.qml │ │ │ ├── SvgPathItem.qml │ │ │ ├── TriangleItem.qml │ │ │ ├── designer │ │ │ │ ├── ArcItemSpecifics.qml │ │ │ │ ├── BorderItemSpecifics.qml │ │ │ │ ├── FlipableItemSpecifics.qml │ │ │ │ ├── IsoItemSpecifics.qml │ │ │ │ ├── MyPlugin.metainfo │ │ │ │ ├── PieItemSpecifics.qml │ │ │ │ ├── RectangleItemSpecifics.qml │ │ │ │ ├── SvgPathItemSpecifics.qml │ │ │ │ ├── TriangleItemSpecifics.qml │ │ │ │ └── images │ │ │ │ │ ├── custom-border-16px.png │ │ │ │ │ ├── custom-border-24px.png │ │ │ │ │ ├── custom-border-24px@2x.png │ │ │ │ │ ├── custom-rectangle-16px.png │ │ │ │ │ ├── custom-rectangle-24px.png │ │ │ │ │ ├── custom-rectangle-24px@2x.png │ │ │ │ │ ├── iso-icons-16px.png │ │ │ │ │ ├── iso-icons-24px.png │ │ │ │ │ ├── iso-icons-24px@2x.png │ │ │ │ │ ├── item-arc-16px.png │ │ │ │ │ ├── item-arc-24px.png │ │ │ │ │ ├── item-arc-24px@2x.png │ │ │ │ │ ├── item-flippable-16px.png │ │ │ │ │ ├── item-flippable-24px.png │ │ │ │ │ ├── item-flippable-24px@2x.png │ │ │ │ │ ├── item-pie-16px.png │ │ │ │ │ ├── item-pie-24px.png │ │ │ │ │ ├── item-pie-24px@2x.png │ │ │ │ │ ├── item-svg-16px.png │ │ │ │ │ ├── item-svg-24px.png │ │ │ │ │ ├── item-svg-24px@2x.png │ │ │ │ │ ├── item-triangle-16px.png │ │ │ │ │ ├── item-triangle-24px.png │ │ │ │ │ └── item-triangle-24px@2x.png │ │ │ └── qmldir │ │ │ └── Effects │ │ │ ├── BlendItem.qml │ │ │ ├── BrightnessContrastItem.qml │ │ │ ├── ColorOverlayItem.qml │ │ │ ├── ColorizeItem.qml │ │ │ ├── DirectionalBlurItem.qml │ │ │ ├── DropShadowItem.qml │ │ │ ├── FastBlurItem.qml │ │ │ ├── GaussianBlurItem.qml │ │ │ ├── GlowItem.qml │ │ │ ├── HueSaturationItem.qml │ │ │ ├── MaskItem.qml │ │ │ ├── MaskedBlurItem.qml │ │ │ ├── RadialBlurItem.qml │ │ │ ├── RotationItem.qml │ │ │ ├── SaturationItem.qml │ │ │ ├── ZoomBlurItem.qml │ │ │ ├── designer │ │ │ ├── BrightnessContrastItemSpecifics.qml │ │ │ ├── ColorOverlayItemSpecifics.qml │ │ │ ├── ColorizeItemSpecifics.qml │ │ │ ├── DirectionalBlurItemSpecifics.qml │ │ │ ├── DropShadowItemSpecifics.qml │ │ │ ├── FastBlurItemSpecifics.qml │ │ │ ├── GlowItemSpecifics.qml │ │ │ ├── HueSaturationItemSpecifics.qml │ │ │ ├── MyPlugin.metainfo │ │ │ ├── RadialBlurItemSpecifics.qml │ │ │ ├── SaturationItemSpecifics.qml │ │ │ ├── ZoomBlurItemSpecifics.qml │ │ │ └── images │ │ │ │ ├── blend-mode-16px.png │ │ │ │ ├── blend-mode-24px.png │ │ │ │ ├── blend-mode-24px@2x.png │ │ │ │ ├── brightness-contrast-16px.png │ │ │ │ ├── brightness-contrast-24px.png │ │ │ │ ├── brightness-contrast-24px@2x.png │ │ │ │ ├── colourize-16px.png │ │ │ │ ├── colourize-24px.png │ │ │ │ ├── colourize-24px@2x.png │ │ │ │ ├── directional-blur-16px.png │ │ │ │ ├── directional-blur-24px.png │ │ │ │ ├── directional-blur-24px@2x.png │ │ │ │ ├── drop-shadow-16px.png │ │ │ │ ├── drop-shadow-24px.png │ │ │ │ ├── drop-shadow-24px@2x.png │ │ │ │ ├── fast-blur-16px.png │ │ │ │ ├── fast-blur-24px.png │ │ │ │ ├── fast-blur-24px@2x.png │ │ │ │ ├── gamma-adjust-16px.png │ │ │ │ ├── gamma-adjust-24px.png │ │ │ │ ├── gamma-adjust-24px@2x.png │ │ │ │ ├── glow-16px.png │ │ │ │ ├── glow-24px.png │ │ │ │ ├── glow-24px@2x.png │ │ │ │ ├── hue-satuartion-16px.png │ │ │ │ ├── hue-satuartion-24px.png │ │ │ │ ├── hue-satuartion-24px@2x.png │ │ │ │ ├── mask-16px.png │ │ │ │ ├── mask-24px.png │ │ │ │ ├── mask-24px@2x.png │ │ │ │ ├── mask-blur-16px.png │ │ │ │ ├── mask-blur-24px.png │ │ │ │ ├── mask-blur-24px@2x.png │ │ │ │ ├── radial-blur-16px.png │ │ │ │ ├── radial-blur-24px.png │ │ │ │ ├── radial-blur-24px@2x.png │ │ │ │ ├── saturation-16px.png │ │ │ │ ├── saturation-24px.png │ │ │ │ ├── saturation-24px@2x.png │ │ │ │ ├── zoom-blur-16px.png │ │ │ │ ├── zoom-blur-24px.png │ │ │ │ └── zoom-blur-24px@2x.png │ │ │ └── qmldir │ └── qtquickcontrols2.conf │ ├── MusicPlayerUI.pro │ ├── main.cpp │ ├── main.qml │ └── qml.qrc ├── README.md └── doc └── img ├── android_all_songs.png ├── android_avd_manager_launcher.png ├── android_device_selection_emulator.png ├── android_devices.png ├── android_home.png ├── android_playing_song.png ├── android_project_structure.png ├── device_debug_mode.png ├── device_file_transfer.png ├── device_uninstall_for_all_users.png ├── qt_all_songs.png ├── qt_home.png ├── qt_mingw_settings.png ├── qt_playing_song.png ├── qt_project_structure.png ├── qt_run_settings.png └── witekio.png /Android/MusicPlayer/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 29 5 | buildToolsVersion '29.0.2' 6 | defaultConfig { 7 | applicationId "com.witekio.whitepaper.musicplayer" 8 | minSdkVersion 28 9 | targetSdkVersion 29 10 | versionCode 2 11 | versionName "v0.2" 12 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 13 | } 14 | 15 | buildTypes { 16 | release { 17 | minifyEnabled false 18 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 19 | } 20 | } 21 | 22 | compileOptions { 23 | sourceCompatibility = 1.8 24 | targetCompatibility = 1.8 25 | } 26 | 27 | } 28 | 29 | dependencies { 30 | implementation fileTree(dir: 'libs', include: ['*.jar']) 31 | implementation 'androidx.appcompat:appcompat:1.1.0' 32 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3' 33 | 34 | implementation "androidx.navigation:navigation-fragment:2.2.0" 35 | implementation "androidx.navigation:navigation-ui:2.2.0" 36 | 37 | implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' 38 | implementation 'org.jetbrains:annotations:15.0' 39 | 40 | implementation project(path: ':musicplayerbackend') 41 | } 42 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 14 | 15 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/java/com/witekio/whitepaper/musicplayer/SharedViewModel.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.annotation.NonNull; 6 | import androidx.lifecycle.ViewModel; 7 | 8 | import com.witekio.whitepaper.musicplayer.backend.ListMediaPlayer; 9 | import com.witekio.whitepaper.musicplayer.backend.MediaModel; 10 | 11 | public class SharedViewModel extends ViewModel { 12 | 13 | private MediaModel mMediaModel; 14 | private ListMediaPlayer mMediaPlayer; 15 | 16 | public void initialize(Context context) { 17 | mMediaPlayer = new ListMediaPlayer(context); 18 | } 19 | 20 | public void setMediaModel(@NonNull MediaModel mediaModel) { 21 | mMediaModel = mediaModel; 22 | } 23 | public MediaModel getMediaModel() { 24 | return mMediaModel; 25 | } 26 | 27 | public ListMediaPlayer getListMediaPlayer() { 28 | return mMediaPlayer; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/java/com/witekio/whitepaper/musicplayer/layout/adapter/AlbumSectionAdapter.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.layout.adapter; 2 | 3 | import android.content.Context; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | import com.witekio.whitepaper.musicplayer.R; 9 | import com.witekio.whitepaper.musicplayer.backend.model.Album; 10 | import com.witekio.whitepaper.musicplayer.layout.model.Section; 11 | 12 | import java.util.Comparator; 13 | import java.util.List; 14 | import java.util.function.Consumer; 15 | 16 | public class AlbumSectionAdapter extends SectionAdapter { 17 | 18 | private final Context mContext; 19 | private final Consumer mOnAlbumSelected; 20 | 21 | public AlbumSectionAdapter(Context context, List albums, Consumer onAlbumSelected) { 22 | super(albums); 23 | mContext = context; 24 | mOnAlbumSelected = onAlbumSelected; 25 | } 26 | 27 | @Override 28 | protected boolean isSameSection(Section lastSection, Album element) { 29 | return lastSection.getTitle().equals(getSectionLabel(element)); 30 | } 31 | 32 | @Override 33 | protected String getSectionLabel(Album element) { 34 | return String.valueOf(element.getName().charAt(0)); 35 | } 36 | 37 | @Override 38 | protected Comparator getComparator() { 39 | return (Comparator) (one, two) -> one.getName().compareTo(two.getName()); 40 | } 41 | 42 | @Override 43 | protected BaseViewHolder getElementViewHolder(ViewGroup parent) { 44 | View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_album, parent, false); 45 | return new AlbumViewHolder(mContext, view, mOnAlbumSelected); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/java/com/witekio/whitepaper/musicplayer/layout/adapter/AlbumViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.layout.adapter; 2 | 3 | import android.content.Context; 4 | import android.graphics.Bitmap; 5 | import android.view.View; 6 | import android.widget.ImageView; 7 | import android.widget.TextView; 8 | 9 | import com.witekio.whitepaper.musicplayer.R; 10 | import com.witekio.whitepaper.musicplayer.backend.model.Album; 11 | 12 | import java.util.function.Consumer; 13 | 14 | class AlbumViewHolder extends BaseViewHolder { 15 | 16 | private final Context mContext; 17 | private final View mView; 18 | private final Consumer mOnAlbumSelected; 19 | 20 | private final TextView mAlbumName; 21 | private final TextView mArtistName; 22 | private final ImageView mAlbumArtView; 23 | 24 | public AlbumViewHolder(Context context, View itemView, Consumer onAlbumSelected) { 25 | super(itemView); 26 | mContext = context; 27 | mView = itemView; 28 | mOnAlbumSelected = onAlbumSelected; 29 | mAlbumName = itemView.findViewById(R.id.album_name); 30 | mArtistName = itemView.findViewById(R.id.album_artist); 31 | mAlbumArtView = itemView.findViewById(R.id.album_art_view); 32 | } 33 | 34 | @Override 35 | void bind(Object item) { 36 | if (item instanceof Album) { 37 | Album album = (Album) item; 38 | 39 | mAlbumName.setText(album.getName()); 40 | mArtistName.setText(album.getArtistName()); 41 | 42 | Bitmap albumArt = album.getArt(mContext); 43 | if (albumArt != null) { 44 | mAlbumArtView.setImageBitmap(albumArt); 45 | } else { 46 | mAlbumArtView.setImageResource(R.drawable.icon_album); 47 | } 48 | 49 | mView.setOnClickListener(view -> mOnAlbumSelected.accept(album)); 50 | } 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/java/com/witekio/whitepaper/musicplayer/layout/adapter/ArtistSectionAdapter.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.layout.adapter; 2 | 3 | import android.view.LayoutInflater; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | 7 | import com.witekio.whitepaper.musicplayer.R; 8 | import com.witekio.whitepaper.musicplayer.backend.MediaModel; 9 | import com.witekio.whitepaper.musicplayer.backend.model.Artist; 10 | import com.witekio.whitepaper.musicplayer.layout.model.Section; 11 | 12 | import java.util.Comparator; 13 | import java.util.List; 14 | import java.util.function.Consumer; 15 | 16 | public class ArtistSectionAdapter extends SectionAdapter { 17 | 18 | private final Consumer mOnArtistSelected; 19 | private final MediaModel mMediaModel; 20 | 21 | public ArtistSectionAdapter(List artists, MediaModel mediaModel, Consumer onArtistSelected) { 22 | super(artists); 23 | mMediaModel = mediaModel; 24 | mOnArtistSelected = onArtistSelected; 25 | } 26 | 27 | @Override 28 | protected boolean isSameSection(Section lastSection, Artist element) { 29 | return lastSection.getTitle().equals(getSectionLabel(element)); 30 | } 31 | 32 | @Override 33 | protected String getSectionLabel(Artist element) { 34 | return String.valueOf(element.getName().charAt(0)); 35 | } 36 | 37 | @Override 38 | protected Comparator getComparator() { 39 | return (Comparator) (one, two) -> one.getName().compareTo(two.getName()); 40 | } 41 | 42 | @Override 43 | protected BaseViewHolder getElementViewHolder(ViewGroup parent) { 44 | View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_artist, parent, false); 45 | return new ArtistViewHolder(mMediaModel, view, mOnArtistSelected); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/java/com/witekio/whitepaper/musicplayer/layout/adapter/ArtistViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.layout.adapter; 2 | 3 | import android.view.View; 4 | import android.widget.TextView; 5 | 6 | import androidx.annotation.NonNull; 7 | 8 | import com.witekio.whitepaper.musicplayer.R; 9 | import com.witekio.whitepaper.musicplayer.backend.MediaModel; 10 | import com.witekio.whitepaper.musicplayer.backend.model.Artist; 11 | import com.witekio.whitepaper.musicplayer.backend.model.FilterType; 12 | 13 | import java.util.function.Consumer; 14 | 15 | class ArtistViewHolder extends BaseViewHolder { 16 | 17 | private final MediaModel mMediaModel; 18 | private final Consumer mOnArtistSelected; 19 | private final TextView mArtistName; 20 | private final TextView mAlbumCount; 21 | private final TextView mSongCount; 22 | 23 | ArtistViewHolder(@NonNull MediaModel mediaModel, @NonNull View itemView, Consumer onArtistSelected) { 24 | super(itemView); 25 | mMediaModel = mediaModel; 26 | mOnArtistSelected = onArtistSelected; 27 | mArtistName = itemView.findViewById(R.id.artist_name); 28 | mAlbumCount = itemView.findViewById(R.id.album_count); 29 | mSongCount = itemView.findViewById(R.id.song_count); 30 | } 31 | 32 | void bind(Object item) { 33 | if (item instanceof Artist) { 34 | Artist artist = (Artist) item; 35 | mArtistName.setText(artist.getName()); 36 | 37 | mMediaModel.setFilter(FilterType.ARTIST, artist.getName()); 38 | mAlbumCount.setText(String.valueOf(mMediaModel.countFilteredAlbums())); 39 | mSongCount.setText(String.valueOf(mMediaModel.countFilteredSongs())); 40 | 41 | itemView.setOnClickListener(view -> mOnArtistSelected.accept(artist)); 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/java/com/witekio/whitepaper/musicplayer/layout/adapter/BaseViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.layout.adapter; 2 | 3 | import android.view.View; 4 | 5 | import androidx.annotation.NonNull; 6 | import androidx.recyclerview.widget.RecyclerView; 7 | 8 | public abstract class BaseViewHolder extends RecyclerView.ViewHolder { 9 | 10 | BaseViewHolder(@NonNull View itemView) { 11 | super(itemView); 12 | } 13 | 14 | abstract void bind(Object item); 15 | } 16 | 17 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/java/com/witekio/whitepaper/musicplayer/layout/adapter/GenreListAdapter.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.layout.adapter; 2 | 3 | import android.view.LayoutInflater; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | import android.widget.TextView; 7 | 8 | import androidx.annotation.NonNull; 9 | import androidx.recyclerview.widget.RecyclerView; 10 | 11 | import com.witekio.whitepaper.musicplayer.R; 12 | import com.witekio.whitepaper.musicplayer.backend.MediaModel; 13 | import com.witekio.whitepaper.musicplayer.backend.model.FilterType; 14 | 15 | import java.util.List; 16 | import java.util.function.Consumer; 17 | 18 | public class GenreListAdapter extends RecyclerView.Adapter { 19 | 20 | private final List mGenres; 21 | private final Consumer mOnGenreSelected; 22 | private final MediaModel mMediaModel; 23 | 24 | public GenreListAdapter(List genres, MediaModel mediaModel, Consumer onGenreSelected) { 25 | mGenres = genres; 26 | mMediaModel = mediaModel; 27 | mOnGenreSelected = onGenreSelected; 28 | } 29 | 30 | @NonNull 31 | @Override 32 | public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { 33 | View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_genre, parent, false); 34 | return new ViewHolder(view); 35 | } 36 | 37 | @Override 38 | public void onBindViewHolder(@NonNull ViewHolder holder, int position) { 39 | holder.bind(mGenres.get(position)); 40 | } 41 | 42 | @Override 43 | public int getItemCount() { 44 | return mGenres.size(); 45 | } 46 | 47 | class ViewHolder extends RecyclerView.ViewHolder { 48 | 49 | private final TextView mGenreName; 50 | private final TextView mAlbumCount; 51 | private final TextView mArtistCount; 52 | 53 | ViewHolder(@NonNull View itemView) { 54 | super(itemView); 55 | mGenreName = itemView.findViewById(R.id.genre_name); 56 | mAlbumCount = itemView.findViewById(R.id.album_count); 57 | mArtistCount = itemView.findViewById(R.id.artist_count); 58 | } 59 | 60 | void bind(String genre) { 61 | mGenreName.setText(genre); 62 | 63 | mMediaModel.setFilter(FilterType.GENRE, genre); 64 | mAlbumCount.setText(String.valueOf(mMediaModel.countFilteredAlbums())); 65 | mArtistCount.setText(String.valueOf(mMediaModel.countFilteredArtists())); 66 | 67 | itemView.setOnClickListener(view -> mOnGenreSelected.accept(genre)); 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/java/com/witekio/whitepaper/musicplayer/layout/fragment/AbstractListFragment.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.layout.fragment; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.TextView; 8 | 9 | import androidx.annotation.NonNull; 10 | import androidx.annotation.Nullable; 11 | import androidx.lifecycle.ViewModelProvider; 12 | import androidx.recyclerview.widget.LinearLayoutManager; 13 | import androidx.recyclerview.widget.RecyclerView; 14 | 15 | import com.witekio.whitepaper.musicplayer.R; 16 | import com.witekio.whitepaper.musicplayer.SharedViewModel; 17 | 18 | abstract class AbstractListFragment extends BackFragment { 19 | 20 | SharedViewModel mSharedViewModel; 21 | 22 | @Override 23 | public void onCreate(@Nullable Bundle savedInstanceState) { 24 | mSharedViewModel = new ViewModelProvider(getActivity()).get(SharedViewModel.class); 25 | super.onCreate(savedInstanceState); 26 | } 27 | 28 | @Nullable 29 | @Override 30 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 31 | View layout = inflater.inflate(R.layout.generic_list_layout, container, false); 32 | 33 | setupBack(layout); 34 | 35 | TextView title = layout.findViewById(R.id.title); 36 | title.setText(getTitle()); 37 | 38 | RecyclerView recyclerView = layout.findViewById(R.id.list_sections); 39 | LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext()); 40 | recyclerView.setLayoutManager(linearLayoutManager); 41 | recyclerView.setAdapter(getAdapter()); 42 | return layout; 43 | } 44 | 45 | protected abstract String getTitle(); 46 | 47 | protected abstract RecyclerView.Adapter getAdapter(); 48 | 49 | } 50 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/java/com/witekio/whitepaper/musicplayer/layout/fragment/AlbumListFragment.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.layout.fragment; 2 | 3 | import android.os.Bundle; 4 | import android.util.Log; 5 | import android.view.View; 6 | 7 | import androidx.navigation.Navigation; 8 | import androidx.recyclerview.widget.RecyclerView; 9 | 10 | import com.witekio.whitepaper.musicplayer.R; 11 | import com.witekio.whitepaper.musicplayer.backend.model.Album; 12 | import com.witekio.whitepaper.musicplayer.backend.model.Filter; 13 | import com.witekio.whitepaper.musicplayer.backend.model.FilterType; 14 | import com.witekio.whitepaper.musicplayer.layout.adapter.AlbumSectionAdapter; 15 | 16 | import java.util.List; 17 | 18 | public class AlbumListFragment extends AbstractListFragment { 19 | 20 | private static final String TAG = "ALBUM_LIST"; 21 | 22 | @Override 23 | protected String getTitle() { 24 | return getString(R.string.all_albums); 25 | } 26 | 27 | @Override 28 | protected RecyclerView.Adapter getAdapter() { 29 | List albums = mSharedViewModel.getMediaModel().getAlbums(); 30 | return new AlbumSectionAdapter(getContext(), albums, this::onAlbumSelected); 31 | } 32 | 33 | void onAlbumSelected(Album album) { 34 | View view = getView(); 35 | if (view == null) { 36 | Log.e(TAG, "Can't navigate: View is null"); 37 | return; 38 | } 39 | Bundle bundle = new Bundle(); 40 | bundle.putSerializable(Filter.class.toString(), new Filter(FilterType.ALBUM, album.getName())); 41 | Navigation.findNavController(view).navigate(R.id.album_fragment, bundle); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/java/com/witekio/whitepaper/musicplayer/layout/fragment/ArtistListFragment.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.layout.fragment; 2 | 3 | import android.os.Bundle; 4 | import android.util.Log; 5 | import android.view.View; 6 | 7 | import androidx.navigation.Navigation; 8 | import androidx.recyclerview.widget.RecyclerView; 9 | 10 | import com.witekio.whitepaper.musicplayer.R; 11 | import com.witekio.whitepaper.musicplayer.backend.MediaModel; 12 | import com.witekio.whitepaper.musicplayer.backend.model.Artist; 13 | import com.witekio.whitepaper.musicplayer.backend.model.Filter; 14 | import com.witekio.whitepaper.musicplayer.backend.model.FilterType; 15 | import com.witekio.whitepaper.musicplayer.layout.adapter.ArtistSectionAdapter; 16 | 17 | public class ArtistListFragment extends AbstractListFragment { 18 | 19 | private static final String TAG = "ARTIST_LIST"; 20 | 21 | @Override 22 | protected String getTitle() { 23 | return getString(R.string.all_artists); 24 | } 25 | 26 | @Override 27 | protected RecyclerView.Adapter getAdapter() { 28 | MediaModel mediaModel = mSharedViewModel.getMediaModel(); 29 | return new ArtistSectionAdapter(mediaModel.getArtists(), mediaModel, this::onArtistSelected); 30 | } 31 | 32 | private void onArtistSelected(Artist artist) { 33 | 34 | View view = getView(); 35 | if (view == null) { 36 | Log.e(TAG, "Navigation failed : View is null"); 37 | return; 38 | } 39 | 40 | Bundle bundle = new Bundle(); 41 | bundle.putSerializable(Filter.class.toString(), new Filter(FilterType.ARTIST, artist.getName())); 42 | Navigation.findNavController(view).navigate(R.id.artist_filtered_album_list_fragment, bundle); 43 | 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/java/com/witekio/whitepaper/musicplayer/layout/fragment/BackFragment.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.layout.fragment; 2 | 3 | import android.view.View; 4 | 5 | import androidx.fragment.app.Fragment; 6 | import androidx.navigation.Navigation; 7 | 8 | import com.witekio.whitepaper.musicplayer.R; 9 | 10 | abstract class BackFragment extends Fragment { 11 | 12 | void setupBack(View layout) { 13 | View back = layout.findViewById(R.id.back_button); 14 | back.setOnClickListener(view -> Navigation.findNavController(view).popBackStack()); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/java/com/witekio/whitepaper/musicplayer/layout/fragment/FilteredAlbumListFragment.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.layout.fragment; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | import androidx.annotation.NonNull; 9 | import androidx.annotation.Nullable; 10 | import androidx.recyclerview.widget.RecyclerView; 11 | 12 | import com.witekio.whitepaper.musicplayer.backend.model.Album; 13 | import com.witekio.whitepaper.musicplayer.backend.model.Filter; 14 | import com.witekio.whitepaper.musicplayer.layout.adapter.AlbumSectionAdapter; 15 | 16 | import java.util.List; 17 | 18 | public class FilteredAlbumListFragment extends AlbumListFragment { 19 | 20 | @Nullable 21 | @Override 22 | public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 23 | if (savedInstanceState == null) { 24 | savedInstanceState = getArguments(); 25 | } 26 | if (savedInstanceState != null && savedInstanceState.containsKey(Filter.class.toString())) { 27 | Filter filter = (Filter) savedInstanceState.getSerializable(Filter.class.toString()); 28 | mSharedViewModel.getMediaModel().setFilter(filter); 29 | } 30 | return super.onCreateView(inflater, container, savedInstanceState); 31 | } 32 | 33 | protected String getTitle() { 34 | Filter filter = mSharedViewModel.getMediaModel().getFilter(); 35 | if (filter == null){ 36 | return super.getTitle(); 37 | } else { 38 | return filter.getValue(); 39 | } 40 | } 41 | 42 | @Override 43 | protected RecyclerView.Adapter getAdapter() { 44 | List albums = mSharedViewModel.getMediaModel().getFilteredAlbums(); 45 | return new AlbumSectionAdapter(getContext(), albums, this::onAlbumSelected); 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/java/com/witekio/whitepaper/musicplayer/layout/fragment/SongListFragment.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.layout.fragment; 2 | 3 | import android.util.Log; 4 | 5 | import androidx.navigation.Navigation; 6 | import androidx.recyclerview.widget.RecyclerView; 7 | 8 | import com.witekio.whitepaper.musicplayer.R; 9 | import com.witekio.whitepaper.musicplayer.backend.ListMediaPlayer; 10 | import com.witekio.whitepaper.musicplayer.backend.model.Song; 11 | import com.witekio.whitepaper.musicplayer.layout.adapter.SongSectionAdapter; 12 | 13 | import java.io.IOException; 14 | import java.util.List; 15 | 16 | public class SongListFragment extends AbstractListFragment{ 17 | 18 | private static final String TAG = "SONG_LIST"; 19 | 20 | @Override 21 | protected String getTitle() { 22 | return getString(R.string.all_songs); 23 | } 24 | 25 | @Override 26 | protected RecyclerView.Adapter getAdapter() { 27 | List songs = mSharedViewModel.getMediaModel().getSongs(); 28 | return new SongSectionAdapter(getContext(), mSharedViewModel.getListMediaPlayer(), songs, song -> onSongSelected(songs, song)); 29 | } 30 | 31 | private void onSongSelected(List songs, Song song) { 32 | if (getView() == null) { 33 | Log.e(TAG, "View is null, can't navigate"); 34 | return; 35 | } 36 | ListMediaPlayer mediaPlayer = mSharedViewModel.getListMediaPlayer(); 37 | try { 38 | mediaPlayer.setPlaylist(songs, songs.indexOf(song)); 39 | Navigation.findNavController(getView()).navigate(R.id.play_fragment); 40 | } catch (IOException | IllegalStateException e) { 41 | Log.e(TAG, "Song file cannot be read [" + (song == null ? "No song" : song.getUri()) + "] : " + e.getMessage()); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/java/com/witekio/whitepaper/musicplayer/layout/model/Section.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.layout.model; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | public class Section { 6 | 7 | private final String mTitle; 8 | private int mCount; 9 | 10 | public Section(@NonNull String title) { 11 | mTitle = title; 12 | mCount = 0; 13 | } 14 | 15 | public void increment() { 16 | ++mCount; 17 | } 18 | 19 | public int getCount() { 20 | return mCount; 21 | } 22 | 23 | @NonNull 24 | public String getTitle() { 25 | return mTitle; 26 | } 27 | } -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/java/com/witekio/whitepaper/musicplayer/view/SongView.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.view; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.widget.RelativeLayout; 6 | 7 | import com.witekio.whitepaper.musicplayer.R; 8 | 9 | public class SongView extends RelativeLayout { 10 | 11 | private static final int[] STATE_PLAYING = {R.attr.state_playing}; 12 | private static final int[] STATE_PAUSED = {R.attr.state_paused}; 13 | 14 | private boolean mPlayingState = false; 15 | private boolean mPausedState = false; 16 | 17 | public SongView(Context context) { 18 | super(context); 19 | } 20 | 21 | public SongView(Context context, AttributeSet attrs) { 22 | super(context, attrs); 23 | } 24 | 25 | public SongView(Context context, AttributeSet attrs, int defStyleAttr) { 26 | super(context, attrs, defStyleAttr); 27 | } 28 | 29 | public SongView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { 30 | super(context, attrs, defStyleAttr, defStyleRes); 31 | } 32 | 33 | @Override 34 | protected int[] onCreateDrawableState(int extraSpace) { 35 | final int[] drawableState = super.onCreateDrawableState(extraSpace + 2); 36 | if (mPlayingState) { 37 | mergeDrawableStates(drawableState, STATE_PLAYING); 38 | } 39 | if (mPausedState) { 40 | mergeDrawableStates(drawableState, STATE_PAUSED); 41 | } 42 | return drawableState; 43 | } 44 | 45 | public void setPlayingState(boolean playingState) { 46 | mPlayingState = playingState; 47 | } 48 | 49 | public void setPausedState(boolean pausedState) { 50 | mPausedState = pausedState; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/color/category_text_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/color/play_pause_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/color/song_artist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 13 | 19 | 22 | 25 | 26 | 27 | 28 | 34 | 35 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/album_border.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/album_song_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/back_arrow_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/category_button_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/dashboard_player_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/drawable/icon.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/icon_album.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/drawable/icon_album.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/icon_album_drawable.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/icon_back_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/drawable/icon_back_dark.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/icon_back_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/drawable/icon_back_light.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/icon_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/drawable/icon_next.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/icon_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/drawable/icon_pause.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/icon_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/drawable/icon_play.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/icon_play_disabled.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/icon_prev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/drawable/icon_prev.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/icon_repeat_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/drawable/icon_repeat_dark.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/icon_repeat_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/drawable/icon_repeat_light.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/icon_shuffle_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/drawable/icon_shuffle_dark.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/icon_shuffle_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/drawable/icon_shuffle_light.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/icon_vol_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/drawable/icon_vol_down.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/icon_vol_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/drawable/icon_vol_up.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/play_pause.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/play_pause_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/repeat_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/shuffle_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/song_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/timing_seek_bar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/volume_seek_bar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/drawable/volume_seek_bar_thumb.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/font/titillium_web.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 13 | 14 | 18 | 19 | 23 | 24 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/font/titillium_web_black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/font/titillium_web_black.ttf -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/font/titillium_web_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/font/titillium_web_bold.ttf -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/font/titillium_web_bold_italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/font/titillium_web_bold_italic.ttf -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/font/titillium_web_extra_ligh_italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/font/titillium_web_extra_ligh_italic.ttf -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/font/titillium_web_extra_light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/font/titillium_web_extra_light.ttf -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/font/titillium_web_italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/font/titillium_web_italic.ttf -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/font/titillium_web_light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/font/titillium_web_light.ttf -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/font/titillium_web_light_italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/font/titillium_web_light_italic.ttf -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/font/titillium_web_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/font/titillium_web_regular.ttf -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/font/titillium_web_semi_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/font/titillium_web_semi_bold.ttf -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/font/titillium_web_semi_bold_italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/font/titillium_web_semi_bold_italic.ttf -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/layout/album_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 23 | 24 | 30 | 31 | 36 | 37 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/layout/back_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/layout/category_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 16 | 17 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/layout/category_buttons.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 15 | 16 | 24 | 25 | 33 | 34 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/layout/generic_list_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/layout/header.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 16 | 27 | 28 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/layout/item_album.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 | 25 | 26 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/layout/item_album_song.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 | 27 | 28 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/layout/item_artist.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 16 | 17 | 26 | 27 | 35 | 36 | 37 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/layout/item_artist_album.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 16 | 24 | 25 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/layout/item_genre.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 16 | 17 | 26 | 27 | 35 | 36 | 37 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/layout/item_song.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 16 | 23 | 24 | 30 | 31 | 32 | 33 | 44 | 45 | 51 | 52 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/layout/list_section.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 16 | 17 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/layout/main_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 16 | 17 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/layout/simple_list_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/layout/splash_screen_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 13 | 14 | 22 | 23 | 29 | 30 | 36 | 37 | 43 | 44 | 45 | 46 | 54 | 55 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Android/MusicPlayer/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/navigation/nav_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 15 | 16 | 20 | 21 | 25 | 26 | 30 | 31 | 35 | 36 | 40 | 41 | 45 | 46 | 50 | 51 | 55 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/values-sw600dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 45dp 4 | 95dp 5 | 160dp 6 | 200dp 7 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #00ade9 4 | #09102b 5 | #3a4055 6 | #cecfd5 7 | #848895 8 | #3d4257 9 | #282c43 10 | #7f09102b 11 | 12 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12sp 4 | 18sp 5 | 22sp 6 | 34sp 7 | 8 | // margin definitions 9 | 8dp 10 | 12dp 11 | 24dp 12 | 32dp 13 | 60dp 14 | 15 | // item sizes 16 | 40 17 | 56 18 | 80 19 | 20 | 23dp 21 | 45dp 22 | 95dp 23 | 160dp 24 | 25 | 80dp 26 | 32dp 27 | 28 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | MusicPlayer 3 | Music 4 | Player 5 | Genres 6 | Artists 7 | Albums 8 | Songs 9 | by 10 | In order to read your music files, MusicPlayer needs permission to access, read only, to your storage. 11 | Understood! 12 | Permission issue 13 | Fatal permission issue 14 | You choose to doesn\'t allow MusicPlayer to access on reading to your storage. We respect your decision but MusicPlayer cannot work properly under this condition. Accordingly, MusicPlayer is going to stop now. 15 | So long… 16 | ALL SONGS 17 | previous song 18 | play song 19 | next song 20 | now 21 | playing 22 | Album picture 23 | Volume down 24 | Data issue 25 | OK 26 | Selection of folder wasn\'t successful. Could you try again? 27 | ]]> 28 | shuffle button 29 | repeat button 30 | ALL ALBUMS 31 | back button 32 | Volume up 33 | ALL GENRES 34 | Album art 35 | Witekio Logo 36 | ALL ARTISTS 37 | 38 | -------------------------------------------------------------------------------- /Android/MusicPlayer/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Android/MusicPlayer/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | google() 6 | jcenter() 7 | 8 | } 9 | dependencies { 10 | classpath 'com.android.tools.build:gradle:3.5.3' 11 | 12 | // NOTE: Do not place your application dependencies here; they belong 13 | // in the individual module build.gradle files 14 | } 15 | } 16 | 17 | allprojects { 18 | repositories { 19 | google() 20 | jcenter() 21 | 22 | } 23 | } 24 | 25 | task clean(type: Delete) { 26 | delete rootProject.buildDir 27 | } 28 | -------------------------------------------------------------------------------- /Android/MusicPlayer/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx1536m 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | # AndroidX package structure to make it clearer which packages are bundled with the 15 | # Android operating system, and which are packaged with your app's APK 16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 17 | android.useAndroidX=true 18 | # Automatically convert third-party libraries to use AndroidX 19 | android.enableJetifier=true 20 | 21 | -------------------------------------------------------------------------------- /Android/MusicPlayer/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', 2 | ':musicplayerbackend' 3 | 4 | rootProject.name='MusicPlayer' 5 | project(':musicplayerbackend').projectDir = new File('../MusicPlayerBackend') -------------------------------------------------------------------------------- /Android/MusicPlayerBackend/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea 5 | .DS_Store 6 | /build 7 | /captures 8 | .externalNativeBuild 9 | -------------------------------------------------------------------------------- /Android/MusicPlayerBackend/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 29 5 | buildToolsVersion "29.0.2" 6 | defaultConfig { 7 | minSdkVersion 28 8 | targetSdkVersion 29 9 | versionCode 1 10 | versionName "1.0" 11 | 12 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 13 | } 14 | 15 | buildTypes { 16 | release { 17 | minifyEnabled false 18 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 19 | } 20 | } 21 | 22 | compileOptions { 23 | sourceCompatibility = 1.8 24 | targetCompatibility = 1.8 25 | } 26 | } 27 | 28 | dependencies { 29 | implementation fileTree(dir: 'libs', include: ['*.jar']) 30 | 31 | implementation 'androidx.appcompat:appcompat:1.1.0' 32 | implementation 'org.jetbrains:annotations:15.0' 33 | implementation 'androidx.documentfile:documentfile:1.0.1' 34 | 35 | } 36 | -------------------------------------------------------------------------------- /Android/MusicPlayerBackend/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /Android/MusicPlayerBackend/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Android/MusicPlayerBackend/src/main/java/com/witekio/whitepaper/musicplayer/backend/ParsingException.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.backend; 2 | 3 | class ParsingException extends Throwable { 4 | 5 | ParsingException(RuntimeException e) { 6 | super(e); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /Android/MusicPlayerBackend/src/main/java/com/witekio/whitepaper/musicplayer/backend/RetrieverHandler.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.backend; 2 | 3 | import android.content.Context; 4 | import android.media.MediaMetadataRetriever; 5 | import android.net.Uri; 6 | 7 | class RetrieverHandler implements AutoCloseable { 8 | 9 | private final MediaMetadataRetriever inner; 10 | 11 | RetrieverHandler(Context context, Uri uri) throws ParsingException { 12 | inner = new MediaMetadataRetriever(); 13 | setDataSource(context, uri); 14 | } 15 | 16 | @Override 17 | public void close() { 18 | inner.release(); 19 | } 20 | 21 | private void setDataSource(Context context, Uri uri) throws IllegalArgumentException, ParsingException { 22 | try { 23 | inner.setDataSource(context, uri); 24 | } catch (RuntimeException e) { 25 | throw new ParsingException(e); 26 | } 27 | } 28 | 29 | public String extractMetadata(int keyCode) { 30 | return inner.extractMetadata(keyCode); 31 | } 32 | 33 | public byte[] getEmbeddedPicture() { 34 | return inner.getEmbeddedPicture(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Android/MusicPlayerBackend/src/main/java/com/witekio/whitepaper/musicplayer/backend/model/Album.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.backend.model; 2 | 3 | import android.content.Context; 4 | import android.graphics.Bitmap; 5 | 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | import java.util.Objects; 9 | import java.util.function.Function; 10 | 11 | public class Album implements Comparable, Filterable { 12 | 13 | private final String mName; 14 | private final String mArtistName; 15 | private final String mGenre; 16 | private final Function mArtCallback; 17 | 18 | public Album(@NotNull String name, @NotNull String artistName, @NotNull String genre, @NotNull Function artCallback) { 19 | mName = name; 20 | mArtistName = artistName; 21 | mGenre = genre; 22 | mArtCallback = artCallback; 23 | } 24 | 25 | public String getName() { 26 | return mName; 27 | } 28 | 29 | public String getArtistName() { 30 | return mArtistName; 31 | } 32 | 33 | public Bitmap getArt(Context context) { 34 | return mArtCallback.apply(context); 35 | } 36 | 37 | @Override 38 | public int compareTo(Album o) { 39 | return mName.compareTo(o.mName); 40 | } 41 | 42 | @Override 43 | public boolean equals(Object o) { 44 | if (this == o) { 45 | return true; 46 | } 47 | if (!(o instanceof Album)) { 48 | return false; 49 | } 50 | Album album = (Album) o; 51 | return Objects.equals(mName, album.mName); 52 | } 53 | 54 | @Override 55 | public int hashCode() { 56 | return Objects.hash(mName); 57 | } 58 | 59 | @Override 60 | public String getField(FilterType filter) { 61 | switch (filter) { 62 | case ALBUM: 63 | return mName; 64 | case GENRE: 65 | return mGenre; 66 | case ARTIST: 67 | return mArtistName; 68 | default: 69 | throw new IllegalArgumentException("Filter " + filter + " doesn't exist for " + this.getClass()); 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /Android/MusicPlayerBackend/src/main/java/com/witekio/whitepaper/musicplayer/backend/model/Artist.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.backend.model; 2 | 3 | import org.jetbrains.annotations.NotNull; 4 | 5 | import java.util.Objects; 6 | 7 | public class Artist implements Comparable, Filterable { 8 | 9 | private final String mName; 10 | private final String mGenre; 11 | 12 | public Artist(@NotNull String name, @NotNull String genre) { 13 | mName = name; 14 | mGenre = genre; 15 | } 16 | 17 | public String getName() { 18 | return mName; 19 | } 20 | 21 | @Override 22 | public String getField(FilterType filter) { 23 | if (FilterType.GENRE.equals(filter)) { 24 | return mGenre; 25 | } else { 26 | throw new IllegalArgumentException("Filter " + filter + " doesn't exist for " + this.getClass()); 27 | } 28 | } 29 | 30 | @Override 31 | public int compareTo(Artist o) { 32 | return mName.compareTo(o.mName); 33 | } 34 | 35 | @Override 36 | public boolean equals(Object o) { 37 | if (this == o) { 38 | return true; 39 | } 40 | if (!(o instanceof Artist)) { 41 | return false; 42 | } 43 | Artist artist = (Artist) o; 44 | return Objects.equals(mName, artist.mName); 45 | } 46 | 47 | @Override 48 | public int hashCode() { 49 | return Objects.hash(mName); 50 | } 51 | 52 | } 53 | 54 | -------------------------------------------------------------------------------- /Android/MusicPlayerBackend/src/main/java/com/witekio/whitepaper/musicplayer/backend/model/Filter.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.backend.model; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import java.io.Serializable; 6 | 7 | public class Filter implements Serializable { 8 | 9 | private final FilterType mType; 10 | private final String mValue; 11 | 12 | public Filter(@NonNull FilterType type, @NonNull String value) { 13 | mType = type; 14 | mValue = value; 15 | } 16 | 17 | public String getValue() { 18 | return mValue; 19 | } 20 | 21 | public FilterType getType() { 22 | return mType; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Android/MusicPlayerBackend/src/main/java/com/witekio/whitepaper/musicplayer/backend/model/FilterType.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.backend.model; 2 | 3 | public enum FilterType { 4 | 5 | GENRE, 6 | ARTIST, 7 | ALBUM 8 | 9 | } 10 | -------------------------------------------------------------------------------- /Android/MusicPlayerBackend/src/main/java/com/witekio/whitepaper/musicplayer/backend/model/Filterable.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.backend.model; 2 | 3 | public interface Filterable { 4 | 5 | String getField(FilterType filter); 6 | } 7 | -------------------------------------------------------------------------------- /Android/MusicPlayerBackend/src/main/java/com/witekio/whitepaper/musicplayer/backend/model/TerFunction.java: -------------------------------------------------------------------------------- 1 | package com.witekio.whitepaper.musicplayer.backend.model; 2 | 3 | @FunctionalInterface 4 | public interface TerFunction { 5 | 6 | /** 7 | * Applies this function to the given arguments. 8 | * 9 | * @param t the first function argument 10 | * @param u the second function argument 11 | * @param v the third function argument 12 | * @return the function result 13 | */ 14 | R apply(T t, U u, V v); 15 | } 16 | -------------------------------------------------------------------------------- /Android/MusicPlayerBackend/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Backend 3 | 4 | -------------------------------------------------------------------------------- /Qt/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.gitignore.io/api/qt,qml,c++,qtcreator 2 | # Edit at https://www.gitignore.io/?templates=qt,qml,c++,qtcreator 3 | 4 | ### C++ ### 5 | # Prerequisites 6 | *.d 7 | 8 | # Compiled Object files 9 | *.slo 10 | *.lo 11 | *.o 12 | *.obj 13 | 14 | # Precompiled Headers 15 | *.gch 16 | *.pch 17 | 18 | # Compiled Dynamic libraries 19 | *.so 20 | *.dylib 21 | *.dll 22 | 23 | # Fortran module files 24 | *.mod 25 | *.smod 26 | 27 | # Compiled Static libraries 28 | *.lai 29 | *.la 30 | *.a 31 | *.lib 32 | 33 | # Executables 34 | *.exe 35 | *.out 36 | *.app 37 | 38 | ### QML ### 39 | # Cached binary representations of QML and JS files 40 | *.qmlc 41 | *.jsc 42 | 43 | ### Qt ### 44 | # C++ objects and libs 45 | 46 | # Qt-es 47 | object_script.*.Release 48 | object_script.*.Debug 49 | *_plugin_import.cpp 50 | /.qmake.cache 51 | /.qmake.stash 52 | *.pro.user 53 | *.pro.user.* 54 | *.qbs.user 55 | *.qbs.user.* 56 | *.moc 57 | moc_*.cpp 58 | moc_*.h 59 | qrc_*.cpp 60 | ui_*.h 61 | Makefile* 62 | *build-* 63 | 64 | # Qt unit tests 65 | target_wrapper.* 66 | 67 | # QtCreator 68 | *.autosave 69 | 70 | # QtCreator Qml 71 | *.qmlproject.user 72 | *.qmlproject.user.* 73 | 74 | # QtCreator CMake 75 | CMakeLists.txt.user* 76 | 77 | # QtCreator 4.8< compilation database 78 | compile_commands.json 79 | 80 | # QtCreator local machine specific files for imported projects 81 | *creator.user* 82 | 83 | ### QtCreator ### 84 | # gitignore for Qt Creator like IDE for pure C/C++ project without Qt 85 | # 86 | # Reference: http://doc.qt.io/qtcreator/creator-project-generic.html 87 | 88 | 89 | 90 | # Qt Creator autogenerated files 91 | 92 | 93 | # A listing of all the files included in the project 94 | *.files 95 | 96 | # Include directories 97 | *.includes 98 | 99 | # Project configuration settings like predefined Macros 100 | *.config 101 | 102 | # Qt Creator settings 103 | *.creator 104 | 105 | # User project settings 106 | *.creator.user* 107 | 108 | # Qt Creator backups 109 | 110 | # End of https://www.gitignore.io/api/qt,qml,c++,qtcreator 111 | 112 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayer2 components for PS Bridge.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayer2 components for PS Bridge.psd -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerApp.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | 3 | SUBDIRS += \ 4 | MusicPlayerUI \ 5 | MusicPlayerBackend 6 | 7 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerBackend/MusicPlayerBackend.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = lib 2 | TARGET = musicPlayerBackend 3 | QT += qml quick multimedia 4 | CONFIG += plugin c++11 5 | 6 | TARGET = $$qtLibraryTarget($$TARGET) 7 | uri = io.qt 8 | 9 | # Input 10 | SOURCES += \ 11 | albummodel.cpp \ 12 | artistmodel.cpp \ 13 | genremodel.cpp \ 14 | mediametadataparser.cpp \ 15 | musicplayerbackendplugin.cpp \ 16 | musicplayerbackend.cpp \ 17 | songmodel.cpp 18 | 19 | HEADERS += \ 20 | albummodel.h \ 21 | artistmodel.h \ 22 | genremodel.h \ 23 | mediametadataparser.h \ 24 | musicplayerbackendplugin.h \ 25 | musicplayerbackend.h \ 26 | songmodel.h 27 | 28 | DISTFILES += qmldir \ 29 | musicPlayer.qmltypes 30 | 31 | !equals(_PRO_FILE_PWD_, $$OUT_PWD) { 32 | copy_qmldir.target = $$OUT_PWD/qmldir 33 | copy_qmldir.depends = $$_PRO_FILE_PWD_/qmldir 34 | copy_qmldir.commands = $(COPY_FILE) \"$$replace(copy_qmldir.depends, /, $$QMAKE_DIR_SEP)\" \"$$replace(copy_qmldir.target, /, $$QMAKE_DIR_SEP)\" 35 | QMAKE_EXTRA_TARGETS += copy_qmldir 36 | PRE_TARGETDEPS += $$copy_qmldir.target 37 | } 38 | 39 | # DESTDIR = $$[QT_INSTALL_QML]/io/qt/ 40 | 41 | qmldir.files = qmldir \ 42 | musicPlayer.qmltypes 43 | 44 | unix|windows { 45 | installPath = $$[QT_INSTALL_QML]/$$replace(uri, \\., /) 46 | qmldir.path = $$installPath 47 | target.path = $$installPath 48 | INSTALLS += target qmldir 49 | } 50 | 51 | RESOURCES += 52 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerBackend/musicPlayerBackend.json: -------------------------------------------------------------------------------- 1 | { 2 | "Keys" : [ ] 3 | } 4 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerBackend/musicplayerbackendplugin.h: -------------------------------------------------------------------------------- 1 | /**************************************************************************** 2 | ** 3 | ** Copyright (C) 2019 The Qt Company Ltd. 4 | ** Contact: http://www.qt.io/licensing/ 5 | ** 6 | ** $QT_BEGIN_LICENSE:BSD$ 7 | ** You may use this file under the terms of the BSD license as follows: 8 | ** 9 | ** "Redistribution and use in source and binary forms, with or without 10 | ** modification, are permitted provided that the following conditions are 11 | ** met: 12 | ** * Redistributions of source code must retain the above copyright 13 | ** notice, this list of conditions and the following disclaimer. 14 | ** * Redistributions in binary form must reproduce the above copyright 15 | ** notice, this list of conditions and the following disclaimer in 16 | ** the documentation and/or other materials provided with the 17 | ** distribution. 18 | ** * Neither the name of The Qt Company Ltd nor the names of its 19 | ** contributors may be used to endorse or promote products derived 20 | ** from this software without specific prior written permission. 21 | ** 22 | ** 23 | ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24 | ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25 | ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 26 | ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 27 | ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 28 | ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 29 | ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 30 | ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 31 | ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 32 | ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 33 | ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." 34 | ** 35 | ** $QT_END_LICENSE$ 36 | ** 37 | ****************************************************************************/ 38 | 39 | #pragma once 40 | 41 | #include 42 | 43 | class MusicPlayerBackendPlugin : public QQmlExtensionPlugin 44 | { 45 | Q_OBJECT 46 | Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) 47 | 48 | public: 49 | void registerTypes(const char *uri) override; 50 | }; 51 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerBackend/qmldir: -------------------------------------------------------------------------------- 1 | module io.qt 2 | plugin musicPlayerBackend 3 | typeinfo musicPlayer.qmltypes 4 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerBackend/songs.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/AlbumsListView.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.12 2 | import QtQuick.Controls 2.3 3 | import QtQuick.Layouts 1.3 4 | import MusicPlayer2 1.0 5 | 6 | ListView { 7 | clip: true 8 | 9 | // backend req 10 | model: Constants.simulationMode ? artistModel : filteredAlbumModel 11 | 12 | delegate: AlbumListItem { 13 | iconWidth: Constants.tinyCell 14 | albumLabelColor: Constants.qtLightGrey 15 | // backend req 16 | albumLabel: albumName 17 | artistLabel: artistName 18 | albumArtSource: albumArt 19 | } 20 | focus: true 21 | 22 | // the list uses sections, where the first character of artistName of artistModel 23 | // is used to define in which section the artist belongs 24 | section.property: "albumName" 25 | section.criteria: ViewSection.FirstCharacter 26 | section.delegate: ListSectionHeader { 27 | sectionLabel: section 28 | // backendReq 29 | sectionCountLabel: Constants.simulationMode ? 999 : musicPlayerBackend.albumItemCount( 30 | section) 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/AlbumsView.ui.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.12 2 | import QtQuick.Controls 2.3 3 | import QtQuick.Layouts 1.3 4 | import MusicPlayer2 1.0 5 | 6 | // displays list of albums 7 | // - all albums 8 | // - selected genre (GenresView.ui.qml) 9 | Rectangle { 10 | id: albumsView 11 | 12 | property alias viewLabel: header.viewNameText 13 | 14 | width: displayArea.currWidth 15 | height: displayArea.currHeight 16 | 17 | color: showLayout ? "firebrick" : Constants.qtDarkBlue 18 | 19 | ViewHeader { 20 | id: header 21 | viewNameText: "ALL ALBUMS" 22 | } 23 | 24 | Rectangle { 25 | id: listBackground 26 | 27 | anchors.top: header.bottom 28 | anchors.right: parent.right 29 | anchors.bottom: parent.bottom 30 | anchors.left: parent.left 31 | 32 | anchors.topMargin: 0 33 | anchors.rightMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 34 | anchors.leftMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 35 | anchors.bottomMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 36 | 37 | color: Constants.qtDarkBlue 38 | 39 | AlbumsListView { 40 | id: albumsListView 41 | 42 | anchors.fill: parent 43 | } 44 | } 45 | } 46 | 47 | /*##^## Designer { 48 | D{i:0;autoSize:true;height:480;width:640} 49 | } 50 | ##^##*/ 51 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/AllSongsView.ui.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.12 2 | import QtQuick.Controls 2.3 3 | import QtQuick.Layouts 1.3 4 | import MusicPlayer2 1.0 5 | 6 | // displays a list of all songs 7 | Rectangle { 8 | id: songsView 9 | 10 | property alias viewLabel: header.viewNameText 11 | 12 | width: displayArea.currWidth 13 | height: displayArea.currHeight 14 | 15 | color: showLayout ? "firebrick" : Constants.qtDarkBlue 16 | 17 | ViewHeader { 18 | id: header 19 | viewNameText: "ALL SONGS" 20 | } 21 | 22 | Rectangle { 23 | id: listBackground 24 | 25 | anchors.top: header.bottom 26 | anchors.right: parent.right 27 | anchors.bottom: parent.bottom 28 | anchors.left: parent.left 29 | 30 | anchors.topMargin: 0 31 | anchors.rightMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 32 | anchors.leftMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 33 | anchors.bottomMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 34 | 35 | color: Constants.qtDarkBlue 36 | 37 | SongListView { 38 | id: songsListView 39 | 40 | anchors.fill: parent 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/ArtistAlbumsView.ui.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.12 2 | import QtQuick.Controls 2.3 3 | import QtQuick.Layouts 1.3 4 | import MusicPlayer2 1.0 5 | 6 | // displays the albums of the selected artist 7 | // uses GridView 8 | Rectangle { 9 | id: albumsView 10 | 11 | property alias viewLabel: header.viewNameText 12 | 13 | width: displayArea.currWidth 14 | height: displayArea.currHeight 15 | 16 | color: showLayout ? "firebrick" : Constants.qtDarkBlue 17 | 18 | ViewHeader { 19 | id: header 20 | viewNameText: "ARTIST NAME" 21 | } 22 | 23 | Rectangle { 24 | id: gridBackground 25 | 26 | anchors.top: header.bottom 27 | anchors.right: parent.right 28 | anchors.bottom: parent.bottom 29 | anchors.left: parent.left 30 | 31 | anchors.topMargin: 0 32 | anchors.rightMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 33 | anchors.leftMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 34 | anchors.bottomMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 35 | 36 | color: Constants.qtDarkBlue 37 | 38 | GridView { 39 | id: albumsGridView 40 | clip: true 41 | 42 | // this is a bit of a hack, because GridView component's implementation 43 | // need to define grid's width by defining number of columns and cell sizes that INCLUDE the margins 44 | width: cellWidth * 3 45 | height: parent.height 46 | 47 | anchors.centerIn: parent 48 | anchors.top: parent.top 49 | anchors.bottom: parent.bottom 50 | 51 | // Cell height and width includes margins. Actual item is smaller 52 | cellHeight: parent.width > Constants.breakpointWidth ? (Constants.normalCell + Constants.wideMargin) : (Constants.smallCell + Constants.normalMargin) 53 | cellWidth: parent.width > Constants.breakpointWidth ? (Constants.normalCell + Constants.wideMargin) : (Constants.smallCell + Constants.normalMargin) 54 | delegate: AlbumGridItem { 55 | albumLabel: albumName 56 | albumArtSource: albumArt 57 | } 58 | 59 | // backend req 60 | model: Constants.simulationMode ? artistModel : filteredAlbumModel // artistModel 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/ArtistsListView.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.12 2 | import QtQuick.Controls 2.3 3 | import QtQuick.Layouts 1.3 4 | import MusicPlayer2 1.0 5 | 6 | ListView { 7 | // backend req 8 | model: Constants.simulationMode ? artistModel : filteredArtistModel 9 | 10 | delegate: ArtistListItem { 11 | artistLabel: artistName 12 | 13 | // artist specific album and song counts comes from the back-end 14 | // backend req 15 | albumCountLabel: { 16 | if (Constants.simulationMode) 17 | 9 18 | else { 19 | musicPlayerBackend.setArtistFilter(artistName) 20 | filteredAlbumModel.rowCount() 21 | } 22 | } 23 | songCountLabel: { 24 | if (Constants.simulationMode) 25 | 99 26 | else 27 | filteredSongModel.rowCount() 28 | } 29 | } 30 | 31 | // the list uses sections, where the first character of artistName of artistModel 32 | // is used to define in which section the artist belongs 33 | section.property: "artistName" 34 | section.criteria: ViewSection.FirstCharacter 35 | section.delegate: ListSectionHeader { 36 | sectionLabel: section 37 | // backend req 38 | sectionCountLabel: { 39 | if (Constants.simulationMode) 40 | 99 41 | else 42 | musicPlayerBackend.artistItemCount(section) 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/ArtistsView.ui.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.12 2 | import QtQuick.Controls 2.3 3 | import QtQuick.Layouts 1.3 4 | import MusicPlayer2 1.0 5 | 6 | Rectangle { 7 | id: artistsView 8 | 9 | property alias viewLabel: header.viewNameText 10 | 11 | width: displayArea.currWidth 12 | height: displayArea.currHeight 13 | 14 | color: showLayout ? "firebrick" : Constants.qtDarkBlue 15 | 16 | ViewHeader { 17 | id: header 18 | viewNameText: "" 19 | } 20 | 21 | Rectangle { 22 | id: listBackground 23 | 24 | anchors.top: header.bottom 25 | anchors.right: parent.right 26 | anchors.bottom: parent.bottom 27 | anchors.left: parent.left 28 | 29 | anchors.topMargin: 0 30 | anchors.rightMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 31 | anchors.leftMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 32 | anchors.bottomMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 33 | 34 | color: Constants.qtDarkBlue 35 | clip: true 36 | 37 | ArtistsListView { 38 | id: artistsListView 39 | 40 | anchors.fill: parent 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/GenresListView.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.12 2 | import QtQuick.Controls 2.3 3 | import QtQuick.Layouts 1.3 4 | import MusicPlayer2 1.0 5 | 6 | // displays a list of genres 7 | ListView { 8 | delegate: GenreListItem { 9 | // backend req 10 | genreLabel: Constants.simulationMode ? albumGenre : genre // albumGenre 11 | albumCountLabel: { 12 | if (Constants.simulationMode) 13 | 999 14 | else { 15 | musicPlayerBackend.setGenreFilter(genreLabel) 16 | filteredAlbumModel.rowCount() 17 | } 18 | } 19 | artistCountLabel: { 20 | if (Constants.simulationMode) 21 | 99 22 | else 23 | filteredArtistModel.rowCount() 24 | } 25 | } 26 | 27 | model: Constants.simulationMode ? artistModel : genreModel // artistModel 28 | } 29 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/GenresView.ui.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.12 2 | import QtQuick.Controls 2.3 3 | import QtQuick.Layouts 1.3 4 | import MusicPlayer2 1.0 5 | 6 | // displays a list of genres 7 | Rectangle { 8 | id: genresView 9 | 10 | property alias viewLabel: header.viewNameText 11 | 12 | width: displayArea.currWidth 13 | height: displayArea.currHeight 14 | 15 | color: showLayout ? "firebrick" : Constants.qtDarkBlue 16 | 17 | ViewHeader { 18 | id: header 19 | viewNameText: "GENRES" 20 | } 21 | 22 | Rectangle { 23 | id: listBackground 24 | 25 | anchors.top: header.bottom 26 | anchors.right: parent.right 27 | anchors.bottom: parent.bottom 28 | anchors.left: parent.left 29 | 30 | anchors.topMargin: 0 31 | anchors.rightMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 32 | anchors.leftMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 33 | anchors.bottomMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 34 | 35 | color: Constants.qtDarkBlue 36 | clip: true 37 | 38 | GenresListView { 39 | id: genresListView 40 | 41 | anchors.fill: parent 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/IconButton.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.10 2 | import MusicPlayer2 1.0 3 | 4 | // a button with an icon 5 | // previous and next songs in PlayView.ui.qml 6 | Item { 7 | id: iconButton 8 | 9 | property alias iconSource: icon.source 10 | property alias buttonMouseArea: iconButtonMouseArea 11 | 12 | width: parent.width 13 | height: parent.height 14 | 15 | state: "" 16 | 17 | Image { 18 | id: icon 19 | 20 | width: parent.width 21 | height: parent.width 22 | anchors.centerIn: parent 23 | } 24 | 25 | MouseArea { 26 | id: iconButtonMouseArea 27 | anchors.fill: parent 28 | onPressed: { 29 | parent.state = "pressed" 30 | } 31 | onReleased: { 32 | parent.state = "released" 33 | } 34 | } 35 | 36 | states: [ 37 | State { 38 | name: "pressed" 39 | PropertyChanges { 40 | target: iconButton 41 | scale: 0.8 42 | } 43 | } 44 | ] 45 | 46 | transitions: [ 47 | Transition { 48 | NumberAnimation { 49 | properties: "scale" 50 | duration: 100 51 | } 52 | }, 53 | Transition { 54 | NumberAnimation { 55 | properties: "scale" 56 | duration: 100 57 | } 58 | } 59 | ] 60 | } 61 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/ListHighlight.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.12 2 | import MusicPlayer2 1.0 3 | 4 | // displays a background for a list item highlight 5 | Rectangle { 6 | width: parent.width 7 | height: Constants.listItemHeight 8 | 9 | color: Constants.qtMediumBlue 10 | 11 | Rectangle { 12 | width: 1 13 | height: parent.height 14 | color: Constants.qtLightGrey 15 | anchors.top: parent.top 16 | anchors.topMargin: 0 17 | anchors.left: parent.left 18 | anchors.leftMargin: 0 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/ListSectionHeader.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.12 2 | import MusicPlayer2 1.0 3 | 4 | // header used for separating the sections in the lists of the following views 5 | // - AlbumsView.ui.qml 6 | // - AllSongsView.ui.qml 7 | // - ArtistsView.ui.qml 8 | Rectangle { 9 | id: rectangle 10 | 11 | property alias sectionLabel: sectionText.text 12 | property alias sectionCountLabel: sectionCountText.text 13 | 14 | width: parent.width 15 | height: Constants.listSectionHeight 16 | 17 | color: Constants.qtDarkGrey 18 | 19 | Text { 20 | id: sectionText 21 | text: "" 22 | verticalAlignment: Text.AlignVCenter 23 | anchors.verticalCenter: parent.verticalCenter 24 | anchors.left: parent.left 25 | anchors.leftMargin: parent.width > Constants.breakpointWidth ? Constants.normalMargin : Constants.tinyMargin 26 | font { 27 | pixelSize: Constants.smallFontSize 28 | family: Constants.qtFontBold.name 29 | bold: true 30 | } 31 | color: Constants.qtLightGrey 32 | elide: Text.ElideRight 33 | } 34 | Text { 35 | id: sectionCountText 36 | text: qsTr("999") 37 | horizontalAlignment: Text.AlignRight 38 | verticalAlignment: Text.AlignVCenter 39 | anchors.verticalCenter: parent.verticalCenter 40 | anchors.right: parent.right 41 | anchors.rightMargin: parent.width > Constants.breakpointWidth ? Constants.normalMargin : Constants.tinyMargin 42 | font { 43 | pixelSize: Constants.smallFontSize 44 | family: Constants.qtFontRegular.name 45 | } 46 | color: Constants.qtLightGrey 47 | elide: Text.ElideRight 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/MusicPlayer2.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.10 2 | import MusicPlayer2 1.0 3 | 4 | Item { 5 | width: Constants.width 6 | height: Constants.height 7 | 8 | AppView {} 9 | } 10 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/MusicPlayer2.qmlproject: -------------------------------------------------------------------------------- 1 | /* File generated by Qt Creator */ 2 | 3 | import QmlProject 1.1 4 | 5 | Project { 6 | mainFile: "MusicPlayer2.qml" 7 | 8 | /* Include .qml, .js, and image files from current directory and subdirectories */ 9 | QmlFiles { 10 | directory: "." 11 | } 12 | 13 | JavaScriptFiles { 14 | directory: "." 15 | } 16 | 17 | ImageFiles { 18 | directory: "." 19 | } 20 | 21 | Files { 22 | filter: "*.conf" 23 | files: ["qtquickcontrols2.conf"] 24 | } 25 | 26 | Files { 27 | filter: "qmldir" 28 | directory: "." 29 | } 30 | 31 | Environment { 32 | QT_QUICK_CONTROLS_CONF: "qtquickcontrols2.conf" 33 | QT_AUTO_SCREEN_SCALE_FACTOR: "1" 34 | } 35 | 36 | /* List of plugin directories passed to QML runtime */ 37 | importPaths: [ "imports" , "/Users/Shared/Qt/5.12.3/clang_64/qml" ] 38 | // Adding a real backend path seems to crash the qmlscene 39 | 40 | /* Required for deployment */ 41 | targetDirectory: "/opt/MusicPlayer2" 42 | } 43 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/ResolutionsComboBox.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.10 2 | import QtQuick.Controls 2.5 3 | import MusicPlayer2 1.0 4 | 5 | // displays a combobox for selecting different resolutions 6 | ComboBox { 7 | id: control 8 | height: 30 9 | rightPadding: 0 10 | width: 140 11 | 12 | font { 13 | family: Constants.qtFontRegular.name 14 | pixelSize: Constants.smallFontSize 15 | } 16 | textRole: "key" 17 | 18 | // model for the resolutions 19 | // - key = name in the combobox 20 | // - width 21 | // - height 22 | model: ListModel { 23 | id: resoModel 24 | ListElement { 25 | key: "5:4 (SXGA)" 26 | width: "1024" 27 | height: "1280" 28 | } 29 | ListElement { 30 | key: "8:5 (WXGA)" 31 | width: "800" 32 | height: "1280" 33 | } 34 | ListElement { 35 | key: "4:3 (XGA)" 36 | width: "768" 37 | height: "1024" 38 | } 39 | ListElement { 40 | key: "16:9 (HD720)" 41 | width: "720" 42 | height: "1280" 43 | } 44 | ListElement { 45 | key: "16:9 (WVGA)" 46 | width: "480" 47 | height: "854" 48 | } 49 | ListElement { 50 | key: "3:2" 51 | width: "480" 52 | height: "720" 53 | } 54 | ListElement { 55 | key: "4:3 (VGA)" 56 | width: "480" 57 | height: "640" 58 | } 59 | } 60 | onActivated: { 61 | displayArea.currWidth = resoModel.get(currentIndex).width 62 | displayArea.currHeight = resoModel.get(currentIndex).height 63 | } 64 | } 65 | 66 | /*##^## Designer { 67 | D{i:0;height:24;width:140} 68 | } 69 | ##^##*/ 70 | 71 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/SongListView.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.12 2 | import QtQuick.Controls 2.3 3 | import QtQuick.Layouts 1.3 4 | import MusicPlayer2 1.0 5 | 6 | ListView { 7 | clip: true 8 | 9 | // backend req 10 | model: Constants.simulationMode ? albumModel : filteredSongModel // albumModel 11 | 12 | delegate: SongListItem { 13 | albumArtSource: albumArt 14 | songLabelColor: ListView.isCurrentItem ? Constants.qtGreen : Constants.qtLightGrey 15 | songLabel: songName 16 | artistLabel: artistName 17 | albumLabel: albumName 18 | totalDuration: duration 19 | audioFileUrl: Constants.simulationMode ? "" : audioFile 20 | 21 | // show play/pause icon only for selected song 22 | showPlayIcon: ListView.isCurrentItem ? 1 : 0 23 | } 24 | focus: true 25 | 26 | section.property: "artistName" 27 | section.criteria: ViewSection.FirstCharacter 28 | section.delegate: ListSectionHeader { 29 | sectionLabel: section 30 | sectionCountLabel: { 31 | if (Constants.simulationMode) 32 | 9999 33 | else 34 | musicPlayerBackend.songItemCount(section) 35 | } 36 | } 37 | highlight: ListHighlight {} 38 | } 39 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/SplashView.ui.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.12 2 | import MusicPlayer2 1.0 3 | 4 | // displays the splash screen in ScreenArea.qml when the app is started 5 | 6 | Rectangle { 7 | id: rectangle 8 | 9 | color: Constants.qtDarkBlue 10 | 11 | Item { 12 | id: element 13 | height: musicLabel.height + playerLabel.height + qtIcon.height 14 | anchors.verticalCenterOffset: -72 15 | anchors.verticalCenter: parent.verticalCenter 16 | anchors.horizontalCenter: parent.horizontalCenter 17 | 18 | Text { 19 | id: musicLabel 20 | font { 21 | pixelSize: Constants.largeFontSize 22 | bold: true 23 | family: Constants.qtFontBold.name 24 | } 25 | color: Constants.qtGreen 26 | text: "MUSIC " 27 | verticalAlignment: Text.AlignBottom 28 | anchors.top: parent.top 29 | anchors.topMargin: 0 30 | anchors.horizontalCenter: parent.horizontalCenter 31 | } 32 | Text { 33 | id: playerLabel 34 | font { 35 | pixelSize: Constants.largeFontSize 36 | family: Constants.qtFontRegular.name 37 | } 38 | color: Constants.qtLightGrey 39 | text: "PLAYER" 40 | verticalAlignment: Text.AlignTop 41 | anchors.top: musicLabel.bottom 42 | anchors.topMargin: -12 43 | anchors.horizontalCenter: parent.horizontalCenter 44 | } 45 | Text { 46 | id: byLabel 47 | font { 48 | pixelSize: Constants.smallFontSize 49 | family: Constants.qtFontRegular.name 50 | } 51 | text: "by" 52 | verticalAlignment: Text.AlignVCenter 53 | anchors.top: playerLabel.bottom 54 | anchors.topMargin: Constants.normalMargin 55 | color: Constants.qtLightGrey 56 | anchors.horizontalCenter: playerLabel.horizontalCenter 57 | } 58 | Image { 59 | id: qtIcon 60 | x: 149 61 | anchors.top: byLabel.bottom 62 | anchors.topMargin: Constants.wideMargin 63 | anchors.horizontalCenter: parent.horizontalCenter 64 | source: "assets/icon_qt.png" 65 | } 66 | } 67 | } 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | /*##^## Designer { 77 | D{i:0;autoSize:true;height:480;width:640}D{i:3;anchors_y:0}D{i:5;anchors_y:163} 78 | } 79 | ##^##*/ 80 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/ViewHeader.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.12 2 | import MusicPlayer2 1.0 3 | 4 | Rectangle { 5 | id: headerRow 6 | property alias viewNameText: headerText.text 7 | 8 | color: showLayout ? "darkviolet" : Constants.qtDarkBlue 9 | 10 | anchors.left: parent.left 11 | anchors.leftMargin: 0 12 | anchors.top: parent.top 13 | anchors.topMargin: 0 14 | 15 | height: Constants.smallButton + 2 16 | * (parent.width 17 | > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin) 18 | width: parent.width 19 | 20 | z: 10 21 | 22 | NavigationButton { 23 | id: backButton 24 | anchors.top: parent.top 25 | anchors.topMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 26 | anchors.left: parent.left 27 | anchors.leftMargin: parent.width > Constants.breakpointWidth ? Constants.wideMargin : Constants.normalMargin 28 | 29 | lightIconSource: "assets/icon_back_light.png" 30 | darkIconSource: "assets/icon_back_dark.png" 31 | } 32 | 33 | Text { 34 | id: headerText 35 | font { 36 | pixelSize: Constants.largeFontSize 37 | family: Constants.qtFontBold.name 38 | bold: true 39 | } 40 | color: Constants.qtLightGrey 41 | horizontalAlignment: Text.AlignHCenter 42 | anchors.verticalCenter: backButton.verticalCenter 43 | 44 | anchors.left: backButton.right 45 | anchors.leftMargin: Constants.smallMargin 46 | anchors.right: parent.right 47 | anchors.rightMargin: Constants.wideMargin + 12 48 | 49 | elide: Text.ElideRight 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_album.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_album.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_back_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_back_dark.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_back_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_back_light.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_builtWithQt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_builtWithQt.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_close_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_close_dark.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_close_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_close_light.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_next.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_pause.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_play.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_prev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_prev.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_qt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_qt.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_repeat_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_repeat_dark.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_repeat_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_repeat_light.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_shuffle_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_shuffle_dark.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_shuffle_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_shuffle_light.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_vol_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_vol_down.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_vol_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/assets/icon_vol_up.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/MusicPlayer2/Constants.qml: -------------------------------------------------------------------------------- 1 | pragma Singleton 2 | 3 | import QtQuick 2.10 4 | 5 | QtObject { 6 | // Use the simulated backend 7 | readonly property bool simulationMode: false 8 | 9 | // size for AppView 10 | readonly property int width: 1200 11 | readonly property int height: 1310 12 | 13 | // small - large screen breakpoints 14 | readonly property int breakpointWidth: 480 15 | readonly property int breakpointHeight: 720 16 | 17 | // fonts 18 | readonly property FontLoader qtFontBold: QtFontBold {} 19 | readonly property FontLoader qtFontRegular: QtFontRegular {} 20 | 21 | readonly property FontLoader mySystemFont: FontLoader { 22 | name: "Arial" 23 | } 24 | 25 | readonly property font font: Qt.font({ 26 | "family": mySystemFont.name, 27 | "pointSize": Qt.application.font.pixelSize 28 | }) 29 | readonly property font largeFont: Qt.font({ 30 | "family": mySystemFont.name, 31 | "pointSize": Qt.application.font.pixelSize * 1.6 32 | }) 33 | 34 | // color definitions 35 | readonly property color qtDarkBlue: "#09102b" 36 | readonly property color qtMediumBlue: "#222840" 37 | readonly property color qtGreen: "#17a81a" 38 | readonly property color qtDarkGrey: "#3a4055" 39 | readonly property color qtLightGrey: "#cecfd5" 40 | 41 | // font size definitions 42 | readonly property int tinyFontSize: 12 43 | readonly property int smallFontSize: 18 44 | readonly property int normalFontSize: 24 45 | readonly property int largeFontSize: 36 46 | 47 | // margin definitions 48 | readonly property int tinyMargin: 8 49 | readonly property int smallMargin: 12 50 | readonly property int normalMargin: 24 51 | readonly property int largeMargin: 32 52 | readonly property int wideMargin: 60 53 | 54 | // item sizes 55 | readonly property int smallButton: 40 56 | readonly property int normalButton: 56 57 | readonly property int largeButton: 80 58 | 59 | readonly property int tinyCell: 56 60 | readonly property int smallCell: 120 61 | readonly property int normalCell: 200 62 | readonly property int largeCell: 260 63 | 64 | readonly property int listItemHeight: 80 65 | readonly property int listSectionHeight: 32 66 | } 67 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/MusicPlayer2/QtFontBold.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.10 2 | 3 | FontLoader { 4 | source: "TitilliumWeb-Bold.ttf" 5 | } 6 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/MusicPlayer2/QtFontRegular.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.10 2 | 3 | FontLoader { 4 | source: "TitilliumWeb-Regular.ttf" 5 | } 6 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/MusicPlayer2/TitilliumWeb-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/MusicPlayer2/TitilliumWeb-Bold.ttf -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/MusicPlayer2/TitilliumWeb-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/MusicPlayer2/TitilliumWeb-Regular.ttf -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/MusicPlayer2/qmldir: -------------------------------------------------------------------------------- 1 | singleton Constants 1.0 Constants.qml 2 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/FlipableItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.9 2 | 3 | Flipable { 4 | id: flipable 5 | width: 240 6 | height: 240 7 | 8 | property alias flipAngle: rotation.angle 9 | property real opacityFront: 1 10 | property real opacityBack: 1 11 | property int xAxis: 0 12 | property int yAxis: 1 13 | 14 | Binding { 15 | target: flipable.front 16 | value: opacityFront 17 | property: "opacity" 18 | when: flipable.front !== undefined 19 | } 20 | 21 | Binding { 22 | target: flipable.back 23 | value: opacityBack 24 | property: "opacity" 25 | when: flipable.back !== undefined 26 | } 27 | 28 | property bool flipped: false 29 | 30 | Component.onCompleted: { 31 | flipable.front = flipable.children[0] 32 | flipable.back = flipable.children[1] 33 | } 34 | 35 | transform: Rotation { 36 | id: rotation 37 | origin.x: flipable.width / 2 38 | origin.y: flipable.height / 2 39 | axis.x: flipable.xAxis 40 | axis.y: flipable.yAxis 41 | axis.z: 0 42 | angle: 0 // the default angle 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/IsoItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import QtQuick 2.9 3 | import QtQuick.Extras 1.4 4 | 5 | Picture {} 6 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/RectangleItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.10 2 | import QtQuick.Shapes 1.0 3 | 4 | Shape { 5 | id: root 6 | width: 200 7 | height: 150 8 | 9 | property int radius: 10 10 | 11 | property int topLeftRadius: radius 12 | property int bottomLeftRadius: radius 13 | property int topRightRadius: radius 14 | property int bottomRightRadius: radius 15 | 16 | property alias gradient: path.fillGradient 17 | property alias strokeStyle: path.strokeStyle 18 | property alias strokeWidth: path.strokeWidth 19 | property alias strokeColor: path.strokeColor 20 | property alias dashPattern: path.dashPattern 21 | property alias joinStyle: path.joinStyle 22 | property alias fillColor: path.fillColor 23 | property alias dashOffset: path.dashOffset 24 | 25 | property bool antialiasing: false 26 | layer.enabled: antialiasing 27 | layer.smooth: antialiasing 28 | layer.textureSize: Qt.size(width * 2, height * 2) 29 | 30 | Item { 31 | anchors.fill: parent 32 | anchors.margins: -root.strokeWidth / 2 33 | } 34 | 35 | ShapePath { 36 | id: path 37 | joinStyle: ShapePath.MiterJoin 38 | 39 | strokeWidth: 4 40 | strokeColor: "red" 41 | 42 | startX: root.topLeftRadius 43 | startY: 0 44 | 45 | PathLine { 46 | x: root.width - root.topRightRadius 47 | y: 0 48 | } 49 | 50 | PathArc { 51 | x: root.width 52 | y: root.topRightRadius 53 | radiusX: root.topRightRadius 54 | radiusY: root.topRightRadius 55 | } 56 | 57 | PathLine { 58 | x: root.width 59 | y: root.height - root.bottomRightRadius 60 | } 61 | 62 | PathArc { 63 | x: root.width - root.bottomRightRadius 64 | y: root.height 65 | radiusX: root.bottomRightRadius 66 | radiusY: root.bottomRightRadius 67 | } 68 | 69 | PathLine { 70 | x: root.bottomLeftRadius 71 | y: root.height 72 | } 73 | 74 | PathArc { 75 | x: 0 76 | y: root.height - root.bottomLeftRadius 77 | radiusX: root.bottomLeftRadius 78 | radiusY: root.bottomLeftRadius 79 | } 80 | PathLine { 81 | x: 0 82 | y: root.topLeftRadius 83 | } 84 | 85 | PathArc { 86 | x: root.topLeftRadius 87 | y: 0 88 | radiusX: root.topLeftRadius 89 | radiusY: root.topLeftRadius 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/SvgPathItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import QtQuick.Timeline 1.0 3 | import QtQuick.Shapes 1.0 4 | 5 | Shape { 6 | width: 200 7 | height: 200 8 | 9 | property alias gradient: shape.fillGradient 10 | property alias strokeStyle: shape.strokeStyle 11 | property alias strokeWidth: shape.strokeWidth 12 | property alias strokeColor: shape.strokeColor 13 | property alias dashPattern: shape.dashPattern 14 | property alias joinStyle: shape.joinStyle 15 | property alias fillColor: shape.fillColor 16 | property alias path: pathSvg.path 17 | property alias dashOffset: shape.dashOffset 18 | 19 | property bool antialiasing: false 20 | layer.enabled: antialiasing 21 | layer.smooth: antialiasing 22 | layer.textureSize: Qt.size(width * 2, height * 2) 23 | 24 | id: svgPathItem 25 | 26 | ShapePath { 27 | id: shape 28 | strokeWidth: 4 29 | strokeColor: "red" 30 | 31 | PathSvg { 32 | id: pathSvg 33 | 34 | path: "M91,70.6c4.6,0,8.6,2.4,10.9,6.3l19.8,34.2c2.3,3.9,2.3,8.7,0,12.6c-2.3,3.9-6.4,6.3-10.9,6.3H71.2 c-4.6,0-8.6-2.4-10.9-6.3c-2.3-3.9-2.3-8.7,0-12.6l19.8-34.2C82.4,72.9,86.4,70.6,91,70.6 M91,69.6c-4.6,0-9.2,2.3-11.8,6.8l-19.8,34.2c-5.2,9.1,1.3,20.4,11.8,20.4h39.5c10.5,0,17-11.3,11.8-20.4l-19.8-34.2C100.2,71.9,95.6,69.6,91,69.6L91,69.6z" 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/IsoItemSpecifics.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import HelperWidgets 2.0 3 | import QtQuick.Layouts 1.0 4 | 5 | Column { 6 | anchors.left: parent.left 7 | anchors.right: parent.right 8 | 9 | Section { 10 | anchors.left: parent.left 11 | anchors.right: parent.right 12 | caption: qsTr("Icon Color") 13 | 14 | ColorEditor { 15 | caption: qsTr("Icon Color") 16 | backendValue: backendValues.color 17 | supportGradient: false 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/custom-border-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/custom-border-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/custom-border-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/custom-border-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/custom-border-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/custom-border-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/custom-rectangle-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/custom-rectangle-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/custom-rectangle-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/custom-rectangle-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/custom-rectangle-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/custom-rectangle-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/iso-icons-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/iso-icons-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/iso-icons-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/iso-icons-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/iso-icons-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/iso-icons-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-arc-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-arc-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-arc-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-arc-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-arc-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-arc-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-flippable-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-flippable-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-flippable-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-flippable-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-flippable-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-flippable-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-pie-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-pie-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-pie-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-pie-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-pie-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-pie-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-svg-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-svg-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-svg-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-svg-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-svg-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-svg-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-triangle-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-triangle-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-triangle-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-triangle-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-triangle-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/designer/images/item-triangle-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Components/qmldir: -------------------------------------------------------------------------------- 1 | ArcItem 1.0 ArcItem.qml 2 | PieItem 1.0 PieItem.qml 3 | TriangleItem 1.0 TriangleItem.qml 4 | SvgPathItem 1.0 SvgPathItem.qml 5 | FlipableItem 1.0 FlipableItem.qml 6 | RectangleItem 1.0 RectangleItem.qml 7 | BorderItem 1.0 BorderItem.qml 8 | IsoItem 1.0 IsoItem.qml 9 | 10 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/BlendItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import QtGraphicalEffects 1.0 3 | 4 | Item { 5 | id: root 6 | 7 | default property alias contentStack: stack.children 8 | property alias mode: blend.mode 9 | 10 | implicitWidth: Math.max(32, stack.implicitWidth) 11 | implicitHeight: Math.max(32, stack.implicitHeight) 12 | 13 | Item { 14 | z: -1 15 | id: stack 16 | implicitWidth: blend.source.width + blend.source.x 17 | implicitHeight: blend.source.height + blend.source.y 18 | 19 | visible: false 20 | } 21 | 22 | Blend { 23 | id: blend 24 | anchors.fill: parent 25 | mode: "subtract" 26 | source: root.background 27 | foregroundSource: root.foreground 28 | } 29 | 30 | property Item background 31 | property Item foreground 32 | 33 | property Item foo: Item {} 34 | 35 | Component.onCompleted: { 36 | root.background = stack.children[0] 37 | root.foreground = stack.children[1] 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/BrightnessContrastItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import QtGraphicalEffects 1.0 3 | 4 | Item { 5 | id: root 6 | 7 | default property alias contentStack: stack.children 8 | 9 | property alias brightness: brightCont.brightness 10 | property alias contrast: brightCont.contrast 11 | property alias cached: brightCont.cached 12 | 13 | implicitWidth: Math.max(32, stack.implicitWidth) 14 | implicitHeight: Math.max(32, stack.implicitHeight) 15 | 16 | Item { 17 | id: stack 18 | implicitWidth: childrenRect.width + childrenRect.x 19 | implicitHeight: childrenRect.height + childrenRect.y 20 | visible: false 21 | } 22 | 23 | BrightnessContrast { 24 | id: brightCont 25 | anchors.fill: stack 26 | source: stack 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/ColorOverlayItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import QtGraphicalEffects 1.0 3 | 4 | Item { 5 | id: root 6 | 7 | default property alias content: stack.children 8 | 9 | property alias overlayColor: colorOverlay.color 10 | property alias cached: colorOverlay.cached 11 | 12 | implicitWidth: Math.max(32, stack.implicitWidth) 13 | implicitHeight: Math.max(32, stack.implicitHeight) 14 | 15 | Item { 16 | id: stack 17 | 18 | implicitWidth: childrenRect.width + childrenRect.x 19 | implicitHeight: childrenRect.height + childrenRect.y 20 | 21 | visible: false 22 | } 23 | 24 | ColorOverlay { 25 | id: colorOverlay 26 | anchors.fill: stack 27 | source: stack 28 | color: "#80fff000" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/ColorizeItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import QtGraphicalEffects 1.0 3 | 4 | Item { 5 | id: root 6 | 7 | default property alias contentStack: stack.children 8 | property alias colorizeHue: colorize.hue 9 | property alias colorizeSaturation: colorize.saturation 10 | property alias colorizeLightness: colorize.lightness 11 | property alias cached: colorize.cached 12 | 13 | implicitWidth: Math.max(32, stack.implicitWidth) 14 | implicitHeight: Math.max(32, stack.implicitHeight) 15 | 16 | Item { 17 | id: stack 18 | implicitWidth: childrenRect.width + childrenRect.x 19 | implicitHeight: childrenRect.height + childrenRect.y 20 | 21 | visible: false 22 | } 23 | 24 | Colorize { 25 | id: colorize 26 | anchors.fill: stack 27 | source: stack 28 | hue: 0.0 29 | saturation: 0 30 | lightness: 0 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/DirectionalBlurItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import QtGraphicalEffects 1.0 3 | 4 | Item { 5 | id: root 6 | 7 | default property alias contentStack: stack.children 8 | 9 | property alias directionalBlurAngle: directionalBlur.angle 10 | property alias directionalBlurLength: directionalBlur.length 11 | property alias directionalBlurSamples: directionalBlur.samples 12 | property alias directionalBlurBorder: directionalBlur.transparentBorder 13 | property alias cached: directionalBlur.cached 14 | 15 | implicitWidth: Math.max(32, stack.implicitWidth) 16 | implicitHeight: Math.max(32, stack.implicitHeight) 17 | 18 | Item { 19 | id: stack 20 | implicitWidth: childrenRect.width + childrenRect.x 21 | implicitHeight: childrenRect.height + childrenRect.y 22 | 23 | visible: false 24 | } 25 | 26 | DirectionalBlur { 27 | id: directionalBlur 28 | anchors.fill: stack 29 | source: stack 30 | angle: 90 31 | length: 32 32 | samples: 16 33 | transparentBorder: true 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/DropShadowItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import QtGraphicalEffects 1.0 3 | 4 | Item { 5 | id: root 6 | 7 | default property alias contentStack: stack.children 8 | property alias horizontalOffset: dropShadow.horizontalOffset 9 | property alias verticalOffset: dropShadow.verticalOffset 10 | property alias radius: dropShadow.radius 11 | property alias samples: dropShadow.samples 12 | property alias spread: dropShadow.spread 13 | property alias transparentBorder: dropShadow.transparentBorder 14 | property alias color: dropShadow.color 15 | property alias cached: dropShadow.cached 16 | 17 | implicitWidth: Math.max(32, stack.implicitWidth) 18 | implicitHeight: Math.max(32, stack.implicitHeight) 19 | 20 | Item { 21 | id: stack 22 | implicitWidth: childrenRect.width + childrenRect.x 23 | implicitHeight: childrenRect.height + childrenRect.y 24 | 25 | visible: false 26 | } 27 | 28 | DropShadow { 29 | id: dropShadow 30 | anchors.fill: stack 31 | source: stack 32 | horizontalOffset: 3 33 | verticalOffset: 3 34 | radius: 8.0 35 | samples: 17 36 | spread: 4 37 | transparentBorder: true 38 | color: "#80000000" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/FastBlurItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.8 2 | import QtGraphicalEffects 1.0 3 | 4 | Item { 5 | id: root 6 | 7 | layer.enabled: true 8 | 9 | default property alias contentStack: stack.children 10 | property alias radius: blur.radius 11 | property alias transparentBorder: blur.transparentBorder 12 | property alias cached: blur.cached 13 | 14 | implicitWidth: Math.max(32, stack.implicitWidth) 15 | implicitHeight: Math.max(32, stack.implicitHeight) 16 | 17 | Item { 18 | id: stack 19 | 20 | implicitWidth: childrenRect.width + childrenRect.x 21 | implicitHeight: childrenRect.height + childrenRect.y 22 | } 23 | 24 | FastBlur { 25 | id: blur 26 | 27 | transparentBorder: true 28 | anchors.fill: stack 29 | source: stack 30 | radius: 12 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/GaussianBlurItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import QtGraphicalEffects 1.0 3 | 4 | Item { 5 | id: root 6 | 7 | default property alias content: stack.children 8 | property alias gaussianBlurRadius: gaussianBlur.radius 9 | property alias gaussianBlurSamples: gaussianBlur.samples 10 | 11 | implicitWidth: Math.max(32, stack.implicitWidth) 12 | implicitHeight: Math.max(32, stack.implicitHeight) 13 | 14 | Item { 15 | implicitWidth: contentItem.width 16 | implicitHeight: contentItem.height 17 | visible: true 18 | id: stack 19 | } 20 | 21 | GaussianBlur { 22 | id: gaussianBlur 23 | anchors.fill: stack 24 | source: stack 25 | radius: 32 26 | samples: 16 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/GlowItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import QtGraphicalEffects 1.0 3 | 4 | Item { 5 | id: root 6 | 7 | default property alias contentStack: stack.children 8 | property alias radius: glow.radius 9 | property alias samples: glow.samples 10 | property alias spread: glow.spread 11 | property alias color: glow.color 12 | property alias transparentBorder: glow.transparentBorder 13 | property alias cached: glow.cached 14 | 15 | implicitWidth: Math.max(32, stack.implicitWidth) 16 | implicitHeight: Math.max(32, stack.implicitHeight) 17 | 18 | Item { 19 | id: stack 20 | implicitWidth: childrenRect.width + childrenRect.x 21 | implicitHeight: childrenRect.height + childrenRect.y 22 | visible: false 23 | } 24 | 25 | Glow { 26 | id: glow 27 | anchors.fill: stack 28 | radius: 5 29 | samples: 16 30 | spread: 0.5 31 | color: "#ffffffff" 32 | transparentBorder: true 33 | source: stack 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/HueSaturationItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import QtGraphicalEffects 1.0 3 | 4 | Item { 5 | id: root 6 | 7 | default property alias contentStack: stack.children 8 | property alias adjustHue: hueSat.hue 9 | property alias adjustSaturation: hueSat.saturation 10 | property alias adjustLightness: hueSat.lightness 11 | property alias cached: hueSat.cached 12 | 13 | implicitWidth: Math.max(32, stack.implicitWidth) 14 | implicitHeight: Math.max(32, stack.implicitHeight) 15 | 16 | Item { 17 | id: stack 18 | implicitWidth: childrenRect.width + childrenRect.x 19 | implicitHeight: childrenRect.height + childrenRect.y 20 | 21 | visible: false 22 | } 23 | 24 | HueSaturation { 25 | id: hueSat 26 | anchors.fill: stack 27 | source: stack 28 | hue: 0.0 29 | saturation: 0.5 30 | lightness: -0.2 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/MaskItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import QtGraphicalEffects 1.0 3 | 4 | Item { 5 | id: root 6 | 7 | default property alias contentStack: stack.children 8 | property alias invert: blend.invert 9 | 10 | implicitWidth: Math.max(32, stack.implicitWidth) 11 | implicitHeight: Math.max(32, stack.implicitHeight) 12 | 13 | Item { 14 | z: -1 15 | id: stack 16 | implicitWidth: blend.source.width + blend.source.x 17 | implicitHeight: blend.source.height + blend.source.y 18 | 19 | visible: false 20 | } 21 | 22 | OpacityMask { 23 | id: blend 24 | anchors.fill: parent 25 | source: root.background 26 | maskSource: root.foreground 27 | } 28 | 29 | property Item background 30 | property Item foreground 31 | 32 | property Item foo: Item {} 33 | 34 | Component.onCompleted: { 35 | root.background = stack.children[0] 36 | root.foreground = stack.children[1] 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/MaskedBlurItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import QtGraphicalEffects 1.0 3 | 4 | Item { 5 | id: root 6 | default property alias contentStack: stack.children 7 | property alias maskBlurRadius: maskedBlur.radius 8 | property alias maskBlurSamples: maskedBlur.samples 9 | property alias gradientStopPosition1: stop1.position 10 | property alias gradientStopPosition2: stop2.position 11 | property alias gradientStopPosition3: stop3.position 12 | property alias gradientStopPosition4: stop4.position 13 | property alias maskRotation: gradient.rotation 14 | 15 | implicitWidth: Math.max(32, stack.implicitWidth) 16 | implicitHeight: Math.max(32, stack.implicitHeight) 17 | 18 | Item { 19 | id: stack 20 | implicitWidth: childrenRect.width + childrenRect.x 21 | implicitHeight: childrenRect.height + childrenRect.y 22 | 23 | visible: false 24 | } 25 | 26 | Item { 27 | id: mask 28 | width: stack.width 29 | height: stack.height 30 | visible: false 31 | 32 | LinearGradient { 33 | id: gradient 34 | height: stack.height * 2 35 | width: stack.width * 2 36 | y: -stack.height / 2 37 | x: -stack.width / 2 38 | rotation: 0 39 | gradient: Gradient { 40 | GradientStop { 41 | id: stop1 42 | position: 0.2 43 | color: "#ffffffff" 44 | } 45 | GradientStop { 46 | id: stop2 47 | position: 0.5 48 | color: "#00ffffff" 49 | } 50 | GradientStop { 51 | id: stop3 52 | position: 0.8 53 | color: "#00ffffff" 54 | } 55 | GradientStop { 56 | id: stop4 57 | position: 1.0 58 | color: "#ffffffff" 59 | } 60 | } 61 | start: Qt.point(stack.width / 2, 0) 62 | end: Qt.point(stack.width + stack.width / 2, 100) 63 | } 64 | } 65 | 66 | MaskedBlur { 67 | id: maskedBlur 68 | anchors.fill: stack 69 | source: stack 70 | maskSource: mask 71 | radius: 32 72 | samples: 16 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/RadialBlurItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import QtGraphicalEffects 1.0 3 | 4 | Item { 5 | id: root 6 | 7 | default property alias contentStack: stack.children 8 | property alias cached: radialBlur.cached 9 | property alias samples: radialBlur.samples 10 | property alias verticalOffset: radialBlur.verticalOffset 11 | property alias horizontalOffset: radialBlur.horizontalOffset 12 | property alias transparentBorder: radialBlur.transparentBorder 13 | property alias angle: radialBlur.angle 14 | 15 | implicitWidth: Math.max(32, stack.implicitWidth) 16 | implicitHeight: Math.max(32, stack.implicitHeight) 17 | 18 | Item { 19 | id: stack 20 | 21 | implicitWidth: childrenRect.width + childrenRect.x 22 | implicitHeight: childrenRect.height + childrenRect.y 23 | } 24 | 25 | RadialBlur { 26 | id: radialBlur 27 | anchors.fill: stack 28 | source: stack 29 | verticalOffset: 12 30 | horizontalOffset: 12 31 | samples: 16 32 | angle: 45 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/RotationItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.10 2 | 3 | Item { 4 | id: root 5 | property alias originX: rotation.origin.x 6 | property alias originY: rotation.origin.y 7 | property alias axisX: rotation.axis.x 8 | property alias axisY: rotation.axis.y 9 | property alias axisZ: rotation.axis.z 10 | property alias angle: rotation.angle 11 | 12 | implicitWidth: childrenRect.width + childrenRect.x 13 | implicitHeight: childrenRect.height + childrenRect.y 14 | 15 | transform: Rotation { 16 | id: rotation 17 | origin.x: root.width / 2 18 | origin.y: root.height / 2 19 | angle: 45 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/SaturationItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import QtGraphicalEffects 1.0 3 | 4 | Item { 5 | id: root 6 | 7 | default property alias contentStack: stack.children 8 | property alias desaturation: desaturate.desaturation 9 | property alias cached: desaturate.cached 10 | 11 | implicitWidth: Math.max(32, stack.implicitWidth) 12 | implicitHeight: Math.max(32, stack.implicitHeight) 13 | 14 | Item { 15 | id: stack 16 | 17 | implicitWidth: childrenRect.width + childrenRect.x 18 | implicitHeight: childrenRect.height + childrenRect.y 19 | 20 | visible: false 21 | } 22 | 23 | Desaturate { 24 | id: desaturate 25 | source: stack 26 | anchors.fill: stack 27 | 28 | desaturation: 0.5 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/ZoomBlurItem.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import QtGraphicalEffects 1.0 3 | 4 | Item { 5 | id: root 6 | 7 | default property alias contentStack: stack.children 8 | property alias zoomBlurLength: zoomBlur.length 9 | property alias zoomBlurSamples: zoomBlur.samples 10 | property alias zoomBlurHoffset: zoomBlur.horizontalOffset 11 | property alias zoomBlurVoffset: zoomBlur.verticalOffset 12 | property alias cached: zoomBlur.cached 13 | property alias transparentBorder: zoomBlur.transparentBorder 14 | 15 | implicitWidth: Math.max(32, stack.implicitWidth) 16 | implicitHeight: Math.max(32, stack.implicitHeight) 17 | 18 | Item { 19 | id: stack 20 | 21 | implicitWidth: childrenRect.width + childrenRect.x 22 | implicitHeight: childrenRect.height + childrenRect.y 23 | } 24 | 25 | ZoomBlur { 26 | id: zoomBlur 27 | anchors.fill: stack 28 | source: stack 29 | length: 32 30 | samples: 16 31 | horizontalOffset: 0 32 | verticalOffset: 0 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/BrightnessContrastItemSpecifics.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import HelperWidgets 2.0 3 | import QtQuick.Layouts 1.0 4 | 5 | Column { 6 | anchors.left: parent.left 7 | anchors.right: parent.right 8 | 9 | Section { 10 | anchors.left: parent.left 11 | anchors.right: parent.right 12 | caption: "Brightness and Contrast" 13 | 14 | SectionLayout { 15 | rows: 2 16 | Label { 17 | text: qsTr("brightness") 18 | toolTip: qsTr("This property defines how much the source brightness is increased or decreased.") 19 | } 20 | SecondColumnLayout { 21 | SpinBox { 22 | backendValue: backendValues.brightness 23 | Layout.preferredWidth: 80 24 | decimals: 1 25 | minimumValue: -1 26 | maximumValue: 1 27 | stepSize: 0.1 28 | } 29 | ExpandingSpacer {} 30 | } 31 | 32 | Label { 33 | text: qsTr("contrast") 34 | toolTip: qsTr("This property defines how much the source contrast is increased or decreased. The decrease of the contrast is linear, but the increase is applied with a non-linear curve to allow very high contrast adjustment at the high end of the value range.") 35 | } 36 | SecondColumnLayout { 37 | SpinBox { 38 | backendValue: backendValues.contrast 39 | Layout.preferredWidth: 80 40 | decimals: 1 41 | minimumValue: -1 42 | maximumValue: 1 43 | stepSize: 0.1 44 | } 45 | ExpandingSpacer {} 46 | } 47 | } 48 | } 49 | 50 | Section { 51 | anchors.left: parent.left 52 | anchors.right: parent.right 53 | caption: "Caching" 54 | 55 | SectionLayout { 56 | rows: 2 57 | Label { 58 | text: qsTr("cached") 59 | toolTip: qsTr("This property allows the effect output pixels to be cached in order to improve the rendering performance.") 60 | } 61 | SecondColumnLayout { 62 | CheckBox { 63 | Layout.fillWidth: true 64 | backendValue: backendValues.cached 65 | text: backendValues.cached.valueToString 66 | } 67 | } 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/ColorOverlayItemSpecifics.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import HelperWidgets 2.0 3 | import QtQuick.Layouts 1.0 4 | 5 | Column { 6 | anchors.left: parent.left 7 | anchors.right: parent.right 8 | 9 | Section { 10 | anchors.left: parent.left 11 | anchors.right: parent.right 12 | caption: qsTr("Overlay Color") 13 | 14 | ColorEditor { 15 | caption: qsTr("Overlay Color") 16 | backendValue: backendValues.overlayColor 17 | supportGradient: false 18 | } 19 | } 20 | 21 | Section { 22 | anchors.left: parent.left 23 | anchors.right: parent.right 24 | caption: "Caching" 25 | 26 | SectionLayout { 27 | rows: 2 28 | Label { 29 | text: qsTr("cached") 30 | toolTip: qsTr("This property allows the effect output pixels to be cached in order to improve the rendering performance.") 31 | } 32 | SecondColumnLayout { 33 | CheckBox { 34 | Layout.fillWidth: true 35 | backendValue: backendValues.cached 36 | text: backendValues.cached.valueToString 37 | } 38 | } 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/FastBlurItemSpecifics.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import HelperWidgets 2.0 3 | import QtQuick.Layouts 1.0 4 | 5 | Column { 6 | anchors.left: parent.left 7 | anchors.right: parent.right 8 | 9 | Section { 10 | anchors.left: parent.left 11 | anchors.right: parent.right 12 | caption: "Blur Details" 13 | 14 | SectionLayout { 15 | rows: 2 16 | Label { 17 | text: qsTr("radius") 18 | toolTip: qsTr("This property defines the distance of the neighboring pixels which affect the blurring of an individual pixel. A larger radius increases the blur effect.") 19 | } 20 | SecondColumnLayout { 21 | SpinBox { 22 | backendValue: backendValues.radius 23 | Layout.preferredWidth: 80 24 | decimals: 1 25 | minimumValue: 0 26 | maximumValue: 100 27 | stepSize: 1 28 | } 29 | ExpandingSpacer {} 30 | } 31 | } 32 | } 33 | 34 | Section { 35 | anchors.left: parent.left 36 | anchors.right: parent.right 37 | caption: "Caching and Border" 38 | 39 | SectionLayout { 40 | rows: 2 41 | Label { 42 | text: qsTr("cached") 43 | toolTip: qsTr("This property allows the effect output pixels to be cached in order to improve the rendering performance.") 44 | } 45 | SecondColumnLayout { 46 | CheckBox { 47 | Layout.fillWidth: true 48 | backendValue: backendValues.cached 49 | text: backendValues.cached.valueToString 50 | } 51 | ExpandingSpacer {} 52 | } 53 | Label { 54 | text: qsTr("transparent border") 55 | toolTip: qsTr("When set to true, the exterior of the item is padded with a transparent edge, making sampling outside the source texture use transparency instead of the edge pixels.") 56 | } 57 | SecondColumnLayout { 58 | CheckBox { 59 | Layout.fillWidth: true 60 | backendValue: backendValues.transparentBorder 61 | text: backendValues.transparentBorder.valueToString 62 | } 63 | } 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/SaturationItemSpecifics.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.0 2 | import HelperWidgets 2.0 3 | import QtQuick.Layouts 1.0 4 | 5 | Column { 6 | anchors.left: parent.left 7 | anchors.right: parent.right 8 | 9 | Section { 10 | anchors.left: parent.left 11 | anchors.right: parent.right 12 | caption: "Desaturation" 13 | 14 | SectionLayout { 15 | rows: 2 16 | Label { 17 | text: qsTr("desaturation") 18 | toolTip: qsTr("This property defines how much the source colors are desaturated.") 19 | } 20 | SecondColumnLayout { 21 | SpinBox { 22 | backendValue: backendValues.desaturation 23 | Layout.preferredWidth: 80 24 | decimals: 1 25 | minimumValue: 0 26 | maximumValue: 1 27 | stepSize: 0.1 28 | } 29 | ExpandingSpacer {} 30 | } 31 | } 32 | } 33 | 34 | Section { 35 | anchors.left: parent.left 36 | anchors.right: parent.right 37 | caption: "Caching" 38 | 39 | SectionLayout { 40 | rows: 2 41 | Label { 42 | text: qsTr("cached") 43 | toolTip: qsTr("This property allows the effect output pixels to be cached in order to improve the rendering performance.") 44 | } 45 | SecondColumnLayout { 46 | CheckBox { 47 | Layout.fillWidth: true 48 | backendValue: backendValues.cached 49 | text: backendValues.cached.valueToString 50 | } 51 | } 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/blend-mode-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/blend-mode-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/blend-mode-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/blend-mode-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/blend-mode-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/blend-mode-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/brightness-contrast-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/brightness-contrast-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/brightness-contrast-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/brightness-contrast-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/brightness-contrast-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/brightness-contrast-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/colourize-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/colourize-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/colourize-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/colourize-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/colourize-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/colourize-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/directional-blur-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/directional-blur-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/directional-blur-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/directional-blur-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/directional-blur-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/directional-blur-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/drop-shadow-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/drop-shadow-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/drop-shadow-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/drop-shadow-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/drop-shadow-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/drop-shadow-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/fast-blur-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/fast-blur-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/fast-blur-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/fast-blur-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/fast-blur-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/fast-blur-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/gamma-adjust-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/gamma-adjust-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/gamma-adjust-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/gamma-adjust-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/gamma-adjust-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/gamma-adjust-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/glow-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/glow-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/glow-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/glow-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/glow-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/glow-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/hue-satuartion-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/hue-satuartion-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/hue-satuartion-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/hue-satuartion-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/hue-satuartion-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/hue-satuartion-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/mask-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/mask-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/mask-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/mask-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/mask-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/mask-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/mask-blur-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/mask-blur-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/mask-blur-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/mask-blur-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/mask-blur-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/mask-blur-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/radial-blur-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/radial-blur-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/radial-blur-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/radial-blur-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/radial-blur-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/radial-blur-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/saturation-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/saturation-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/saturation-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/saturation-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/saturation-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/saturation-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/zoom-blur-16px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/zoom-blur-16px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/zoom-blur-24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/zoom-blur-24px.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/zoom-blur-24px@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/designer/images/zoom-blur-24px@2x.png -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/imports/QtQuick/Studio/Effects/qmldir: -------------------------------------------------------------------------------- 1 | FastBlurItem 1.0 FastBlurItem.qml 2 | GlowItem 1.0 GlowItem.qml 3 | ZoomBlurItem 1.0 ZoomBlurItem.qml 4 | RadialBlurItem 1.0 RadialBlurItem.qml 5 | SaturationItem 1.0 SaturationItem.qml 6 | DirectionalBlurItem 1.0 DirectionalBlurItem.qml 7 | ColorOverlayItem 1.0 ColorOverlayItem.qml 8 | DropShadowItem 1.0 DropShadowItem.qml 9 | ColorizeItem 1.0 ColorizeItem.qml 10 | BrightnessContrastItem 1.0 BrightnessContrastItem.qml 11 | HueSaturationItem 1.0 HueSaturationItem.qml 12 | MaskedBlurItem 1.0 MaskedBlurItem.qml 13 | BlendItem 1.0 BlendItem.qml 14 | MaskItem 1.0 MaskItem.qml 15 | RotationItem 1.0 RotationItem.qml 16 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayer2/qtquickcontrols2.conf: -------------------------------------------------------------------------------- 1 | ; This file can be edited to change the style of the application 2 | ; Read "Qt Quick Controls 2 Configuration File" for details: 3 | ; http://doc.qt.io/qt-5/qtquickcontrols2-configuration.html 4 | 5 | [Controls] 6 | Style=Default 7 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/MusicPlayerUI.pro: -------------------------------------------------------------------------------- 1 | QT += quick qml multimedia 2 | CONFIG += c++11 3 | 4 | # The following define makes your compiler emit warnings if you use 5 | # any Qt feature that has been marked deprecated (the exact warnings 6 | # depend on your compiler). Refer to the documentation for the 7 | # deprecated API to know how to port your code away from it. 8 | DEFINES += QT_DEPRECATED_WARNINGS 9 | 10 | # You can also make your code fail to compile if it uses deprecated APIs. 11 | # In order to do so, uncomment the following line. 12 | # You can also select to disable deprecated APIs only up to a certain version of Qt. 13 | #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 14 | 15 | SOURCES += \ 16 | main.cpp 17 | 18 | RESOURCES += qml.qrc 19 | 20 | # Additional import path used to resolve QML modules in Qt Creator's code model 21 | QML_IMPORT_PATH = MusicPlayer2/imports \ 22 | MusicPlayer2/assets 23 | 24 | # Additional import path used to resolve QML modules just for Qt Quick Designer 25 | QML_DESIGNER_IMPORT_PATH = 26 | 27 | # Default rules for deployment. 28 | qnx: target.path = /tmp/$${TARGET}/bin 29 | else: unix:!android:!mac: target.path = /opt/$${TARGET}/bin 30 | !isEmpty(target.path): INSTALLS += target 31 | -------------------------------------------------------------------------------- /Qt/MusicPlayerApp/MusicPlayerUI/main.qml: -------------------------------------------------------------------------------- 1 | import QtQuick 2.12 2 | import QtQuick.Window 2.12 3 | import "qrc:/MusicPlayer2" 4 | import MusicPlayer2 1.0 5 | 6 | Window { 7 | visible: true 8 | width: Constants.width 9 | height: Constants.height 10 | title: qsTr("Music Player") 11 | 12 | MusicPlayer2 { 13 | anchors.fill: parent 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /doc/img/android_all_songs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/android_all_songs.png -------------------------------------------------------------------------------- /doc/img/android_avd_manager_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/android_avd_manager_launcher.png -------------------------------------------------------------------------------- /doc/img/android_device_selection_emulator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/android_device_selection_emulator.png -------------------------------------------------------------------------------- /doc/img/android_devices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/android_devices.png -------------------------------------------------------------------------------- /doc/img/android_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/android_home.png -------------------------------------------------------------------------------- /doc/img/android_playing_song.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/android_playing_song.png -------------------------------------------------------------------------------- /doc/img/android_project_structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/android_project_structure.png -------------------------------------------------------------------------------- /doc/img/device_debug_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/device_debug_mode.png -------------------------------------------------------------------------------- /doc/img/device_file_transfer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/device_file_transfer.png -------------------------------------------------------------------------------- /doc/img/device_uninstall_for_all_users.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/device_uninstall_for_all_users.png -------------------------------------------------------------------------------- /doc/img/qt_all_songs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/qt_all_songs.png -------------------------------------------------------------------------------- /doc/img/qt_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/qt_home.png -------------------------------------------------------------------------------- /doc/img/qt_mingw_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/qt_mingw_settings.png -------------------------------------------------------------------------------- /doc/img/qt_playing_song.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/qt_playing_song.png -------------------------------------------------------------------------------- /doc/img/qt_project_structure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/qt_project_structure.png -------------------------------------------------------------------------------- /doc/img/qt_run_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/qt_run_settings.png -------------------------------------------------------------------------------- /doc/img/witekio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Witekio/qt-and-android-whitepaper-apps/1d07b75687ee3ec726723b212fb62eeb8b91e65f/doc/img/witekio.png --------------------------------------------------------------------------------