Пример #1
0
void DirReaderMenu::onOpen()
{
    clearItems();
   
    if(dir.length()==0)
    {
        //empty
        return;
    }
   
    //read files
    FileDir fd;
    //FIXME: make this optional
    bool ok = fd.read(dir, false, postfix, false);
    if(!ok)
    {
        cout << "read failed:" << dir << endl;
        return;
    }
   
    vector<string> ret;
    fd.getFiles(ret);
   
    vector<FileDir::TYPE> ret_t;
    fd.getTypes(ret_t);
   
   
    for(uint i=0;i<ret.size();i++)
    {
        if(skip_prefix.size()>0)
        {
            size_t pf = ret[i].find_first_of(skip_prefix);
	     
            if(pf==0)
            {
                continue;
            }
        }
	
	
        if(ret_t[i]==FileDir::T_FILE)
        {
            addFileItem(ret[i]);
        }
	
        else //is dir
        {
            DirReaderMenu* sub = new DirReaderMenu(back->getUseSurf(), selback->getUseSurf(), f, 
            maxchar,  subback->getUseSurf(),  subback_sel->getUseSurf());
	     
            //NOTICE: dirnames does not contain a trailing / 
            //FIXME: never?
            string s_dir = dir+ret[i];
            if(s_dir.at(s_dir.size()-1) != '/')
            {
                s_dir+="/";
            }
	     
            sub->setDir(s_dir);
            sub->copyDirAction(dir_action);
            sub->setOnlyPostfix(postfix);
            sub->setSkipPrefix(skip_prefix);
            sub->setDisplayPostfix(getDisplayPostfix());
	     
	     
            addSubDirReaderMenu(ret[i], sub);
        }
	
    }
}