author | mickeyl <mickeyl> | 2005-09-03 20:36:38 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2005-09-03 20:36:38 (UTC) |
commit | 62ae8e732a5d4e5b23d060185c0655b1666be59c (patch) (side-by-side diff) | |
tree | 71e6d1530036731274f8ea0262423e74e86fe9f7 | |
parent | de950b18690b8981a2bddaca68cbd5d48c71f689 (diff) | |
download | opie-62ae8e732a5d4e5b23d060185c0655b1666be59c.zip opie-62ae8e732a5d4e5b23d060185c0655b1666be59c.tar.gz opie-62ae8e732a5d4e5b23d060185c0655b1666be59c.tar.bz2 |
switch to 5-point calibration to make it work on some newer Zaurii
this goes hand in hand with the integration of the RMK tslib calibration
algorithm into Qt/Embedded 2.3.x. Patch courtesy Richard Purdie.
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | core/apps/calibrate/calibrate.cpp | 6 |
2 files changed, 4 insertions, 3 deletions
@@ -1,163 +1,164 @@ 2005-??-?? Opie 1.2.1 New Features ------------ * OpieStumbler: Scans WiFi networks using the wireless extension scanning (skyhusker) * Opie-Reader: Support for document formats ArriereGo and Reb, add flite output (tim,pohly) * Opie-Networksettings: Add support for wlan-ng devices and improve WEP handling (Dirk Opfer) * Wellenreiter: Remove Joining networks - use OpieStumbler for that (mickeyl) * Opie-Mobilemsg has gone unsupported - it never really worked and there will be a replacement (mickeyl) * Opie-Tabmanager has gone unsupported - it barely works and there is not much of a use of it anyway (mickeyl) * Checkbook: Added configuration option to use smaller font for checkbook transaction tab (hrw) * ZSafe: Made UI conform to Opie standards (drw) * Today Addressbook plugin: Fixed configuration to show/not show birthdays, use checkboxes for selection (hrw) * Opie-Console: Read initial fixed font configuration from qpe.conf (mickeyl) * Opie-PcmciaApplet: Configure insert/resume actions and bind unsupported cards (mickeyl) * SysInfo: Remove CPU tab and add Devices tab instead (mickeyl) * Opie-smb: Added Opie front end for Samba (ljp) * Opie-Bluetooth: Replace obex send implementation and patch libopieobex and the bluetoothapplet (Michael Haynie) * Opieplayer: rudimentary podcast support (ljp) Fixed Bugs ---------- * #1377 - Suspend Powermanagement when switched to another VT (mickeyl) - We actually suspend the complete Opie now in that case. * #1384 - Battery status updated improperly when charging (skyhusker) * #1476 - Wrong order of application entries in the O-menu (skyhusker) * #1514 - Remove usage of cardmon/pcmcia picture in applications. pcmcia is now an inline picture (mickeyl) * #1535 - Missing line break and unnecessary location shown with Today-Calendar plugin (deller) * #1543 - Time Settings: "predict" tab is displayed twice after reopen (hrw) * #1546 - Battery applet popup is not always large enough to show jacket remaining info (skyhusker) * #1557 - Light&Power-Settings don't store warning intervall and warning levels (skyhusker) * #1565 - crash-fix in odevice.cpp while scanning the distribution table (deller) * #1614 - Make Opie-console start in $HOME instead of / (skyhusker) * #1635 - opie-today, datebook-plugin does not show notes (skyhusker) * #1665 - Opie-IRC displays the host prepended to the message when peer is using and ipv6 address (skyhusker) * #1666 - Opie-IRC does not allow to add !channels in config as autojoin ones (skyhusker) * #1667 - Opie-IRC does not show messages from !channel (skyhusker) * #1679 - Security PIN plugin is QVGA sized (hrw) * #1682 - Properly resize tab control in OTabWidget (drw) * n.a. - always show volume and wireless applet popups inside visible screen (deller) * n.a. - scale O-Menu-Applets appropriately (mickeyl) * n.a. - libopienet: fix bugs in wireless scanning and setting SSID (skyhusker) * n.a. - Wellenreiter: relax WE version matching test a bit (mickeyl) * n.a. - scale BluezApplet appropriately and use larger icons (mickeyl) * n.a. - memoryapplet: fix crash in memoryapplet on kernels without swap support (seneca cunningham) * n.a. - networksettings: ignore hostap control interfaces wifi* (mickeyl) * n.a. - Today Addressbook plugin fix configuration to show/not show birthdays, use checkboxes for selection (hrw) * n.a. - remove hardcoded font size from netsystemtime (hrw) * n.a. - remove hardcoded font size from checkbook graphs (hrw) * n.a. - Dagger - fixes for Sword 1.5.8, morph tag x-refs, closing last tab crash (drw) Internal -------- * Make BluezApplet use OTaskbarApplet (mickeyl) * libopiecore: rewrite OFileNotification to use the Linux 2.6 inotify interface (mickeyl) * libopiecore: add ODirNotification - recursive directory notifications (mickeyl) * libopienet: Skip hostap control interfaces 'wifi' and improve robustness in ONetworkInterface (mickeyl) * libopieui: Remove OVersatileView and OVersatileViewItem (mickeyl) * libopienet: Miscellaneous API cleanups (mickeyl) * libopiecore: Add linux pcmcia system abstraction classes (mickeyl) * libopiecore: ODevice now knows the default gfx driver to use (mteira,mickeyl) * libopiecore: Add support for the Sharp SL-C3100 "Borzoi" (mickeyl) * libopiecore: Add support for the new Linux Inputsystem Switches type [necessary for auto rotation in 2.6.13] (mickeyl) * Remove assumptions about default gfx driver ("Transformed") all over the place (mteira,mickeyl) * Fix / Optimize number of scanned directories (ljp) + * Use five point mouse calibration to make calibrated mouse drivers work on newer Zaurii (rp,mickeyl) 2005-03-25 Opie 1.2.0 Fixed Bugs ---------- * #1613 - AdvancedFM - scale toolbar icons appropriately (drw) * #1620 - OFileSelector - show the button on press and not on press on hold (alwin) * #1473 - Opie-Eye - Same as #1620 but we lack a common FileSystem Button class (zecke) * n.a. - PackageManager - fix bug where messages show up multiple times in install dialog (drw) * n.a. - make qpeglobal.h include qglobal.h (zecke) 2005-03-20 Opie 1.2.0-rc1 New Features ------------ * Launcher: Support a static background pixmap (mickeyl) * LauncherSettings: Choose whether to have a static background pixmap (mickeyl) * PackageManager supports the 'lists_dir' ipkg configuration option (drw) * Added hi-res inline images for large resolution devices (drw) * Improved launcher icons for consistency (ar) * Datebook: Added plugin system to datebook so holidays and birthdays from contacts may displayed in datebook (alwin) Fixed Bugs ---------- * #1236 - VCards contained empty home and work address entries causing Palms to crash (eilers) * #1412 - Launcher Settings - fixed default settings for background in Edit tab dialog (drw) * #1472 - Opie textedit now check for unsaved changes on ESC key (ljp) * #1474 - Implement GUI for Scrollbars on the Left in Appearance (zecke) * #1482 - Fix double '/' in paths (zecke) * #1536 - Autosave of custom locations in opie backup (ar) * #1539 - Fixed displaying too long path in the delete dialog in opie-eye (zecke) * #1540 - Implemented deletion of DocLnks in opie-eye (zecke) * #1542 - Fixed Todo crash when priority < 1 or > 5 (drw) * #1550 - Browse for alarm sound start in QPEDIR/sounds/ (zecke) * #1554 - Fixed Opie-Console name in .desktop file (mickeyl) * #1556 - Start to look for sound files in /opt/QtPalmtop/sounds (zecke) * #1558 - Fixed opie-login breaking opie startup (mickeyl) * #1560 - Fixed Opie-Console picking up the wrong shell (bluelightning) * #1570 - Confirmation needed befor Restore a backup and overwrite local data (ar) * #1591 - Addressbook sortorder changed by clicking on column 0 (eilers) * #1599 - Security - change recommendation for opie-multiauth to opie-securityplugin (gints) * #1604 - Checkbook crashed on startup (drw) * #1608 - Addressbook crashed after search, which may caused by not initialzed member variable (eilers) * #1608 - QueryByExampe-Datediff on SQL database did not worked properly (eilers) * n.a. - Netsystemtime - fixed UI to prevent error dialog from displaying when it shouldn't, get rid of some compiler warnings (drw) * n.a. - PackageManager - fixed where last package in status file was not shown as installed when it should be (drw) * n.a. - PackageManager - fixed bug where lists_dir was not being honored at startup (drw) * n.a. - PackageManager - provided default value for lists_dir when none is entered in configuration dialog (drw) * n.a. - OTabWidget - fixed scroll buttons, fix display position of tabs (drw) * n.a. - AddressBook - fixed sorting by 'File As' name (drw) * n.a. - AddressBook - fixed category handling for 'All' and 'Unfiled' (eilers) * n.a. - AddressBook - fixed letter picker record selection and sort records afterwards (drw) Internal -------- * Worked around bug in Qt/Embedded 2.3.10: qt_version() returns 231 (mickeyl) * Killed the need for weak symbols in QtE (zecke) * Added optional building libqpe without inline images (mickeyl) * OColorButton - fixed so does not emit a colorSelected signal inside of resizeEvent (drw) 2005-02-03 Opie 1.1.9 New Features ------------ * Number of icon columns in Launcher is customizable through Launcher.conf (hrw,zecke,mickeyl) * Number of icon columns in Launcher is customizable through LauncherSettings (mickeyl) * Usability enhancements in OpieIRC (skyhusker) Fixed Bugs ---------- * #1501 - Fixed bug in todo sql backend (eilers) * #1505 - Added more Swap sizes in memoryapplet (mickeyl) * #1525 - Hopefully fixed double alarms and not removing alarms set with the Clock application (zecke) * #1533 - Security Owner Dialog (shown in case of unsuccessfull authentiacation) wasn't able to display information in non latin1 encoding (zecke) * n.a. - Removed hard coded font sizes in a couple of inputmethods (mickeyl) * n.a. - Removed MediumDlg appearing prior to FirstUsage wizard (i.e. calibration) (mickeyl) * n.a. - Fixed numerous buglets in OpieIRC (skyhusker) Internal -------- * Added the Qtopia 1.7 SDK macros for quick-apps to easa compilation of 3rd party apps against our headers (mickeyl) * You can now use the Opie build system in combination with a OpenEmbedded staging area which makes a nice cross development environment (mickeyl) * Made Opie compilable with Qt/Embedded 2.3.10 (ar) * Changed Launcher to get default orientation from ODevice w/ QWS_DISPLAY overriding (mickeyl) * Build tree cleanups (mickeyl) 2004-11-26 Opie 1.1.8 New Features ------------ * PackageManager supports installation of local ipkg files (drw) * PackageManager supports linking of applications to root (drw) * PackageManager supports src/gz feeds (drw,wimpie) * Added a syslog information tab to sysinfo (mickeyl) * Added new, more consistent, PIM icons + a GIMP teplate (ar) diff --git a/core/apps/calibrate/calibrate.cpp b/core/apps/calibrate/calibrate.cpp index 5f52bdc..53388f1 100644 --- a/core/apps/calibrate/calibrate.cpp +++ b/core/apps/calibrate/calibrate.cpp @@ -31,249 +31,249 @@ #include <qpainter.h> #include <qtimer.h> #include <qwindowsystem_qws.h> #include <qgfx_qws.h> Calibrate::Calibrate( QWidget* parent, const char * name, WFlags wf ) : QDialog( parent, name, TRUE, wf | WStyle_Tool | WStyle_Customize | WStyle_StaysOnTop ) { #ifdef QWS showCross = TRUE; const int offset = 30; QRect desk = qApp->desktop() ->geometry(); setGeometry( 0, 0, desk.width(), desk.height() ); crosshair.convertFromImage( Resource::loadImage("launcher/crosshair") ); splash.convertFromImage( Resource::loadImage("launcher/firstuse").smoothScale( width(), height() ) ); setBackgroundPixmap( splash ); cd.screenPoints[ QWSPointerCalibrationData::TopLeft ] = QPoint( offset, offset ); cd.screenPoints[ QWSPointerCalibrationData::BottomLeft ] = QPoint( offset, qt_screen->deviceHeight() - offset ); cd.screenPoints[ QWSPointerCalibrationData::BottomRight ] = QPoint( qt_screen->deviceWidth() - offset, qt_screen->deviceHeight() - offset ); cd.screenPoints[ QWSPointerCalibrationData::TopRight ] = QPoint( qt_screen->deviceWidth() - offset, offset ); cd.screenPoints[ QWSPointerCalibrationData::Center ] = QPoint( qt_screen->deviceWidth() / 2, qt_screen->deviceHeight() / 2 ); goodcd = cd; reset(); timer = new QTimer( this ); connect( timer, SIGNAL( timeout() ), this, SLOT( timeout() ) ); #endif } Calibrate::~Calibrate() { store(); } void Calibrate::show() { #ifdef QWS grabMouse(); QWSServer::mouseHandler() ->getCalibration( &goodcd ); QWSServer::mouseHandler() ->clearCalibration(); QDialog::show(); #endif } void Calibrate::store() { #ifdef QWS QWSServer::mouseHandler() ->calibrate( &goodcd ); #endif } void Calibrate::hide() { if ( isVisible()) { store(); // hack - calibrate is a launcher dialog, but treated like a standalone app { QCopEnvelope e( "QPE/System", "closing(QString)" ); e << QString ( "calibrate" ); } } QDialog::hide(); } void Calibrate::reset() { #ifdef QWS penPos = QPoint(); location = QWSPointerCalibrationData::TopLeft; crossPos = fromDevice( cd.screenPoints[ location ] ); #endif } QPoint Calibrate::fromDevice( const QPoint &p ) { #ifdef QWS return qt_screen->mapFromDevice ( p, QSize( qt_screen->deviceWidth ( ), qt_screen->deviceHeight() ) ); #else return QPoint(); #endif } bool Calibrate::sanityCheck() { #ifdef QWS QPoint tl = cd.devPoints[QWSPointerCalibrationData::TopLeft]; QPoint tr = cd.devPoints[QWSPointerCalibrationData::TopRight]; QPoint bl = cd.devPoints[QWSPointerCalibrationData::BottomLeft]; QPoint br = cd.devPoints[QWSPointerCalibrationData::BottomRight]; // not needed anywhere .. just calculate it, so it's there - cd.devPoints[QWSPointerCalibrationData::Center] = QRect( tl, br ).normalize().center(); + //cd.devPoints[QWSPointerCalibrationData::Center] = QRect( tl, br ).normalize().center(); int dlx = QABS( bl. x ( ) - tl. x ( )); int dly = QABS( bl. y ( ) - tl. y ( )); int drx = QABS( br. x ( ) - tr. x ( )); int dry = QABS( br. y ( ) - tr. y ( )); int dtx = QABS( tr. x ( ) - tl. x ( )); int dty = QABS( tr. y ( ) - tl. y ( )); int dbx = QABS( br. x ( ) - bl. x ( )); int dby = QABS( br. y ( ) - bl. y ( )); int dl = (int) ::sqrt (( dlx * dlx ) + ( dly * dly )); // calculate vector lengths for all sides int dr = (int) ::sqrt (( drx * drx ) + ( dry * dry )); int dt = (int) ::sqrt (( dtx * dtx ) + ( dty * dty )); int db = (int) ::sqrt (( dbx * dbx ) + ( dby * dby )); // Calculate leeway for x/y (we do not care if diff1/diff2 is for x or y here !) int diff1 = QABS( dl - dr ); int avg1 = ( dl + dr ) / 2; int diff2 = QABS( dt - db ); int avg2 = ( dt + db ) / 2; // Calculate leeway for "real" vector length against "manhattan" vector length // This is a check, if the rect is rotated (other then 0/90/180/270) // It needs to be performed only for the triange (bl, tl, tr) int diff3 = QABS(( dlx + dly + dtx + dty ) - ( dl + dt )); int avg3 = (( dlx + dly + dtx + dty ) + ( dl + dt )) / 2; if (( diff1 > ( avg1 / 20 )) || // 5% leeway ( diff2 > ( avg2 / 20 )) || ( diff3 > ( avg3 / 20 ))) return false; else return true; #else return true; #endif } void Calibrate::moveCrosshair( QPoint pt ) { showCross = FALSE; repaint( crossPos.x() - 14, crossPos.y() - 14, 28, 28 ); showCross = TRUE; crossPos = pt; repaint( crossPos.x() - 14, crossPos.y() - 14, 28, 28 ); } void Calibrate::paintEvent( QPaintEvent * ) { QPainter p( this ); - int y = height() / 3; + int y = height() / 2; p.drawText( 0, y + height() / 8, width(), height() - y, AlignHCenter, tr( "Touch the crosshairs firmly and\n" "accurately to calibrate your screen." ) ); if ( !showCross ) return; #if 0 if ( crosshair.isNull() ) { #endif p.setPen( QColor( 0, 0, 155 ) ); p.drawEllipse( crossPos.x()-8, crossPos.y()-8, 16, 16 ); p.setPen( QColor( 250, 220, 220 ) ); p.drawRoundRect( crossPos.x()-12, crossPos.y()-12, 24, 24, 75, 75 ); p.setPen( QColor( 0, 0, 120 ) ); p.drawRect( crossPos.x() - 1, crossPos.y() - 14, 2, 13 ); p.drawRect( crossPos.x() - 1, crossPos.y() + 1, 2, 13 ); p.drawRect( crossPos.x() - 14, crossPos.y() - 1, 13, 2 ); p.drawRect( crossPos.x() + 1, crossPos.y() - 1, 13, 2 ); #if 0 } else p.drawPixmap( crossPos.x(), crossPos.y(), crosshair ); #endif } void Calibrate::mousePressEvent( QMouseEvent *e ) { #ifdef QWS // map to device coordinates QPoint devPos = qt_screen->mapToDevice( e->pos(), QSize( qt_screen->width(), qt_screen->height() ) ); if ( penPos.isNull() ) penPos = devPos; else penPos = QPoint( ( penPos.x() + devPos.x() ) / 2, ( penPos.y() + devPos.y() ) / 2 ); #endif } void Calibrate::mouseReleaseEvent( QMouseEvent * ) { #ifdef QWS if ( timer->isActive() ) return ; bool doMove = TRUE; cd.devPoints[ location ] = penPos; - if ( location < QWSPointerCalibrationData::TopRight ) { + if ( location < QWSPointerCalibrationData::Center ) { location = (QWSPointerCalibrationData::Location) ( int( location ) + 1 ); } else { if ( sanityCheck() ) { reset(); goodcd = cd; hide(); emit accept(); doMove = FALSE; } else { location = QWSPointerCalibrationData::TopLeft; } } if ( doMove ) { QPoint target = fromDevice( cd.screenPoints[ location ] ); dx = ( target.x() - crossPos.x() ) / 10; dy = ( target.y() - crossPos.y() ) / 10; timer->start( 30 ); } #endif } void Calibrate::timeout() { #ifdef QWS QPoint target = fromDevice( cd.screenPoints[ location ] ); bool doneX = FALSE; bool doneY = FALSE; QPoint newPos( crossPos.x() + dx, crossPos.y() + dy ); if ( QABS( crossPos.x() - target.x() ) <= QABS( dx ) ) { newPos.setX( target.x() ); doneX = TRUE; } if ( QABS( crossPos.y() - target.y() ) <= QABS( dy ) ) { newPos.setY( target.y() ); doneY = TRUE; } if ( doneX && doneY ) { penPos = QPoint(); timer->stop(); } moveCrosshair( newPos ); #endif } //#endif // _WS_QWS_ |