summaryrefslogtreecommitdiff
path: root/library
authorsandman <sandman>2002-11-25 22:12:18 (UTC)
committer sandman <sandman>2002-11-25 22:12:18 (UTC)
commit4e6b2585987290f874697cbec7c289b4df29f82b (patch) (unidiff)
treee19415ef5374ffa3730380813298111e24711590 /library
parent7bd8ef9197506897d3a5287a013934f89658d60a (diff)
downloadopie-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)
Diffstat (limited to 'library') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp9
-rw-r--r--library/qpedecoration_qws.cpp41
-rw-r--r--library/qpedecoration_qws.h2
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
@@ -890,36 +890,36 @@ void QPEApplication::setDefaultRotation( int r )
890 } 890 }
891 else { 891 else {
892#ifndef QT_NO_COP 892#ifndef QT_NO_COP
893 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); 893 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" );
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
902bool opie_block_style = false; 902int opie_block_style = 0;
903 903
904/*! 904/*!
905 \internal 905 \internal
906*/ 906*/
907void QPEApplication::applyStyle() 907void 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 ( ));
922 int l = ::readlink ( src, dst, PATH_MAX ); 922 int l = ::readlink ( src, dst, PATH_MAX );
923 if ( l > 0 ) { 923 if ( l > 0 ) {
924 dst [l] = 0; 924 dst [l] = 0;
925 const char *b = ::strrchr ( dst, '/' ); 925 const char *b = ::strrchr ( dst, '/' );
@@ -966,43 +966,46 @@ void QPEApplication::applyStyle()
966 pal.setColor( QPalette::Disabled, QColorGroup::Text, 966 pal.setColor( QPalette::Disabled, QColorGroup::Text,
967 pal.color( QPalette::Active, QColorGroup::Background ).dark() ); 967 pal.color( QPalette::Active, QColorGroup::Background ).dark() );
968 968
969 setPalette( pal, TRUE ); 969 setPalette( pal, TRUE );
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() );
986 988
987 // don't set a custom font 989 // don't set a custom font
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
999void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) 1002void 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();
1005 } 1008 }
1006 else if ( msg == "setDefaultRotation(int)" ) { 1009 else if ( msg == "setDefaultRotation(int)" ) {
1007 if ( type() == GuiServer ) { 1010 if ( type() == GuiServer ) {
1008 int r; 1011 int r;
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
@@ -471,84 +471,77 @@ public:
471 if ( *iface ) 471 if ( *iface )
472 (*iface)->addRef(); 472 (*iface)->addRef();
473 return QS_OK; 473 return QS_OK;
474 } 474 }
475 Q_REFCOUNT 475 Q_REFCOUNT
476 476
477private: 477private:
478 ulong ref; 478 ulong ref;
479}; 479};
480 480
481static WindowDecorationInterface *wdiface = 0; 481static WindowDecorationInterface *wdiface = 0;
482static QLibrary *wdlib = 0; 482static QLibrary *wdlib = 0;
483static QString libname;
483 484
484//=========================================================================== 485//===========================================================================
485 486
486QPEDecoration::QPEDecoration() 487QPEDecoration::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
514QPEDecoration::QPEDecoration( const QString &plugin ) 493QPEDecoration::QPEDecoration( const QString &plugin )
515 : QWSDefaultDecoration() 494 : QWSDefaultDecoration()
516{ 495{
496 init ( plugin );
497}
498
499void 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
545QPEDecoration::~QPEDecoration() 538QPEDecoration::~QPEDecoration()
546{ 539{
547 delete qpeManager; 540 delete qpeManager;
548} 541}
549 542
550const char **QPEDecoration::menuPixmap() 543const char **QPEDecoration::menuPixmap()
551{ 544{
552 return (const char **)0; 545 return (const char **)0;
553} 546}
554 547
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
@@ -54,24 +54,26 @@ public:
54 54
55protected: 55protected:
56 virtual int getTitleHeight(const QWidget *); 56 virtual int getTitleHeight(const QWidget *);
57 virtual const char **menuPixmap(); 57 virtual const char **menuPixmap();
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
63private: 63private:
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
66protected: 68protected:
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};
74 76
75 77
76class QPEManager : public QObject 78class QPEManager : public QObject
77{ 79{