summaryrefslogtreecommitdiff
path: root/library
authorsandman <sandman>2002-12-03 22:51:55 (UTC)
committer sandman <sandman>2002-12-03 22:51:55 (UTC)
commit56d74fadbb911e169461a9bbefa664cd1ab6b129 (patch) (unidiff)
tree8dd94e6043c5ca70ed30141967fa683078ea4e9a /library
parentb840b9c453badfec16deffeffae5337320bff5a7 (diff)
downloadopie-56d74fadbb911e169461a9bbefa664cd1ab6b129.zip
opie-56d74fadbb911e169461a9bbefa664cd1ab6b129.tar.gz
opie-56d74fadbb911e169461a9bbefa664cd1ab6b129.tar.bz2
why didn't anybody notice this ? If you change the font, all currently open
applications don't change their font -- that's not normal - that's a bug :) Fixed now
Diffstat (limited to 'library') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index c782837..7cbda92 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -612,769 +612,769 @@ static void createInputMethodDict()
612 612
613 \sa setInputMethodHint() InputMethodHint 613 \sa setInputMethodHint() InputMethodHint
614*/ 614*/
615QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w ) 615QPEApplication::InputMethodHint QPEApplication::inputMethodHint( QWidget * w )
616{ 616{
617 if ( inputMethodDict && w ) 617 if ( inputMethodDict && w )
618 return ( InputMethodHint ) ( int ) inputMethodDict->find( w ); 618 return ( InputMethodHint ) ( int ) inputMethodDict->find( w );
619 return Normal; 619 return Normal;
620} 620}
621 621
622/*! 622/*!
623 \enum QPEApplication::InputMethodHint 623 \enum QPEApplication::InputMethodHint
624 624
625 \value Normal the application sometimes needs text input (the default). 625 \value Normal the application sometimes needs text input (the default).
626 \value AlwaysOff the application never needs text input. 626 \value AlwaysOff the application never needs text input.
627 \value AlwaysOn the application always needs text input. 627 \value AlwaysOn the application always needs text input.
628*/ 628*/
629 629
630/*! 630/*!
631 Hints to the system that widget \a w has use for text input methods 631 Hints to the system that widget \a w has use for text input methods
632 as specified by \a mode. 632 as specified by \a mode.
633 633
634 \sa inputMethodHint() InputMethodHint 634 \sa inputMethodHint() InputMethodHint
635*/ 635*/
636void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode ) 636void QPEApplication::setInputMethodHint( QWidget * w, InputMethodHint mode )
637{ 637{
638 createInputMethodDict(); 638 createInputMethodDict();
639 if ( mode == Normal ) { 639 if ( mode == Normal ) {
640 inputMethodDict->remove 640 inputMethodDict->remove
641 ( w ); 641 ( w );
642 } 642 }
643 else { 643 else {
644 inputMethodDict->insert( w, ( void* ) mode ); 644 inputMethodDict->insert( w, ( void* ) mode );
645 } 645 }
646} 646}
647 647
648class HackDialog : public QDialog 648class HackDialog : public QDialog
649{ 649{
650public: 650public:
651 void acceptIt() 651 void acceptIt()
652 { 652 {
653 accept(); 653 accept();
654 } 654 }
655 void rejectIt() 655 void rejectIt()
656 { 656 {
657 reject(); 657 reject();
658 } 658 }
659}; 659};
660 660
661 661
662void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key ) 662void QPEApplication::mapToDefaultAction( QWSKeyEvent * ke, int key )
663{ 663{
664 // specialised actions for certain widgets. May want to 664 // specialised actions for certain widgets. May want to
665 // add more stuff here. 665 // add more stuff here.
666 if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" ) 666 if ( activePopupWidget() && activePopupWidget() ->inherits( "QListBox" )
667 && activePopupWidget() ->parentWidget() 667 && activePopupWidget() ->parentWidget()
668 && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) ) 668 && activePopupWidget() ->parentWidget() ->inherits( "QComboBox" ) )
669 key = Qt::Key_Return; 669 key = Qt::Key_Return;
670 670
671 if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) ) 671 if ( activePopupWidget() && activePopupWidget() ->inherits( "QPopupMenu" ) )
672 key = Qt::Key_Return; 672 key = Qt::Key_Return;
673 673
674#ifdef QWS 674#ifdef QWS
675 675
676 ke->simpleData.keycode = key; 676 ke->simpleData.keycode = key;
677#endif 677#endif
678} 678}
679 679
680class HackWidget : public QWidget 680class HackWidget : public QWidget
681{ 681{
682public: 682public:
683 bool needsOk() 683 bool needsOk()
684 { 684 {
685 return ( getWState() & WState_Reserved1 ); 685 return ( getWState() & WState_Reserved1 );
686 } 686 }
687}; 687};
688 688
689/*! 689/*!
690 \internal 690 \internal
691*/ 691*/
692 692
693#ifdef QWS 693#ifdef QWS
694bool QPEApplication::qwsEventFilter( QWSEvent * e ) 694bool QPEApplication::qwsEventFilter( QWSEvent * e )
695{ 695{
696 if ( !d->notbusysent && e->type == QWSEvent::Focus ) { 696 if ( !d->notbusysent && e->type == QWSEvent::Focus ) {
697 if ( qApp->type() != QApplication::GuiServer ) { 697 if ( qApp->type() != QApplication::GuiServer ) {
698 QCopEnvelope e( "QPE/System", "notBusy(QString)" ); 698 QCopEnvelope e( "QPE/System", "notBusy(QString)" );
699 e << d->appName; 699 e << d->appName;
700 } 700 }
701 d->notbusysent = TRUE; 701 d->notbusysent = TRUE;
702 } 702 }
703 if ( type() == GuiServer ) { 703 if ( type() == GuiServer ) {
704 switch ( e->type ) { 704 switch ( e->type ) {
705 case QWSEvent::Mouse: 705 case QWSEvent::Mouse:
706 if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) ) 706 if ( e->asMouse() ->simpleData.state && !QWidget::find( e->window() ) )
707 emit clientMoused(); 707 emit clientMoused();
708 break; 708 break;
709 default: 709 default:
710 break; 710 break;
711 } 711 }
712 } 712 }
713 if ( e->type == QWSEvent::Key ) { 713 if ( e->type == QWSEvent::Key ) {
714 if ( d->kbgrabber == 1 ) 714 if ( d->kbgrabber == 1 )
715 return TRUE; 715 return TRUE;
716 QWSKeyEvent *ke = ( QWSKeyEvent * ) e; 716 QWSKeyEvent *ke = ( QWSKeyEvent * ) e;
717 if ( ke->simpleData.keycode == Qt::Key_F33 ) { 717 if ( ke->simpleData.keycode == Qt::Key_F33 ) {
718 // Use special "OK" key to press "OK" on top level widgets 718 // Use special "OK" key to press "OK" on top level widgets
719 QWidget * active = activeWindow(); 719 QWidget * active = activeWindow();
720 QWidget *popup = 0; 720 QWidget *popup = 0;
721 if ( active && active->isPopup() ) { 721 if ( active && active->isPopup() ) {
722 popup = active; 722 popup = active;
723 active = active->parentWidget(); 723 active = active->parentWidget();
724 } 724 }
725 if ( active && ( int ) active->winId() == ke->simpleData.window && 725 if ( active && ( int ) active->winId() == ke->simpleData.window &&
726 !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) { 726 !active->testWFlags( WStyle_Customize | WType_Popup | WType_Desktop ) ) {
727 if ( ke->simpleData.is_press ) { 727 if ( ke->simpleData.is_press ) {
728 if ( popup ) 728 if ( popup )
729 popup->close(); 729 popup->close();
730 if ( active->inherits( "QDialog" ) ) { 730 if ( active->inherits( "QDialog" ) ) {
731 HackDialog * d = ( HackDialog * ) active; 731 HackDialog * d = ( HackDialog * ) active;
732 d->acceptIt(); 732 d->acceptIt();
733 return TRUE; 733 return TRUE;
734 } 734 }
735 else if ( ( ( HackWidget * ) active ) ->needsOk() ) { 735 else if ( ( ( HackWidget * ) active ) ->needsOk() ) {
736 QSignal s; 736 QSignal s;
737 s.connect( active, SLOT( accept() ) ); 737 s.connect( active, SLOT( accept() ) );
738 s.activate(); 738 s.activate();
739 } 739 }
740 else { 740 else {
741 // do the same as with the select key: Map to the default action of the widget: 741 // do the same as with the select key: Map to the default action of the widget:
742 mapToDefaultAction( ke, Qt::Key_Return ); 742 mapToDefaultAction( ke, Qt::Key_Return );
743 } 743 }
744 } 744 }
745 } 745 }
746 } 746 }
747 else if ( ke->simpleData.keycode == Qt::Key_F30 ) { 747 else if ( ke->simpleData.keycode == Qt::Key_F30 ) {
748 // Use special "select" key to do whatever default action a widget has 748 // Use special "select" key to do whatever default action a widget has
749 mapToDefaultAction( ke, Qt::Key_Space ); 749 mapToDefaultAction( ke, Qt::Key_Space );
750 } 750 }
751 else if ( ke->simpleData.keycode == Qt::Key_Escape && 751 else if ( ke->simpleData.keycode == Qt::Key_Escape &&
752 ke->simpleData.is_press ) { 752 ke->simpleData.is_press ) {
753 // Escape key closes app if focus on toplevel 753 // Escape key closes app if focus on toplevel
754 QWidget * active = activeWindow(); 754 QWidget * active = activeWindow();
755 if ( active && active->testWFlags( WType_TopLevel ) && 755 if ( active && active->testWFlags( WType_TopLevel ) &&
756 ( int ) active->winId() == ke->simpleData.window && 756 ( int ) active->winId() == ke->simpleData.window &&
757 !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) { 757 !active->testWFlags( WStyle_Dialog | WStyle_Customize | WType_Popup | WType_Desktop ) ) {
758 if ( active->inherits( "QDialog" ) ) { 758 if ( active->inherits( "QDialog" ) ) {
759 HackDialog * d = ( HackDialog * ) active; 759 HackDialog * d = ( HackDialog * ) active;
760 d->rejectIt(); 760 d->rejectIt();
761 return TRUE; 761 return TRUE;
762 } 762 }
763 else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) { 763 else if ( strcmp( argv() [ 0 ], "embeddedkonsole" ) != 0 ) {
764 active->close(); 764 active->close();
765 } 765 }
766 } 766 }
767 } 767 }
768 768
769#if QT_VERSION < 231 769#if QT_VERSION < 231
770 // Filter out the F4/Launcher key from apps 770 // Filter out the F4/Launcher key from apps
771 // ### The launcher key may not always be F4 on all devices 771 // ### The launcher key may not always be F4 on all devices
772 if ( ( ( QWSKeyEvent * ) e ) ->simpleData.keycode == Qt::Key_F4 ) 772 if ( ( ( QWSKeyEvent * ) e ) ->simpleData.keycode == Qt::Key_F4 )
773 return TRUE; 773 return TRUE;
774#endif 774#endif
775 775
776 } 776 }
777 if ( e->type == QWSEvent::Focus ) { 777 if ( e->type == QWSEvent::Focus ) {
778 QWSFocusEvent * fe = ( QWSFocusEvent* ) e; 778 QWSFocusEvent * fe = ( QWSFocusEvent* ) e;
779 QWidget* nfw = QWidget::find( e->window() ); 779 QWidget* nfw = QWidget::find( e->window() );
780 if ( !fe->simpleData.get_focus ) { 780 if ( !fe->simpleData.get_focus ) {
781 QWidget * active = activeWindow(); 781 QWidget * active = activeWindow();
782 while ( active && active->isPopup() ) { 782 while ( active && active->isPopup() ) {
783 active->close(); 783 active->close();
784 active = activeWindow(); 784 active = activeWindow();
785 } 785 }
786 if ( !nfw && d->kbgrabber == 2 ) { 786 if ( !nfw && d->kbgrabber == 2 ) {
787 ungrabKeyboard(); 787 ungrabKeyboard();
788 d->kbregrab = TRUE; // want kb back when we're active 788 d->kbregrab = TRUE; // want kb back when we're active
789 } 789 }
790 } 790 }
791 else { 791 else {
792 // make sure our modal widget is ALWAYS on top 792 // make sure our modal widget is ALWAYS on top
793 QWidget *topm = activeModalWidget(); 793 QWidget *topm = activeModalWidget();
794 if ( topm ) { 794 if ( topm ) {
795 topm->raise(); 795 topm->raise();
796 } 796 }
797 if ( d->kbregrab ) { 797 if ( d->kbregrab ) {
798 grabKeyboard(); 798 grabKeyboard();
799 d->kbregrab = FALSE; 799 d->kbregrab = FALSE;
800 } 800 }
801 } 801 }
802 if ( fe->simpleData.get_focus && inputMethodDict ) { 802 if ( fe->simpleData.get_focus && inputMethodDict ) {
803 InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) ); 803 InputMethodHint m = inputMethodHint( QWidget::find( e->window() ) );
804 if ( m == AlwaysOff ) 804 if ( m == AlwaysOff )
805 Global::hideInputMethod(); 805 Global::hideInputMethod();
806 if ( m == AlwaysOn ) 806 if ( m == AlwaysOn )
807 Global::showInputMethod(); 807 Global::showInputMethod();
808 } 808 }
809 } 809 }
810 return QApplication::qwsEventFilter( e ); 810 return QApplication::qwsEventFilter( e );
811} 811}
812#endif 812#endif
813 813
814/*! 814/*!
815 Destroys the QPEApplication. 815 Destroys the QPEApplication.
816*/ 816*/
817QPEApplication::~QPEApplication() 817QPEApplication::~QPEApplication()
818{ 818{
819 ungrabKeyboard(); 819 ungrabKeyboard();
820#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 820#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
821 // Need to delete QCopChannels early, since the display will 821 // Need to delete QCopChannels early, since the display will
822 // be gone by the time we get to ~QObject(). 822 // be gone by the time we get to ~QObject().
823 delete sysChannel; 823 delete sysChannel;
824 delete pidChannel; 824 delete pidChannel;
825#endif 825#endif
826 826
827 delete d; 827 delete d;
828} 828}
829 829
830/*! 830/*!
831 Returns <tt>$OPIEDIR/</tt>. 831 Returns <tt>$OPIEDIR/</tt>.
832*/ 832*/
833QString QPEApplication::qpeDir() 833QString QPEApplication::qpeDir()
834{ 834{
835 const char * base = getenv( "OPIEDIR" ); 835 const char * base = getenv( "OPIEDIR" );
836 if ( base ) 836 if ( base )
837 return QString( base ) + "/"; 837 return QString( base ) + "/";
838 838
839 return QString( "../" ); 839 return QString( "../" );
840} 840}
841 841
842/*! 842/*!
843 Returns the user's current Document directory. There is a trailing "/". 843 Returns the user's current Document directory. There is a trailing "/".
844 .. well, it does now,, and there's no trailing '/' 844 .. well, it does now,, and there's no trailing '/'
845*/ 845*/
846QString QPEApplication::documentDir() 846QString QPEApplication::documentDir()
847{ 847{
848 const char* base = getenv( "HOME"); 848 const char* base = getenv( "HOME");
849 if ( base ) 849 if ( base )
850 return QString( base ) + "/Documents"; 850 return QString( base ) + "/Documents";
851 851
852 return QString( "../Documents" ); 852 return QString( "../Documents" );
853} 853}
854 854
855static int deforient = -1; 855static int deforient = -1;
856 856
857/*! 857/*!
858 \internal 858 \internal
859*/ 859*/
860int QPEApplication::defaultRotation() 860int QPEApplication::defaultRotation()
861{ 861{
862 if ( deforient < 0 ) { 862 if ( deforient < 0 ) {
863 QString d = getenv( "QWS_DISPLAY" ); 863 QString d = getenv( "QWS_DISPLAY" );
864 if ( d.contains( "Rot90" ) ) { 864 if ( d.contains( "Rot90" ) ) {
865 deforient = 90; 865 deforient = 90;
866 } 866 }
867 else if ( d.contains( "Rot180" ) ) { 867 else if ( d.contains( "Rot180" ) ) {
868 deforient = 180; 868 deforient = 180;
869 } 869 }
870 else if ( d.contains( "Rot270" ) ) { 870 else if ( d.contains( "Rot270" ) ) {
871 deforient = 270; 871 deforient = 270;
872 } 872 }
873 else { 873 else {
874 deforient = 0; 874 deforient = 0;
875 } 875 }
876 } 876 }
877 return deforient; 877 return deforient;
878} 878}
879 879
880/*! 880/*!
881 \internal 881 \internal
882*/ 882*/
883void QPEApplication::setDefaultRotation( int r ) 883void QPEApplication::setDefaultRotation( int r )
884{ 884{
885 if ( qApp->type() == GuiServer ) { 885 if ( qApp->type() == GuiServer ) {
886 deforient = r; 886 deforient = r;
887 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 ); 887 setenv( "QWS_DISPLAY", QString( "Transformed:Rot%1:0" ).arg( r ).latin1(), 1 );
888 Config config("qpe"); 888 Config config("qpe");
889 config.setGroup( "Rotation" ); 889 config.setGroup( "Rotation" );
890 config.writeEntry( "Screen", getenv("QWS_DISPLAY") ); 890 config.writeEntry( "Screen", getenv("QWS_DISPLAY") );
891 } 891 }
892 else { 892 else {
893#ifndef QT_NO_COP 893#ifndef QT_NO_COP
894 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" ); 894 { QCopEnvelope e( "QPE/System", "setDefaultRotation(int)" );
895 e << r; 895 e << r;
896 } 896 }
897#endif 897#endif
898 898
899 } 899 }
900} 900}
901 901
902// exported to libpreload.so 902// exported to libpreload.so
903int opie_block_style = 0; 903int opie_block_style = 0;
904 904
905/*! 905/*!
906 \internal 906 \internal
907*/ 907*/
908void QPEApplication::applyStyle() 908void QPEApplication::applyStyle()
909{ 909{
910 Config config( "qpe" ); 910 Config config( "qpe" );
911 config.setGroup( "Appearance" ); 911 config.setGroup( "Appearance" );
912 912
913 // don't block ourselves ... 913 // don't block ourselves ...
914 opie_block_style = 0; 914 opie_block_style = 0;
915 915
916 916
917 static QString appname; 917 static QString appname;
918 918
919 if ( appname. isNull ( )) { 919 if ( appname. isNull ( )) {
920 char src [32]; 920 char src [32];
921 char dst [PATH_MAX + 1]; 921 char dst [PATH_MAX + 1];
922 ::sprintf ( src, "/proc/%d/exe", ::getpid ( )); 922 ::sprintf ( src, "/proc/%d/exe", ::getpid ( ));
923 int l = ::readlink ( src, dst, PATH_MAX ); 923 int l = ::readlink ( src, dst, PATH_MAX );
924 if ( l > 0 ) { 924 if ( l > 0 ) {
925 dst [l] = 0; 925 dst [l] = 0;
926 const char *b = ::strrchr ( dst, '/' ); 926 const char *b = ::strrchr ( dst, '/' );
927 appname = ( b ? b + 1 : dst ); 927 appname = ( b ? b + 1 : dst );
928 } 928 }
929 else 929 else
930 appname = ""; 930 appname = "";
931 } 931 }
932 932
933 933
934 QStringList ex = config. readListEntry ( "NoStyle", ';' ); 934 QStringList ex = config. readListEntry ( "NoStyle", ';' );
935 int nostyle = 0; 935 int nostyle = 0;
936 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) { 936 for ( QStringList::Iterator it = ex. begin ( ); it != ex. end ( ); ++it ) {
937 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) { 937 if ( QRegExp (( *it ). mid ( 1 ), false, true ). find ( appname, 0 ) >= 0 ) {
938 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 ); 938 nostyle = ( *it ). left ( 1 ). toInt ( 0, 32 );
939 break; 939 break;
940 } 940 }
941 } 941 }
942 942
943 // Widget style 943 // Widget style
944 QString style = config.readEntry( "Style", "Light" ); 944 QString style = config.readEntry( "Style", "Light" );
945 945
946 // don't set a custom style 946 // don't set a custom style
947 if ( nostyle & 0x01 ) 947 if ( nostyle & 0x01 )
948 style = "Light"; 948 style = "Light";
949 949
950 internalSetStyle ( style ); 950 internalSetStyle ( style );
951 951
952 // Colors 952 // Colors
953 QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) ); 953 QColor bgcolor( config.readEntry( "Background", "#E5E1D5" ) );
954 QColor btncolor( config.readEntry( "Button", "#D6CDBB" ) ); 954 QColor btncolor( config.readEntry( "Button", "#D6CDBB" ) );
955 QPalette pal( btncolor, bgcolor ); 955 QPalette pal( btncolor, bgcolor );
956 QString color = config.readEntry( "Highlight", "#800000" ); 956 QString color = config.readEntry( "Highlight", "#800000" );
957 pal.setColor( QColorGroup::Highlight, QColor( color ) ); 957 pal.setColor( QColorGroup::Highlight, QColor( color ) );
958 color = config.readEntry( "HighlightedText", "#FFFFFF" ); 958 color = config.readEntry( "HighlightedText", "#FFFFFF" );
959 pal.setColor( QColorGroup::HighlightedText, QColor( color ) ); 959 pal.setColor( QColorGroup::HighlightedText, QColor( color ) );
960 color = config.readEntry( "Text", "#000000" ); 960 color = config.readEntry( "Text", "#000000" );
961 pal.setColor( QColorGroup::Text, QColor( color ) ); 961 pal.setColor( QColorGroup::Text, QColor( color ) );
962 color = config.readEntry( "ButtonText", "#000000" ); 962 color = config.readEntry( "ButtonText", "#000000" );
963 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) ); 963 pal.setColor( QPalette::Active, QColorGroup::ButtonText, QColor( color ) );
964 color = config.readEntry( "Base", "#FFFFFF" ); 964 color = config.readEntry( "Base", "#FFFFFF" );
965 pal.setColor( QColorGroup::Base, QColor( color ) ); 965 pal.setColor( QColorGroup::Base, QColor( color ) );
966 966
967 pal.setColor( QPalette::Disabled, QColorGroup::Text, 967 pal.setColor( QPalette::Disabled, QColorGroup::Text,
968 pal.color( QPalette::Active, QColorGroup::Background ).dark() ); 968 pal.color( QPalette::Active, QColorGroup::Background ).dark() );
969 969
970 setPalette( pal, TRUE ); 970 setPalette( pal, TRUE );
971 971
972 // Window Decoration 972 // Window Decoration
973 QString dec = config.readEntry( "Decoration", "Qtopia" ); 973 QString dec = config.readEntry( "Decoration", "Qtopia" );
974 974
975 // don't set a custom deco 975 // don't set a custom deco
976 if ( nostyle & 0x04 ) 976 if ( nostyle & 0x04 )
977 dec = ""; 977 dec = "";
978 978
979 //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle); 979 //qDebug ( "Setting Deco: %s -- old %s (%d)", dec.latin1(), d-> decorationName.latin1(), nostyle);
980 980
981 if ( dec != d->decorationName ) { 981 if ( dec != d->decorationName ) {
982 qwsSetDecoration( new QPEDecoration( dec ) ); 982 qwsSetDecoration( new QPEDecoration( dec ) );
983 d->decorationName = dec; 983 d->decorationName = dec;
984 } 984 }
985 985
986 // Font 986 // Font
987 QString ff = config.readEntry( "FontFamily", font().family() ); 987 QString ff = config.readEntry( "FontFamily", font().family() );
988 int fs = config.readNumEntry( "FontSize", font().pointSize() ); 988 int fs = config.readNumEntry( "FontSize", font().pointSize() );
989 989
990 // don't set a custom font 990 // don't set a custom font
991 if ( nostyle & 0x02 ) { 991 if ( nostyle & 0x02 ) {
992 ff = "Helvetica"; 992 ff = "Helvetica";
993 fs = 10; 993 fs = 10;
994 } 994 }
995 995
996 setFont( QFont(ff, fs) ); 996 setFont ( QFont ( ff, fs ), true );
997 997
998 // revert to global blocking policy ... 998 // revert to global blocking policy ...
999 opie_block_style = config. readBoolEntry ( "ForceStyle", false ) ? 0xff : 0x00; 999 opie_block_style = config. readBoolEntry ( "ForceStyle", false ) ? 0xff : 0x00;
1000 opie_block_style -= nostyle; 1000 opie_block_style -= nostyle;
1001} 1001}
1002 1002
1003void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data ) 1003void QPEApplication::systemMessage( const QCString& msg, const QByteArray& data )
1004{ 1004{
1005#ifdef Q_WS_QWS 1005#ifdef Q_WS_QWS
1006 QDataStream stream( data, IO_ReadOnly ); 1006 QDataStream stream( data, IO_ReadOnly );
1007 if ( msg == "applyStyle()" ) { 1007 if ( msg == "applyStyle()" ) {
1008 applyStyle(); 1008 applyStyle();
1009 } 1009 }
1010 else if ( msg == "setDefaultRotation(int)" ) { 1010 else if ( msg == "setDefaultRotation(int)" ) {
1011 if ( type() == GuiServer ) { 1011 if ( type() == GuiServer ) {
1012 int r; 1012 int r;
1013 stream >> r; 1013 stream >> r;
1014 setDefaultRotation( r ); 1014 setDefaultRotation( r );
1015 } 1015 }
1016 } 1016 }
1017 else if ( msg == "shutdown()" ) { 1017 else if ( msg == "shutdown()" ) {
1018 if ( type() == GuiServer ) 1018 if ( type() == GuiServer )
1019 shutdown(); 1019 shutdown();
1020 } 1020 }
1021 else if ( msg == "quit()" ) { 1021 else if ( msg == "quit()" ) {
1022 if ( type() != GuiServer ) 1022 if ( type() != GuiServer )
1023 tryQuit(); 1023 tryQuit();
1024 } 1024 }
1025 else if ( msg == "forceQuit()" ) { 1025 else if ( msg == "forceQuit()" ) {
1026 if ( type() != GuiServer ) 1026 if ( type() != GuiServer )
1027 quit(); 1027 quit();
1028 } 1028 }
1029 else if ( msg == "restart()" ) { 1029 else if ( msg == "restart()" ) {
1030 if ( type() == GuiServer ) 1030 if ( type() == GuiServer )
1031 restart(); 1031 restart();
1032 } 1032 }
1033 else if ( msg == "grabKeyboard(QString)" ) { 1033 else if ( msg == "grabKeyboard(QString)" ) {
1034 QString who; 1034 QString who;
1035 stream >> who; 1035 stream >> who;
1036 if ( who.isEmpty() ) 1036 if ( who.isEmpty() )
1037 d->kbgrabber = 0; 1037 d->kbgrabber = 0;
1038 else if ( who != d->appName ) 1038 else if ( who != d->appName )
1039 d->kbgrabber = 1; 1039 d->kbgrabber = 1;
1040 else 1040 else
1041 d->kbgrabber = 2; 1041 d->kbgrabber = 2;
1042 } 1042 }
1043 else if ( msg == "language(QString)" ) { 1043 else if ( msg == "language(QString)" ) {
1044 if ( type() == GuiServer ) { 1044 if ( type() == GuiServer ) {
1045 QString l; 1045 QString l;
1046 stream >> l; 1046 stream >> l;
1047 QString cl = getenv( "LANG" ); 1047 QString cl = getenv( "LANG" );
1048 if ( cl != l ) { 1048 if ( cl != l ) {
1049 if ( l.isNull() ) 1049 if ( l.isNull() )
1050 unsetenv( "LANG" ); 1050 unsetenv( "LANG" );
1051 else 1051 else
1052 setenv( "LANG", l.latin1(), 1 ); 1052 setenv( "LANG", l.latin1(), 1 );
1053 restart(); 1053 restart();
1054 } 1054 }
1055 } 1055 }
1056 } 1056 }
1057 else if ( msg == "timeChange(QString)" ) { 1057 else if ( msg == "timeChange(QString)" ) {
1058 QString t; 1058 QString t;
1059 stream >> t; 1059 stream >> t;
1060 if ( t.isNull() ) 1060 if ( t.isNull() )
1061 unsetenv( "TZ" ); 1061 unsetenv( "TZ" );
1062 else 1062 else
1063 setenv( "TZ", t.latin1(), 1 ); 1063 setenv( "TZ", t.latin1(), 1 );
1064 // emit the signal so everyone else knows... 1064 // emit the signal so everyone else knows...
1065 emit timeChanged(); 1065 emit timeChanged();
1066 } 1066 }
1067 else if ( msg == "execute(QString)" ) { 1067 else if ( msg == "execute(QString)" ) {
1068 if ( type() == GuiServer ) { 1068 if ( type() == GuiServer ) {
1069 QString t; 1069 QString t;
1070 stream >> t; 1070 stream >> t;
1071 Global::execute( t ); 1071 Global::execute( t );
1072 } 1072 }
1073 } 1073 }
1074 else if ( msg == "execute(QString,QString)" ) { 1074 else if ( msg == "execute(QString,QString)" ) {
1075 if ( type() == GuiServer ) { 1075 if ( type() == GuiServer ) {
1076 QString t, d; 1076 QString t, d;
1077 stream >> t >> d; 1077 stream >> t >> d;
1078 Global::execute( t, d ); 1078 Global::execute( t, d );
1079 } 1079 }
1080 } 1080 }
1081 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) { 1081 else if ( msg == "addAlarm(QDateTime,QCString,QCString,int)" ) {
1082 if ( type() == GuiServer ) { 1082 if ( type() == GuiServer ) {
1083 QDateTime when; 1083 QDateTime when;
1084 QCString channel, message; 1084 QCString channel, message;
1085 int data; 1085 int data;
1086 stream >> when >> channel >> message >> data; 1086 stream >> when >> channel >> message >> data;
1087 AlarmServer::addAlarm( when, channel, message, data ); 1087 AlarmServer::addAlarm( when, channel, message, data );
1088 } 1088 }
1089 } 1089 }
1090 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) { 1090 else if ( msg == "deleteAlarm(QDateTime,QCString,QCString,int)" ) {
1091 if ( type() == GuiServer ) { 1091 if ( type() == GuiServer ) {
1092 QDateTime when; 1092 QDateTime when;
1093 QCString channel, message; 1093 QCString channel, message;
1094 int data; 1094 int data;
1095 stream >> when >> channel >> message >> data; 1095 stream >> when >> channel >> message >> data;
1096 AlarmServer::deleteAlarm( when, channel, message, data ); 1096 AlarmServer::deleteAlarm( when, channel, message, data );
1097 } 1097 }
1098 } 1098 }
1099 else if ( msg == "clockChange(bool)" ) { 1099 else if ( msg == "clockChange(bool)" ) {
1100 int tmp; 1100 int tmp;
1101 stream >> tmp; 1101 stream >> tmp;
1102 emit clockChanged( tmp ); 1102 emit clockChanged( tmp );
1103 } 1103 }
1104 else if ( msg == "weekChange(bool)" ) { 1104 else if ( msg == "weekChange(bool)" ) {
1105 int tmp; 1105 int tmp;
1106 stream >> tmp; 1106 stream >> tmp;
1107 emit weekChanged( tmp ); 1107 emit weekChanged( tmp );
1108 } 1108 }
1109 else if ( msg == "setDateFormat(DateFormat)" ) { 1109 else if ( msg == "setDateFormat(DateFormat)" ) {
1110 DateFormat tmp; 1110 DateFormat tmp;
1111 stream >> tmp; 1111 stream >> tmp;
1112 emit dateFormatChanged( tmp ); 1112 emit dateFormatChanged( tmp );
1113 } 1113 }
1114 else if ( msg == "setVolume(int,int)" ) { 1114 else if ( msg == "setVolume(int,int)" ) {
1115 int t, v; 1115 int t, v;
1116 stream >> t >> v; 1116 stream >> t >> v;
1117 setVolume( t, v ); 1117 setVolume( t, v );
1118 emit volumeChanged( muted ); 1118 emit volumeChanged( muted );
1119 } 1119 }
1120 else if ( msg == "volumeChange(bool)" ) { 1120 else if ( msg == "volumeChange(bool)" ) {
1121 stream >> muted; 1121 stream >> muted;
1122 setVolume(); 1122 setVolume();
1123 emit volumeChanged( muted ); 1123 emit volumeChanged( muted );
1124 } 1124 }
1125 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1125 else if ( msg == "setMic(int,int)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1126 int t, v; 1126 int t, v;
1127 stream >> t >> v; 1127 stream >> t >> v;
1128 setMic( t, v ); 1128 setMic( t, v );
1129 emit micChanged( micMuted ); 1129 emit micChanged( micMuted );
1130 } 1130 }
1131 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com> 1131 else if ( msg == "micChange(bool)" ) { // Added: 2002-02-08 by Jeremy Cowgar <jc@cowgar.com>
1132 stream >> micMuted; 1132 stream >> micMuted;
1133 setMic(); 1133 setMic();
1134 emit micChanged( micMuted ); 1134 emit micChanged( micMuted );
1135 } 1135 }
1136#endif 1136#endif
1137} 1137}
1138 1138
1139/*! 1139/*!
1140 \internal 1140 \internal
1141*/ 1141*/
1142bool QPEApplication::raiseAppropriateWindow() 1142bool QPEApplication::raiseAppropriateWindow()
1143{ 1143{
1144 bool r = FALSE; 1144 bool r = FALSE;
1145 // ########## raise()ing main window should raise and set active 1145 // ########## raise()ing main window should raise and set active
1146 // ########## it and then all childen. This belongs in Qt/Embedded 1146 // ########## it and then all childen. This belongs in Qt/Embedded
1147 QWidget *top = d->qpe_main_widget; 1147 QWidget *top = d->qpe_main_widget;
1148 if ( !top ) 1148 if ( !top )
1149 top = mainWidget(); 1149 top = mainWidget();
1150 if ( top && d->keep_running ) { 1150 if ( top && d->keep_running ) {
1151 if ( top->isVisible() ) 1151 if ( top->isVisible() )
1152 r = TRUE; 1152 r = TRUE;
1153 else if (d->preloaded) { 1153 else if (d->preloaded) {
1154 // We are preloaded and not visible.. pretend we just started.. 1154 // We are preloaded and not visible.. pretend we just started..
1155 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1155 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1156 e << d->appName; 1156 e << d->appName;
1157 } 1157 }
1158 1158
1159 d->show_mx(top, d->nomaximize); 1159 d->show_mx(top, d->nomaximize);
1160 top->raise(); 1160 top->raise();
1161 top->setActiveWindow(); 1161 top->setActiveWindow();
1162 } 1162 }
1163 QWidget *topm = activeModalWidget(); 1163 QWidget *topm = activeModalWidget();
1164 if ( topm && topm != top ) { 1164 if ( topm && topm != top ) {
1165 topm->show(); 1165 topm->show();
1166 topm->raise(); 1166 topm->raise();
1167 topm->setActiveWindow(); 1167 topm->setActiveWindow();
1168 // If we haven't already handled the fastAppShowing message 1168 // If we haven't already handled the fastAppShowing message
1169 if (!top && d->preloaded) { 1169 if (!top && d->preloaded) {
1170 QCopEnvelope e("QPE/System", "fastAppShowing(QString)"); 1170 QCopEnvelope e("QPE/System", "fastAppShowing(QString)");
1171 e << d->appName; 1171 e << d->appName;
1172 } 1172 }
1173 r = FALSE; 1173 r = FALSE;
1174 } 1174 }
1175 return r; 1175 return r;
1176} 1176}
1177 1177
1178void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data) 1178void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
1179{ 1179{
1180#ifdef Q_WS_QWS 1180#ifdef Q_WS_QWS
1181 1181
1182 if ( msg == "quit()" ) { 1182 if ( msg == "quit()" ) {
1183 tryQuit(); 1183 tryQuit();
1184 } 1184 }
1185 else if ( msg == "quitIfInvisible()" ) { 1185 else if ( msg == "quitIfInvisible()" ) {
1186 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) 1186 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() )
1187 quit(); 1187 quit();
1188 } 1188 }
1189 else if ( msg == "close()" ) { 1189 else if ( msg == "close()" ) {
1190 hideOrQuit(); 1190 hideOrQuit();
1191 } 1191 }
1192 else if ( msg == "disablePreload()" ) { 1192 else if ( msg == "disablePreload()" ) {
1193 d->preloaded = FALSE; 1193 d->preloaded = FALSE;
1194 d->keep_running = TRUE; 1194 d->keep_running = TRUE;
1195 /* so that quit will quit */ 1195 /* so that quit will quit */
1196 } 1196 }
1197 else if ( msg == "enablePreload()" ) { 1197 else if ( msg == "enablePreload()" ) {
1198 if (d->qpe_main_widget) 1198 if (d->qpe_main_widget)
1199 d->preloaded = TRUE; 1199 d->preloaded = TRUE;
1200 d->keep_running = TRUE; 1200 d->keep_running = TRUE;
1201 /* so next quit won't quit */ 1201 /* so next quit won't quit */
1202 } 1202 }
1203 else if ( msg == "raise()" ) { 1203 else if ( msg == "raise()" ) {
1204 d->keep_running = TRUE; 1204 d->keep_running = TRUE;
1205 d->notbusysent = FALSE; 1205 d->notbusysent = FALSE;
1206 raiseAppropriateWindow(); 1206 raiseAppropriateWindow();
1207 // Tell the system we're still chugging along... 1207 // Tell the system we're still chugging along...
1208 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1208 QCopEnvelope e("QPE/System", "appRaised(QString)");
1209 e << d->appName; 1209 e << d->appName;
1210 } 1210 }
1211 else if ( msg == "flush()" ) { 1211 else if ( msg == "flush()" ) {
1212 emit flush(); 1212 emit flush();
1213 // we need to tell the desktop 1213 // we need to tell the desktop
1214 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); 1214 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" );
1215 e << d->appName; 1215 e << d->appName;
1216 } 1216 }
1217 else if ( msg == "reload()" ) { 1217 else if ( msg == "reload()" ) {
1218 emit reload(); 1218 emit reload();
1219 } 1219 }
1220 else if ( msg == "setDocument(QString)" ) { 1220 else if ( msg == "setDocument(QString)" ) {
1221 d->keep_running = TRUE; 1221 d->keep_running = TRUE;
1222 QDataStream stream( data, IO_ReadOnly ); 1222 QDataStream stream( data, IO_ReadOnly );
1223 QString doc; 1223 QString doc;
1224 stream >> doc; 1224 stream >> doc;
1225 QWidget *mw = mainWidget(); 1225 QWidget *mw = mainWidget();
1226 if ( !mw ) 1226 if ( !mw )
1227 mw = d->qpe_main_widget; 1227 mw = d->qpe_main_widget;
1228 if ( mw ) 1228 if ( mw )
1229 Global::setDocument( mw, doc ); 1229 Global::setDocument( mw, doc );
1230 } 1230 }
1231 else if ( msg == "nextView()" ) { 1231 else if ( msg == "nextView()" ) {
1232 qDebug("got nextView()"); 1232 qDebug("got nextView()");
1233 /* 1233 /*
1234 if ( raiseAppropriateWindow() ) 1234 if ( raiseAppropriateWindow() )
1235 */ 1235 */
1236 emit appMessage( msg, data); 1236 emit appMessage( msg, data);
1237 } 1237 }
1238 else { 1238 else {
1239 emit appMessage( msg, data); 1239 emit appMessage( msg, data);
1240 } 1240 }
1241 1241
1242#endif 1242#endif
1243} 1243}
1244 1244
1245 1245
1246/*! 1246/*!
1247 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1247 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1248 consider passing TRUE for \a nomaximize rather than the default FALSE. 1248 consider passing TRUE for \a nomaximize rather than the default FALSE.
1249 1249
1250 \sa showMainDocumentWidget() 1250 \sa showMainDocumentWidget()
1251*/ 1251*/
1252void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) 1252void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
1253{ 1253{
1254 d->show(mw, nomaximize ); 1254 d->show(mw, nomaximize );
1255} 1255}
1256 1256
1257/*! 1257/*!
1258 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1258 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1259 consider passing TRUE for \a nomaximize rather than the default FALSE. 1259 consider passing TRUE for \a nomaximize rather than the default FALSE.
1260 1260
1261 This calls designates the application as 1261 This calls designates the application as
1262 a \link docwidget.html document-oriented\endlink application. 1262 a \link docwidget.html document-oriented\endlink application.
1263 1263
1264 The \a mw widget \e must have this slot: setDocument(const QString&). 1264 The \a mw widget \e must have this slot: setDocument(const QString&).
1265 1265
1266 \sa showMainWidget() 1266 \sa showMainWidget()
1267*/ 1267*/
1268void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) 1268void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
1269{ 1269{
1270 if ( mw && argc() == 2 ) 1270 if ( mw && argc() == 2 )
1271 Global::setDocument( mw, QString::fromUtf8(argv()[1]) ); 1271 Global::setDocument( mw, QString::fromUtf8(argv()[1]) );
1272 1272
1273 d->show(mw, nomaximize ); 1273 d->show(mw, nomaximize );
1274} 1274}
1275 1275
1276 1276
1277/*! 1277/*!
1278 If an application is started via a \link qcop.html QCop\endlink 1278 If an application is started via a \link qcop.html QCop\endlink
1279 message, the application will process the \link qcop.html 1279 message, the application will process the \link qcop.html
1280 QCop\endlink message and then quit. If the application calls this 1280 QCop\endlink message and then quit. If the application calls this
1281 function while processing a \link qcop.html QCop\endlink message, 1281 function while processing a \link qcop.html QCop\endlink message,
1282 after processing its outstanding \link qcop.html QCop\endlink 1282 after processing its outstanding \link qcop.html QCop\endlink
1283 messages the application will start 'properly' and show itself. 1283 messages the application will start 'properly' and show itself.
1284 1284
1285 \sa keepRunning() 1285 \sa keepRunning()
1286*/ 1286*/
1287void QPEApplication::setKeepRunning() 1287void QPEApplication::setKeepRunning()
1288{ 1288{
1289 if ( qApp && qApp->inherits( "QPEApplication" ) ) { 1289 if ( qApp && qApp->inherits( "QPEApplication" ) ) {
1290 QPEApplication * qpeApp = ( QPEApplication* ) qApp; 1290 QPEApplication * qpeApp = ( QPEApplication* ) qApp;
1291 qpeApp->d->keep_running = TRUE; 1291 qpeApp->d->keep_running = TRUE;
1292 } 1292 }
1293} 1293}
1294 1294
1295/*! 1295/*!
1296 Returns TRUE if the application will quit after processing the 1296 Returns TRUE if the application will quit after processing the
1297 current list of qcop messages; otherwise returns FALSE. 1297 current list of qcop messages; otherwise returns FALSE.
1298 1298
1299 \sa setKeepRunning() 1299 \sa setKeepRunning()
1300*/ 1300*/
1301bool QPEApplication::keepRunning() const 1301bool QPEApplication::keepRunning() const
1302{ 1302{
1303 return d->keep_running; 1303 return d->keep_running;
1304} 1304}
1305 1305
1306/*! 1306/*!
1307 \internal 1307 \internal
1308*/ 1308*/
1309void QPEApplication::internalSetStyle( const QString &style ) 1309void QPEApplication::internalSetStyle( const QString &style )
1310{ 1310{
1311#if QT_VERSION >= 300 1311#if QT_VERSION >= 300
1312 if ( style == "QPE" ) { 1312 if ( style == "QPE" ) {
1313 setStyle( new QPEStyle ); 1313 setStyle( new QPEStyle );
1314 } 1314 }
1315 else { 1315 else {
1316 QStyle *s = QStyleFactory::create( style ); 1316 QStyle *s = QStyleFactory::create( style );
1317 if ( s ) 1317 if ( s )
1318 setStyle( s ); 1318 setStyle( s );
1319 } 1319 }
1320#else 1320#else
1321 if ( style == "Windows" ) { 1321 if ( style == "Windows" ) {
1322 setStyle( new QWindowsStyle ); 1322 setStyle( new QWindowsStyle );
1323 } 1323 }
1324 else if ( style == "QPE" ) { 1324 else if ( style == "QPE" ) {
1325 setStyle( new QPEStyle ); 1325 setStyle( new QPEStyle );
1326 } 1326 }
1327 else if ( style == "Light" ) { 1327 else if ( style == "Light" ) {
1328 setStyle( new LightStyle ); 1328 setStyle( new LightStyle );
1329 } 1329 }
1330#ifndef QT_NO_STYLE_PLATINUM 1330#ifndef QT_NO_STYLE_PLATINUM
1331 else if ( style == "Platinum" ) { 1331 else if ( style == "Platinum" ) {
1332 setStyle( new QPlatinumStyle ); 1332 setStyle( new QPlatinumStyle );
1333 } 1333 }
1334#endif 1334#endif
1335#ifndef QT_NO_STYLE_MOTIF 1335#ifndef QT_NO_STYLE_MOTIF
1336 else if ( style == "Motif" ) { 1336 else if ( style == "Motif" ) {
1337 setStyle( new QMotifStyle ); 1337 setStyle( new QMotifStyle );
1338 } 1338 }
1339#endif 1339#endif
1340#ifndef QT_NO_STYLE_MOTIFPLUS 1340#ifndef QT_NO_STYLE_MOTIFPLUS
1341 else if ( style == "MotifPlus" ) { 1341 else if ( style == "MotifPlus" ) {
1342 setStyle( new QMotifPlusStyle ); 1342 setStyle( new QMotifPlusStyle );
1343 } 1343 }
1344#endif 1344#endif
1345 1345
1346 else { 1346 else {
1347 QStyle *sty = 0; 1347 QStyle *sty = 0;
1348 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/"; 1348 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/";
1349 1349
1350 if ( style. find ( ".so" ) > 0 ) 1350 if ( style. find ( ".so" ) > 0 )
1351 path += style; 1351 path += style;
1352 else 1352 else
1353 path = path + "lib" + style. lower ( ) + ".so"; // compatibility 1353 path = path + "lib" + style. lower ( ) + ".so"; // compatibility
1354 1354
1355 static QLibrary *lastlib = 0; 1355 static QLibrary *lastlib = 0;
1356 static StyleInterface *lastiface = 0; 1356 static StyleInterface *lastiface = 0;
1357 1357
1358 QLibrary *lib = new QLibrary ( path ); 1358 QLibrary *lib = new QLibrary ( path );
1359 StyleInterface *iface = 0; 1359 StyleInterface *iface = 0;
1360 1360
1361 if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface ) 1361 if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface )
1362 sty = iface-> style ( ); 1362 sty = iface-> style ( );
1363 1363
1364 if ( sty ) { 1364 if ( sty ) {
1365 setStyle ( sty ); 1365 setStyle ( sty );
1366 1366
1367 if ( lastiface ) 1367 if ( lastiface )
1368 lastiface-> release ( ); 1368 lastiface-> release ( );
1369 lastiface = iface; 1369 lastiface = iface;
1370 1370
1371 if ( lastlib ) { 1371 if ( lastlib ) {
1372 lastlib-> unload ( ); 1372 lastlib-> unload ( );
1373 delete lastlib; 1373 delete lastlib;
1374 } 1374 }
1375 lastlib = lib; 1375 lastlib = lib;
1376 } 1376 }
1377 else { 1377 else {
1378 if ( iface ) 1378 if ( iface )
1379 iface-> release ( ); 1379 iface-> release ( );
1380 delete lib; 1380 delete lib;