summaryrefslogtreecommitdiff
path: root/library/qpeapplication.cpp
authorschurig <schurig>2003-06-03 16:57:51 (UTC)
committer schurig <schurig>2003-06-03 16:57:51 (UTC)
commitff50fe9a8f3321fc383672ff87e76dc31ac46b42 (patch) (unidiff)
tree6d52bae77d9ae7d70c1b6ccceff29cc068b806ea /library/qpeapplication.cpp
parent2f3a3a4d6e6a6ad3e7d504fff090393b78151661 (diff)
downloadopie-ff50fe9a8f3321fc383672ff87e76dc31ac46b42.zip
opie-ff50fe9a8f3321fc383672ff87e76dc31ac46b42.tar.gz
opie-ff50fe9a8f3321fc383672ff87e76dc31ac46b42.tar.bz2
initial ramses hardware adaption
Diffstat (limited to 'library/qpeapplication.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/qpeapplication.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index 22d222a..4bc08b3 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -107,101 +107,101 @@ public:
107 QPoint presspos; 107 QPoint presspos;
108 108
109 bool rightpressed : 1; 109 bool rightpressed : 1;
110 bool kbgrabbed : 1; 110 bool kbgrabbed : 1;
111 bool notbusysent : 1; 111 bool notbusysent : 1;
112 bool preloaded : 1; 112 bool preloaded : 1;
113 bool forceshow : 1; 113 bool forceshow : 1;
114 bool nomaximize : 1; 114 bool nomaximize : 1;
115 bool keep_running : 1; 115 bool keep_running : 1;
116 116
117 QString appName; 117 QString appName;
118 struct QCopRec 118 struct QCopRec
119 { 119 {
120 QCopRec( const QCString &ch, const QCString &msg, 120 QCopRec( const QCString &ch, const QCString &msg,
121 const QByteArray &d ) : 121 const QByteArray &d ) :
122 channel( ch ), message( msg ), data( d ) 122 channel( ch ), message( msg ), data( d )
123 { } 123 { }
124 124
125 QCString channel; 125 QCString channel;
126 QCString message; 126 QCString message;
127 QByteArray data; 127 QByteArray data;
128 }; 128 };
129 QWidget* qpe_main_widget; 129 QWidget* qpe_main_widget;
130 QList<QCopRec> qcopq; 130 QList<QCopRec> qcopq;
131 131
132 void enqueueQCop( const QCString &ch, const QCString &msg, 132 void enqueueQCop( const QCString &ch, const QCString &msg,
133 const QByteArray &data ) 133 const QByteArray &data )
134 { 134 {
135 qcopq.append( new QCopRec( ch, msg, data ) ); 135 qcopq.append( new QCopRec( ch, msg, data ) );
136 } 136 }
137 void sendQCopQ() 137 void sendQCopQ()
138 { 138 {
139 QCopRec * r; 139 QCopRec * r;
140#ifndef QT_NO_COP 140#ifndef QT_NO_COP
141 141
142 for ( QListIterator<QCopRec> it( qcopq ); ( r = it.current() ); ++it ) 142 for ( QListIterator<QCopRec> it( qcopq ); ( r = it.current() ); ++it )
143 QCopChannel::sendLocally( r->channel, r->message, r->data ); 143 QCopChannel::sendLocally( r->channel, r->message, r->data );
144#endif 144#endif
145 145
146 qcopq.clear(); 146 qcopq.clear();
147 } 147 }
148 static void show_mx(QWidget* mw, bool nomaximize) 148 static void show_mx(QWidget* mw, bool nomaximize)
149 { 149 {
150 150
151 // ugly hack, remove that later after finding a sane solution 151 // ugly hack, remove that later after finding a sane solution
152 // Addendum: Only Sharp currently has models with high resolution but (physically) small displays, 152 // Addendum: Only Sharp currently has models with high resolution but (physically) small displays,
153 // so this is only useful if QT_QWS_SHARP is defined. E.g. SIMpad has 800x600 but has 153 // so this is only useful if QT_QWS_SHARP is defined. E.g. SIMpad has 800x600 but has
154 // a (physically) large enough display to use the small icons 154 // a (physically) large enough display to use the small icons
155 #ifdef QT_QWS_SHARP 155#ifdef QT_QWS_SHARP
156 if ( QPEApplication::desktop() ->width() >= 600 && ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") ) ) { 156 if ( QPEApplication::desktop() ->width() >= 600 && ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") ) ) {
157 ( ( QMainWindow* ) mw )->setUsesBigPixmaps( true ); 157 ( ( QMainWindow* ) mw )->setUsesBigPixmaps( true );
158 } 158 }
159 #endif 159#endif
160 160
161 if ( mw->layout() && mw->inherits("QDialog") ) { 161 if ( mw->layout() && mw->inherits("QDialog") ) {
162 QPEApplication::showDialog((QDialog*)mw, nomaximize); 162 QPEApplication::showDialog((QDialog*)mw, nomaximize);
163 } 163 }
164 else { 164 else {
165#ifdef Q_WS_QWS 165#ifdef Q_WS_QWS
166 if ( !nomaximize ) 166 if ( !nomaximize )
167 mw->showMaximized(); 167 mw->showMaximized();
168 else 168 else
169#endif 169#endif
170 170
171 mw->show(); 171 mw->show();
172 } 172 }
173 } 173 }
174 static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ ) 174 static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ )
175 { 175 {
176 /* 176 /*
177 // This works but disable it for now until it is safe to apply 177 // This works but disable it for now until it is safe to apply
178 // What is does is scan the .desktop files of all the apps for 178 // What is does is scan the .desktop files of all the apps for
179 // the applnk that has the corresponding argv[0] as this program 179 // the applnk that has the corresponding argv[0] as this program
180 // then it uses the name stored in the .desktop file as the caption 180 // then it uses the name stored in the .desktop file as the caption
181 // for the main widget. This saves duplicating translations for 181 // for the main widget. This saves duplicating translations for
182 // the app name in the program and in the .desktop files. 182 // the app name in the program and in the .desktop files.
183 183
184 AppLnkSet apps( appsPath ); 184 AppLnkSet apps( appsPath );
185 185
186 QList<AppLnk> appsList = apps.children(); 186 QList<AppLnk> appsList = apps.children();
187 for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) { 187 for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) {
188 if ( (*it)->exec() == appName ) { 188 if ( (*it)->exec() == appName ) {
189 mw->setCaption( (*it)->name() ); 189 mw->setCaption( (*it)->name() );
190 return TRUE; 190 return TRUE;
191 } 191 }
192 } 192 }
193 */ 193 */
194 return FALSE; 194 return FALSE;
195 } 195 }
196 196
197 197
198 void show(QWidget* mw, bool nomax) 198 void show(QWidget* mw, bool nomax)
199 { 199 {
200 setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" ); 200 setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" );
201 nomaximize = nomax; 201 nomaximize = nomax;
202 qpe_main_widget = mw; 202 qpe_main_widget = mw;
203#ifndef QT_NO_COP 203#ifndef QT_NO_COP
204 204
205 sendQCopQ(); 205 sendQCopQ();
206#endif 206#endif
207 207
@@ -482,103 +482,103 @@ static void setTreble( int t = 0, int percent = -1 )
482 \fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data ) 482 \fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data )
483 483
484 This signal is emitted when a message is received on this 484 This signal is emitted when a message is received on this
485 application's QPE/Application/<i>appname</i> \link qcop.html 485 application's QPE/Application/<i>appname</i> \link qcop.html
486 QCop\endlink channel. 486 QCop\endlink channel.
487 487
488 The slot to which you connect this signal uses \a msg and \a data 488 The slot to which you connect this signal uses \a msg and \a data
489 in the following way: 489 in the following way:
490 490
491\code 491\code
492 void MyWidget::receive( const QCString& msg, const QByteArray& data ) 492 void MyWidget::receive( const QCString& msg, const QByteArray& data )
493 { 493 {
494 QDataStream stream( data, IO_ReadOnly ); 494 QDataStream stream( data, IO_ReadOnly );
495 if ( msg == "someMessage(int,int,int)" ) { 495 if ( msg == "someMessage(int,int,int)" ) {
496 int a,b,c; 496 int a,b,c;
497 stream >> a >> b >> c; 497 stream >> a >> b >> c;
498 ... 498 ...
499 } else if ( msg == "otherMessage(QString)" ) { 499 } else if ( msg == "otherMessage(QString)" ) {
500 ... 500 ...
501 } 501 }
502 } 502 }
503\endcode 503\endcode
504 504
505 \sa qcop.html 505 \sa qcop.html
506 Note that messages received here may be processed by qpe application 506 Note that messages received here may be processed by qpe application
507 and emitted as signals, such as flush() and reload(). 507 and emitted as signals, such as flush() and reload().
508*/ 508*/
509 509
510/*! 510/*!
511 Constructs a QPEApplication just as you would construct 511 Constructs a QPEApplication just as you would construct
512 a QApplication, passing \a argc, \a argv, and \a t. 512 a QApplication, passing \a argc, \a argv, and \a t.
513 513
514 For applications, \a t should be the default, GuiClient. Only 514 For applications, \a t should be the default, GuiClient. Only
515 the Qtopia server passes GuiServer. 515 the Qtopia server passes GuiServer.
516*/ 516*/
517QPEApplication::QPEApplication( int & argc, char **argv, Type t ) 517QPEApplication::QPEApplication( int & argc, char **argv, Type t )
518 : QApplication( argc, argv, t ) 518 : QApplication( argc, argv, t )
519{ 519{
520 d = new QPEApplicationData; 520 d = new QPEApplicationData;
521 d->loadTextCodecs(); 521 d->loadTextCodecs();
522 d->loadImageCodecs(); 522 d->loadImageCodecs();
523 int dw = desktop() ->width(); 523 int dw = desktop() ->width();
524 524
525 if ( dw < 200 ) { 525 if ( dw < 200 ) {
526 setFont( QFont( "vera", 8 ) ); 526 setFont( QFont( "vera", 8 ) );
527 AppLnk::setSmallIconSize( 10 ); 527 AppLnk::setSmallIconSize( 10 );
528 AppLnk::setBigIconSize( 28 ); 528 AppLnk::setBigIconSize( 28 );
529 } 529 }
530 #ifdef QT_QWS_SHARP 530#ifdef QT_QWS_SHARP
531 else if ( dw > 600 ) { 531 else if ( dw > 600 ) {
532 setFont( QFont( "vera", 16 ) ); 532 setFont( QFont( "vera", 16 ) );
533 AppLnk::setSmallIconSize( 24 ); 533 AppLnk::setSmallIconSize( 24 );
534 AppLnk::setBigIconSize( 48 ); 534 AppLnk::setBigIconSize( 48 );
535 } 535 }
536 #endif 536#endif
537 else if ( dw > 200 ) { 537 else if ( dw > 200 ) {
538 setFont( QFont( "vera", 10 ) ); 538 setFont( QFont( "vera", 10 ) );
539 AppLnk::setSmallIconSize( 14 ); 539 AppLnk::setSmallIconSize( 14 );
540 AppLnk::setBigIconSize( 32 ); 540 AppLnk::setBigIconSize( 32 );
541 } 541 }
542 542
543 QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory ); 543 QMimeSourceFactory::setDefaultFactory( new ResourceMimeFactory );
544 544
545 connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) ); 545 connect( this, SIGNAL( lastWindowClosed() ), this, SLOT( hideOrQuit() ) );
546#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 546#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
547 547
548 QString qcopfn( "/tmp/qcop-msg-" ); 548 QString qcopfn( "/tmp/qcop-msg-" );
549 qcopfn += QString( argv[ 0 ] ); // append command name 549 qcopfn += QString( argv[ 0 ] ); // append command name
550 550
551 QFile f( qcopfn ); 551 QFile f( qcopfn );
552 if ( f.open( IO_ReadOnly ) ) { 552 if ( f.open( IO_ReadOnly ) ) {
553 flock( f.handle(), LOCK_EX ); 553 flock( f.handle(), LOCK_EX );
554 } 554 }
555 555
556 sysChannel = new QCopChannel( "QPE/System", this ); 556 sysChannel = new QCopChannel( "QPE/System", this );
557 connect( sysChannel, SIGNAL( received( const QCString &, const QByteArray & ) ), 557 connect( sysChannel, SIGNAL( received( const QCString &, const QByteArray & ) ),
558 this, SLOT( systemMessage( const QCString &, const QByteArray & ) ) ); 558 this, SLOT( systemMessage( const QCString &, const QByteArray & ) ) );
559 559
560 QCString channel = QCString( argv[ 0 ] ); 560 QCString channel = QCString( argv[ 0 ] );
561 channel.replace( QRegExp( ".*/" ), "" ); 561 channel.replace( QRegExp( ".*/" ), "" );
562 d->appName = channel; 562 d->appName = channel;
563 channel = "QPE/Application/" + channel; 563 channel = "QPE/Application/" + channel;
564 pidChannel = new QCopChannel( channel, this ); 564 pidChannel = new QCopChannel( channel, this );
565 connect( pidChannel, SIGNAL( received( const QCString &, const QByteArray & ) ), 565 connect( pidChannel, SIGNAL( received( const QCString &, const QByteArray & ) ),
566 this, SLOT( pidMessage( const QCString &, const QByteArray & ) ) ); 566 this, SLOT( pidMessage( const QCString &, const QByteArray & ) ) );
567 567
568 if ( f.isOpen() ) { 568 if ( f.isOpen() ) {
569 d->keep_running = FALSE; 569 d->keep_running = FALSE;
570 QDataStream ds( &f ); 570 QDataStream ds( &f );
571 QCString channel, message; 571 QCString channel, message;
572 QByteArray data; 572 QByteArray data;
573 while ( !ds.atEnd() ) { 573 while ( !ds.atEnd() ) {
574 ds >> channel >> message >> data; 574 ds >> channel >> message >> data;
575 d->enqueueQCop( channel, message, data ); 575 d->enqueueQCop( channel, message, data );
576 } 576 }
577 577
578 flock( f.handle(), LOCK_UN ); 578 flock( f.handle(), LOCK_UN );
579 f.close(); 579 f.close();
580 f.remove(); 580 f.remove();
581 } 581 }
582 582
583 for ( int a = 0; a < argc; a++ ) { 583 for ( int a = 0; a < argc; a++ ) {
584 if ( qstrcmp( argv[ a ], "-preload" ) == 0 ) { 584 if ( qstrcmp( argv[ a ], "-preload" ) == 0 ) {
@@ -1714,97 +1714,97 @@ void QPEApplication::tryQuit()
1714 { 1714 {
1715 QCopEnvelope e( "QPE/System", "closing(QString)" ); 1715 QCopEnvelope e( "QPE/System", "closing(QString)" );
1716 e << d->appName; 1716 e << d->appName;
1717 } 1717 }
1718#endif 1718#endif
1719 processEvents(); 1719 processEvents();
1720 1720
1721 quit(); 1721 quit();
1722} 1722}
1723 1723
1724/*! 1724/*!
1725 \internal 1725 \internal
1726*/ 1726*/
1727void QPEApplication::installTranslation( const QString& baseName ) { 1727void QPEApplication::installTranslation( const QString& baseName ) {
1728 QTranslator* trans = new QTranslator(this); 1728 QTranslator* trans = new QTranslator(this);
1729 QString tfn = qpeDir() + "/i18n/"+baseName; 1729 QString tfn = qpeDir() + "/i18n/"+baseName;
1730 if ( trans->load( tfn ) ) 1730 if ( trans->load( tfn ) )
1731 installTranslator( trans ); 1731 installTranslator( trans );
1732 else 1732 else
1733 delete trans; 1733 delete trans;
1734} 1734}
1735 1735
1736/*! 1736/*!
1737 \internal 1737 \internal
1738 User initiated quit. Makes the window 'Go Away'. If preloaded this means 1738 User initiated quit. Makes the window 'Go Away'. If preloaded this means
1739 hiding the window. If not it means quitting the application. 1739 hiding the window. If not it means quitting the application.
1740 As this is user initiated we don't need to check state. 1740 As this is user initiated we don't need to check state.
1741*/ 1741*/
1742void QPEApplication::hideOrQuit() 1742void QPEApplication::hideOrQuit()
1743{ 1743{
1744 processEvents(); 1744 processEvents();
1745 1745
1746 // If we are a preloaded application we don't actually quit, so emit 1746 // If we are a preloaded application we don't actually quit, so emit
1747 // a System message indicating we're quasi-closing. 1747 // a System message indicating we're quasi-closing.
1748 if ( d->preloaded && d->qpe_main_widget ) 1748 if ( d->preloaded && d->qpe_main_widget )
1749#ifndef QT_NO_COP 1749#ifndef QT_NO_COP
1750 1750
1751 { 1751 {
1752 QCopEnvelope e("QPE/System", "fastAppHiding(QString)" ); 1752 QCopEnvelope e("QPE/System", "fastAppHiding(QString)" );
1753 e << d->appName; 1753 e << d->appName;
1754 d->qpe_main_widget->hide(); 1754 d->qpe_main_widget->hide();
1755 } 1755 }
1756#endif 1756#endif
1757 else 1757 else
1758 quit(); 1758 quit();
1759} 1759}
1760 1760
1761 1761
1762#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) 1762#if defined(QT_QWS_IPAQ) || defined(QT_QWS_SL5XXX) || defined(QT_QWS_RAMSES)
1763 1763
1764// The libraries with the skiff package (and possibly others) have 1764// The libraries with the skiff package (and possibly others) have
1765// completely useless implementations of builtin new and delete that 1765// completely useless implementations of builtin new and delete that
1766// use about 50% of your CPU. Here we revert to the simple libc 1766// use about 50% of your CPU. Here we revert to the simple libc
1767// functions. 1767// functions.
1768 1768
1769void* operator new[]( size_t size ) 1769void* operator new[]( size_t size )
1770{ 1770{
1771 return malloc( size ); 1771 return malloc( size );
1772} 1772}
1773 1773
1774void* operator new( size_t size ) 1774void* operator new( size_t size )
1775{ 1775{
1776 return malloc( size ); 1776 return malloc( size );
1777} 1777}
1778 1778
1779void operator delete[]( void* p ) 1779void operator delete[]( void* p )
1780{ 1780{
1781 free( p ); 1781 free( p );
1782} 1782}
1783 1783
1784void operator delete[]( void* p, size_t /*size*/ ) 1784void operator delete[]( void* p, size_t /*size*/ )
1785{ 1785{
1786 free( p ); 1786 free( p );
1787} 1787}
1788 1788
1789 1789
1790void operator delete( void* p ) 1790void operator delete( void* p )
1791{ 1791{
1792 free( p ); 1792 free( p );
1793} 1793}
1794 1794
1795void operator delete( void* p, size_t /*size*/ ) 1795void operator delete( void* p, size_t /*size*/ )
1796{ 1796{
1797 free( p ); 1797 free( p );
1798} 1798}
1799 1799
1800#endif 1800#endif
1801 1801
1802#if ( QT_VERSION <= 230 ) && !defined(SINGLE_APP) 1802#if ( QT_VERSION <= 230 ) && !defined(SINGLE_APP)
1803#include <qwidgetlist.h> 1803#include <qwidgetlist.h>
1804#ifdef QWS 1804#ifdef QWS
1805#include <qgfx_qws.h> 1805#include <qgfx_qws.h>
1806extern QRect qt_maxWindowRect; 1806extern QRect qt_maxWindowRect;
1807void qt_setMaxWindowRect(const QRect& r ) 1807void qt_setMaxWindowRect(const QRect& r )
1808{ 1808{
1809 qt_maxWindowRect = qt_screen->mapFromDevice( r, 1809 qt_maxWindowRect = qt_screen->mapFromDevice( r,
1810 qt_screen->mapToDevice( QSize( qt_screen->width(), qt_screen->height() ) ) ); 1810 qt_screen->mapToDevice( QSize( qt_screen->width(), qt_screen->height() ) ) );