-rw-r--r-- | libopie/odevice.cpp | 41 |
1 files changed, 23 insertions, 18 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp index cb7dd74..d78277f 100644 --- a/libopie/odevice.cpp +++ b/libopie/odevice.cpp @@ -1111,73 +1111,78 @@ int iPAQ::lightSensorResolution ( ) const } /************************************************** * * Zaurus * **************************************************/ void Zaurus::init ( ) { d-> m_vendorstr = "Sharp"; d-> m_vendor = Vendor_Sharp; QFile f ( "/proc/filesystems" ); + QString model; if ( f. open ( IO_ReadOnly ) && ( QTextStream ( &f ). read ( ). find ( "\tjffs2\n" ) >= 0 )) { d-> m_vendorstr = "OpenZaurus Team"; d-> m_systemstr = "OpenZaurus"; d-> m_system = System_OpenZaurus; f. close ( ); f. setName ( "/etc/oz_version" ); if ( f. open ( IO_ReadOnly )) { QTextStream ts ( &f ); d-> m_sysverstr = ts. readLine ( );//. mid ( 10 ); f. close ( ); } } else { d-> m_systemstr = "Zaurus"; d-> m_system = System_Zaurus; } - f. setName ( "/proc/deviceinfo/product" ); + f. setName ( "/proc/cpuinfo" ); if ( f. open ( IO_ReadOnly ) ) { QTextStream ts ( &f ); - QString model = ts. readLine ( ); - f. close ( ); - - d-> m_modelstr = QString("Zaurus ") + model; - if ( model == "SL-5500" ) - d-> m_model = Model_Zaurus_SL5500; - else if ( model == "SL-C700" ) - d-> m_model = Model_Zaurus_SLC700; - else if ( model == "SL-A300" ) - d-> m_model = Model_Zaurus_SLA300; - else if ( model == "SL-B600" || model == "SL-5600" ) - d-> m_model = Model_Zaurus_SLB600; - else - d-> m_model = Model_Zaurus_SL5000; + QString line; + while( line = ts. readLine ( ) ) { + if ( line. left ( 8 ) == "Hardware" ) + break; + } + int loc = line. find ( ":" ); + if ( loc != -1 ) + model = line. mid ( loc + 2 ). simplifyWhitespace( ); } - else { - d-> m_model = Model_Zaurus_SL5000; - d-> m_modelstr = "Zaurus (model unknown)"; + + if ( model == "SHARP Corgi" ) { + d-> m_model = Model_Zaurus_SLC700; + d-> m_modelstr = "Zaurus SL-C700"; + } else if ( model == "SHARP Poodle" ) { + d-> m_model = Model_Zaurus_SLB600; + d-> m_modelstr = "Zaurus SL-B500 or SL-5600"; + } else if ( model = "Sharp-Collie" ) { + d-> m_model = Model_Zaurus_SL5500; + d-> m_modelstr = "Zaurus SL-5500 or SL-5000d"; + } else { + d-> m_model = Model_Zaurus_SL5500; + d-> m_modelstr = "Zaurus (Model unknown)"; } bool flipstate = false; switch ( d-> m_model ) { case Model_Zaurus_SLA300: d-> m_rotation = Rot0; break; case Model_Zaurus_SLC700: // Note: need to 1) set flipstate based on physical screen orientation // and 2) check to see if the user overrode the rotation direction // using appearance, and if so, remove that item from the Config to // ensure the rotate applet flips us back to the previous state. if ( flipstate ) { // 480x640 d-> m_rotation = Rot0; d-> m_direction = CW; |