summaryrefslogtreecommitdiff
path: root/libopie2
Side-by-side diff
Diffstat (limited to 'libopie2') (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice_htc.cpp3
-rw-r--r--libopie2/opiepim/private/opimeventsortvector.cpp9
2 files changed, 4 insertions, 8 deletions
diff --git a/libopie2/opiecore/device/odevice_htc.cpp b/libopie2/opiecore/device/odevice_htc.cpp
index c21e10d..4e5200b 100644
--- a/libopie2/opiecore/device/odevice_htc.cpp
+++ b/libopie2/opiecore/device/odevice_htc.cpp
@@ -327,202 +327,201 @@ void HTC::playTouchSound()
void HTC::playKeySound()
{
buzzer( SHARP_BUZ_KEYSOUND );
}
QValueList <OLed> HTC::ledList() const
{
QValueList <OLed> vl;
vl << Led_Mail;
return vl;
}
QValueList <OLedState> HTC::ledStateList( OLed l ) const
{
QValueList <OLedState> vl;
if ( l == Led_Mail )
vl << Led_Off << Led_On << Led_BlinkSlow;
return vl;
}
OLedState HTC::ledState( OLed which ) const
{
if ( which == Led_Mail )
return m_leds [0];
else
return Led_Off;
}
bool HTC::setLedState( OLed which, OLedState st )
{
qDebug( "HTC::setLedState: ODevice handling not yet implemented" );
return false;
}
int HTC::displayBrightnessResolution() const
{
int res = 1;
int fd = ::open( m_backlightdev + "max_brightness", O_RDONLY|O_NONBLOCK );
if ( fd )
{
char buf[100];
if ( ::read( fd, &buf[0], sizeof buf ) ) ::sscanf( &buf[0], "%d", &res );
::close( fd );
}
return res;
}
bool HTC::setDisplayBrightness( int bright )
{
//qDebug( "HTC::setDisplayBrightness( %d )", bright );
bool res = false;
if ( bright > 255 ) bright = 255;
if ( bright < 0 ) bright = 0;
int numberOfSteps = displayBrightnessResolution();
int val = ( bright == 1 ) ? 1 : ( bright * numberOfSteps ) / 255;
int fd = ::open( m_backlightdev + "brightness", O_WRONLY|O_NONBLOCK );
if ( fd )
{
char buf[100];
int len = ::snprintf( &buf[0], sizeof buf, "%d", val );
res = ( ::write( fd, &buf[0], len ) == 0 );
::close( fd );
}
return res;
}
bool HTC::setDisplayStatus( bool on )
{
bool res = false;
int fd = ::open( m_backlightdev + "power", O_WRONLY|O_NONBLOCK );
if ( fd )
{
char buf[10];
buf[0] = on ? FB_BLANK_UNBLANK : FB_BLANK_POWERDOWN;
buf[1] = '\0';
res = ( ::write( fd, &buf[0], 2 ) == 0 );
::close( fd );
}
return res;
}
Transformation HTC::rotation() const
{
qDebug( "HTC::rotation()" );
- Transformation rot;
+ Transformation rot = Rot270;
switch ( d->m_model ) {
case Model_HTC_Universal:
{
OHingeStatus hs = readHingeSensor();
qDebug( "HTC::rotation() - hinge sensor = %d", (int) hs );
if ( hs == CASE_PORTRAIT ) rot = Rot0;
else if ( hs == CASE_UNKNOWN ) rot = Rot270;
- else rot = Rot270;
}
break;
}
qDebug( "HTC::rotation() - returning '%d'", rot );
return rot;
}
ODirection HTC::direction() const
{
ODirection dir;
switch ( d->m_model ) {
case Model_HTC_Universal: {
OHingeStatus hs = readHingeSensor();
if ( hs == CASE_PORTRAIT ) dir = CCW;
else if ( hs == CASE_UNKNOWN ) dir = CCW;
else dir = CW;
}
break;
default: dir = d->m_direction;
break;
}
return dir;
}
bool HTC::hasHingeSensor() const
{
return d->m_model == Model_HTC_Universal;
}
OHingeStatus HTC::readHingeSensor() const
{
/*
* The HTC Universal keyboard is event source 1 in kernel 2.6.
* Hinge status is reported via Input System Switchs 0 and 1 like that:
*
* -------------------------
* | SW0 | SW1 | CASE |
* |-----|-----|-----------|
* | 0 0 Unknown |
* | 1 0 Portrait |
* | 0 1 Closed |
* | 1 1 Landscape |
* -------------------------
*/
OInputDevice* keyboard = OInputSystem::instance()->device( "event1" );
bool switch0 = true;
bool switch1 = false;
if ( keyboard )
{
switch0 = keyboard->isHeld( OInputDevice::Switch0 );
switch1 = keyboard->isHeld( OInputDevice::Switch1 );
}
if ( switch0 )
{
return switch1 ? CASE_LANDSCAPE : CASE_PORTRAIT;
}
else
{
return switch1 ? CASE_CLOSED : CASE_UNKNOWN;
}
}
void HTC::initHingeSensor()
{
if ( m_embedix ) return;
m_hinge.setName( "/dev/input/event1" );
if ( !m_hinge.open( IO_ReadOnly ) )
{
qWarning( "HTC::init() - Couldn't open /dev/input/event1 for read (%s)", strerror( errno ) );
return;
}
QSocketNotifier* sn = new QSocketNotifier( m_hinge.handle(), QSocketNotifier::Read, this );
QObject::connect( sn, SIGNAL(activated(int)), this, SLOT(hingeSensorTriggered()) );
qDebug( "HTC::init() - Hinge Sensor Initialization successfully completed" );
}
void HTC::hingeSensorTriggered()
{
qDebug( "HTC::hingeSensorTriggered() - got event" );
struct input_event e;
if ( ::read( m_hinge.handle(), &e, sizeof e ) > 0 )
{
qDebug( "HTC::hingeSensorTriggered() - event has type %d, code %d, value %d", e.type, e.code, e.value );
if ( e.type != EV_SW ) return;
if ( readHingeSensor() != CASE_UNKNOWN )
{
qDebug( "HTC::hingeSensorTriggered() - got valid switch event, calling rotateDefault()" );
QCopChannel::send( "QPE/Rotation", "rotateDefault()" );
}
}
}
diff --git a/libopie2/opiepim/private/opimeventsortvector.cpp b/libopie2/opiepim/private/opimeventsortvector.cpp
index 4220c63..b85f848 100644
--- a/libopie2/opiepim/private/opimeventsortvector.cpp
+++ b/libopie2/opiepim/private/opimeventsortvector.cpp
@@ -1,134 +1,131 @@
/*
This file is part of the Opie Project
Copyright (C) 2004 Stefan Eilers <stefan@eilers-online.net>
=. Copyright (C) The Opie Team <opie-devel@handhelds.org>
.=l.
.>+-=
_;:, .> :=|. This program is free software; you can
.> <`_, > . <= redistribute it and/or modify it under
:`=1 )Y*s>-.-- : the terms of the GNU Library General Public
.="- .-=="i, .._ License as published by the Free Software
- . .-<_> .<> Foundation; either version 2 of the License,
._= =} : or (at your option) any later version.
.%`+i> _;_.
.i_,=:_. -<s. This program is distributed in the hope that
+ . -:. = it will be useful, but WITHOUT ANY WARRANTY;
: .. .:, . . . without even the implied warranty of
=_ + =;=|` MERCHANTABILITY or FITNESS FOR A
_.=:. : :=>`: PARTICULAR PURPOSE. See the GNU
..}^=.= = ; Library General Public License for more
++= -. .` .: details.
: = ...= . :.=-
-. .:....=;==+<; You should have received a copy of the GNU
-_. . . )=. = Library General Public License along with
-- :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include "opimeventsortvector.h"
#include <opie2/ocontactaccess.h>
#include <opie2/opimnotifymanager.h>
#include <opie2/odatebookaccess.h>
#include <qvaluelist.h>
namespace Opie {
namespace Internal {
-namespace{
-
-inline int testAlarmNotifiers( const OPimNotifyManager& leftnotifiers, const OPimNotifyManager& rightnotifiers ){
+int testAlarmNotifiers( const OPimNotifyManager& leftnotifiers, const OPimNotifyManager& rightnotifiers ){
OPimNotifyManager::Alarms left_alarms = leftnotifiers.alarms();
OPimNotifyManager::Alarms right_alarms = rightnotifiers.alarms();
// Well.. How could we compare two lists of alarms? I think we should find the most early datetimes
// and compare them.. (se)
// Find the first alarm of the left list
OPimNotifyManager::Alarms::Iterator it;
QDateTime left_earliest; // This datetime is initialized as invalid!!
for ( it = left_alarms.begin(); it != left_alarms.end(); ++it ){
if ( !left_earliest.isValid() || left_earliest > (*it).dateTime() ){
left_earliest = (*it).dateTime();
}
}
QDateTime right_earliest; // This datetime is initialized as invalid!!
for ( it = right_alarms.begin(); it != right_alarms.end(); ++it ){
if ( !right_earliest.isValid() || right_earliest > (*it).dateTime() ){
right_earliest = (*it).dateTime();
}
}
- int ret;
+ int ret = 0;
// Now compare this found alarms
if ( !left_earliest .isValid() ) ret++;
if ( !right_earliest.isValid() ) ret--;
if ( left_earliest.isValid() && right_earliest.isValid() ){
- ret += left_earliest < right_earliest ? -1 : 1;
+ left_earliest < right_earliest ? ret-- : ret++;
}
return ret;
}
-}
OPimEventSortVector::OPimEventSortVector( uint size, bool asc, int sort )
: OPimSortVector<OPimEvent>( size, asc, sort ) {}
int OPimEventSortVector::compareItems( const OPimEvent& left,
const OPimEvent& right ) {
if ( left.uid() == right.uid() )
return 0;
int ret = 0;
bool asc = sortAscending();
switch( sortOrder() ) {
case ODateBookAccess::SortDescription:
ret = testString( left.description(), right.description() );
break;
case ODateBookAccess::SortLocation:
ret = testString( left.location(), right.location() );
break;
case ODateBookAccess::SortNote:
ret = testString( left.note(),right.note() );
break;
case ODateBookAccess::SortStartTime:
ret = testTime( left.startDateTime().time(), right.startDateTime().time() );
break;
case ODateBookAccess::SortEndTime:
ret = testTime( left.endDateTime().time(), right.endDateTime().time() );
break;
case ODateBookAccess::SortStartDate:
ret = testDate( left.startDateTime().date(), right.startDateTime().date() );
break;
case ODateBookAccess::SortEndDate:
ret = testDate( left.endDateTime().date(), right.endDateTime().date() );
break;
case ODateBookAccess::SortStartDateTime:
ret = testDateTime( left.startDateTime(), right.startDateTime() );
break;
case ODateBookAccess::SortEndDateTime:
ret = testDateTime( left.endDateTime(), right.endDateTime() );
break;
case ODateBookAccess::SortAlarmDateTime:
ret = testAlarmNotifiers( left.notifiers(), right.notifiers() );
break;
default:
odebug << "OpimEventSortVector: Unknown sortOrder: " << sortOrder() << oendl;
}
/* twist to honor ascending/descending setting as QVector only sorts ascending */
if ( !asc )
ret *= -1;
// Maybe differentiate as in OPimTodoSortVector ### FIXME
// if( ret )
return ret;
}
}
}