Commit 717e7977 authored by Camilo Higuita's avatar Camilo Higuita

experimental dark playback bar and mainlist and initial layout for the babeitintegration platform

parent 7f0411a2
...@@ -26,6 +26,7 @@ android: ...@@ -26,6 +26,7 @@ android:
include(3rdparty/kirigami/kirigami.pri) include(3rdparty/kirigami/kirigami.pri)
} }
DEPENDPATH += taglib DEPENDPATH += taglib
DEPENDPATH += taglib/ape DEPENDPATH += taglib/ape
DEPENDPATH += taglib/asf DEPENDPATH += taglib/asf
...@@ -204,7 +205,8 @@ SOURCES += main.cpp \ ...@@ -204,7 +205,8 @@ SOURCES += main.cpp \
babe.cpp \ babe.cpp \
settings/BabeSettings.cpp \ settings/BabeSettings.cpp \
java/notificationclient.cpp \ java/notificationclient.cpp \
db/conthread.cpp db/conthread.cpp \
services/web/babeit.cpp
...@@ -363,6 +365,31 @@ HEADERS += \ ...@@ -363,6 +365,31 @@ HEADERS += \
babe.h \ babe.h \
settings/BabeSettings.h \ settings/BabeSettings.h \
java/notificationclient.h \ java/notificationclient.h \
db/conthread.h db/conthread.h \
services/web/babeit.h
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
#INCLUDEPATH += /usr/include/python3.6m
#LIBS += -lpython3.6m
#defineReplace(copyToDir) {
# files = $$1
# DIR = $$2
# LINK =
# for(FILE, files) {
# LINK += $$QMAKE_COPY $$shell_path($$FILE) $$shell_path($$DIR) $$escape_expand(\\n\\t)
# }
# return($$LINK)
#}
#defineReplace(copyToBuilddir) {
# return($$copyToDir($$1, $$OUT_PWD))
#}
## Copy the binary files dependent on the system architecture
#unix:!macx {
# message("Linux")
# QMAKE_POST_LINK += $$copyToBuilddir($$PWD/library/cat)
#}
<RCC> <RCC>
<qresource prefix="/"> <qresource prefix="/">
<file>qtquickcontrols2.conf</file> <file>qtquickcontrols2.conf</file>
<file>library/cat</file>
</qresource> </qresource>
</RCC> </RCC>
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
#include <QtAndroid> #include <QtAndroid>
#endif #endif
//#include "Python.h"
#if (defined (Q_OS_LINUX) && !defined (Q_OS_ANDROID)) #if (defined (Q_OS_LINUX) && !defined (Q_OS_ANDROID))
#include "kde/notify.h" #include "kde/notify.h"
#endif #endif
...@@ -57,6 +59,25 @@ Babe::~Babe() ...@@ -57,6 +59,25 @@ Babe::~Babe()
delete this->thread; delete this->thread;
} }
//void Babe::runPy()
//{
// QFile cat (BAE::CollectionDBPath+"cat");
// qDebug()<<cat.exists()<<cat.permissions();
// if(!cat.setPermissions(QFile::ExeGroup | QFile::ExeOther | QFile::ExeOther | QFile::ExeUser))
// qDebug()<<"Faile dot give cat permissionsa";
// qDebug()<<cat.exists()<<cat.permissions();
// QProcess process;
// process.setWorkingDirectory(BAE::CollectionDBPath);
// process.start("./cat", QStringList());
// bool finished = process.waitForFinished(-1);
// QString p_stdout = process.readAll();
// qDebug()<<p_stdout<<finished<<process.workingDirectory()<<process.errorString();
//}
QVariantList Babe::get(const QString &queryTxt) QVariantList Babe::get(const QString &queryTxt)
{ {
return getDBDataQML(queryTxt); return getDBDataQML(queryTxt);
...@@ -96,7 +117,10 @@ void Babe::trackLyrics(const QString &url) ...@@ -96,7 +117,10 @@ void Babe::trackLyrics(const QString &url)
if(track.isEmpty()) return; if(track.isEmpty()) return;
this->fetchTrackLyrics(track.first()); if(!track.first()[KEY::LYRICS].isEmpty() && track.first()[KEY::LYRICS] != SLANG[W::NONE])
emit this->trackLyricsReady(track.first()[KEY::LYRICS], url);
else
this->fetchTrackLyrics(track.first());
} }
bool Babe::trackBabe(const QString &path) bool Babe::trackBabe(const QString &path)
......
...@@ -31,6 +31,8 @@ public: ...@@ -31,6 +31,8 @@ public:
}; };
Q_ENUM(HINT) Q_ENUM(HINT)
// Q_INVOKABLE void runPy();
/* DATABASE INTERFACES */ /* DATABASE INTERFACES */
Q_INVOKABLE QVariantList get(const QString &queryTxt); Q_INVOKABLE QVariantList get(const QString &queryTxt);
......
...@@ -333,6 +333,7 @@ bool CollectionDB::colorTagTrack(const QString &path, const QString &value) ...@@ -333,6 +333,7 @@ bool CollectionDB::colorTagTrack(const QString &path, const QString &value)
bool CollectionDB::lyricsTrack(const DB &track, const QString &value) bool CollectionDB::lyricsTrack(const DB &track, const QString &value)
{ {
if(update(TABLEMAP[TABLE::TRACKS], if(update(TABLEMAP[TABLE::TRACKS],
KEYMAP[KEY::LYRICS], KEYMAP[KEY::LYRICS],
value, value,
......
File added
This diff is collapsed.
print("Hello World!")
...@@ -13,6 +13,9 @@ ...@@ -13,6 +13,9 @@
//#include "java/notificationclient.h" //#include "java/notificationclient.h"
#endif #endif
#include "utils/bae.h"
#include <QCommandLineParser>
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
...@@ -21,6 +24,24 @@ int main(int argc, char *argv[]) ...@@ -21,6 +24,24 @@ int main(int argc, char *argv[])
app.setApplicationName(BAE::App); app.setApplicationName(BAE::App);
app.setApplicationVersion(BAE::Version); app.setApplicationVersion(BAE::Version);
app.setWindowIcon(QIcon("qrc:/assets/babe.png")); app.setWindowIcon(QIcon("qrc:/assets/babe.png"));
app.setDesktopFileName(BAE::App);
QCommandLineParser parser;
parser.setApplicationDescription("Babe music player");
const QCommandLineOption versionOption = parser.addVersionOption();
parser.process(app);
const QStringList args = parser.positionalArguments();
bool version = parser.isSet(versionOption);
if(version)
{
printf("%s %s\n", qPrintable(QCoreApplication::applicationName()),
qPrintable(QCoreApplication::applicationVersion()));
return 0;
}
QFontDatabase::addApplicationFont(":/utils/materialdesignicons-webfont.ttf"); QFontDatabase::addApplicationFont(":/utils/materialdesignicons-webfont.ttf");
// QQuickStyle::setStyle("org.kde.desktop"); // QQuickStyle::setStyle("org.kde.desktop");
...@@ -29,8 +50,8 @@ int main(int argc, char *argv[]) ...@@ -29,8 +50,8 @@ int main(int argc, char *argv[])
auto context = engine.rootContext(); auto context = engine.rootContext();
#ifdef Q_OS_ANDROID #ifdef Q_OS_ANDROID
// NotificationClient *notificationClient = new NotificationClient(&engine); // NotificationClient *notificationClient = new NotificationClient(&engine);
// context->setContextProperty(QLatin1String("notificationClient"), notificationClient); // context->setContextProperty(QLatin1String("notificationClient"), notificationClient);
KirigamiPlugin::getInstance().registerTypes(); KirigamiPlugin::getInstance().registerTypes();
#endif #endif
......
...@@ -139,7 +139,10 @@ Kirigami.ApplicationWindow ...@@ -139,7 +139,10 @@ Kirigami.ApplicationWindow
overlay.modal: Rectangle overlay.modal: Rectangle
{ {
color: isMobile ? "#8f28282a" : "transparent" color: isMobile ? darkColor : "transparent"
opacity: 0.5
height: root.height - playbackControls.height - toolbar.height
y: toolbar.height
} }
overlay.modeless: Rectangle overlay.modeless: Rectangle
...@@ -228,8 +231,9 @@ Kirigami.ApplicationWindow ...@@ -228,8 +231,9 @@ Kirigami.ApplicationWindow
onTrackLyricsReady: onTrackLyricsReady:
{ {
if(url === currentTrack.url) console.log("TRACKS READY SIGNAL2")
root.mainPlaylist.infoView.lyrics = lyrics // if(url === currentTrack.url)
Player.setLyrics(lyrics)
} }
onSkipTrack: Player.nextTrack() onSkipTrack: Player.nextTrack()
...@@ -240,6 +244,7 @@ Kirigami.ApplicationWindow ...@@ -240,6 +244,7 @@ Kirigami.ApplicationWindow
/* UI */ /* UI */
header: BabeBar header: BabeBar
{ {
id: toolbar
height: toolBarHeight height: toolBarHeight
visible: true visible: true
currentIndex: currentView currentIndex: currentView
...@@ -307,7 +312,7 @@ Kirigami.ApplicationWindow ...@@ -307,7 +312,7 @@ Kirigami.ApplicationWindow
{ {
id: footerBg id: footerBg
anchors.fill: parent anchors.fill: parent
color: midLightColor color: darkDarkColor
opacity: opacityLevel opacity: opacityLevel
z: -999 z: -999
...@@ -319,8 +324,8 @@ Kirigami.ApplicationWindow ...@@ -319,8 +324,8 @@ Kirigami.ApplicationWindow
target: footerBg target: footerBg
property: "color" property: "color"
easing.type: Easing.InOutQuad easing.type: Easing.InOutQuad
from: darkColor from: darkMidColor
to: midLightColor to: darkDarkColor
duration: 500 duration: 500
} }
} }
...@@ -330,7 +335,7 @@ Kirigami.ApplicationWindow ...@@ -330,7 +335,7 @@ Kirigami.ApplicationWindow
{ {
id: progressBar id: progressBar
height: 10 height: 10
width: parent.width width: parent.width
z: 999 z: 999
anchors.left: parent.left anchors.left: parent.left
...@@ -459,6 +464,7 @@ Kirigami.ApplicationWindow ...@@ -459,6 +464,7 @@ Kirigami.ApplicationWindow
Layout.row: 2 Layout.row: 2
Layout.column: 2 Layout.column: 2
Layout.maximumHeight: playbackInfo.visible ? playbackInfo.font.pointSize*2 : 0 Layout.maximumHeight: playbackInfo.visible ? playbackInfo.font.pointSize*2 : 0
Label Label
{ {
id: playbackInfo id: playbackInfo
...@@ -471,7 +477,7 @@ Kirigami.ApplicationWindow ...@@ -471,7 +477,7 @@ Kirigami.ApplicationWindow
horizontalAlignment: Qt.AlignHCenter horizontalAlignment: Qt.AlignHCenter
verticalAlignment: Qt.AlignVCenter verticalAlignment: Qt.AlignVCenter
text: progressTimeLabel + " / " + (currentTrack ? (currentTrack.title ? currentTrack.title + " - " + currentTrack.artist : "--- - "+currentTrack.artist) : "") + " / " + durationTimeLabel text: progressTimeLabel + " / " + (currentTrack ? (currentTrack.title ? currentTrack.title + " - " + currentTrack.artist : "--- - "+currentTrack.artist) : "") + " / " + durationTimeLabel
color: foregroundColor color: darkForegroundColor
font.pointSize: fontSizes.tiny font.pointSize: fontSizes.tiny
elide: Text.ElideRight elide: Text.ElideRight
} }
...@@ -488,21 +494,22 @@ Kirigami.ApplicationWindow ...@@ -488,21 +494,22 @@ Kirigami.ApplicationWindow
BabeButton BabeButton
{ {
id: babeBtnIcon id: babeBtnIcon
iconName: "love" iconName: "love"
iconColor: currentBabe ? babeColor : defaultColor iconColor: currentBabe ? babeColor : darkForegroundColor
onClicked: onClicked:
{ {
var value = mainPlaylist.contextMenu.babeIt(currentTrackIndex) var value = mainPlaylist.contextMenu.babeIt(currentTrackIndex)
currentTrack.babe = value ? "1" : "0" currentTrack.babe = value ? "1" : "0"
currentBabe = value currentBabe = value
// bae.runPy();
} }
} }
BabeButton BabeButton
{ {
id: previousBtn id: previousBtn
iconColor: darkForegroundColor
iconName: "media-skip-backward" iconName: "media-skip-backward"
onClicked: Player.previousTrack() onClicked: Player.previousTrack()
onPressAndHold: Player.playAt(prevTrackIndex) onPressAndHold: Player.playAt(prevTrackIndex)
...@@ -511,6 +518,7 @@ Kirigami.ApplicationWindow ...@@ -511,6 +518,7 @@ Kirigami.ApplicationWindow
BabeButton BabeButton
{ {
id: playIcon id: playIcon
iconColor: darkForegroundColor
iconName: isPlaying ? "media-playback-pause" : "media-playback-start" iconName: isPlaying ? "media-playback-pause" : "media-playback-start"
onClicked: onClicked:
...@@ -523,6 +531,7 @@ Kirigami.ApplicationWindow ...@@ -523,6 +531,7 @@ Kirigami.ApplicationWindow
BabeButton BabeButton
{ {
id: nextBtn id: nextBtn
iconColor: darkForegroundColor
iconName: "media-skip-forward" iconName: "media-skip-forward"
onClicked: Player.nextTrack() onClicked: Player.nextTrack()
...@@ -532,6 +541,8 @@ Kirigami.ApplicationWindow ...@@ -532,6 +541,8 @@ Kirigami.ApplicationWindow
BabeButton BabeButton
{ {
id: shuffleBtn id: shuffleBtn
iconColor: darkForegroundColor
iconName: shuffle ? "media-playlist-shuffle" : "media-playlist-repeat" iconName: shuffle ? "media-playlist-shuffle" : "media-playlist-repeat"
onClicked: shuffle = !shuffle onClicked: shuffle = !shuffle
} }
...@@ -640,6 +651,9 @@ Kirigami.ApplicationWindow ...@@ -640,6 +651,9 @@ Kirigami.ApplicationWindow
id: mainPlaylist id: mainPlaylist
anchors.fill: parent anchors.fill: parent
clip: true clip: true
Connections Connections
{ {
target: mainPlaylist target: mainPlaylist
...@@ -653,6 +667,8 @@ Kirigami.ApplicationWindow ...@@ -653,6 +667,8 @@ Kirigami.ApplicationWindow
id: views id: views
anchors.fill: parent anchors.fill: parent
clip: true clip: true
// focusPolicy: Qt.WheelFocus
// visualFocus: true
Column Column
{ {
...@@ -677,11 +693,13 @@ Kirigami.ApplicationWindow ...@@ -677,11 +693,13 @@ Kirigami.ApplicationWindow
else if(currentView === viewsIndex.tracks) tracksView.forceActiveFocus() else if(currentView === viewsIndex.tracks) tracksView.forceActiveFocus()
else if(currentView === viewsIndex.search) searchView.forceActiveFocus() else if(currentView === viewsIndex.search) searchView.forceActiveFocus()
if(!babeitView.isConnected && currentIndex === viewsIndex.babeit)
babeitView.logginDialog.open()
} }
LogginForm BabeitView
{ {
id: babeView id: babeitView
} }
TracksView TracksView
......
...@@ -67,5 +67,7 @@ ...@@ -67,5 +67,7 @@
<file>view_models/BabeList.qml</file> <file>view_models/BabeList.qml</file>
<file>view_models/BabeTable/HeaderMenu.qml</file> <file>view_models/BabeTable/HeaderMenu.qml</file>
<file>view_models/BabeNotify.qml</file> <file>view_models/BabeNotify.qml</file>
<file>widgets/MyBeatView/BabeitView.qml</file>
<file>widgets/PlaybackBar.qml</file>
</qresource> </qresource>
</RCC> </RCC>
#include "babeit.h"
BabeIt::BabeIt(QObject *parent) : QObject(parent)
{
}
#ifndef BABEIT_H
#define BABEIT_H
#include <QObject>
class BabeIt : public QObject
{
Q_OBJECT
public:
explicit BabeIt(QObject *parent = nullptr);
signals:
public slots:
};
#endif // BABEIT_H
\ No newline at end of file
...@@ -37,7 +37,7 @@ BabeSettings::BabeSettings(QObject *parent) : QObject(parent) ...@@ -37,7 +37,7 @@ BabeSettings::BabeSettings(QObject *parent) : QObject(parent)
qDebug() << "Getting settings info from: " << BAE::SettingPath; qDebug() << "Getting settings info from: " << BAE::SettingPath;
qDebug() << "Getting artwork files from: " << BAE::CachePath; qDebug() << "Getting artwork files from: " << BAE::CachePath;
#if defined(Q_OS_LINUX) #if (defined (Q_OS_LINUX) && !defined (Q_OS_ANDROID))
const auto notifyDir = BAE::NotifyDir; const auto notifyDir = BAE::NotifyDir;
if(!BAE::fileExists(notifyDir+"/Babe.notifyrc")) if(!BAE::fileExists(notifyDir+"/Babe.notifyrc"))
...@@ -48,7 +48,7 @@ BabeSettings::BabeSettings(QObject *parent) : QObject(parent) ...@@ -48,7 +48,7 @@ BabeSettings::BabeSettings(QObject *parent) : QObject(parent)
if(knotify.copy(notifyDir+"/Babe.notifyrc")) if(knotify.copy(notifyDir+"/Babe.notifyrc"))
qDebug()<<"the knotify file got copied"; qDebug()<<"the knotify file got copied";
} }
#endif #endif
QDir collectionDBPath_dir(BAE::CollectionDBPath); QDir collectionDBPath_dir(BAE::CollectionDBPath);
QDir cachePath_dir(BAE::CachePath); QDir cachePath_dir(BAE::CachePath);
......
...@@ -7,61 +7,60 @@ function playTrack(track) ...@@ -7,61 +7,60 @@ function playTrack(track)
{ {
root.currentTrack = track root.currentTrack = track
if(bae.fileExists(root.currentTrack.url)) if(bae.fileExists(currentTrack.url))
{ {
player.source(root.currentTrack.url); player.source(currentTrack.url);
player.play() player.play()
// root.playIcon.iconName = "media-playback-pause" // root.playIcon.iconName = "media-playback-pause"
var artwork = root.currentTrack.artwork var artwork = currentTrack.artwork
// root.mainPlaylist.list.currentItem.playingIndicator = true // root.mainPlaylist.list.currentItem.playingIndicator = true
root.currentArtwork = artwork && artwork.length>0 && artwork !== "NONE" ? artwork : bae.loadCover(root.currentTrack.url) root.currentArtwork = artwork && artwork.length>0 && artwork !== "NONE" ? artwork : bae.loadCover(currentTrack.url)
root.currentBabe = bae.trackBabe(currentTrack.url)
root.progressBar.enabled = true
root.currentBabe = bae.trackBabe(root.currentTrack.url)
if(!root.isMobile) if(!root.isMobile)
{ {
root.title = root.currentTrack.title + " - " +root.currentTrack.artist root.title = currentTrack.title + " - " +currentTrack.artist
if(!root.active) if(!root.active)
bae.notifySong(root.currentTrack.url) bae.notifySong(currentTrack.url)
} }
var lyrics = root.currentTrack.lyrics bae.trackLyrics(currentTrack.url)
// if(!lyrics || lyrics.length === 0 || lyrics === "NONE" )
// bae.trackLyrics(root.mainPlaylist.currentTrack.url)
// else
root.mainPlaylist.infoView.lyrics = lyrics
// root.mainPlaylist.infoView.wikiAlbum = bae.albumWiki(root.mainPlaylist.currentTrack.album,root.mainPlaylist.currentTrack.artist) // root.mainPlaylist.infoView.wikiAlbum = bae.albumWiki(root.mainPlaylist.currentTrack.album,root.mainPlaylist.currentTrack.artist)
// root.mainPlaylist.infoView.wikiArtist = bae.artistWiki(root.mainPlaylist.currentTrack.artist) // root.mainPlaylist.infoView.wikiArtist = bae.artistWiki(root.mainPlaylist.currentTrack.artist)
// // root.mainPlaylist.infoView.artistHead = bae.artistArt(root.mainPlaylist.currentTrack.artist) // // root.mainPlaylist.infoView.artistHead = bae.artistArt(root.mainPlaylist.currentTrack.artist)
}else root.missingAlert(root.currentTrack) }else root.missingAlert(currentTrack)
} }
} }
function setLyrics(lyrics)
{
currentTrack.lyrics = lyrics
root.mainPlaylist.infoView.lyricsText.text = lyrics
}
function stop() function stop()
{ {
player.stop() player.stop()
root.progressBar.value = 0 root.progressBar.value = 0
root.mainlistEmpty = true root.progressBar.enabled = false
root.title = "Babe..." root.title = "Babe..."
// root.playIcon.iconName = "media-playback-start"
} }
function pauseTrack() function pauseTrack()
{ {
player.pause() player.pause()
// root.playIcon.iconName = "media-playback-start"
} }
function resumeTrack() function resumeTrack()
{ {
player.play() player.play()
// root.playIcon.iconName = "media-playback-pause"
} }
function nextTrack() function nextTrack()
...@@ -228,9 +227,9 @@ function playAll(tracks) ...@@ -228,9 +227,9 @@ function playAll(tracks)
} }
function babeTrack() function babeTrack(url, value)
{ {
bae.babeTrack(url, value)
} }
function addToPlaylist(urls, playlist) function addToPlaylist(urls, playlist)
...@@ -238,8 +237,8 @@ function addToPlaylist(urls, playlist) ...@@ -238,8 +237,8 @@ function addToPlaylist(urls, playlist)
if(urls.length > 0) if(urls.length > 0)
{ {
bae.trackPlaylist(urls, playlist) bae.trackPlaylist(urls, playlist)
// for(var i in urls) // for(var i in urls)
// bae.trackPlaylist(urls[i], playlist) // bae.trackPlaylist(urls[i], playlist)
if(!isMobile) if(!isMobile)
......
...@@ -17,6 +17,15 @@ ...@@ -17,6 +17,15 @@
#include <cmath> #include <cmath>
#define BABE_MAJOR_VERSION 0
#define BABE_MINOR_VERSION 1
#define BABE_PATCH_VERSION 0
#define BABE_VERSION_STR "@BABE_MAJOR_VERSION@.@BABE_MINOR_VERSION@.@BABE_PATCH_VERSION@"
#define BABE_VERSION KDE_MAKE_VERSION(@BABE_MAJOR_VERSION@,@BABE_MINOR_VERSION@,@BABE_PATCH_VERSION@)
using namespace std; using namespace std;
namespace BAE namespace BAE
...@@ -258,7 +267,7 @@ const QStringList DownloadsPaths = QStandardPaths::standardLocations(QStandardPa ...@@ -258,7 +267,7 @@ const QStringList DownloadsPaths = QStandardPaths::standardLocations(QStandardPa
const QString NotifyDir = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation); const QString NotifyDir = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
const QString BabePort = "8483"; const QString BabePort = "8483";
const QString App = "Babe"; const QString App = "Babe";
const QString Version = "1.0"; const QString Version = BABE_VERSION_STR;
const QString DBName = "collection.db"; const QString DBName = "collection.db";
const QStringList MoodColors = {"#F0FF01","#01FF5B","#3DAEFD","#B401FF","#E91E63"}; const QStringList MoodColors = {"#F0FF01","#01FF5B","#3DAEFD","#B401FF","#E91E63"};
......
...@@ -8,6 +8,7 @@ Item ...@@ -8,6 +8,7 @@ Item
property string emoji property string emoji
property string message property string message
clip: true clip: true
property color color : foregroundColor
anchors.fill: parent anchors.fill: parent
...@@ -61,7 +62,7 @@ Item ...@@ -61,7 +62,7 @@ Item
textFormat: Text.RichText textFormat: Text.RichText
horizontalAlignment: Qt.AlignHCenter horizontalAlignment: Qt.AlignHCenter
elide: Text.ElideRight elide: Text.ElideRight
color: foregroundColor color: textColor
} }
} }
} }
......
...@@ -5,6 +5,7 @@ import org.kde.kirigami 2.2 as Kirigami ...@@ -5,6 +5,7 @@ import org.kde.kirigami 2.2 as Kirigami
Item Item
{ {
id: babeListRoot
property alias list : babeList property alias list : babeList
property alias model : babeList.model property alias model : babeList.model
property alias delegate : babeList.delegate property alias delegate : babeList.delegate
...@@ -20,13 +21,17 @@ Item ...@@ -20,13 +21,17 @@ Item
property string headerBarTitle property string headerBarTitle
property bool headerBarExit : true property bool headerBarExit : true
property string headerBarExitIcon : "window-close" property string headerBarExitIcon : "window-close"
property color headerBarColor : "transparent"