Browse Source

Merge pull request #1 from eniac111/qt6

Qt6
master
Blagovest Petrov 1 year ago
committed by GitHub
parent
commit
2809d4b601
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 53
      .gitignore
  2. 0
      Assets/128-apps-org.petrovs_info.tangraplay.png
  3. 0
      Assets/16-apps-org.petrovs_info.tangraplay.png
  4. 0
      Assets/32-apps-org.petrovs_info.tangraplay.png
  5. 0
      Assets/48-apps-org.petrovs_info.tangraplay.png
  6. 0
      Assets/64-apps-org.petrovs_info.tangraplay.png
  7. 0
      Assets/KellySlab-Regular.ttf
  8. 0
      Assets/blago.png
  9. 0
      Assets/buuf-pause.png
  10. 0
      Assets/buuf-play.png
  11. 0
      Assets/dark_leather.png
  12. 0
      Assets/live.png
  13. 0
      Assets/logo.png
  14. 0
      Assets/menu-background.png
  15. 0
      Assets/menubtn-background.png
  16. 0
      Assets/news-icon.png
  17. 0
      Assets/news.png
  18. 0
      Assets/pause-button.svg
  19. 0
      Assets/play-button.svg
  20. 0
      Assets/playbtn-frame.png
  21. 0
      Assets/podcast.png
  22. 0
      Assets/stop-button.svg
  23. 0
      Assets/tangra.ico
  24. 124
      CMakeLists.txt
  25. 10
      Resources/CMakeLists.txt
  26. 38
      TangraPlay.pro
  27. 15
      fetchshowid.cpp
  28. 20
      fetchshowid.h
  29. 5
      main.cpp
  30. 28
      qml.qrc
  31. 7
      tangratray.cpp
  32. 13
      ui/AboutProgram.qml
  33. 11
      ui/AudioPlayer.qml
  34. 31
      ui/CurrentShow.qml
  35. 121
      ui/MediaButton.qml
  36. 2
      ui/MenuButton.qml
  37. 58
      ui/MenuToolbar.qml
  38. 21
      ui/NewsDelegate.qml
  39. 55
      ui/PgLive.qml
  40. 55
      ui/PgNews.qml
  41. 57
      ui/main.qml

53
.gitignore

@ -1 +1,54 @@
# C++ objects and libs
*.slo
*.lo
*.o
*.a
*.la
*.lai
*.so
*.so.*
*.dll
*.dylib
# Qt-es
object_script.*.Release
object_script.*.Debug
*_plugin_import.cpp
/.qmake.cache
/.qmake.stash
*.pro.user
*.pro.user.*
*.qbs.user
*.qbs.user.*
*.moc
moc_*.cpp
moc_*.h
qrc_*.cpp
ui_*.h
*.qmlc
*.jsc
Makefile*
*build-*
*.qm
*.prl
# Qt unit tests
target_wrapper.*
# QtCreator
*.autosave
# QtCreator Qml
*.qmlproject.user
*.qmlproject.user.*
# QtCreator CMake
CMakeLists.txt.user*
# QtCreator 4.8< compilation database
compile_commands.json
# QtCreator local machine specific files for imported projects
*creator.user*
*_qmlcache.qrc

0
Resources/128-apps-org.petrovs_info.tangraplay.png → Assets/128-apps-org.petrovs_info.tangraplay.png

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

0
Resources/16-apps-org.petrovs_info.tangraplay.png → Assets/16-apps-org.petrovs_info.tangraplay.png

Before

Width:  |  Height:  |  Size: 784 B

After

Width:  |  Height:  |  Size: 784 B

0
Resources/32-apps-org.petrovs_info.tangraplay.png → Assets/32-apps-org.petrovs_info.tangraplay.png

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

0
Resources/48-apps-org.petrovs_info.tangraplay.png → Assets/48-apps-org.petrovs_info.tangraplay.png

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

0
Resources/64-apps-org.petrovs_info.tangraplay.png → Assets/64-apps-org.petrovs_info.tangraplay.png

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

0
Resources/KellySlab-Regular.ttf → Assets/KellySlab-Regular.ttf

0
Resources/blago.png → Assets/blago.png

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

0
Resources/buuf-pause.png → Assets/buuf-pause.png

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

0
Resources/buuf-play.png → Assets/buuf-play.png

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

0
Resources/dark_leather.png → Assets/dark_leather.png

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

0
Resources/live.png → Assets/live.png

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

0
Resources/logo.png → Assets/logo.png

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

0
Resources/menu-background.png → Assets/menu-background.png

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

0
Resources/menubtn-background.png → Assets/menubtn-background.png

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

0
Resources/news-icon.png → Assets/news-icon.png

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

0
Resources/news.png → Assets/news.png

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

0
Resources/pause-button.svg → Assets/pause-button.svg

Before

Width:  |  Height:  |  Size: 991 B

After

Width:  |  Height:  |  Size: 991 B

0
Resources/play-button.svg → Assets/play-button.svg

Before

Width:  |  Height:  |  Size: 875 B

After

Width:  |  Height:  |  Size: 875 B

0
Resources/playbtn-frame.png → Assets/playbtn-frame.png

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

0
Resources/podcast.png → Assets/podcast.png

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

0
Resources/stop-button.svg → Assets/stop-button.svg

Before

Width:  |  Height:  |  Size: 712 B

After

Width:  |  Height:  |  Size: 712 B

0
Resources/tangra.ico → Assets/tangra.ico

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 97 KiB

124
CMakeLists.txt

@ -1,60 +1,84 @@
project(tangraplay)
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
project(tangraplay VERSION 0.1 LANGUAGES CXX)
set(BIN_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
set(QT_MIN_VERSION "5.10.0")
set(KF5_DEP_VERSION "5.40.0")
# We need some parts of the ECM CMake helpers.
find_package(ECM ${KF5_DEP_VERSION} QUIET REQUIRED NO_MODULE)
# We append to the module path so modules can be overridden from the command line.
list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
#set(BIN_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Core Quick QuickControls2 Multimedia Widgets Gui )
find_package(Qt6 6.5 REQUIRED COMPONENTS Quick Widgets Core QuickControls2 Widgets Gui Multimedia)
include_directories(.)
include_directories(${Qt5Core_PRIVATE_INCLUDE_DIRS})
qt_standard_project_setup(REQUIRES 6.5)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
include(KDEInstallDirs)
include(KDECMakeSettings)
include(ECMOptionalAddSubdirectory)
include(ECMAddAppIcon)
include(ECMInstallIcons)
add_subdirectory(Resources)
qt5_add_resources(RESOURCES qml.qrc)
SET(SOURCES
if (WIN32)
set(QT_DEFAULT_MEDIA_BACKEND windows)
else()
set(QT_DEFAULT_MEDIA_BACKEND gstreamer)
endif()
list(APPEND QML_ASSETS
Assets/tangra.ico
Assets/pause-button.svg
Assets/logo.png
Assets/play-button.svg
Assets/menu-background.png
Assets/dark_leather.png
Assets/menubtn-background.png
Assets/blago.png
Assets/KellySlab-Regular.ttf
Assets/news-icon.png
Assets/buuf-pause.png
Assets/buuf-play.png
Assets/playbtn-frame.png
Assets/live.png
Assets/news.png
Assets/podcast.png
)
qt_add_executable(apptangraplay
main.cpp
)
add_executable(tangraplay
${SOURCES}
${RESOURCES}
)
qt5_use_modules(tangraplay Quick QuickControls2 Core Multimedia )
target_link_libraries(tangraplay
Qt5::Quick
Qt5::QuickControls2
Qt5::Core
Qt5::Widgets
Qt5::Gui
Qt5::Multimedia )
install(TARGETS tangraplay DESTINATION ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
install(PROGRAMS org.petrovs_info.tangraplay.desktop DESTINATION ${KDE_INSTALL_APPDIR})
install(FILES org.petrovs_info.tangraplay.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
tangratray.h tangratray.cpp
)
qt_add_qml_module(apptangraplay
URI TangraPlay
VERSION 1.0
RESOURCE_PREFIX /bpetrov.tangraplay/imports
QML_FILES ui/main.qml
ui/AboutProgram.qml
ui/AudioPlayer.qml
ui/MediaButton.qml
ui/MenuButton.qml
ui/MenuToolbar.qml
ui/PgLive.qml
ui/PgNews.qml
ui/NewsDelegate.qml
ui/CurrentShow.qml
RESOURCES
${QML_ASSETS}
)
set_target_properties(apptangraplay PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER tangraplay.blago.cloud
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
)
target_link_libraries(apptangraplay PRIVATE
Qt6::Quick
Qt6::QuickControls2
Qt6::Core
Qt6::Widgets
Qt6::Gui
Qt6::Multimedia )
install(TARGETS apptangraplay
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})

10
Resources/CMakeLists.txt

@ -1,10 +0,0 @@
ecm_install_icons(
ICONS
128-apps-org.petrovs_info.tangraplay.png
64-apps-org.petrovs_info.tangraplay.png
48-apps-org.petrovs_info.tangraplay.png
32-apps-org.petrovs_info.tangraplay.png
16-apps-org.petrovs_info.tangraplay.png
DESTINATION ${ICON_INSTALL_DIR}
)

38
TangraPlay.pro

@ -1,38 +0,0 @@
QT += quick gui core widgets
CONFIG += c++11
RC_ICONS = Resources/tangra.ico
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Refer to the documentation for the
# deprecated API to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
fetchshowid.cpp \
main.cpp \
tangratray.cpp
RESOURCES += qml.qrc
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =
# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH =
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
HEADERS += \
fetchshowid.h \
tangratray.h

15
fetchshowid.cpp

@ -1,15 +0,0 @@
#include "fetchshowid.h"
FetchShowID::FetchShowID()
{
n_manager = new QNetworkAccessManager;
connect(n_manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)));
}
void FetchShowID::Fetch() {
n_manager->get(QNetworkRequest(QUrl("http://app.radiotangra.com/TMR_monitor_songs")));
}

20
fetchshowid.h

@ -1,20 +0,0 @@
#ifndef FETCHSHOWID_H
#define FETCHSHOWID_H
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QObject>
#include <QDebug>
#include <QString>
class FetchShowID : public QObject
{
public:
FetchShowID();
void Fetch();
private:
QNetworkAccessManager* n_manager;
};
#endif // FETCHSHOWID_H

5
main.cpp

@ -3,6 +3,7 @@
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include "tangratray.h"
#include <QSystemTrayIcon>
int main(int argc, char *argv[])
{
@ -10,11 +11,13 @@ int main(int argc, char *argv[])
QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.addImportPath(":/bpetrov.tangraplay/imports");
TangraTray * tangratray = new TangraTray();
QQmlContext *context = engine.rootContext();
context->setContextProperty("tangraTray", tangratray);
const QUrl url(QStringLiteral("qrc:/ui/main.qml"));
const QUrl url(u"qrc:/bpetrov.tangraplay/imports/TangraPlay/ui/main.qml"_qs);
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)

28
qml.qrc

@ -1,28 +0,0 @@
<RCC>
<qresource prefix="/">
<file>ui/main.qml</file>
<file>ui/MenuToolbar.qml</file>
<file>ui/MenuButton.qml</file>
<file>ui/PgLive.qml</file>
<file>ui/PgNews.qml</file>
<file>ui/AboutProgram.qml</file>
<file>ui/AudioPlayer.qml</file>
<file>ui/MediaButton.qml</file>
<file>Resources/pause-button.svg</file>
<file>Resources/logo.png</file>
<file>Resources/play-button.svg</file>
<file>Resources/menu-background.png</file>
<file>Resources/dark_leather.png</file>
<file>Resources/menubtn-background.png</file>
<file>Resources/blago.png</file>
<file>Resources/tangra.ico</file>
<file>Resources/KellySlab-Regular.ttf</file>
<file>Resources/news-icon.png</file>
<file>Resources/buuf-pause.png</file>
<file>Resources/buuf-play.png</file>
<file>Resources/playbtn-frame.png</file>
<file>Resources/live.png</file>
<file>Resources/news.png</file>
<file>Resources/podcast.png</file>
</qresource>
</RCC>

7
tangratray.cpp

@ -16,8 +16,8 @@ TangraTray::TangraTray(QObject *parent) : QObject(parent)
trayIcon = new QSystemTrayIcon();
trayIcon->setContextMenu(trayIconMenu);
setTrayIcon(":Resources/tangra.ico");
trayIcon->setToolTip(QString("TagraPlay"));
setTrayIcon(":/bpetrov.tangraplay/imports/TangraPlay/Assets/tangra.ico");
trayIcon->show();
connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
@ -37,8 +37,9 @@ void TangraTray::iconActivated(QSystemTrayIcon::ActivationReason reason)
void TangraTray::setTrayIcon(QString image)
{
QIcon icon = QIcon(image), tr("Icon");
QIcon icon = QIcon(image);
trayIcon->setIcon(icon);
trayIcon->show();
}
void TangraTray::hideIconTray()

13
ui/AboutProgram.qml

@ -1,11 +1,12 @@
import QtQuick 2.0
import QtQuick.Dialogs 1.2
import QtQuick
import QtQuick.Controls
import QtQuick.Dialogs
Dialog {
id: aboutDialog
standardButtons: StandardButton.Ok
id: aboutDialo
height: 500
width: 400
title: "About"
Image {
id: image
@ -14,7 +15,7 @@ Dialog {
width: 100
height: 100
fillMode: Image.PreserveAspectFit
source: "../Resources/blago.png"
source: "qrc:/bpetrov.tangraplay/imports/TangraPlay/Assets/blago.png"
}
Text {
@ -46,7 +47,7 @@ Dialog {
y: 172
width: 354
height: 74
text: qsTr("© 2020 Благовест Петров ( https://petrovs.info ) . Кодът е лиценциран под GNU GPL v3.0. \n Шрифтът е \"Kelly Slab\" и е взет от Google Fonts. Лицензиран е под OFL лиценз.")
text: qsTr("© 2023 Благовест Петров ( https://petrovs.info ) . Кодът е лиценциран под GNU GPL v3.0. \n Шрифтът е \"Kelly Slab\" и е взет от Google Fonts. Лицензиран е под OFL лиценз.")
font.family: mainfont.name
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
font.pixelSize: 12

11
ui/AudioPlayer.qml

@ -1,11 +1,8 @@
import QtQuick 2.0
import QtMultimedia 5.15
Audio {
property variant quality: {
"low" : "http://stream-bg-01.radiotangra.com/Tangra-middle.m3u",
"high" : "http://stream-bg-01.radiotangra.com/Tangra-high.m3u"
}
import QtMultimedia
MediaPlayer {
audioOutput: AudioOutput {}
source: "http://stream-bg-01.radiotangra.com:8000/Tangra-high"
}

31
ui/CurrentShow.qml

@ -0,0 +1,31 @@
import QtQuick 2.0
Item {
property string theShow: ""
function getShow(url) {
let request = new XMLHttpRequest()
request.onreadystatechange = function () {
if (request.readyState === XMLHttpRequest.DONE) {
// let content = request.response.slice(0, request.response.indexOf("\n"));
let response = {
status : request.status,
headers : request.getAllResponseHeaders(),
content : request.response
};
};
theShow = request.responseText.toString().slice(0, request.response.indexOf("\n"));
}
request.open("GET", "http://app.radiotangra.com/TMR_monitor_songs")
request.send()
}
Timer {
interval: 30000
running: true
repeat: true
onTriggered: getShow()
}
}

121
ui/MediaButton.qml

@ -1,18 +1,121 @@
import QtQuick 2.0
import QtQuick.Controls 2.15
Item {
id: container
Image {
id: buttonIcon
x: 64
y: 64
property bool isClicked : false
property int animationDuration: 250
fillMode: Image.PreserveAspectFit
source: "qrc:/bpetrov.tangraplay/imports/TangraPlay/Assets/buuf-play.png"
property bool isClicked: false
Image {
id: buttonIcon
width: 64
anchors.centerIn: parent
fillMode: Image.PreserveAspectFit
source: isClicked ? "../Resources/buuf-pause.png" : "../Resources/buuf-play.png"
function changeIconState() {
if ( thePlayer.playbackState === 1) {
buttonIcon.source = "qrc:/bpetrov.tangraplay/imports/TangraPlay/Assets/buuf-pause.png"
}
else {
buttonIcon.source = "qrc:/bpetrov.tangraplay/imports/TangraPlay/Assets/buuf-play.png"
}
}
function runAnimation() {
glow.visible = true
animation1.start()
animation2.start()
}
Connections {
target: mainStack
function activating() {
buttonIcon.changeIconState()
}
}
MouseArea {
anchors.fill: parent
onClicked: {
root.clicked()
stack.push(viewBeerSize)
}
onPressed: {
glow.visible = true
animation1.start()
animation2.start()
}
}
///////// Click animation
Rectangle {
id: glow
visible: false
width: parent.width
height: parent.height
color: "#00000000"
radius: 125
scale: 1.05
border.color: "#ffffff"
}
PropertyAnimation {
target: glow
id: animation1
duration: buttonIcon.animationDuration
loops: 1
from: 1.05
to: 1.2
property: "scale"
}
ParallelAnimation {
id: animation2
SequentialAnimation {
PropertyAnimation {
target: glow
duration: buttonIcon.animationDuration
loops: 1
from: 0.2
to: 1.0
property: "opacity"
}
PropertyAnimation {
target: glow
duration: buttonIcon.animationDuration
loops: 1
from: 1.0
to: 0.0
property: "opacity"
}
PropertyAction {
target: glow
property: "visible"
value: false
}
}
SequentialAnimation {
PropertyAction {
target: glow
property: "border.width"
value: 20
}
PauseAnimation {
duration: 200
}
PropertyAnimation {
target: glow
duration: buttonIcon.animationDuration
loops: 1
from: 20
to: 10
property: "border.width"
}
}
}
}

2
ui/MenuButton.qml

@ -10,7 +10,7 @@ Rectangle {
Image {
id: menuButtonBackground
source: "../Resources/menubtn-background.png"
source: "qrc:/bpetrov.tangraplay/imports/TangraPlay/Assets/menubtn-background.png"
anchors.fill: parent
}

58
ui/MenuToolbar.qml

@ -8,7 +8,7 @@ Item {
height: 32
Image {
source: "../Resources/menu-background.png"
source: "qrc:/bpetrov.tangraplay/imports/TangraPlay/Assets/menu-background.png"
fillMode: Image.Tile
anchors.fill: parent
@ -19,11 +19,11 @@ Item {
anchors.fill: parent;
property variant clickPos: "1,1"
onPressed: {
clickPos = Qt.point(mouse.x,mouse.y)
onPressed: (mouse)=> {
clickPos = Qt.point(mouse.x, mouse.y)
}
onPositionChanged: {
onPositionChanged: (mouse)=> {
var delta = Qt.point(mouse.x-clickPos.x, mouse.y-clickPos.y)
var new_x = mainWindow.x + delta.x
var new_y = mainWindow.y + delta.y
@ -63,24 +63,38 @@ Item {
color: "#f9c620"
}
// Image {
// id: buttonLive
// source: "Resources/live.png"
// anchors.left: appTitle.left
// anchors.leftMargin: 128
// width: 32
// height: 32
// MouseArea {
// anchors.fill: parent
// hoverEnabled: true
// onClicked: {
// pgLive1.visible = false;
// pgnews1.visible = true;
//// contentLoader.sourceComponent = PgNews
// }
// }
// }
Image {
id: buttonLive
source: "qrc:/bpetrov.tangraplay/imports/TangraPlay/Assets/live.png"
anchors.left: appTitle.left
anchors.leftMargin: 128
width: 32
height: 32
MouseArea {
anchors.fill: parent
hoverEnabled: true
onClicked: {
mainStack.push(stackLive)
}
}
}
Image {
id: buttonNews
source: "qrc:/bpetrov.tangraplay/imports/TangraPlay/Assets/news.png"
anchors.left: buttonLive.left
anchors.leftMargin: 128
width: 32
height: 32
MouseArea {
anchors.fill: parent
hoverEnabled: true
onClicked: {
mainStack.push(stackNews)
}
}
}
}
}
}

21
ui/NewsDelegate.qml

@ -0,0 +1,21 @@
import QtQuick
import QtQuick.Controls
Text {
height: 25
width: newsList.width
id: titleText
textFormat: Text.RichText
text: "<style>a:link { color: \"#f9be30\"; font-size: 12px; }</style> <a href=\""
+ link + "\">" + title + "</a>"
wrapMode: Text.WordWrap
font.pixelSize: 12
font.bold: true
onLinkActivated: openLink => Qt.openUrlExternally(link)
MouseArea {
id: mouseArea
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
acceptedButtons: Qt.NoButton
}
}

55
ui/PgLive.qml

@ -5,6 +5,7 @@ import QtMultimedia 5.15
Item {
// property alias playPauseChangeState: playPause.changeIconState()
Image {
id: logo
@ -14,13 +15,36 @@ Item {
width: 260
height: 175
fillMode: Image.PreserveAspectFit
source: "../Resources/logo.png"
source: "qrc:/bpetrov.tangraplay/imports/TangraPlay/Assets/logo.png"
states: ["mouseFadeIn", "MouseFadeOut"]
state: "mouseFadeOut"
transitions: [
Transition {
from: "*"
to: "mouseFadeIn"
NumberAnimation {
target: logo
properties: "scale"
from: 0.95
to: 1
duration: 400
easing.type: Easing.OutBounce
}
}
]
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onPressed: {
hoverEnabled: true
onPressed: {
Qt.openUrlExternally("http://radiotangra.com")
}
onContainsMouseChanged: {
logo.state = containsMouse ? "mouseFadeIn" : "mouseFadeOut"
}
}
}
@ -30,13 +54,21 @@ Item {
y: 291
width: 64
height: 64
Component.onCompleted: {
playPause.changeIconState()
}
MouseArea {
anchors.fill: parent
onClicked: {
mediaControl();
playPause.isClicked = !playPause.isClicked;
playPause.runAnimation()
mediaControl()
// playPause.isClicked = !playPause.isClicked
playPause.changeIconState()
}
}
}
Text {
@ -59,24 +91,14 @@ Item {
y: 259
width: 629
height: 127
source: "../Resources/playbtn-frame.png"
source: "qrc:/bpetrov.tangraplay/imports/TangraPlay/Assets/playbtn-frame.png"
fillMode: Image.PreserveAspectFit
Text {
id: text1
x: 156
y: 17
text: qsTr("Предаване в ефир:")
color: "#f9c620"
font.family: mainfont.name
font.pixelSize: 15
}
Text {
id: text2
x: 156
y: 60
text: qsTr("В момента звучи:")
text: qsTr("Предаване в ефир: ") + currentShow.theShow
color: "#f9c620"
font.family: mainfont.name
font.pixelSize: 15
@ -89,3 +111,4 @@ Designer {
D{i:0;autoSize:true;height:480;width:640}
}
##^##*/

55
ui/PgNews.qml

@ -1,38 +1,35 @@
import QtQuick 2.12
import QtQuick.Window 2.12
import Qt.labs.platform 1.1
import QtMultimedia 5.15
import QtQuick
import QtQuick.Controls
import QtQml.XmlListModel
Item {
x: 190
y: 51
Row {
id: row
x: 8
y: 50
width: 624
height: 400
spacing: 2
Text {
id: text1
x: 61
y: 50
text: qsTr("Гледайте първо видео от новия албум на GOJIRA - той излиза на 3 април")
font.pixelSize: 12
font.family: mainfont.name
}
Text {
id: text2
x: 61
y: 50
text: qsTr("Историята на BLONDIE в предаването 'РОКЕНДРОЛ' на МОНИ ПАНЧЕВ от 16:00")
font.pixelSize: 12
font.family: mainfont.name
}
}
XmlListModel {
id: newsModel
source: "http://www.radiotangra.com/news/rss.html"
query: "/rss/channel/item"
XmlListModelRole { name: "title"; elementName: "title"; attributeName: ""}
XmlListModelRole { name: "link"; elementName: "link"; attributeName: "" }
}
ListView {
id: newsList
anchors.fill: parent
anchors.topMargin: 38
anchors.leftMargin: 39
anchors.rightMargin: 27
anchors.bottomMargin: 17
model: newsModel
delegate: NewsDelegate {}
ScrollBar.vertical: ScrollBar {
policy: ScrollBar.AlwaysOn
}
}
}

57
ui/main.qml

@ -1,9 +1,10 @@
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls
import QtQuick.Layouts
import Qt.labs.platform 1.1
import QtMultimedia 5.15
import QtMultimedia
Window {
ApplicationWindow {
title: qsTr("Tangra Mega Rock")
id: mainWindow
visible: true
@ -13,7 +14,9 @@ Window {
maximumHeight: 480
flags: Qt.FramelessWindowHint
FontLoader { id: mainfont; source: "../Resources/KellySlab-Regular.ttf" }
FontLoader { id: mainfont; source: "qrc:/bpetrov.tangraplay/imports/TangraPlay/Assets/KellySlab-Regular.ttf" }
header: MenuToolbar {}
Connections {
target: tangraTray
@ -34,15 +37,22 @@ Window {
}
AudioPlayer {
id: tangraplay
id: thePlayer
}
CurrentShow {
id: currentShow
Component.onCompleted: {
currentShow.getShow();
}
}
function mediaControl() {
if (tangraplay.playbackState != Audio.PlayingState) {
tangraplay.play();
if (thePlayer.playbackState != MediaPlayer.PlayingState) {
thePlayer.play();
}
else {
tangraplay.stop();
thePlayer.stop();
}
return 0;
}
@ -52,26 +62,29 @@ Window {
anchors.fill: parent
visible: true
fillMode: Image.Tile
source: "../Resources/dark_leather.png"
source: "qrc:/bpetrov.tangraplay/imports/TangraPlay/Assets/dark_leather.png"
MenuToolbar {}
PgLive {
id: pgLive1
StackView {
id: mainStack
initialItem: stackLive
anchors.fill: parent
}
// PgNews {
// id: pgNews1
// visible: false
// }
// Item {
// Component {
// id: myComp
// }
Component {
id: stackLive
PgLive {
id: pgLive
// Loader { id: contentLoader }
}
}
Component {
id: stackNews
PgNews { id: pgNews }
}
// }
}
}

Loading…
Cancel
Save