[Konsole-devel] About duplicated enumeration definitions in the code

Jekyll Wu adaptee at gmail.com
Mon Mar 19 08:28:12 UTC 2012


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

于 2012年03月18日 21:08, Kurt Hindenburg 写道:
> On Fri, Mar 16, 2012 at 11:52 PM, Jekyll Wu <adaptee at gmail.com>
> wrote:
> 
> Such duplication is definitely not good. What is the better way to 
> eliminate those duplication ?
> 
> a). Make TerminalDisplay, HistorySizeDialog, etc all #inlucde
> "Profile.h"
> 
> b). Move those enum definition into another separate small
> header(like Enumeration.h), and all other related files #include
> "Enumeration.h"
> 
> Hi,
>> Definitely b - also can you look at using Qt QFlags if you find
>> that useful.

Hi:

I have pushed a few commits for merging those enumeration definitions.

I'm sure the result is still not good enough. Feel free to correct my
stupid mistakes.

Thanks for the suggestion, but I wonder whether you actually meant to
say QMetaType.

There are still other related problems. For example, the following
code does not look quite good:

void ViewManager::applyProfileToView(...)
{
    ...
    // set scroll-bar position
    int scrollBarPosition =
profile->property<int>(Profile::ScrollBarPosition);

    if (scrollBarPosition == Enum::ScrollBarLeft)
        view->setScrollBarPosition(Enum::ScrollBarLeft);
    else if (scrollBarPosition == Enum::ScrollBarRight)
        view->setScrollBarPosition(Enum::ScrollBarRight);
    else if (scrollBarPosition == Enum::ScrollBarHidden)
        view->setScrollBarPosition(Enum::ScrollBarHidden);

    ....
}

problem 1: it is not type safety. if profile->property<int> returns
a strange value(image use modifies the profile manually and sets a
invalid number), the result would be strange.

problem 2: I prefer to hide all those "profile->property<xxx>()"
within class Profile itself.

Regards
Jekyll
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBAgAGBQJPZu4cAAoJEOemZ9znWXlAL6IP/2RIYS9hfF+rSPzHBzvaZGng
tRL9NYSYQLG8zN4q5qTfZ/xKedEHUyuj81MWVVOB17my1KOfKBNwkSO5UG9UUnHI
KI+fxw5ymBC2EheSQZvjeVcGdkSlCj7Yw7aVl1LaSdRknLFAmAc7Pd+UA2Ni8Qov
TC5qNeKzxpctQTYEFHam+dRpoxu9cEqrX7Dvns7bet8xgU6rDC9gsFCyY5C7wXfz
rKcAAMhRsEAxmtzcUaRYC6dyDihUIXn8YQMW5nFGYAfTPXJFKRjeCy6TCgeKU999
Ooc+IS4qKC4/R0UC2y3TwkCh/cBG9fZ10TYx4uKhM+y/RhbmFlOIviBqx8mp8TNz
o9s2r9jFMTHJYleQ9VpwKraHJkXieS2Cm8/RceOzmmzyFk2GE+GBZ539Ra7nMohE
1iXp85gKCpuZdKFFQp3CnbH0QVsmxrvDwBudYU4iwBvyFHvupBdijpJljTysBJ3A
SG6epvJR6Fj+09MihhsPIIdcHhj6C6y2qzrSS8uBK+0eiJLoozMLWvUPUmmfR0ve
/2d7hpRrSS406rJB1I6j7t+kPaU4rbFoHlhXHnO4q6GZ+vmGueXH4HqoflWIwtZB
w9vFrLrketrhAeN39td+57zfo3ojuD8bXJTSKaB5U0xw0N52SPxYFVXRy+i9p1H6
Vjgv81TD0R7LfiugTfG1
=rqJd
-----END PGP SIGNATURE-----



More information about the konsole-devel mailing list