Ticket #3229: mythvideo.patch

File mythvideo.patch, 3.6 KB (added by Lincoln Stein, 19 years ago)

Patch to hide directories containing nothing but parental-level forbidden files

  • mythvideo/mythvideo/videolist.cpp

     
    423423  public:
    424424    VideoListImp();
    425425
    426     void build_generic_tree(GenericTree *dst, meta_dir_node *src,
    427                             bool include_updirs);
     426  int build_generic_tree(GenericTree *dst,
     427                         meta_dir_node *src,
     428                         bool include_updirs
     429                         );
    428430    GenericTree *buildVideoList(bool filebrowser, bool flatlist,
    429431                                int parental_level, bool include_updirs);
    430432
     
    501503    void buildFileList(smart_dir_node &directory, metadata_list &metalist,
    502504                       const QString &prefix);
    503505
     506    GenericTree *addDirNode(GenericTree *where_to_add, GenericTree *sub_node,
     507                          bool add_up_dirs);
    504508    GenericTree *addDirNode(GenericTree *where_to_add, const QString &dname,
    505509                            bool add_up_dirs);
    506510    int addFileNode(GenericTree *where_to_add, const QString &name, int id);
     
    623627            gContext->GetNumSetting("mythvideo.sort_ignores_case", 1);
    624628}
    625629
    626 void VideoListImp::build_generic_tree(GenericTree *dst, meta_dir_node *src,
    627                                       bool include_updirs)
     630int VideoListImp::build_generic_tree(GenericTree *dst,
     631                                      meta_dir_node *src,
     632                                      bool include_updirs
     633                                      )
    628634{
     635  int total_files=0;
     636  int node_files =0;
     637
    629638    for (meta_dir_node::const_dir_iterator dir = src->dirs_begin();
    630639         dir != src->dirs_end(); ++dir)
    631640    {
    632         GenericTree *t = addDirNode(dst, (*dir)->getName(), include_updirs);
     641      GenericTree *t = new GenericTree( (*dir)->getName().stripWhiteSpace(),
     642                                        kSubFolder,
     643                                        false);
     644      node_files      = build_generic_tree(t, dir->get(), include_updirs);
     645      if (node_files > 0) {
     646        addDirNode(dst, dst->addNode(t), include_updirs);
    633647        t->setAttribute(kFolderPath, m_folder_id);
    634648        m_folder_id_to_path.
    635649                insert(id_string_map::value_type(m_folder_id,
    636650                                                 (*dir)->getFQPath()));
    637651        ++m_folder_id;
    638 
    639         build_generic_tree(t, dir->get(), include_updirs);
     652        total_files += node_files;
    640653    }
     654    }
    641655
    642656    for (meta_dir_node::const_entry_iterator entry = src->entries_begin();
    643657         entry != src->entries_end(); ++entry)
    644658    {
    645659        addFileNode(dst, (*entry)->getData()->Title(),
    646660                    (*entry)->getData()->getFlatIndex());
     661      total_files++;
    647662    }
     663  return total_files;
    648664}
    649665
    650666// Build a generic tree containing the video files. You can control the
     
    943959    m_metadata.setList(ml);
    944960}
    945961
    946 GenericTree *VideoListImp::addDirNode(GenericTree *where_to_add,
    947                                       const QString &dname, bool add_up_dirs)
     962GenericTree *VideoListImp::addDirNode(GenericTree *where_to_add,
     963                                      GenericTree *sub_node,
     964                                      bool add_up_dirs)
    948965{
    949966    // Add the subdir node...
    950     GenericTree *sub_node = where_to_add->addNode(dname, kSubFolder, false);
    951967    sub_node->setAttribute(kNodeSort, kOrderSub);
    952968    sub_node->setOrderingIndex(kNodeSort);
    953969
     
    963979    return sub_node;
    964980}
    965981
     982GenericTree *VideoListImp::addDirNode(GenericTree *where_to_add,
     983                                      const QString &dname, bool add_up_dirs)
     984{
     985  // Add the subdir node...
     986  return addDirNode(where_to_add,where_to_add->addNode(dname, kSubFolder, false),add_up_dirs);
     987}
     988
    966989int VideoListImp::addFileNode(GenericTree *where_to_add, const QString &name,
    967990                              int index)
    968991{