summaryrefslogtreecommitdiff
authorsandman <sandman>2002-11-24 18:21:41 (UTC)
committer sandman <sandman>2002-11-24 18:21:41 (UTC)
commit89bf0723eefc1e66a104fe8135f1a5389f021442 (patch) (unidiff)
treea7db1ba8fa34d8226fe9baa9e7c488c86ad95445
parentee62e73ddc29a5015c4a3e569be90dbfce4652c6 (diff)
downloadopie-89bf0723eefc1e66a104fe8135f1a5389f021442.zip
opie-89bf0723eefc1e66a104fe8135f1a5389f021442.tar.gz
opie-89bf0723eefc1e66a104fe8135f1a5389f021442.tar.bz2
- LD_PRELOADing of libpreload.so in case the user selected [x] Force style
settings in appearance - Some code to NOT style some applications, based on the binary name (also selectable in appearance)
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/global.cpp16
-rw-r--r--library/qpeapplication.cpp60
2 files changed, 72 insertions, 4 deletions
diff --git a/library/global.cpp b/library/global.cpp
index 9b3c51e..42c2729 100644
--- a/library/global.cpp
+++ b/library/global.cpp
@@ -604,6 +604,18 @@ void Global::invoke(const QString &c)
604 } else 604 } else
605#endif 605#endif
606 { 606 {
607 char *oldpre = ::getenv ( "LD_PRELOAD" );
608
609 extern bool opie_block_style;
610
611 QString newpre = QPEApplication::qpeDir ( ) + "/lib/libpreload.so";
612 if ( opie_block_style && QFile::exists ( newpre )) {
613 if ( oldpre && oldpre [0] )
614 newpre = newpre + ":" + oldpre;
615 ::setenv ( "LD_PRELOAD", newpre. latin1( ), 1 );
616 qDebug ( "\nPRELOADING\n" );
617 }
618
607 if ( !::vfork() ) { 619 if ( !::vfork() ) {
608 for ( int fd = 3; fd < 100; fd++ ) 620 for ( int fd = 3; fd < 100; fd++ )
609 ::close( fd ); 621 ::close( fd );
@@ -613,6 +625,10 @@ void Global::invoke(const QString &c)
613 ::execvp( args[0], (char * const *)args ); 625 ::execvp( args[0], (char * const *)args );
614 _exit( -1 ); 626 _exit( -1 );
615 } 627 }
628 if ( oldpre )
629 ::setenv ( "LD_PRELOAD", oldpre, 1 );
630 else
631 ::unsetenv ( "LD_PRELOAD" );
616 } 632 }
617 StartingAppList::add( list[0] ); 633 StartingAppList::add( list[0] );
618#endif //QT_NO_QWS_MULTIPROCESS 634#endif //QT_NO_QWS_MULTIPROCESS
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index efa65bc..a54fb20 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -898,18 +898,55 @@ void QPEApplication::setDefaultRotation( int r )
898 } 898 }
899} 899}
900 900
901// exported to libpreload.so
902bool opie_block_style = false;
903
901/*! 904/*!
902 \internal 905 \internal
903*/ 906*/
904void QPEApplication::applyStyle() 907void QPEApplication::applyStyle()
905{ 908{
906 Config config( "qpe" ); 909 Config config( "qpe" );
907
908 config.setGroup( "Appearance" ); 910 config.setGroup( "Appearance" );
909 911
912 // don't block ourselves ...
913 opie_block_style = false;
914
915
916 static QString appname;
917
918 if ( appname. isNull ( )) {
919 char src [32];
920 char dst [PATH_MAX + 1];
921 ::sprintf ( src, "/proc/%d/exe", ::getpid ( ));
922 int l = ::readlink ( src, dst, PATH_MAX );
923 if ( l > 0 ) {
924 dst [l] = 0;
925 const char *b = ::strrchr ( dst, '/' );
926 appname = ( b ? b + 1 : dst );
927 }
928 else
929 appname = "";
930 }
931
932
933 QStringList ex = config. readListEntry ( "NoStyle", ';' );
934 int nostyle = 0;
935 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
936 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
937 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
938 break;
939 }
940 }
941
910 // Widget style 942 // Widget style
911 QString style = config.readEntry( "Style", "Light" ); 943 QString style = config.readEntry( "Style", "Light" );
912 internalSetStyle( style ); 944
945 // don't set a custom style
946 if ( nostyle & 0x01 )
947 style = "Light";
948
949 internalSetStyle ( style );
913 950
914 // Colors 951 // Colors
915 QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) ); 952 QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) );
@@ -933,6 +970,11 @@ void QPEApplication::applyStyle()
933 970
934 // Window Decoration 971 // Window Decoration
935 QString dec = config.readEntry( "Decoration", "Qtopia" ); 972 QString dec = config.readEntry( "Decoration", "Qtopia" );
973
974 // don't set a custom deco
975 if ( nostyle & 0x04 )
976 dec = "";
977
936 if ( dec != d->decorationName ) { 978 if ( dec != d->decorationName ) {
937 qwsSetDecoration( new QPEDecoration( dec ) ); 979 qwsSetDecoration( new QPEDecoration( dec ) );
938 d->decorationName = dec; 980 d->decorationName = dec;
@@ -941,7 +983,17 @@ void QPEApplication::applyStyle()
941 // Font 983 // Font
942 QString ff = config.readEntry( "FontFamily", font().family() ); 984 QString ff = config.readEntry( "FontFamily", font().family() );
943 int fs = config.readNumEntry( "FontSize", font().pointSize() ); 985 int fs = config.readNumEntry( "FontSize", font().pointSize() );
986
987 // don't set a custom font
988 if ( nostyle & 0x02 ) {
989 ff = "Helvetica";
990 fs = 10;
991 }
992
944 setFont( QFont(ff, fs) ); 993 setFont( QFont(ff, fs) );
994
995 // revert to global blocking policy ...
996 opie_block_style = config. readBoolEntry ( "ForceStyle", false );
945} 997}
946 998
947void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) 999void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data )
@@ -1323,7 +1375,7 @@ void QPEApplication::internalSetStyle( const QString &style )
1323 iface-> release ( ); 1375 iface-> release ( );
1324 delete lib; 1376 delete lib;
1325 1377
1326 setStyle ( new QPEStyle ( )); 1378 setStyle ( new LightStyle ( ));
1327 } 1379 }
1328 } 1380 }
1329#endif 1381#endif