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
- }
}