diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -248,6 +248,7 @@ qml/ElisaMainWindow.qml qml/ApplicationMenu.qml + qml/BaseTheme.qml qml/Theme.qml qml/PlatformIntegration.qml qml/LabelWithToolTip.qml diff --git a/src/qml/Theme.qml b/src/qml/BaseTheme.qml copy from src/qml/Theme.qml copy to src/qml/BaseTheme.qml diff --git a/src/qml/Theme.qml b/src/qml/Theme.qml --- a/src/qml/Theme.qml +++ b/src/qml/Theme.qml @@ -20,103 +20,5 @@ import QtQuick 2.7 import QtQuick.Controls 2.2 -Item { - function dp(pixel) { - // 96 - common, "base" DPI value - return Math.round(pixel * logicalDpi / 96); - } - - property string defaultAlbumImage: 'image://icon/media-optical-audio' - property string defaultArtistImage: 'image://icon/view-media-artist' - property string defaultBackgroundImage: 'qrc:///background.png' - property string artistIcon: 'image://icon/view-media-artist' - property string albumIcon: 'image://icon/view-media-album-cover' - property string playlistIcon: 'image://icon/view-media-playlist' - property string tracksIcon: 'image://icon/view-media-track' - property string genresIcon: 'image://icon/view-media-genre' - property string clearIcon: 'image://icon/edit-clear' - property string skipBackwardIcon: 'image://icon/media-skip-backward' - property string pauseIcon: 'image://icon/media-playback-pause' - property string playIcon: 'image://icon/media-playback-start' - property string skipForwardIcon: 'image://icon/media-skip-forward' - property string pausedIndicatorIcon: 'image://icon/media-playback-paused' - property string playingIndicatorIcon: 'image://icon/media-playback-playing' - property string playerVolumeMutedIcon: 'image://icon/player-volume-muted' - property string playerVolumeIcon: 'image://icon/player-volume' - property string ratingIcon: 'image://icon/rating' - property string ratingUnratedIcon: 'image://icon/rating-unrated' - property string errorIcon: 'image://icon/error' - property string repeatIcon: 'image://icon/media-repeat-all' - property string shuffleIcon: 'image://icon/media-playlist-shuffle' - property string noRepeatIcon: 'image://icon/media-repeat-none' - property string noShuffleIcon: 'image://icon/media-playlist-normal' - property string folderIcon: 'image://icon/document-open-folder' - property string maximizeIcon: 'image://icon/draw-arrow-down' - property string minimizeIcon: 'image://icon/draw-arrow-up' - - property int layoutHorizontalMargin: dp(8) - property int layoutVerticalMargin: dp(6) - - property int delegateHeight: dp(28) - - FontMetrics { - id: playListAuthorTextHeight - font.weight: Font.Light - } - - FontMetrics { - id: playListAlbumTextHeight - font.weight: Font.Bold - font.pointSize: elisaTheme.defaultFontPointSize * 1.4 - } - - FontMetrics { - id: playListTrackTextHeight - font.weight: Font.Bold - } - - property int playListDelegateHeight: (playListTrackTextHeight.height > dp(28)) ? playListTrackTextHeight.height : dp(28) - property int playListDelegateWithHeaderHeight: playListDelegateHeight + - elisaTheme.layoutVerticalMargin * 5 + - playListAuthorTextHeight.height + - playListAlbumTextHeight.height - - property int trackDelegateHeight: dp(45) - - property int coverImageSize: dp(180) - property int smallImageSize: dp(32) - - property int maximumMetadataWidth: dp(300) - - property int tooltipRadius: dp(3) - property int shadowOffset: dp(2) - - property int delegateToolButtonSize: dp(34) - property int smallDelegateToolButtonSize: dp(20) - - property int ratingStarSize: dp(15) - - property int mediaPlayerControlHeight: dp(42) - property int mediaPlayerHorizontalMargin: dp(10) - property real mediaPlayerControlOpacity: 0.6 - property int smallControlButtonSize: dp(22) - property int volumeSliderWidth: dp(100) - - property int dragDropPlaceholderHeight: dp(28) - - property int navigationBarHeight: dp(100) - property int navigationBarFilterHeight: dp(44) - - property int gridDelegateHeight: dp(100) + layoutVerticalMargin + fontSize.height * 2 - property int gridDelegateWidth: dp(100) - - property int viewSelectorDelegateHeight: dp(24) - - property int filterClearButtonMargin: layoutVerticalMargin - - property alias defaultFontPointSize: fontSize.font.pointSize - - Label { - id: fontSize - } +BaseTheme { } diff --git a/src/resources.qrc b/src/resources.qrc --- a/src/resources.qrc +++ b/src/resources.qrc @@ -31,6 +31,7 @@ qtquickcontrols2.conf background.png qml/ViewManager.qml + qml/BaseTheme.qml windows/WindowsTheme.qml diff --git a/src/windows/WindowsTheme.qml b/src/windows/WindowsTheme.qml --- a/src/windows/WindowsTheme.qml +++ b/src/windows/WindowsTheme.qml @@ -20,98 +20,6 @@ import QtQuick 2.7 import QtQuick.Controls 2.2 -Item { - function dp(pixel) { - // 96 - common, "base" DPI value - return Math.round(pixel * logicalDpi / 96); - } - - property string defaultAlbumImage: 'image://icon/media-optical-audio' - property string defaultArtistImage: 'image://icon/view-media-artist' - property string defaultBackgroundImage: 'qrc:///background.png' - property string artistIcon: 'image://icon/view-media-artist' - property string albumIcon: 'image://icon/view-media-album-cover' - property string playlistIcon: 'image://icon/view-media-playlist' - property string tracksIcon: 'image://icon/view-media-track' - property string genresIcon: 'image://icon/view-media-genre' - property string clearIcon: 'image://icon/edit-clear' - property string skipBackwardIcon: 'image://icon/media-skip-backward' - property string pauseIcon: 'image://icon/media-playback-pause' - property string playIcon: 'image://icon/media-playback-start' - property string skipForwardIcon: 'image://icon/media-skip-forward' - property string pausedIndicatorIcon: 'image://icon/media-playback-paused' - property string playingIndicatorIcon: 'image://icon/media-playback-playing' - property string playerVolumeMutedIcon: 'image://icon/player-volume-muted' - property string playerVolumeIcon: 'image://icon/player-volume' - property string ratingIcon: 'image://icon/rating' - property string ratingUnratedIcon: 'image://icon/rating-unrated' - property string errorIcon: 'image://icon/error' - property string repeatIcon: 'image://icon/media-repeat-all' - property string shuffleIcon: 'image://icon/media-playlist-shuffle' - property string noRepeatIcon: 'image://icon/media-repeat-none' - property string noShuffleIcon: 'image://icon/media-playlist-normal' - property string folderIcon: 'image://icon/document-open-folder' - property string maximizeIcon: 'image://icon/draw-arrow-down' - property string minimizeIcon: 'image://icon/draw-arrow-up' - - property int layoutHorizontalMargin: dp(8) - property int layoutVerticalMargin: dp(6) - - property int delegateHeight: dp(28) - - FontMetrics { - id: playListAuthorTextHeight - font.weight: Font.Light - } - - FontMetrics { - id: playListTitleTextHeight - font.weight: Font.Bold - font.pointSize: elisaTheme.defaultFontPointSize * 1.4 - } - - property int playListDelegateHeight: dp(28) - property int playListDelegateWithHeaderHeight: playListDelegateHeight + - elisaTheme.layoutVerticalMargin * 5 + - playListAuthorTextHeight.height + - playListTitleTextHeight.height - - property int trackDelegateHeight: dp(45) - - property int coverImageSize: dp(180) - property int smallImageSize: dp(32) - - property int maximumMetadataWidth: dp(300) - - property int tooltipRadius: dp(3) - property int shadowOffset: dp(2) - - property int delegateToolButtonSize: dp(34) - property int smallDelegateToolButtonSize: dp(20) - - property int ratingStarSize: dp(15) - - property int mediaPlayerControlHeight: dp(42) - property int mediaPlayerHorizontalMargin: dp(10) +BaseTheme { property real mediaPlayerControlOpacity: 0.8 - property int smallControlButtonSize: dp(22) - property int volumeSliderWidth: dp(100) - - property int dragDropPlaceholderHeight: dp(28) - - property int navigationBarHeight: dp(100) - property int navigationBarFilterHeight: dp(44) - - property int gridDelegateHeight: dp(100) + layoutVerticalMargin + fontSize.height * 2 - property int gridDelegateWidth: dp(100) - - property int viewSelectorDelegateHeight: dp(24) - - property int filterClearButtonMargin: layoutVerticalMargin - - property alias defaultFontPointSize: fontSize.font.pointSize - - Label { - id: fontSize - } }