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
403 results
Show changes
Commits on Source (3)
Showing
with 217 additions and 215 deletions
......@@ -246,6 +246,8 @@ libqt_plugin_la_SOURCES = \
network/mediatreelistener.hpp \
network/devicesourceprovider.cpp \
network/devicesourceprovider.hpp \
network/networkbasemodel.cpp \
network/networkbasemodel.hpp \
network/networkdevicemodel.cpp \
network/networkdevicemodel.hpp \
network/networksourcesmodel.cpp \
......@@ -442,6 +444,7 @@ nodist_libqt_plugin_la_SOURCES = \
menus/menus.moc.cpp \
network/devicesourceprovider.moc.cpp \
network/networkdevicemodel.moc.cpp \
network/networkbasemodel.moc.cpp \
network/networksourcesmodel.moc.cpp \
network/networkmediamodel.moc.cpp \
network/servicesdiscoverymodel.moc.cpp \
......
......@@ -104,6 +104,7 @@ moc_headers = files(
'menus/qml_menu_wrapper.hpp',
'menus/menus.hpp',
'network/devicesourceprovider.hpp',
'network/networkbasemodel.hpp',
'network/networkdevicemodel.hpp',
'network/networksourcesmodel.hpp',
'network/networkmediamodel.hpp',
......@@ -374,6 +375,8 @@ some_sources = files(
'network/mediatreelistener.hpp',
'network/devicesourceprovider.cpp',
'network/devicesourceprovider.hpp',
'network/networkbasemodel.cpp',
'network/networkbasemodel.hpp',
'network/networkdevicemodel.cpp',
'network/networkdevicemodel.hpp',
'network/networksourcesmodel.cpp',
......
......@@ -32,18 +32,19 @@
#include "mediatreelistener.hpp"
//represents an entry of the model
struct NetworkDeviceItem
struct NetworkDeviceItem : public NetworkBaseItem
{
NetworkDeviceItem(const SharedInputItem& item, const NetworkDeviceModel::MediaSourcePtr& mediaSource)
: name(qfu(item->psz_name))
, mainMrl(QUrl::fromEncoded(item->psz_uri))
, protocol(mainMrl.scheme())
, type( static_cast<NetworkDeviceModel::ItemType>(item->i_type))
, mediaSource(mediaSource)
, inputItem(item)
NetworkDeviceItem(const SharedInputItem& item, const NetworkDeviceModel::MediaSourcePtr& source)
{
name = qfu(item->psz_name);
mainMrl = QUrl::fromEncoded(item->psz_uri);
protocol = mainMrl.scheme();
type = static_cast<NetworkDeviceModel::ItemType>(item->i_type);
mediaSource = source;
inputItem = item;
id = qHash(name) ^ qHash(protocol);
mrls.push_back(std::make_pair(mainMrl, mediaSource));
mrls.push_back(std::make_pair(mainMrl, source));
char* artworkUrl = input_item_GetArtworkURL(inputItem.get());
if (artworkUrl)
......@@ -54,15 +55,10 @@ struct NetworkDeviceItem
}
uint id;
QString name;
QUrl mainMrl;
std::vector<std::pair<QUrl, NetworkDeviceModel::MediaSourcePtr>> mrls;
QString protocol;
NetworkDeviceModel::ItemType type;
NetworkDeviceModel::MediaSourcePtr mediaSource;
SharedInputItem inputItem;
QString artwork;
};
};
using NetworkDeviceItemPtr =std::shared_ptr<NetworkDeviceItem>;
......
/*****************************************************************************
* Copyright (C) 2019 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.
*****************************************************************************/
#include "networkbasemodel.hpp"
QVariant NetworkBaseModel::basedata(const NetworkBaseItem& item, int role) const
{
switch (role)
{
case NETWORK_BASE_NAME:
return item.name;
case NETWORK_BASE_MRL:
return item.mainMrl;
case NETWORK_BASE_TYPE:
return item.type;
case NETWORK_BASE_PROTOCOL:
return item.protocol;
case NETWORK_BASE_ARTWORK:
return item.artwork;
case NETWORK_BASE_ARTWORK_FALLBACK:
return artworkFallbackForType(item.type);
default:
return {};
};
}
QString NetworkBaseModel::artworkFallbackForType(const ItemType type) const
{
switch (type) {
case TYPE_DISC:
return "qrc:///sd/disc.svg";
case TYPE_CARD:
return "qrc:///sd/capture-card.svg";
case TYPE_STREAM:
return "qrc:///sd/stream.svg";
case TYPE_PLAYLIST:
return "qrc:///sd/playlist.svg";
case TYPE_FILE:
return "qrc:///sd/file.svg";
default:
return "qrc:///sd/directory.svg";
}
}
QHash<int, QByteArray> NetworkBaseModel::roleNames() const
{
return {
{ NETWORK_BASE_NAME, "name" },
{ NETWORK_BASE_MRL, "mrl" },
{ NETWORK_BASE_TYPE, "type" },
{ NETWORK_BASE_PROTOCOL, "protocol" },
{ NETWORK_BASE_ARTWORK, "artwork" },
{ NETWORK_BASE_ARTWORK_FALLBACK, "artworkFallback" },
};
}
/*****************************************************************************
* Copyright (C) 2019 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.
*****************************************************************************/
#ifndef NETWORKBASEMODEL_HPP
#define NETWORKBASEMODEL_HPP
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "util/base_model.hpp"
#include <vlc_media_source.h>
#include <QString>
#include <QUrl>
struct NetworkBaseItem;
class NetworkBaseModel: public BaseModel
{
Q_OBJECT
public:
enum Role {
NETWORK_BASE_NAME = Qt::UserRole + 1,
NETWORK_BASE_MRL,
NETWORK_BASE_TYPE,
NETWORK_BASE_PROTOCOL,
NETWORK_BASE_ARTWORK,
NETWORK_BASE_ARTWORK_FALLBACK,
NETWORK_BASE_MAX
};
enum ItemType{
// qt version of input_item_type_e
TYPE_UNKNOWN = ITEM_TYPE_UNKNOWN,
TYPE_FILE,
TYPE_DIRECTORY,
TYPE_DISC,
TYPE_CARD,
TYPE_STREAM,
TYPE_PLAYLIST,
TYPE_NODE,
};
Q_ENUM( ItemType )
using BaseModel::BaseModel;
QHash<int, QByteArray> roleNames() const override;
Q_INVOKABLE QString artworkFallbackForType(const ItemType type) const;
protected:
QVariant basedata(const NetworkBaseItem& item, int role) const;
};
struct NetworkBaseItem
{
QString name;
QUrl mainMrl;
QString protocol;
NetworkBaseModel::ItemType type;
QString artwork;
};
#endif /* NETWORKBASEMODEL_HPP */
......@@ -221,7 +221,7 @@ NetworkDeviceModel::NetworkDeviceModel( QObject* parent )
}
NetworkDeviceModel::NetworkDeviceModel( NetworkDeviceModelPrivate* priv, QObject* parent)
: BaseModel(priv, parent)
: NetworkBaseModel(priv, parent)
{
}
......@@ -237,36 +237,21 @@ QVariant NetworkDeviceModel::data( const QModelIndex& index, int role ) const
switch ( role )
{
case NETWORK_NAME:
return item->name;
case NETWORK_MRL:
return item->mainMrl;
case NETWORK_TYPE:
return item->type;
case NETWORK_PROTOCOL:
return item->protocol;
case NETWORK_SOURCE:
return item->mediaSource->description;
case NETWORK_TREE:
return QVariant::fromValue( NetworkTreeItem(MediaTreePtr{ item->mediaSource->tree }, item->inputItem.get()) );
case NETWORK_ARTWORK:
return item->artwork;
default:
return {};
return NetworkBaseModel::basedata(*item, role);
}
}
QHash<int, QByteArray> NetworkDeviceModel::roleNames() const
{
return {
{ NETWORK_NAME, "name" },
{ NETWORK_MRL, "mrl" },
{ NETWORK_TYPE, "type" },
{ NETWORK_PROTOCOL, "protocol" },
{ NETWORK_SOURCE, "source" },
{ NETWORK_TREE, "tree" },
{ NETWORK_ARTWORK, "artwork" },
};
QHash<int, QByteArray> roles = NetworkBaseModel::roleNames();
roles[NETWORK_SOURCE] = "source";
roles[NETWORK_TREE] = "tree";
return roles;
}
void NetworkDeviceModel::setCtx(MainCtx* ctx)
......
......@@ -28,7 +28,7 @@
#include <vlc_media_source.h>
#include "util/base_model.hpp"
#include "networkbasemodel.hpp"
#include "util/shared_input_item.hpp"
#include <memory>
......@@ -38,7 +38,7 @@ Q_MOC_INCLUDE("maininterface/mainctx.hpp")
class MainCtx;
class NetworkDeviceModelPrivate;
class NetworkDeviceModel : public BaseModel
class NetworkDeviceModel : public NetworkBaseModel
{
Q_OBJECT
......@@ -49,28 +49,10 @@ class NetworkDeviceModel : public BaseModel
public: // Enums
enum Role {
NETWORK_NAME = Qt::UserRole + 1,
NETWORK_MRL,
NETWORK_TYPE,
NETWORK_PROTOCOL,
NETWORK_SOURCE,
NETWORK_SOURCE = NetworkBaseModel::NETWORK_BASE_MAX,
NETWORK_TREE,
NETWORK_ARTWORK,
};
enum ItemType{
// qt version of input_item_type_e
TYPE_UNKNOWN = ITEM_TYPE_UNKNOWN,
TYPE_FILE,
TYPE_DIRECTORY,
TYPE_DISC,
TYPE_CARD,
TYPE_STREAM,
TYPE_PLAYLIST,
TYPE_NODE,
};
Q_ENUM( ItemType )
enum SDCatType{
// qt version of input_item_type_e
CAT_UNDEFINED = 0,
......
......@@ -40,17 +40,12 @@ namespace {
//use the same queue as in mlfoldermodel
static const char* const ML_FOLDER_ADD_QUEUE = "ML_FOLDER_ADD_QUEUE";
struct NetworkMediaItem
struct NetworkMediaItem : public NetworkBaseItem
{
QString name;
QString uri;
QUrl mainMrl;
QString protocol;
bool indexed;
NetworkMediaModel::ItemType type;
bool canBeIndexed;
NetworkTreeItem tree;
QString artwork;
qint64 fileSize;
QDateTime fileModified;
MLMedia media;
......@@ -487,7 +482,7 @@ struct NetworkMediaModel::ListenerCb : public MediaTreeListener::MediaTreeListen
// NetworkMediaModel implementation
NetworkMediaModel::NetworkMediaModel( QObject* parent )
: BaseModel( new NetworkMediaModelPrivate(this), parent )
: NetworkBaseModel( new NetworkMediaModelPrivate(this), parent )
{
}
......@@ -515,21 +510,13 @@ QVariant NetworkMediaModel::data( const QModelIndex& index, int role ) const
switch ( role )
{
case NETWORK_NAME:
return item->name;
case NETWORK_MRL:
return item->mainMrl;
case NETWORK_INDEXED:
return item->indexed;
case NETWORK_CANINDEX:
return item->canBeIndexed;
case NETWORK_TYPE:
return item->type;
case NETWORK_PROTOCOL:
return item->protocol;
case NETWORK_TREE:
return QVariant::fromValue( item->tree );
case NETWORK_ARTWORK:
case NETWORK_BASE_ARTWORK:
{
if (!item->artwork.isEmpty())
return item->artwork;
......@@ -570,27 +557,24 @@ QVariant NetworkMediaModel::data( const QModelIndex& index, int role ) const
return {};
}
default:
return {};
return basedata(*item, role);
}
}
QHash<int, QByteArray> NetworkMediaModel::roleNames() const
{
return {
{ NETWORK_NAME, "name" },
{ NETWORK_MRL, "mrl" },
{ NETWORK_INDEXED, "indexed" },
{ NETWORK_CANINDEX, "can_index" },
{ NETWORK_TYPE, "type" },
{ NETWORK_PROTOCOL, "protocol" },
{ NETWORK_TREE, "tree" },
{ NETWORK_ARTWORK, "artwork" },
{ NETWORK_FILE_SIZE, "fileSizeRaw64" },
{ NETWORK_FILE_MODIFIED, "fileModified" },
{ NETWORK_MEDIA, "media" },
{ NETWORK_MEDIA_PROGRESS, "progress" },
{ NETWORK_MEDIA_DURATION, "duration" }
};
auto roles = NetworkBaseModel::roleNames();
roles[NETWORK_INDEXED] = "indexed";
roles[NETWORK_CANINDEX] = "can_index";
roles[NETWORK_TREE] = "tree";
roles[NETWORK_FILE_SIZE] = "fileSizeRaw64";
roles[NETWORK_FILE_MODIFIED] = "fileModified";
roles[NETWORK_MEDIA] = "media";
roles[NETWORK_MEDIA_PROGRESS] = "progress";
roles[NETWORK_MEDIA_DURATION] = "duration";
return roles;
}
Qt::ItemFlags NetworkMediaModel::flags( const QModelIndex& idx ) const
......
......@@ -30,7 +30,7 @@
#include <vlc_cxx_helpers.hpp>
#include "util/shared_input_item.hpp"
#include "util/base_model.hpp"
#include "networkbasemodel.hpp"
#include <memory>
......@@ -101,20 +101,15 @@ private:
};
class NetworkMediaModelPrivate;
class NetworkMediaModel : public BaseModel
class NetworkMediaModel : public NetworkBaseModel
{
Q_OBJECT
public:
enum Role {
NETWORK_NAME = Qt::UserRole + 1,
NETWORK_MRL,
NETWORK_INDEXED,
NETWORK_INDEXED = NETWORK_BASE_MAX,
NETWORK_CANINDEX,
NETWORK_TYPE,
NETWORK_PROTOCOL,
NETWORK_TREE,
NETWORK_ARTWORK,
NETWORK_FILE_SIZE,
NETWORK_FILE_MODIFIED,
NETWORK_MEDIA,
......@@ -122,19 +117,6 @@ public:
NETWORK_MEDIA_DURATION,
};
enum ItemType{
// qt version of input_item_type_e
TYPE_UNKNOWN = ITEM_TYPE_UNKNOWN,
TYPE_FILE,
TYPE_DIRECTORY,
TYPE_DISC,
TYPE_CARD,
TYPE_STREAM,
TYPE_PLAYLIST,
TYPE_NODE,
};
Q_ENUM( ItemType )
Q_PROPERTY(MainCtx* ctx READ getCtx WRITE setCtx NOTIFY ctxChanged)
Q_PROPERTY(QVariant tree READ getTree WRITE setTree NOTIFY treeChanged)
Q_PROPERTY(QVariantList path READ getPath NOTIFY pathChanged)
......
......@@ -94,24 +94,7 @@ MainViewLoader {
defaultText: qsTr("Unknown Share")
coverProvider: function(index, data) {
function _baseUri(type) {
switch (type) {
case NetworkMediaModel.TYPE_DISC:
return "qrc:///sd/disc.svg"
case NetworkMediaModel.TYPE_CARD:
return "qrc:///sd/capture-card.svg"
case NetworkMediaModel.TYPE_STREAM:
return "qrc:///sd/stream.svg"
case NetworkMediaModel.TYPE_PLAYLIST:
return "qrc:///sd/playlist.svg"
case NetworkMediaModel.TYPE_FILE:
return "qrc:///sd/file.svg"
default:
return "qrc:///sd/directory.svg"
}
}
const fallbackImage = SVGColorImage.colorize(_baseUri(data.type))
const fallbackImage = SVGColorImage.colorize(data.artworkFallback)
.background(networkDragItem.colorContext.bg.secondary)
.color1(networkDragItem.colorContext.fg.primary)
.accent(networkDragItem.colorContext.accent)
......
......@@ -45,25 +45,6 @@ Item {
// currently shown image
property var _image: typeImage.visible ? typeImage : artwork
function _baseUri(type) {
switch (type) {
case NetworkMediaModel.TYPE_DISC:
return "qrc:///sd/disc.svg"
case NetworkMediaModel.TYPE_CARD:
return "qrc:///sd/capture-card.svg"
case NetworkMediaModel.TYPE_STREAM:
return "qrc:///sd/stream.svg"
case NetworkMediaModel.TYPE_PLAYLIST:
return "qrc:///sd/playlist.svg"
case NetworkMediaModel.TYPE_FILE:
return "qrc:///sd/file.svg"
default:
return "qrc:///sd/directory.svg"
}
}
Widgets.ScaledImage {
// failsafe cover, we show this while loading artwork or if loading fails
......@@ -83,7 +64,7 @@ Item {
if (!networkModel || !visible)
return ""
const img = SVGColorImage.colorize(_baseUri(networkModel.type))
const img = SVGColorImage.colorize(networkModel.artworkFallback)
.color1(root.color1)
.accent(root.accent)
......
......@@ -49,24 +49,7 @@ Widgets.GridItem {
cacheImage: true // we may have network thumbnail
fallbackImage: {
const f = function(type) {
switch (type) {
case NetworkMediaModel.TYPE_DISC:
return "qrc:///sd/disc.svg"
case NetworkMediaModel.TYPE_CARD:
return "qrc:///sd/capture-card.svg"
case NetworkMediaModel.TYPE_STREAM:
return "qrc:///sd/stream.svg"
case NetworkMediaModel.TYPE_PLAYLIST:
return "qrc:///sd/playlist.svg"
case NetworkMediaModel.TYPE_FILE:
return "qrc:///sd/file.svg"
default:
return "qrc:///sd/directory.svg"
}
}
return SVGColorImage.colorize(f(model.type))
return SVGColorImage.colorize(model.artworkFallback)
.color1(root.colorContext.fg.primary)
.accent(root.colorContext.accent)
.uri()
......
......@@ -38,19 +38,10 @@ using MediaTreePtr = vlc_shared_data_ptr_type(vlc_media_tree_t,
vlc_media_tree_Hold,
vlc_media_tree_Release);
struct StandardPathItem
struct StandardPathItem : public NetworkBaseItem
{
QString name;
QUrl mrl;
QString protocol;
NetworkDeviceModel::ItemType type;
SharedInputItem inputItem;
MediaTreePtr tree;
QUrl artwork;
};
using StandardPathItemPtr = std::shared_ptr<StandardPathItem>;
......@@ -79,7 +70,7 @@ bool ascendingName(const StandardPathItemPtr& a,
bool ascendingMrl(const StandardPathItemPtr& a,
const StandardPathItemPtr& b)
{
return (QString::compare(a->mrl.toString(), b->mrl.toString(), Qt::CaseInsensitive) <= 0);
return (QString::compare(a->mainMrl.toString(), b->mainMrl.toString(), Qt::CaseInsensitive) <= 0);
}
bool descendingName(const StandardPathItemPtr& a,
......@@ -91,7 +82,7 @@ bool descendingName(const StandardPathItemPtr& a,
bool descendingMrl(const StandardPathItemPtr& a,
const StandardPathItemPtr& b)
{
return (QString::compare(a->mrl.toString(), b->mrl.toString(), Qt::CaseInsensitive) >= 0);
return (QString::compare(a->mainMrl.toString(), b->mainMrl.toString(), Qt::CaseInsensitive) >= 0);
}
}
......@@ -130,13 +121,13 @@ public:
Q_Q(StandardPathModel);
assert(m_qmlInitializing == false);
#ifdef Q_OS_UNIX
addItem(QVLCUserDir(VLC_HOME_DIR), qtr("Home"), QUrl());
addItem(QVLCUserDir(VLC_HOME_DIR), qtr("Home"), {});
#endif
addItem(QVLCUserDir(VLC_DESKTOP_DIR), qtr("Desktop"), QUrl());
addItem(QVLCUserDir(VLC_DOCUMENTS_DIR), qtr("Documents"), QUrl());
addItem(QVLCUserDir(VLC_MUSIC_DIR), qtr("Music"), QUrl());
addItem(QVLCUserDir(VLC_VIDEOS_DIR), qtr("Videos"), QUrl());
addItem(QVLCUserDir(VLC_DOWNLOAD_DIR), qtr("Download"), QUrl());
addItem(QVLCUserDir(VLC_DESKTOP_DIR), qtr("Desktop"), {});
addItem(QVLCUserDir(VLC_DOCUMENTS_DIR), qtr("Documents"), {});
addItem(QVLCUserDir(VLC_MUSIC_DIR), qtr("Music"), {});
addItem(QVLCUserDir(VLC_VIDEOS_DIR), qtr("Videos"), {});
addItem(QVLCUserDir(VLC_DOWNLOAD_DIR), qtr("Download"), {});
//model is never updated, but this is still needed to fit the LocalListBaseModelPrivate requirements
++m_revision;
m_loading = false;
......@@ -152,14 +143,14 @@ public:
return nullptr;
}
void addItem(const QString & path, const QString & name, const QUrl & artwork)
void addItem(const QString & path, const QString & name, const QString& artwork)
{
QUrl url = QUrl::fromLocalFile(path);
auto item = std::make_shared<StandardPathItem>();
item->name = name;
item->mrl = url;
item->mainMrl = url;
item->protocol = url.scheme();
item->type = NetworkDeviceModel::TYPE_DIRECTORY;
......@@ -200,7 +191,7 @@ public:
// Ctor / dtor
StandardPathModel::StandardPathModel(QObject * parent)
: BaseModel(new StandardPathModelPrivate(this), parent)
: NetworkBaseModel(new StandardPathModelPrivate(this), parent)
{
}
......@@ -208,16 +199,10 @@ StandardPathModel::StandardPathModel(QObject * parent)
QHash<int, QByteArray> StandardPathModel::roleNames() const /* override */
{
return
{
{ PATH_NAME, "name" },
{ PATH_MRL, "mrl" },
{ PATH_PROTOCOL, "protocol" },
{ PATH_TYPE, "type" },
{ PATH_SOURCE, "source" },
{ PATH_TREE, "tree" },
{ PATH_ARTWORK, "artwork" }
};
auto roles = NetworkBaseModel::roleNames();
roles[PATH_SOURCE] = "source";
roles[PATH_TREE] = "tree";
return roles;
}
QVariant StandardPathModel::data(const QModelIndex & index, int role) const /* override */
......@@ -230,19 +215,9 @@ QVariant StandardPathModel::data(const QModelIndex & index, int role) const /* o
switch (role)
{
case PATH_NAME:
return item->name;
case PATH_MRL:
return item->mrl;
case PATH_PROTOCOL:
return item->protocol;
case PATH_TYPE:
return item->type;
case PATH_TREE:
return QVariant::fromValue(NetworkTreeItem(item->tree, item->inputItem.get()));
case PATH_ARTWORK:
return item->artwork;
default:
return QVariant();
return NetworkBaseModel::basedata(*item, role);
}
}
......@@ -26,10 +26,10 @@
#endif
// VLC includes
#include "util/base_model.hpp"
#include "networkbasemodel.hpp"
class StandardPathModelPrivate;
class StandardPathModel : public BaseModel
class StandardPathModel : public NetworkBaseModel
{
Q_OBJECT
......@@ -37,11 +37,7 @@ public: // Enums
// NOTE: Roles should be aligned with the NetworkDeviceModel.
enum Role
{
PATH_NAME = Qt::UserRole + 1,
PATH_MRL,
PATH_TYPE,
PATH_PROTOCOL,
PATH_SOURCE,
PATH_SOURCE = NetworkBaseModel::NETWORK_BASE_MAX,
PATH_TREE,
PATH_ARTWORK
};
......