author | sandman <sandman> | 2002-11-25 22:12:18 (UTC) |
---|---|---|
committer | sandman <sandman> | 2002-11-25 22:12:18 (UTC) |
commit | 4e6b2585987290f874697cbec7c289b4df29f82b (patch) (unidiff) | |
tree | e19415ef5374ffa3730380813298111e24711590 /library | |
parent | 7bd8ef9197506897d3a5287a013934f89658d60a (diff) | |
download | opie-4e6b2585987290f874697cbec7c289b4df29f82b.zip opie-4e6b2585987290f874697cbec7c289b4df29f82b.tar.gz opie-4e6b2585987290f874697cbec7c289b4df29f82b.tar.bz2 |
Some changes to the QPEDecoration c'tor internals:
Since the current deco plugin is unloaded, when a new Deco is created
via new (even if this new deco is never used or deleted immediatly afer-
wards), we have to remember the plugin name, in case someone calls the
default c'tor (without supplying a plugin name)
-rw-r--r-- | library/qpeapplication.cpp | 9 | ||||
-rw-r--r-- | library/qpedecoration_qws.cpp | 41 | ||||
-rw-r--r-- | library/qpedecoration_qws.h | 2 |
3 files changed, 25 insertions, 27 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp index a54fb20..c8e6e74 100644 --- a/library/qpeapplication.cpp +++ b/library/qpeapplication.cpp | |||
@@ -894,28 +894,28 @@ void QPEApplication::setDefaultRotation( int r ) | |||
894 | e << r; | 894 | e << r; |
895 | } | 895 | } |
896 | #endif | 896 | #endif |
897 | 897 | ||
898 | } | 898 | } |
899 | } | 899 | } |
900 | 900 | ||
901 | // exported to libpreload.so | 901 | // exported to libpreload.so |
902 | bool opie_block_style = false; | 902 | int opie_block_style = 0; |
903 | 903 | ||
904 | /*! | 904 | /*! |
905 | \internal | 905 | \internal |
906 | */ | 906 | */ |
907 | void QPEApplication::applyStyle() | 907 | void QPEApplication::applyStyle() |
908 | { | 908 | { |
909 | Config config( "qpe" ); | 909 | Config config( "qpe" ); |
910 | config.setGroup( "Appearance" ); | 910 | config.setGroup( "Appearance" ); |
911 | 911 | ||
912 | // don't block ourselves ... | 912 | // don't block ourselves ... |
913 | opie_block_style = false; | 913 | opie_block_style = 0; |
914 | 914 | ||
915 | 915 | ||
916 | static QString appname; | 916 | static QString appname; |
917 | 917 | ||
918 | if ( appname. isNull ( )) { | 918 | if ( appname. isNull ( )) { |
919 | char src [32]; | 919 | char src [32]; |
920 | char dst [PATH_MAX + 1]; | 920 | char dst [PATH_MAX + 1]; |
921 | ::sprintf ( src, "/proc/%d/exe", ::getpid ( )); | 921 | ::sprintf ( src, "/proc/%d/exe", ::getpid ( )); |
@@ -970,16 +970,18 @@ void QPEApplication::applyStyle() | |||
970 | 970 | ||
971 | // Window Decoration | 971 | // Window Decoration |
972 | QString dec = config.readEntry( "Decoration", "Qtopia" ); | 972 | QString dec = config.readEntry( "Decoration", "Qtopia" ); |
973 | 973 | ||
974 | // don't set a custom deco | 974 | // don't set a custom deco |
975 | if ( nostyle & 0x04 ) | 975 | if ( nostyle & 0x04 ) |
976 | dec = ""; | 976 | dec = ""; |
977 | 977 | ||
978 | //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle); | ||
979 | |||
978 | if ( dec != d->decorationName ) { | 980 | if ( dec != d->decorationName ) { |
979 | qwsSetDecoration( new QPEDecoration( dec ) ); | 981 | qwsSetDecoration( new QPEDecoration( dec ) ); |
980 | d->decorationName = dec; | 982 | d->decorationName = dec; |
981 | } | 983 | } |
982 | 984 | ||
983 | // Font | 985 | // Font |
984 | QString ff = config.readEntry( "FontFamily", font().family() ); | 986 | QString ff = config.readEntry( "FontFamily", font().family() ); |
985 | int fs = config.readNumEntry( "FontSize", font().pointSize() ); | 987 | int fs = config.readNumEntry( "FontSize", font().pointSize() ); |
@@ -988,17 +990,18 @@ void QPEApplication::applyStyle() | |||
988 | if ( nostyle & 0x02 ) { | 990 | if ( nostyle & 0x02 ) { |
989 | ff = "Helvetica"; | 991 | ff = "Helvetica"; |
990 | fs = 10; | 992 | fs = 10; |
991 | } | 993 | } |
992 | 994 | ||
993 | setFont( QFont(ff, fs) ); | 995 | setFont( QFont(ff, fs) ); |
994 | 996 | ||
995 | // revert to global blocking policy ... | 997 | // revert to global blocking policy ... |
996 | opie_block_style = config. readBoolEntry ( "ForceStyle", false ); | 998 | opie_block_style = config. readBoolEntry ( "ForceStyle", false ) ? 0xff : 0x00; |
999 | opie_block_style -= nostyle; | ||
997 | } | 1000 | } |
998 | 1001 | ||
999 | void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) | 1002 | void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) |
1000 | { | 1003 | { |
1001 | #ifdef Q_WS_QWS | 1004 | #ifdef Q_WS_QWS |
1002 | QDataStream stream( data, IO_ReadOnly ); | 1005 | QDataStream stream( data, IO_ReadOnly ); |
1003 | if ( msg == "applyStyle()" ) { | 1006 | if ( msg == "applyStyle()" ) { |
1004 | applyStyle(); | 1007 | applyStyle(); |
diff --git a/library/qpedecoration_qws.cpp b/library/qpedecoration_qws.cpp index 6221f5b..5e0c32a 100644 --- a/library/qpedecoration_qws.cpp +++ b/library/qpedecoration_qws.cpp | |||
@@ -475,76 +475,69 @@ public: | |||
475 | Q_REFCOUNT | 475 | Q_REFCOUNT |
476 | 476 | ||
477 | private: | 477 | private: |
478 | ulong ref; | 478 | ulong ref; |
479 | }; | 479 | }; |
480 | 480 | ||
481 | static WindowDecorationInterface *wdiface = 0; | 481 | static WindowDecorationInterface *wdiface = 0; |
482 | static QLibrary *wdlib = 0; | 482 | static QLibrary *wdlib = 0; |
483 | static QString libname; | ||
483 | 484 | ||
484 | //=========================================================================== | 485 | //=========================================================================== |
485 | 486 | ||
486 | QPEDecoration::QPEDecoration() | 487 | QPEDecoration::QPEDecoration() |
487 | : QWSDefaultDecoration() | 488 | : QWSDefaultDecoration() |
488 | { | 489 | { |
489 | if ( wdlib ) { | 490 | init ( libname ); |
490 | wdiface->release(); | ||
491 | wdlib->unload(); | ||
492 | delete wdlib; | ||
493 | wdlib = 0; | ||
494 | } else { | ||
495 | delete wdiface; | ||
496 | } | ||
497 | wdiface = new DefaultWindowDecoration; | ||
498 | |||
499 | helpFile = QString(qApp->argv()[0]) + ".html"; | ||
500 | QStringList helpPath = Global::helpPath(); | ||
501 | helpExists = FALSE; | ||
502 | for (QStringList::ConstIterator it=helpPath.begin(); it!=helpPath.end() && !helpExists; ++it) { | ||
503 | helpExists = QFile::exists( *it + "/" + helpFile ); | ||
504 | qDebug ( "Checking %s/%s for help: %d", (*it).latin1(), helpFile.latin1(),helpExists); | ||
505 | } | ||
506 | qpeManager = new QPEManager( this ); | ||
507 | |||
508 | // for backward compatibility: | ||
509 | imageOk = *okImage ( 15 ); | ||
510 | imageClose = *closeImage ( 15 ); | ||
511 | imageHelp = *helpImage ( 15 ); | ||
512 | } | 491 | } |
513 | 492 | ||
514 | QPEDecoration::QPEDecoration( const QString &plugin ) | 493 | QPEDecoration::QPEDecoration( const QString &plugin ) |
515 | : QWSDefaultDecoration() | 494 | : QWSDefaultDecoration() |
516 | { | 495 | { |
496 | init ( plugin ); | ||
497 | } | ||
498 | |||
499 | void QPEDecoration::init ( const QString &plugin ) | ||
500 | { | ||
501 | libname = plugin; | ||
502 | |||
517 | if ( wdlib ) { | 503 | if ( wdlib ) { |
518 | wdiface->release(); | 504 | wdiface->release(); |
519 | wdlib->unload(); | 505 | wdlib->unload(); |
520 | delete wdlib; | 506 | delete wdlib; |
521 | wdlib = 0; | 507 | wdlib = 0; |
522 | } else { | 508 | } else { |
523 | delete wdiface; | 509 | delete wdiface; |
524 | } | 510 | } |
511 | |||
525 | WindowDecorationInterface *iface = 0; | 512 | WindowDecorationInterface *iface = 0; |
526 | QString path = QPEApplication::qpeDir() + "/plugins/decorations"; | 513 | QString path = QPEApplication::qpeDir() + "/plugins/decorations"; |
527 | QLibrary *lib = new QLibrary( path + "/" + plugin ); | 514 | QLibrary *lib = new QLibrary( path + "/" + plugin ); |
528 | if ( lib->queryInterface( IID_WindowDecoration, (QUnknownInterface**)&iface ) == QS_OK && iface ) { | 515 | if ( lib->queryInterface( IID_WindowDecoration, (QUnknownInterface**)&iface ) == QS_OK && iface ) { |
529 | wdiface = iface; | 516 | wdiface = iface; |
530 | wdlib = lib; | 517 | wdlib = lib; |
531 | } else { | 518 | } else { |
532 | delete lib; | 519 | delete lib; |
533 | wdiface = new DefaultWindowDecoration; | 520 | wdiface = new DefaultWindowDecoration; |
534 | } | 521 | } |
535 | 522 | ||
536 | helpFile = QString(qApp->argv()[0]) + ".html"; | 523 | helpFile = QString(qApp->argv()[0]) + ".html"; |
537 | QStringList helpPath = Global::helpPath(); | 524 | QStringList helpPath = Global::helpPath(); |
538 | helpExists = FALSE; | 525 | helpExists = FALSE; |
539 | for (QStringList::ConstIterator it=helpPath.begin(); it!=helpPath.end() && !helpExists; ++it) { | 526 | for (QStringList::ConstIterator it=helpPath.begin(); it!=helpPath.end() && !helpExists; ++it) { |
540 | helpExists = QFile::exists( *it + "/" + helpFile ); | 527 | helpExists = QFile::exists( *it + "/" + helpFile ); |
541 | qDebug ( "Checking %s/%s for help: %d", (*it).latin1(), helpFile.latin1(),helpExists); } | 528 | //qDebug ( "Checking %s/%s for help: %d", (*it).latin1(), helpFile.latin1(),helpExists); |
529 | } | ||
542 | qpeManager = new QPEManager( this ); | 530 | qpeManager = new QPEManager( this ); |
531 | |||
532 | // Qtopia 1.5 compatibility | ||
533 | imageOk = *okImage ( 15 ); | ||
534 | imageClose = *closeImage ( 15 ); | ||
535 | imageHelp = *helpImage ( 15 ); | ||
543 | } | 536 | } |
544 | 537 | ||
545 | QPEDecoration::~QPEDecoration() | 538 | QPEDecoration::~QPEDecoration() |
546 | { | 539 | { |
547 | delete qpeManager; | 540 | delete qpeManager; |
548 | } | 541 | } |
549 | 542 | ||
550 | const char **QPEDecoration::menuPixmap() | 543 | const char **QPEDecoration::menuPixmap() |
diff --git a/library/qpedecoration_qws.h b/library/qpedecoration_qws.h index 691c6f6..6628ba2 100644 --- a/library/qpedecoration_qws.h +++ b/library/qpedecoration_qws.h | |||
@@ -58,16 +58,18 @@ protected: | |||
58 | virtual const char **closePixmap(); | 58 | virtual const char **closePixmap(); |
59 | virtual const char **minimizePixmap(); | 59 | virtual const char **minimizePixmap(); |
60 | virtual const char **maximizePixmap(); | 60 | virtual const char **maximizePixmap(); |
61 | virtual const char **normalizePixmap(); | 61 | virtual const char **normalizePixmap(); |
62 | 62 | ||
63 | private: | 63 | private: |
64 | void windowData( const QWidget *w, WindowDecorationInterface::WindowData &wd ) const; | 64 | void windowData( const QWidget *w, WindowDecorationInterface::WindowData &wd ) const; |
65 | 65 | ||
66 | void init ( const QString & ); | ||
67 | |||
66 | protected: | 68 | protected: |
67 | QImage imageOk; | 69 | QImage imageOk; |
68 | QImage imageClose; | 70 | QImage imageClose; |
69 | QImage imageHelp; | 71 | QImage imageHelp; |
70 | QString helpFile; | 72 | QString helpFile; |
71 | bool helpExists; | 73 | bool helpExists; |
72 | QPEManager *qpeManager; | 74 | QPEManager *qpeManager; |
73 | }; | 75 | }; |