Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
  • abdsaber000/vlc
  • falbrechtskirchinger/vlc
  • b.sullender/vlc
  • hulxv/vlc
  • zyad-ayad/vlc
408 results
Show changes
Commits on Source (6)
......@@ -866,6 +866,7 @@ libqt_plugin_la_QML = \
gui/qt/style/qmldir \
gui/qt/util/qml/Helpers.js \
gui/qt/util/qml/SelectableDelegateModel.qml \
gui/qt/util/qml/ModelSortSettingHandler.qml \
gui/qt/util/qml/MultipleBinding.qml \
gui/qt/util/qml/FlickableScrollHandler.qml \
gui/qt/util/qml/ViewDragAutoScrollHandler.qml \
......
......@@ -843,3 +843,13 @@ QWindow *MainCtx::intfMainWindow() const
else
return nullptr;
}
QVariant MainCtx::settingValue(const QString &key, const QVariant &defaultValue) const
{
return settings->value(key, defaultValue);
}
void MainCtx::setSettingValue(const QString &key, const QVariant &value)
{
settings->setValue(key, value);
}
......@@ -282,6 +282,9 @@ public:
QWindow *intfMainWindow() const;
Q_INVOKABLE QVariant settingValue(const QString &key, const QVariant &defaultValue) const;
Q_INVOKABLE void setSettingValue(const QString &key, const QVariant &value);
protected:
/* Systray */
void createSystray();
......
......@@ -28,6 +28,7 @@ import "qrc:///widgets/" as Widgets
import "qrc:///playlist/" as PL
import "qrc:///player/" as P
import "qrc:///util/" as Util
import "qrc:///util/Helpers.js" as Helpers
FocusScope {
......@@ -187,6 +188,16 @@ FocusScope {
backend.addAndPlay(ids);
}
Util.ModelSortSettingHandler {
id: modelSortSettingHandler
}
Connections {
target: sourcesBanner
onContentModelChanged: modelSortSettingHandler.set(sourcesBanner.contentModel, History.viewPath)
}
Rectangle {
color: VLCStyle.colors.bg
anchors.fill: parent
......
......@@ -3,6 +3,7 @@
#include "network/networkmediamodel.hpp"
#include "medialibrary/mlqmltypes.hpp"
NavigationHistory::NavigationHistory(QObject *parent)
: QObject(parent)
{
......@@ -23,7 +24,10 @@ void NavigationHistory::push(QVariantMap item, PostAction postAction)
m_history.push_back(item);
emit previousEmptyChanged(false);
if (postAction == PostAction::Go)
{
updateViewPath();
emit currentChanged(m_history.back());
}
}
static void pushListRec(QVariantMap& itemMap, QVariantList::const_iterator it, QVariantList::const_iterator end )
......@@ -48,6 +52,39 @@ static void pushListRec(QVariantMap& itemMap, QVariantList::const_iterator it, Q
}
}
static void addLeafRec(QVariant &item, const QVariantMap &leaf)
{
auto itemMap = item.toMap();
if (itemMap.contains("view"))
{
QVariant viewProps = itemMap.value("view");
addLeafRec(viewProps, leaf);
itemMap["view"] = viewProps;
}
else if (itemMap.contains("properties"))
{
QVariant propsVar = itemMap.value("properties");
const auto propsMap = propsVar.toMap();
if (propsMap.empty())
{
itemMap["properties"] = leaf;
}
else
{
addLeafRec(propsVar, leaf);
itemMap["properties"] = propsVar;
}
}
else
{
// invalid node?
return;
}
//overwrite item QVariant
item = itemMap;
}
static bool isNodeValid(QVariant& value)
{
......@@ -94,6 +131,15 @@ static bool isNodeValid(QVariant& value)
return false;
}
static QString getViewPath(QVariantMap map)
{
QString r;
if (map.contains("view"))
r = getViewPath(map.value("view").toMap());
else if (map.contains("name"))
r = "/" + map.value("name").toString() + getViewPath(map.value("properties").toMap());
return r;
}
void NavigationHistory::push(QVariantList itemList, NavigationHistory::PostAction postAction)
{
......@@ -113,6 +159,7 @@ void NavigationHistory::update(QVariantMap item)
int length = m_history.length();
assert(length >= 1);
m_history.back() = item;
updateViewPath();
}
void NavigationHistory::update(QVariantList itemList)
......@@ -127,6 +174,13 @@ void NavigationHistory::update(QVariantList itemList)
update(rootView.toMap());
}
void NavigationHistory::addLeaf(QVariantMap itemMap)
{
assert(m_history.size() >= 1);
addLeafRec(m_history.back(), itemMap);
updateViewPath();
}
void NavigationHistory::previous(PostAction postAction)
{
if (m_history.count() == 1)
......@@ -145,3 +199,18 @@ void NavigationHistory::previous(PostAction postAction)
if (postAction == PostAction::Go)
emit currentChanged( m_history.back() );
}
void NavigationHistory::updateViewPath()
{
const auto viewPath = getViewPath(getCurrent().toMap());
if (viewPath == m_viewPath)
return;
m_viewPath = viewPath;
emit viewPathChanged( m_viewPath );
}
QString NavigationHistory::viewPath() const
{
return m_viewPath;
}
......@@ -10,6 +10,7 @@ class NavigationHistory : public QObject
public:
Q_PROPERTY(QVariant current READ getCurrent NOTIFY currentChanged FINAL)
Q_PROPERTY(bool previousEmpty READ isPreviousEmpty NOTIFY previousEmptyChanged FINAL)
Q_PROPERTY(QString viewPath READ viewPath NOTIFY viewPathChanged FINAL)
enum class PostAction{
Stay,
......@@ -22,10 +23,12 @@ public:
QVariant getCurrent();
bool isPreviousEmpty();
QString viewPath() const;
signals:
void currentChanged(QVariant current);
void previousEmptyChanged(bool empty);
void viewPathChanged(QString viewPath);
public slots:
/**
......@@ -79,11 +82,22 @@ public slots:
*/
Q_INVOKABLE void update(QVariantList itemList);
/**
* @brief same as @a push(QVariantList) but modify the last (current) item's tail instead of insterting a new one
*
* @see push
*/
Q_INVOKABLE void addLeaf(QVariantMap itemMap);
// Go to previous page
void previous( PostAction = PostAction::Go );
private:
void updateViewPath();
QVariantList m_history;
QString m_viewPath;
};
#endif // NAVIGATION_HISTORY_HPP
/*****************************************************************************
* Copyright (C) 2022 VLC authors and VideoLAN
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* ( at your option ) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
import QtQml 2.11
import org.videolan.vlc 0.1
QtObject {
id: root
property var _model: null
property string _key: ""
readonly property string _sortCriteriaKey: "sortCriteria/" + _key
readonly property string _sortOrderKey: "sortOrder/" + _key
property var _sortCriteriaConnection: Connections {
target: !!root._model ? root._model : null
enabled: !!root._model && root._model.hasOwnProperty("sortCriteria")
onSortCriteriaChanged: {
MainCtx.setSettingValue(root._sortCriteriaKey, _model.sortCriteria)
}
}
property var _sortOrderConnection: Connections {
target: !!root._model ? root._model : null
enabled: !!root._model && root._model.hasOwnProperty("sortOrder")
onSortOrderChanged: {
MainCtx.setSettingValue(root._sortOrderKey, root._model.sortOrder)
}
}
function set(model, key) {
_model = model
_key = key
if (!_model)
return
if (_model.hasOwnProperty("sortCriteria"))
_model.sortCriteria = MainCtx.settingValue(_sortCriteriaKey, _model.sortCriteria)
// MainCtx.settingValue seems to change int -> string
if (_model.hasOwnProperty("sortOrder"))
_model.sortOrder = parseInt(MainCtx.settingValue(_sortOrderKey, _model.sortOrder))
}
}
......@@ -27,6 +27,7 @@
<file alias="SelectableDelegateModel.qml">util/qml/SelectableDelegateModel.qml</file>
<file alias="Helpers.js">util/qml/Helpers.js</file>
<file alias="MultipleBinding.qml">util/qml/MultipleBinding.qml</file>
<file alias="ModelSortSettingHandler.qml">util/qml/ModelSortSettingHandler.qml</file>
<file alias="FlickableScrollHandler.qml">util/qml/FlickableScrollHandler.qml</file>
<file alias="ViewDragAutoScrollHandler.qml">util/qml/ViewDragAutoScrollHandler.qml</file>
<file alias="BindingRev8.qml">util/qml/BindingRev8.qml</file>
......
......@@ -21,10 +21,7 @@ import org.videolan.vlc 0.1
FocusScope {
id: root
property var view: ({
"name": defaultPage,
"properties": {}
})
property var view: null
property string defaultPage: ""
property var pageModel: []
......@@ -39,14 +36,14 @@ FocusScope {
loadView()
}
function loadDefaultView() {
root.view = {
"name": defaultPage,
"properties": {}
function loadView() {
if (view === null) {
var defaultView = {"name": defaultPage, "properties": {}}
History.addLeaf({"view": defaultView})
root.view = defaultView
return
}
}
function loadView() {
if (view.name === "") {
console.error("view is not defined")
return
......@@ -57,7 +54,7 @@ FocusScope {
}
var found = stackView.loadView(root.pageModel, view.name, view.properties)
if (!found) {
loadDefaultView()
console.error("failed to load", JSON.stringify(History.current))
return
}
......
......@@ -62,13 +62,9 @@ StackView {
root.currentItem.dismiss()
if (view === _currentView) {
if (Object.keys(viewProperties).length === 0 && root.currentItem.hasOwnProperty("loadDefaultView") ) {
root.currentItem.loadDefaultView()
} else {
for ( var viewProp in viewProperties ) {
if ( root.currentItem.hasOwnProperty(viewProp) ) {
root.currentItem[viewProp] = viewProperties[viewProp]
}
for ( var viewProp in viewProperties ) {
if ( root.currentItem.hasOwnProperty(viewProp) ) {
root.currentItem[viewProp] = viewProperties[viewProp]
}
}
return true
......