kalzium
kalziumschemetype.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "kalziumschemetype.h"
00021
00022 #include "kalziumdataobject.h"
00023 #include "prefs.h"
00024
00025 #include <QBrush>
00026 #include <QVariant>
00027
00028 #include <klocale.h>
00029 #include <kdebug.h>
00030 #include <kstandarddirs.h>
00031
00032 KalziumSchemeTypeFactory::KalziumSchemeTypeFactory()
00033 {
00034 m_schemes << KalziumMonoColorSchemeType::instance();
00035 m_schemes << KalziumBlocksSchemeType::instance();
00036 m_schemes << KalziumIconicSchemeType::instance();
00037 m_schemes << KalziumFamilySchemeType::instance();
00038 m_schemes << KalziumGroupsSchemeType::instance();
00039 }
00040
00041 KalziumSchemeTypeFactory* KalziumSchemeTypeFactory::instance()
00042 {
00043 static KalziumSchemeTypeFactory kstf;
00044 return &kstf;
00045 }
00046
00047 KalziumSchemeType* KalziumSchemeTypeFactory::build( int id ) const
00048 {
00049 if ( ( id < 0 ) || ( id >= m_schemes.count() ) )
00050 return 0;
00051
00052 return m_schemes.at( id );
00053 }
00054
00055 KalziumSchemeType* KalziumSchemeTypeFactory::build( const QByteArray& id ) const
00056 {
00057 for ( int i = 0; i < m_schemes.count(); i++ )
00058 {
00059 if ( m_schemes.at( i )->name() == id )
00060 return m_schemes.at( i );
00061 }
00062
00063
00064 return 0;
00065 }
00066
00067 QStringList KalziumSchemeTypeFactory::schemes() const
00068 {
00069 QStringList l;
00070 for ( int i = 0; i < m_schemes.count(); i++ )
00071 {
00072 l << m_schemes.at( i )->description();
00073 }
00074 return l;
00075 }
00076
00077
00078 KalziumSchemeType* KalziumSchemeType::instance()
00079 {
00080 return 0;
00081 }
00082
00083 KalziumSchemeType::KalziumSchemeType()
00084 {
00085 }
00086
00087 KalziumSchemeType::~KalziumSchemeType()
00088 {
00089 }
00090
00091 KalziumMonoColorSchemeType::KalziumMonoColorSchemeType()
00092 : KalziumSchemeType()
00093 {
00094 }
00095
00096 KalziumMonoColorSchemeType* KalziumMonoColorSchemeType::instance()
00097 {
00098 static KalziumMonoColorSchemeType kmcst;
00099 return &kmcst;
00100 }
00101
00102 QByteArray KalziumMonoColorSchemeType::name() const
00103 {
00104 return "MonoColor";
00105 }
00106
00107 QString KalziumMonoColorSchemeType::description() const
00108 {
00109 return i18n( "One Colour" );
00110 }
00111
00112 QBrush KalziumMonoColorSchemeType::elementBrush( int el, const QRect& elrect ) const
00113 {
00114 Q_UNUSED( el );
00115 Q_UNUSED( elrect );
00116 return QBrush( Prefs::noscheme() );
00117 }
00118
00119 QColor KalziumMonoColorSchemeType::textColor( int el ) const
00120 {
00121 Q_UNUSED( el );
00122 return Qt::black;
00123 }
00124
00125 QList<legendPair> KalziumMonoColorSchemeType::legendItems() const
00126 {
00127 QList<legendPair> ll;
00128 ll << qMakePair( i18n( "All the Elements" ), QBrush( Prefs::noscheme() ) );
00129 return ll;
00130 }
00131
00132
00133 KalziumBlocksSchemeType::KalziumBlocksSchemeType()
00134 : KalziumSchemeType()
00135 {
00136 }
00137
00138 KalziumBlocksSchemeType* KalziumBlocksSchemeType::instance()
00139 {
00140 static KalziumBlocksSchemeType kbst;
00141 return &kbst;
00142 }
00143
00144 QByteArray KalziumBlocksSchemeType::name() const
00145 {
00146 return "Blocks";
00147 }
00148
00149 QString KalziumBlocksSchemeType::description() const
00150 {
00151 return i18n( "Blocks" );
00152 }
00153
00154 QBrush KalziumBlocksSchemeType::elementBrush( int el, const QRect& ) const
00155 {
00156 QString block = KalziumDataObject::instance()->element( el )->dataAsString( ChemicalDataObject::periodTableBlock );
00157
00158 QColor c;
00159 if ( block == QLatin1String( "s" ) )
00160 c = Prefs::block_s();
00161 else if ( block == QLatin1String( "p" ) )
00162 c = Prefs::block_p();
00163 else if ( block == QLatin1String( "d" ) )
00164 c = Prefs::block_d();
00165 else if ( block == QLatin1String( "f" ) )
00166 c = Prefs::block_f();
00167 else
00168 c = Qt::lightGray;
00169
00170 return QBrush( c );
00171 }
00172
00173 QColor KalziumBlocksSchemeType::textColor( int el ) const
00174 {
00175 Q_UNUSED( el );
00176 return Qt::black;
00177 }
00178
00179 QList<legendPair> KalziumBlocksSchemeType::legendItems() const
00180 {
00181 QList<legendPair> ll;
00182 ll << qMakePair( i18n( "s-Block" ), QBrush( Prefs::block_s() ) );
00183 ll << qMakePair( i18n( "p-Block" ), QBrush( Prefs::block_p() ) );
00184 ll << qMakePair( i18n( "d-Block" ), QBrush( Prefs::block_d() ) );
00185 ll << qMakePair( i18n( "f-Block" ), QBrush( Prefs::block_f() ) );
00186 return ll;
00187 }
00188
00190
00191 KalziumIconicSchemeType::KalziumIconicSchemeType()
00192 : KalziumSchemeType()
00193 {
00194 }
00195
00196 KalziumIconicSchemeType* KalziumIconicSchemeType::instance()
00197 {
00198 static KalziumIconicSchemeType kist;
00199 return &kist;
00200 }
00201
00202 QByteArray KalziumIconicSchemeType::name() const
00203 {
00204 return "Iconic";
00205 }
00206
00207 QString KalziumIconicSchemeType::description() const
00208 {
00209 return i18n( "Iconic" );
00210 }
00211
00212 QBrush KalziumIconicSchemeType::elementBrush( int el, const QRect& ) const
00213 {
00214 QPixmap pixmap = KalziumDataObject::instance()->pixmap( el );
00215
00216 return QBrush( pixmap );
00217 }
00218
00219 QColor KalziumIconicSchemeType::textColor( int ) const
00220 {
00221 return Qt::black;
00222 }
00223
00224 QList<legendPair> KalziumIconicSchemeType::legendItems() const
00225 {
00226 QList<legendPair> ll;
00227 ll << qMakePair( i18n( "Each element is represented by an icon which represents its use." ), QBrush( ) );
00228 return ll;
00229 }
00230
00231
00233 KalziumFamilySchemeType::KalziumFamilySchemeType()
00234 : KalziumSchemeType()
00235 {
00236 }
00237
00238 KalziumFamilySchemeType* KalziumFamilySchemeType::instance()
00239 {
00240 static KalziumFamilySchemeType kbst;
00241 return &kbst;
00242 }
00243
00244 QByteArray KalziumFamilySchemeType::name() const
00245 {
00246 return "Family";
00247 }
00248
00249 QString KalziumFamilySchemeType::description() const
00250 {
00251 return i18n( "Family" );
00252 }
00253
00254 QBrush KalziumFamilySchemeType::elementBrush( int el, const QRect& ) const
00255 {
00256 QString family = KalziumDataObject::instance()->element( el )->dataAsString( ChemicalDataObject::family );
00257
00258 QColor c;
00259
00260 if ( family == QLatin1String( "Noblegas" ) ){
00261 c = Prefs::noble_gas();
00262 }
00263 else if ( family == QLatin1String( "Non-Metal" ) ){
00264 c = Prefs::nonmetal();
00265 }
00266 else if ( family == QLatin1String( "Rare_Earth" ) ){
00267 c = Prefs::rare();
00268 }
00269 else if ( family == QLatin1String( "Alkaline_Earth" ) ){
00270 c = Prefs::alkaline();
00271 }
00272 else if ( family == QLatin1String( "Alkali_Earth" ) ){
00273 c = Prefs::alkalie();
00274 }
00275 else if ( family == QLatin1String( "Transition" ) ){
00276 c = Prefs::transition();
00277 }
00278 else if ( family == QLatin1String( "Other_Metal" ) ){
00279 c = Prefs::other_metal();
00280 }
00281 else if ( family == QLatin1String( "Metalloids" ) ){
00282 c = Prefs::metalloid();
00283 }
00284 else if ( family == QLatin1String( "Halogene" ) ){
00285 c = Prefs::halogene();
00286 }
00287 else
00288 c = Qt::lightGray;
00289
00290 return QBrush( c );
00291 }
00292
00293 QColor KalziumFamilySchemeType::textColor( int ) const
00294 {
00295 return Qt::black;
00296 }
00297
00298 QList<legendPair> KalziumFamilySchemeType::legendItems() const
00299 {
00300 QList<legendPair> ll;
00301 ll << qMakePair( i18n( "Alkaline" ),QBrush( Prefs::alkalie() ) );
00302 ll << qMakePair( i18n( "Rare Earth" ),QBrush( Prefs::rare() ) );
00303 ll << qMakePair( i18n( "Non-Metals" ),QBrush( Prefs::nonmetal() ) );
00304 ll << qMakePair( i18n( "Alkalie Metal" ),QBrush( Prefs::alkaline() ) );
00305 ll << qMakePair( i18n( "Other Metal" ),QBrush( Prefs::other_metal() ) );
00306 ll << qMakePair( i18n( "Halogen" ),QBrush( Prefs::halogene() ) );
00307 ll << qMakePair( i18n( "Transition Metal" ),QBrush( Prefs::transition() ) );
00308 ll << qMakePair( i18n( "Noble Gas" ),QBrush( Prefs::noble_gas() ) );
00309 ll << qMakePair( i18n( "Metalloid" ),QBrush( Prefs::metalloid() ) );
00310
00311 return ll;
00312 }
00313
00315 KalziumGroupsSchemeType::KalziumGroupsSchemeType()
00316 : KalziumSchemeType()
00317 {
00318 }
00319
00320 KalziumGroupsSchemeType* KalziumGroupsSchemeType::instance()
00321 {
00322 static KalziumGroupsSchemeType kbst;
00323 return &kbst;
00324 }
00325
00326 QByteArray KalziumGroupsSchemeType::name() const
00327 {
00328 return "Groups";
00329 }
00330
00331 QString KalziumGroupsSchemeType::description() const
00332 {
00333 return i18n( "Groups" );
00334 }
00335
00336 QBrush KalziumGroupsSchemeType::elementBrush( int el, const QRect& ) const
00337 {
00338 QString group = KalziumDataObject::instance()->element( el )->dataAsString( ChemicalDataObject::group );
00339
00340 QColor c;
00341
00342 if ( group == QLatin1String( "1" ) ){
00343 c = Prefs::group_1();
00344 }
00345 else if ( group == QLatin1String( "2" ) ){
00346 c = Prefs::group_2();
00347 }
00348 else if ( group == QLatin1String( "3" ) ){
00349 c = Prefs::group_3();
00350 }
00351 else if ( group == QLatin1String( "4" ) ){
00352 c = Prefs::group_4();
00353 }
00354 else if ( group == QLatin1String( "5" ) ){
00355 c = Prefs::group_5();
00356 }
00357 else if ( group == QLatin1String( "6" ) ){
00358 c = Prefs::group_6();
00359 }
00360 else if ( group == QLatin1String( "7" ) ){
00361 c = Prefs::group_7();
00362 }
00363 else if ( group == QLatin1String( "8" ) ){
00364 c = Prefs::group_8();
00365 }
00366 else
00367 c = Qt::lightGray;
00368
00369 return QBrush( c );
00370 }
00371
00372 QColor KalziumGroupsSchemeType::textColor( int ) const
00373 {
00374 return Qt::black;
00375 }
00376
00377 QList<legendPair> KalziumGroupsSchemeType::legendItems() const
00378 {
00379 QList<legendPair> ll;
00380 ll << qMakePair( i18n( "Group 1" ), QBrush( Prefs::group_1() ) );
00381 ll << qMakePair( i18n( "Group 2" ), QBrush( Prefs::group_2() ) );
00382 ll << qMakePair( i18n( "Group 3" ), QBrush( Prefs::group_3() ) );
00383 ll << qMakePair( i18n( "Group 4" ), QBrush( Prefs::group_4() ) );
00384 ll << qMakePair( i18n( "Group 5" ), QBrush( Prefs::group_5() ) );
00385 ll << qMakePair( i18n( "Group 6" ), QBrush( Prefs::group_6() ) );
00386 ll << qMakePair( i18n( "Group 7" ), QBrush( Prefs::group_7() ) );
00387 ll << qMakePair( i18n( "Group 8" ), QBrush( Prefs::group_8() ) );
00388
00389 return ll;
00390 }
00391
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546
00547
00548
00549
00550
00551
00552
00553
00554
00555
00556
00557
00558
00559
00560
00561
00562
00563
00564
00565
00566
00567
00568
00569
00570
00571
00572
00573
00574
00575
00576
00577
00578
00579
00580
00581
00582
00583
00584
00585
00586
00587
00588
00589
00590
00591
00592
00593
00594
00595
00596
00597
00598
00599
00600
00601
00602
00603
00604
00605
00606
00607
00608
00609
00610
00611
00612
00613
00614
00615
00616
00617
00618