Date:2014-08-12 09:14:31 (9 years 7 months ago)
Author:Maarten ter Huurne
Commit:a741653a13a7b3cb5848ee633272a81adbac2bc1
Message:Don't pre-strip file name extensions in Selector

This operation is not so slow that it really needs caching. Also
reducing the delay before showing a directory will have more impact
on the user experience than a slightly faster paint.
Files: src/selector.cpp (6 diffs)
src/selector.h (1 diff)

Change Details

src/selector.cpp
8585    unsigned int firstElement = 0;
8686    unsigned int selected = constrain(startSelection, 0, fl.size() - 1);
8787
88    vector<string> titles;
89    prepare(&fl,&titles);
88    prepare(fl);
9089
9190    auto folderIcon = gmenu2x->sc.skinRes("imgs/folder.png");
9291    if (!folderIcon) {
...... 
106105
107106        //Screenshot
108107        if (fl.isFile(selected)) {
109            string& noext = titles[selected - fl.dirCount()];
110            string path = screendir + noext + ".png";
108            string path = screendir + trimExtension(fl[selected]) + ".png";
111109            auto screenshot = OffscreenSurface::loadImage(path, "", false);
112110            if (screenshot) {
113111                screenshot->blitRight(s, 320, 0, 320, 240, 128u);
...... 
130128                            top + (iY * fontheight) + (fontheight / 2),
131129                            Font::HAlignLeft, Font::VAlignMiddle);
132130            } else
133                gmenu2x->font->write(s, titles[i - fl.dirCount()], 4,
131                gmenu2x->font->write(s, trimExtension(fl[i]), 4,
134132                            top + (iY * fontheight) + (fontheight / 2),
135133                            Font::HAlignLeft, Font::VAlignMiddle);
136134        }
...... 
186184                        dir = dir.substr(0,p+1);
187185                        selected = 0;
188186                        firstElement = 0;
189                        prepare(&fl,&titles);
187                        prepare(fl);
190188                    }
191189                }
192190                break;
...... 
203201
204202                    selected = 0;
205203                    firstElement = 0;
206                    prepare(&fl,&titles);
204                    prepare(fl);
207205                }
208206                break;
209207
...... 
215213    return result ? (int)selected : -1;
216214}
217215
218void Selector::prepare(FileLister *fl, vector<string> *titles) {
219    fl->setPath(dir);
216void Selector::prepare(FileLister& fl) {
217    fl.setPath(dir);
220218
221219    screendir = dir;
222220    if (!screendir.empty() && screendir[screendir.length() - 1] != '/') {
223221        screendir += "/";
224222    }
225223    screendir += "previews/";
226
227    titles->resize(fl->getFiles().size());
228    for (uint i=0; i<fl->getFiles().size(); i++) {
229        titles->at(i) = trimExtension(fl->getFiles()[i]);
230    }
231224}
src/selector.h
3636    LinkApp *link;
3737    std::string file, dir, screendir;
3838
39    void prepare(FileLister *fl, std::vector<std::string> *titles);
39    void prepare(FileLister& fl);
4040
4141public:
4242    Selector(GMenu2X *gmenu2x, LinkApp *link,

Archive Download the corresponding diff file



interactive