Date:2010-07-28 00:54:00 (13 years 4 months ago)
Author:Maarten ter Huurne
Commit:9d05af288172d0f3664d36888b03a3428ea3d895
Message:Removed duplicate code between MenuSettingFile and its MenuSettingImage subclass.

Also performed some cosmetic fixes.
Files: src/menusettingfile.cpp (3 diffs)
src/menusettingfile.h (1 diff)
src/menusettingimage.cpp (1 diff)
src/menusettingimage.h (1 diff)

Change Details

src/menusettingfile.cpp
2424using namespace std;
2525using namespace fastdelegate;
2626
27MenuSettingFile::MenuSettingFile(GMenu2X *gmenu2x, const string &name, const string &description, string *value, const string &filter)
28    : MenuSetting(gmenu2x,name,description)
27MenuSettingFile::MenuSettingFile(GMenu2X *gmenu2x, const string &name, const string &description, string *value, const string &filter_)
28    : MenuSetting(gmenu2x, name, description)
29    , originalValue(*value)
30    , _value(value)
31    , filter(filter_)
2932{
3033    IconButton *btn;
3134
32    this->filter = filter;
33    _value = value;
34    originalValue = *value;
35
3635    btn = new IconButton(gmenu2x, "skin:imgs/buttons/x.png", gmenu2x->tr["Clear"]);
3736    btn->setAction(MakeDelegate(this, &MenuSettingFile::clear));
3837    buttonBox.add(btn);
...... 
5049
5150void MenuSettingFile::manageInput()
5251{
53    if (gmenu2x->input[ACTION_X])
54        setValue("");
55    if (gmenu2x->input[ACTION_B])
56        select();
52    if (gmenu2x->input[ACTION_X]) clear();
53    if (gmenu2x->input[ACTION_B]) select();
5754}
5855
5956void MenuSettingFile::clear()
...... 
6461void MenuSettingFile::select()
6562{
6663    FileDialog fd(gmenu2x, description, filter, value());
67    if (fd.exec())
68        setValue(fd.getPath()+"/"+fd.getFile());
64    if (fd.exec()) {
65        setValue(fd.getPath() + "/" + fd.getFile());
66    }
6967}
7068
7169void MenuSettingFile::setValue(const string &value)
src/menusettingfile.h
3131    string *_value;
3232    string filter;
3333
34    void select();
34    virtual void select();
3535    void clear();
3636
3737public:
38    MenuSettingFile(GMenu2X *gmenu2x, const string &name, const string &description, string *value, const string &filter="");
39    virtual ~MenuSettingFile() {};
38    MenuSettingFile(GMenu2X *gmenu2x, const string &name,
39                    const string &description, string *value,
40                    const string &filter = "");
41    virtual ~MenuSettingFile() {}
4042
4143    virtual void draw(int y);
4244    virtual void manageInput();
src/menusettingimage.cpp
2424using namespace std;
2525
2626MenuSettingImage::MenuSettingImage(GMenu2X *gmenu2x, const string &name, const string &description, string *value, const string &filter)
27    : MenuSettingFile(gmenu2x,name,description,value,filter) {
28    this->filter = filter;
29    _value = value;
30    originalValue = *value;
27    : MenuSettingFile(gmenu2x, name, description, value, filter)
28{
3129}
3230
33void MenuSettingImage::manageInput() {
34    if ( gmenu2x->input[ACTION_X] ) setValue("");
35    if ( gmenu2x->input[ACTION_B] ) {
36        ImageDialog id(gmenu2x, description, filter, value());
37        if (id.exec()) setValue( id.getPath()+"/"+id.getFile() );
38    }
31void MenuSettingImage::select() {
32    ImageDialog id(gmenu2x, description, filter, value());
33    if (id.exec()) setValue(id.getPath() + "/" + id.getFile());
3934}
4035
4136void MenuSettingImage::setValue(const string &value) {
42    string skinpath = gmenu2x->getExePath()+"skins/"+gmenu2x->confStr["skin"];
43    bool inSkinDir = value.substr(0,skinpath.length()) == skinpath;
37    string skinpath(gmenu2x->getExePath() + "skins/" + gmenu2x->confStr["skin"]);
38    bool inSkinDir = value.substr(0, skinpath.length()) == skinpath;
4439    if (!inSkinDir && gmenu2x->confStr["skin"] != "Default") {
45        skinpath = gmenu2x->getExePath()+"skins/Default";
46        inSkinDir = value.substr(0,skinpath.length()) == skinpath;
40        skinpath = gmenu2x->getExePath() + "skins/Default";
41        inSkinDir = value.substr(0, skinpath.length()) == skinpath;
4742    }
4843    if (inSkinDir) {
4944        string tempIcon = value.substr(skinpath.length(), value.length());
5045        string::size_type pos = tempIcon.find("/");
51        if (pos != string::npos)
52            *_value = "skin:"+tempIcon.substr(pos+1,value.length());
53        else
46        if (pos != string::npos) {
47            *_value = "skin:" + tempIcon.substr(pos + 1, value.length());
48        } else {
5449            *_value = value;
50        }
5551    } else {
5652        *_value = value;
5753    }
src/menusettingimage.h
2020#ifndef MENUSETTINGIMAGE_H
2121#define MENUSETTINGIMAGE_H
2222
23#include "gmenu2x.h"
2423#include "menusettingfile.h"
2524
2625using std::string;
2726
2827class MenuSettingImage : public MenuSettingFile {
28protected:
29    virtual void select();
30
2931public:
30    MenuSettingImage(GMenu2X *gmenu2x, const string &name, const string &description, string *value, const string &filter="");
31    virtual ~MenuSettingImage() {};
32    MenuSettingImage(GMenu2X *gmenu2x, const string &name,
33                     const string &description, string *value,
34                     const string &filter = "");
35    virtual ~MenuSettingImage() {}
3236
33    virtual void manageInput();
3437    virtual void setValue(const string &value);
3538};
3639

Archive Download the corresponding diff file



interactive