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
401 results
Show changes
Commits on Source (7)
......@@ -2,9 +2,11 @@
* vlc_config_cat.h : Definition of configuration categories
*****************************************************************************
* Copyright (C) 2003 VLC authors and VideoLAN
* Copyright (C) 2023 Videolabs
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Anil Daoud <anil@videolan.org>
* Alexandre Janniaux <ajanni@videolabs.io>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
......@@ -26,6 +28,8 @@
# include <vlc_plugin.h>
# include <assert.h>
#define MAIN_TITLE N_( "VLC preferences" )
/* - Titles -
......@@ -160,93 +164,26 @@ struct config_subcategory_t
const char *help;
};
static const struct config_category_t categories_array[] =
{
{ CAT_PLAYLIST, SUBCAT_PLAYLIST_GENERAL, PLAYLIST_HELP },
{ CAT_INTERFACE, SUBCAT_INTERFACE_GENERAL, INTF_HELP },
{ CAT_AUDIO, SUBCAT_AUDIO_GENERAL, AUDIO_HELP },
{ CAT_VIDEO, SUBCAT_VIDEO_GENERAL, VIDEO_HELP },
{ CAT_INPUT, SUBCAT_INPUT_GENERAL, INPUT_HELP },
{ CAT_SOUT, SUBCAT_SOUT_GENERAL, SOUT_HELP },
{ CAT_ADVANCED, SUBCAT_ADVANCED_MISC, AADVANCED_HELP },
};
/**
* Fetch category information from VLC
*/
VLC_API VLC_USED const struct config_category_t *
vlc_config_cat_Find(enum vlc_config_cat cat);
static const struct config_subcategory_t subcategories_array[] =
{
{ SUBCAT_PLAYLIST_GENERAL, CAT_PLAYLIST, PLAYLIST_TITLE, PGENERAL_HELP },
{ SUBCAT_PLAYLIST_EXPORT, CAT_PLAYLIST, N_("Export"), PEXPORT_HELP },
{ SUBCAT_PLAYLIST_SD, CAT_PLAYLIST, N_("Services discovery"), SD_HELP },
{ SUBCAT_INTERFACE_GENERAL, CAT_INTERFACE, INTF_TITLE, INTF_GENERAL_HELP },
{ SUBCAT_INTERFACE_CONTROL, CAT_INTERFACE, N_("Control interfaces"), INTF_CONTROL_HELP },
{ SUBCAT_INTERFACE_HOTKEYS, CAT_INTERFACE, N_("Hotkeys settings"), INTF_HOTKEYS_HELP },
{ SUBCAT_INTERFACE_MAIN, CAT_INTERFACE, N_("Main interfaces"), INTF_MAIN_HELP },
{ SUBCAT_AUDIO_GENERAL, CAT_AUDIO, AUDIO_TITLE, AUDIO_GENERAL_HELP },
{ SUBCAT_AUDIO_RESAMPLER, CAT_AUDIO, N_("Audio resampler"), AFILTER_HELP },
{ SUBCAT_AUDIO_AFILTER, CAT_AUDIO, N_("Filters"), AFILTER_HELP },
{ SUBCAT_AUDIO_AOUT, CAT_AUDIO, N_("Output modules"), AOUT_HELP },
{ SUBCAT_AUDIO_VISUAL, CAT_AUDIO, N_("Visualizations"), AVISUAL_HELP },
{ SUBCAT_VIDEO_GENERAL, CAT_VIDEO, VIDEO_TITLE, VIDEO_GENERAL_HELP },
{ SUBCAT_VIDEO_VFILTER, CAT_VIDEO, N_("Filters"), VFILTER_HELP },
{ SUBCAT_VIDEO_VOUT, CAT_VIDEO, N_("Output modules"), VOUT_HELP },
{ SUBCAT_VIDEO_SPLITTER, CAT_VIDEO, N_("Splitters"), SPLITTER_HELP },
{ SUBCAT_VIDEO_SUBPIC, CAT_VIDEO, N_("Subtitles / OSD"), SUBPIC_HELP },
{ SUBCAT_INPUT_GENERAL, CAT_INPUT, INPUT_TITLE, INPUT_HELP },
{ SUBCAT_INPUT_ACCESS, CAT_INPUT, N_("Access modules"), ACCESS_HELP },
{ SUBCAT_INPUT_ACODEC, CAT_INPUT, N_("Audio codecs"), ADEC_HELP },
{ SUBCAT_INPUT_DEMUX, CAT_INPUT, N_("Demuxers"), DEMUX_HELP },
{ SUBCAT_INPUT_STREAM_FILTER, CAT_INPUT, N_("Stream filters"), STREAM_FILTER_HELP },
{ SUBCAT_INPUT_SCODEC, CAT_INPUT, N_("Subtitle codecs"), SDEC_HELP },
{ SUBCAT_INPUT_VCODEC, CAT_INPUT, N_("Video codecs"), VDEC_HELP },
{ SUBCAT_SOUT_GENERAL, CAT_SOUT, SOUT_TITLE, SOUT_GENERAL_HELP },
{ SUBCAT_SOUT_ACO, CAT_SOUT, N_("Access output"), SOUT_ACO_HELP },
{ SUBCAT_SOUT_MUX, CAT_SOUT, N_("Muxers"), SOUT_MUX_HELP },
{ SUBCAT_SOUT_PACKETIZER, CAT_SOUT, N_("Packetizers"), SOUT_PACKET_HELP },
{ SUBCAT_SOUT_RENDERER, CAT_SOUT, N_("Renderers"), SOUT_RENDER_HELP },
{ SUBCAT_SOUT_STREAM, CAT_SOUT, N_("Sout stream"), SOUT_STREAM_HELP },
{ SUBCAT_SOUT_VOD, CAT_SOUT, N_("VOD"), SOUT_VOD_HELP },
{ SUBCAT_ADVANCED_MISC, CAT_ADVANCED, AADVANCED_TITLE, AADVANCED_HELP },
{ SUBCAT_ADVANCED_NETWORK, CAT_ADVANCED, N_("Network"), ANETWORK_HELP },
{ SUBCAT_HIDDEN, CAT_HIDDEN, NULL, NULL },
};
VLC_API VLC_USED const struct config_category_t *
vlc_config_cat_GetAt(size_t index);
/** Get the table index for the given category entry. */
VLC_USED
static inline int vlc_config_cat_IndexOf( enum vlc_config_cat cat )
{
int index = -1;
for( unsigned i = 0; i < ARRAY_SIZE(categories_array); i++ )
{
if( categories_array[i].id == cat )
{
index = i;
break;
}
}
return index;
}
VLC_API VLC_USED const struct config_subcategory_t *
vlc_config_subcat_Find(enum vlc_config_subcat subcat);
/** Get the table index for the given subcategory entry. */
VLC_USED
static inline int vlc_config_subcat_IndexOf( enum vlc_config_subcat subcat )
{
int index = -1;
for( unsigned i = 0; i < ARRAY_SIZE(subcategories_array); i++ )
{
if( subcategories_array[i].id == subcat )
{
index = i;
break;
}
}
return index;
}
VLC_API VLC_USED const struct config_subcategory_t *
vlc_config_subcat_GetAt(size_t index);
VLC_API VLC_USED size_t
vlc_config_cat_Count(void);
VLC_API VLC_USED size_t
vlc_config_subcat_Count(void);
/** Get the "general" subcategory for a given category.
*
......@@ -266,24 +203,30 @@ static inline int vlc_config_subcat_IndexOf( enum vlc_config_subcat subcat )
VLC_USED
static inline enum vlc_config_subcat vlc_config_cat_GetGeneralSubcat( enum vlc_config_cat cat )
{
int i = vlc_config_cat_IndexOf( cat );
return (i != -1) ? categories_array[i].general_subcat : SUBCAT_UNKNOWN;
const struct config_category_t *c = vlc_config_cat_Find(cat);
if (c == NULL)
return SUBCAT_UNKNOWN;
return c->general_subcat;
}
/** Get the name for a subcategory. */
VLC_USED
static inline const char *vlc_config_subcat_GetName( enum vlc_config_subcat subcat )
{
int i = vlc_config_subcat_IndexOf( subcat );
return (i != -1) ? vlc_gettext(subcategories_array[i].name) : NULL;
const struct config_subcategory_t *s = vlc_config_subcat_Find(subcat);
if (s == NULL)
return NULL;
return vlc_gettext(s->name);
}
/** Get the help text for a subcategory. */
VLC_USED
static inline const char *vlc_config_subcat_GetHelp( enum vlc_config_subcat subcat )
{
int i = vlc_config_subcat_IndexOf( subcat );
return (i != -1) ? vlc_gettext(subcategories_array[i].help) : NULL;
const struct config_subcategory_t *s = vlc_config_subcat_Find(subcat);
if (s == NULL)
return NULL;
return vlc_gettext(s->help);
}
/** Get the name for a category. */
......@@ -298,16 +241,20 @@ static inline const char *vlc_config_cat_GetName( enum vlc_config_cat cat )
VLC_USED
static inline const char *vlc_config_cat_GetHelp( enum vlc_config_cat cat )
{
int i = vlc_config_cat_IndexOf( cat );
return (i != -1) ? vlc_gettext(categories_array[i].help) : NULL;
const struct config_category_t *c = vlc_config_cat_Find(cat);
if (c == NULL)
return NULL;
return vlc_gettext(c->help);
}
/** Get the parent category for the given subcategory. */
VLC_USED
static inline enum vlc_config_cat vlc_config_cat_FromSubcat( enum vlc_config_subcat subcat )
{
int i = vlc_config_subcat_IndexOf( subcat );
return (i != -1) ? subcategories_array[i].cat : CAT_UNKNOWN;
const struct config_subcategory_t *s = vlc_config_subcat_Find(subcat);
if (s == NULL)
return CAT_UNKNOWN;
return s->cat;
}
/** Check if the given subcategory is a "general" one. */
......
......@@ -565,11 +565,11 @@ enum VLCTreeBranchType {
// Sort the top-level cat items into preferred order
NSUInteger index = 0;
NSUInteger childrenCount = [[self children] count];
for (unsigned i = 0; i < ARRAY_SIZE(categories_array); i++) {
for (unsigned i = 0; i < vlc_config_cat_Count(); i++) {
// Try to find index of current cat
for (NSUInteger j = index; j < childrenCount; j++) {
VLCTreeBranchItem * item = [[self children] objectAtIndex:j];
if ([item category] == categories_array[i].id) {
if ([item category] == vlc_config_cat_GetAt(i)->id) {
if (j != index) {
[[self children] exchangeObjectAtIndex:j withObjectAtIndex:index];
}
......
......@@ -160,9 +160,10 @@ PrefsTree::PrefsTree( qt_intf_t *_p_intf, QWidget *_parent,
// the top-level cat nodes into a preferred order.
sortItems( 0, Qt::AscendingOrder );
unsigned index = 0;
for (unsigned i = 0; i < ARRAY_SIZE(categories_array); i++)
for (unsigned i = 0; i < vlc_config_cat_Count(); i++)
{
cat_item = findCatItem( categories_array[i].id );
const config_category_t *cat = vlc_config_cat_GetAt(i);
cat_item = findCatItem(cat->id);
if ( cat_item == NULL )
continue;
unsigned cur_index = (unsigned)indexOfTopLevelItem( cat_item );
......@@ -209,10 +210,8 @@ QTreeWidgetItem *PrefsTree::createCatNode( enum vlc_config_cat cat )
item->setIcon( 0, icon );
//current_item->setSizeHint( 0, QSize( -1, ITEM_HEIGHT ) );
int cat_index = (int) vlc_config_cat_IndexOf( cat );
int general_subcat_index = (int) vlc_config_subcat_IndexOf( general_subcat );
this->catMap[cat_index] = item;
this->subcatMap[general_subcat_index] = item;
this->catMap[cat] = item;
this->subcatMap[general_subcat] = item;
addTopLevelItem( item );
expandItem( item );
......@@ -235,8 +234,7 @@ QTreeWidgetItem *PrefsTree::createSubcatNode( QTreeWidgetItem * cat, enum vlc_co
item->setText( 0, item->name );
//item->setSizeHint( 0, QSize( -1, ITEM_HEIGHT ) );
int subcat_index = (int) vlc_config_subcat_IndexOf( subcat );
this->subcatMap[subcat_index] = item;
this->subcatMap[subcat] = item;
cat->addChild( item );
......@@ -269,14 +267,18 @@ void PrefsTree::createPluginNode( QTreeWidgetItem * parent, module_t *mod )
QTreeWidgetItem *PrefsTree::findCatItem( enum vlc_config_cat cat )
{
int cat_index = vlc_config_cat_IndexOf( cat );
return this->catMap[cat_index];
auto it = this->catMap.find(cat);
if (it == std::end(this->catMap))
return NULL;
return it->second;
}
QTreeWidgetItem *PrefsTree::findSubcatItem( enum vlc_config_subcat subcat )
{
int subcat_index = vlc_config_subcat_IndexOf( subcat );
return this->subcatMap[subcat_index];
auto it = this->subcatMap.find(subcat);
if (it == std::end(this->subcatMap))
return NULL;
return it->second;
}
void PrefsTree::applyAll()
......
......@@ -36,6 +36,8 @@
#include "qt.hpp"
#include <unordered_map>
/**
* Notes:
*
......@@ -112,8 +114,8 @@ private:
qt_intf_t *p_intf;
module_t *main_module;
bool b_show_only_loaded;
QTreeWidgetItem *catMap[ARRAY_SIZE(categories_array)] = { nullptr };
QTreeWidgetItem *subcatMap[ARRAY_SIZE(subcategories_array)] = { nullptr };
std::unordered_map<vlc_config_cat, QTreeWidgetItem *> catMap;
std::unordered_map<vlc_config_subcat, QTreeWidgetItem *> subcatMap;
private slots:
void resizeColumns();
......
......@@ -215,6 +215,7 @@ libvlccore_la_SOURCES = \
version.c \
config/ansi_term.h \
config/configuration.h \
config/cat.c \
config/core.c \
config/chain.c \
config/dirs.c \
......
/*****************************************************************************
* vlc_config_cat.h : Definition of configuration categories
*****************************************************************************
* Copyright (C) 2003 VLC authors and VideoLAN
* Copyright (C) 2023 Videolabs
*
* Authors: Clément Stenac <zorglub@videolan.org>
* Anil Daoud <anil@videolan.org>
* Alexandre Janniaux <ajanni@videolabs.io>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser 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.
*****************************************************************************/
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <vlc_common.h>
#include <vlc_config_cat.h>
static const struct config_category_t categories_array[] =
{
{ CAT_PLAYLIST, SUBCAT_PLAYLIST_GENERAL, PLAYLIST_HELP },
{ CAT_INTERFACE, SUBCAT_INTERFACE_GENERAL, INTF_HELP },
{ CAT_AUDIO, SUBCAT_AUDIO_GENERAL, AUDIO_HELP },
{ CAT_VIDEO, SUBCAT_VIDEO_GENERAL, VIDEO_HELP },
{ CAT_INPUT, SUBCAT_INPUT_GENERAL, INPUT_HELP },
{ CAT_SOUT, SUBCAT_SOUT_GENERAL, SOUT_HELP },
{ CAT_ADVANCED, SUBCAT_ADVANCED_MISC, AADVANCED_HELP },
};
static const struct config_subcategory_t subcategories_array[] =
{
{ SUBCAT_PLAYLIST_GENERAL, CAT_PLAYLIST, PLAYLIST_TITLE, PGENERAL_HELP },
{ SUBCAT_PLAYLIST_EXPORT, CAT_PLAYLIST, N_("Export"), PEXPORT_HELP },
{ SUBCAT_PLAYLIST_SD, CAT_PLAYLIST, N_("Services discovery"), SD_HELP },
{ SUBCAT_INTERFACE_GENERAL, CAT_INTERFACE, INTF_TITLE, INTF_GENERAL_HELP },
{ SUBCAT_INTERFACE_CONTROL, CAT_INTERFACE, N_("Control interfaces"), INTF_CONTROL_HELP },
{ SUBCAT_INTERFACE_HOTKEYS, CAT_INTERFACE, N_("Hotkeys settings"), INTF_HOTKEYS_HELP },
{ SUBCAT_INTERFACE_MAIN, CAT_INTERFACE, N_("Main interfaces"), INTF_MAIN_HELP },
{ SUBCAT_AUDIO_GENERAL, CAT_AUDIO, AUDIO_TITLE, AUDIO_GENERAL_HELP },
{ SUBCAT_AUDIO_RESAMPLER, CAT_AUDIO, N_("Audio resampler"), AFILTER_HELP },
{ SUBCAT_AUDIO_AFILTER, CAT_AUDIO, N_("Filters"), AFILTER_HELP },
{ SUBCAT_AUDIO_AOUT, CAT_AUDIO, N_("Output modules"), AOUT_HELP },
{ SUBCAT_AUDIO_VISUAL, CAT_AUDIO, N_("Visualizations"), AVISUAL_HELP },
{ SUBCAT_VIDEO_GENERAL, CAT_VIDEO, VIDEO_TITLE, VIDEO_GENERAL_HELP },
{ SUBCAT_VIDEO_VFILTER, CAT_VIDEO, N_("Filters"), VFILTER_HELP },
{ SUBCAT_VIDEO_VOUT, CAT_VIDEO, N_("Output modules"), VOUT_HELP },
{ SUBCAT_VIDEO_SPLITTER, CAT_VIDEO, N_("Splitters"), SPLITTER_HELP },
{ SUBCAT_VIDEO_SUBPIC, CAT_VIDEO, N_("Subtitles / OSD"), SUBPIC_HELP },
{ SUBCAT_INPUT_GENERAL, CAT_INPUT, INPUT_TITLE, INPUT_HELP },
{ SUBCAT_INPUT_ACCESS, CAT_INPUT, N_("Access modules"), ACCESS_HELP },
{ SUBCAT_INPUT_ACODEC, CAT_INPUT, N_("Audio codecs"), ADEC_HELP },
{ SUBCAT_INPUT_DEMUX, CAT_INPUT, N_("Demuxers"), DEMUX_HELP },
{ SUBCAT_INPUT_STREAM_FILTER, CAT_INPUT, N_("Stream filters"), STREAM_FILTER_HELP },
{ SUBCAT_INPUT_SCODEC, CAT_INPUT, N_("Subtitle codecs"), SDEC_HELP },
{ SUBCAT_INPUT_VCODEC, CAT_INPUT, N_("Video codecs"), VDEC_HELP },
{ SUBCAT_SOUT_GENERAL, CAT_SOUT, SOUT_TITLE, SOUT_GENERAL_HELP },
{ SUBCAT_SOUT_ACO, CAT_SOUT, N_("Access output"), SOUT_ACO_HELP },
{ SUBCAT_SOUT_MUX, CAT_SOUT, N_("Muxers"), SOUT_MUX_HELP },
{ SUBCAT_SOUT_PACKETIZER, CAT_SOUT, N_("Packetizers"), SOUT_PACKET_HELP },
{ SUBCAT_SOUT_RENDERER, CAT_SOUT, N_("Renderers"), SOUT_RENDER_HELP },
{ SUBCAT_SOUT_STREAM, CAT_SOUT, N_("Sout stream"), SOUT_STREAM_HELP },
{ SUBCAT_SOUT_VOD, CAT_SOUT, N_("VOD"), SOUT_VOD_HELP },
{ SUBCAT_ADVANCED_MISC, CAT_ADVANCED, AADVANCED_TITLE, AADVANCED_HELP },
{ SUBCAT_ADVANCED_NETWORK, CAT_ADVANCED, N_("Network"), ANETWORK_HELP },
{ SUBCAT_HIDDEN, CAT_HIDDEN, NULL, NULL },
};
const struct config_category_t *
vlc_config_cat_Find(enum vlc_config_cat cat)
{
for (size_t i=0; i < ARRAY_SIZE(categories_array); i++ )
{
if( categories_array[i].id == cat )
return &categories_array[i];
}
return NULL;
}
const struct config_category_t *
vlc_config_cat_GetAt(size_t index)
{
assert(index < ARRAY_SIZE(categories_array));
return &categories_array[index];
}
const struct config_subcategory_t *
vlc_config_subcat_Find(enum vlc_config_subcat subcat)
{
for (size_t i=0; i < ARRAY_SIZE(subcategories_array); i++)
{
if (subcategories_array[i].id == subcat)
return &subcategories_array[i];
}
return NULL;
}
const struct config_subcategory_t *
vlc_config_subcat_GetAt(size_t index)
{
assert(index < ARRAY_SIZE(subcategories_array));
return &subcategories_array[index];
}
size_t
vlc_config_cat_Count(void)
{
return ARRAY_SIZE(categories_array);
}
size_t
vlc_config_subcat_Count(void)
{
return ARRAY_SIZE(subcategories_array);
}
......@@ -532,6 +532,12 @@ vlc_cond_init
vlc_cond_signal
vlc_cond_timedwait
vlc_cond_wait
vlc_config_cat_Count
vlc_config_cat_Find
vlc_config_cat_GetAt
vlc_config_subcat_Count
vlc_config_subcat_Find
vlc_config_subcat_GetAt
vlc_credential_init
vlc_credential_clean
vlc_credential_get
......
......@@ -74,6 +74,7 @@ libvlccore_sources_base = files(
'libvlc-module.c',
'missing.c',
'version.c',
'config/cat.c',
'config/configuration.h',
'config/core.c',
'config/chain.c',
......