From bfce7eea5c0d43c9f2cd84cd325bbcc1949102e3 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Thu, 16 Apr 2009 20:49:43 +0000 Subject: Refactor USB ID map retrieval from device settings file and minimize duplicated code. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20716 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/rbutilqt/base/autodetection.cpp | 6 ++-- rbutil/rbutilqt/rbsettings.cpp | 64 +++++++--------------------------- rbutil/rbutilqt/rbsettings.h | 10 ++++-- 3 files changed, 23 insertions(+), 57 deletions(-) (limited to 'rbutil') diff --git a/rbutil/rbutilqt/base/autodetection.cpp b/rbutil/rbutilqt/base/autodetection.cpp index aa74419ce0..ee42a8c09e 100644 --- a/rbutil/rbutilqt/base/autodetection.cpp +++ b/rbutil/rbutilqt/base/autodetection.cpp @@ -333,9 +333,9 @@ bool Autodetection::detectUsb() // usbids holds the mapping in the form // ((VID<<16)|(PID)), targetname // the ini file needs to hold the IDs as hex values. - QMap usbids = settings->usbIdMap(); - QMap usberror = settings->usbIdErrorMap(); - QMap usbincompat = settings->usbIdIncompatMap(); + QMap usbids = settings->usbIdMap(RbSettings::MapDevice); + QMap usberror = settings->usbIdMap(RbSettings::MapError); + QMap usbincompat = settings->usbIdMap(RbSettings::MapIncompatible); // usb pid detection QList attached; diff --git a/rbutil/rbutilqt/rbsettings.cpp b/rbutil/rbutilqt/rbsettings.cpp index 909dba4951..560b9ab5fc 100644 --- a/rbutil/rbutilqt/rbsettings.cpp +++ b/rbutil/rbutilqt/rbsettings.cpp @@ -388,7 +388,7 @@ QString RbSettings::brand(QString plattform) return brand; } -QMap RbSettings::usbIdMap() +QMap RbSettings::usbIdMap(enum MapType type) { QMap map; // get a list of ID -> target name @@ -397,31 +397,18 @@ QMap RbSettings::usbIdMap() platforms = devices->childKeys(); devices->endGroup(); - for(int i = 0; i < platforms.size(); i++) - { - devices->beginGroup("platforms"); - QString target = devices->value(platforms.at(i)).toString(); - devices->endGroup(); - devices->beginGroup(target); - QStringList ids = devices->value("usbid").toStringList(); - int j = ids.size(); - while(j--) - map.insert(ids.at(j).toInt(0, 16), target); - - devices->endGroup(); + QString t; + switch(type) { + case MapDevice: + t = "usbid"; + break; + case MapError: + t = "usberror"; + break; + case MapIncompatible: + t = "usbincompat"; + break; } - return map; -} - -QMap RbSettings::usbIdErrorMap() -{ - - QMap map; - // get a list of ID -> target name - QStringList platforms; - devices->beginGroup("platforms"); - platforms = devices->childKeys(); - devices->endGroup(); for(int i = 0; i < platforms.size(); i++) { @@ -429,36 +416,11 @@ QMap RbSettings::usbIdErrorMap() QString target = devices->value(platforms.at(i)).toString(); devices->endGroup(); devices->beginGroup(target); - QStringList ids = devices->value("usberror").toStringList(); + QStringList ids = devices->value(t).toStringList(); int j = ids.size(); while(j--) map.insert(ids.at(j).toInt(0, 16), target); - devices->endGroup(); - } - return map; -} - - -QMap RbSettings::usbIdIncompatMap() -{ - - QMap map; - // get a list of ID -> target name - QStringList platforms; - devices->beginGroup("platforms"); - platforms = devices->childKeys(); - devices->endGroup(); - for(int i = 0; i < platforms.size(); i++) - { - devices->beginGroup("platforms"); - QString target = devices->value(platforms.at(i)).toString(); - devices->endGroup(); - devices->beginGroup(target); - QStringList ids = devices->value("usbincompat").toStringList(); - int j = ids.size(); - while(j--) - map.insert(ids.at(j).toInt(0, 16), target); devices->endGroup(); } return map; diff --git a/rbutil/rbutilqt/rbsettings.h b/rbutil/rbutilqt/rbsettings.h index c785061ee8..339c835d4a 100644 --- a/rbutil/rbutilqt/rbsettings.h +++ b/rbutil/rbutilqt/rbsettings.h @@ -41,6 +41,12 @@ class RbSettings : public QObject // returns the filename of the usersettings file QString userSettingFilename(); + enum MapType { + MapDevice, + MapError, + MapIncompatible, + }; + //! access functions for the settings QString curVersion(); bool cacheOffline(); @@ -86,9 +92,7 @@ class RbSettings : public QObject QString name(QString plattform); QString brand(QString plattform); - QMap usbIdMap(); - QMap usbIdErrorMap(); - QMap usbIdIncompatMap(); + QMap usbIdMap(enum MapType); QString curBrand(); QString curName(); -- cgit v1.2.3