diff options
-rw-r--r-- | rbutil/rbutilqt/autodetection.cpp | 16 | ||||
-rw-r--r-- | rbutil/rbutilqt/autodetection.h | 2 | ||||
-rw-r--r-- | rbutil/rbutilqt/configure.cpp | 12 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbsettings.cpp | 25 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbsettings.h | 2 |
5 files changed, 55 insertions, 2 deletions
diff --git a/rbutil/rbutilqt/autodetection.cpp b/rbutil/rbutilqt/autodetection.cpp index 7c194c8bbf..3684d55908 100644 --- a/rbutil/rbutilqt/autodetection.cpp +++ b/rbutil/rbutilqt/autodetection.cpp | |||
@@ -172,7 +172,7 @@ bool Autodetection::detect() | |||
172 | return true; | 172 | return true; |
173 | } | 173 | } |
174 | 174 | ||
175 | if(m_mountpoint.isEmpty() && m_device.isEmpty() && m_errdev.isEmpty()) | 175 | if(m_mountpoint.isEmpty() && m_device.isEmpty() && m_errdev.isEmpty() && m_incompat.isEmpty()) |
176 | return false; | 176 | return false; |
177 | return true; | 177 | return true; |
178 | } | 178 | } |
@@ -262,6 +262,7 @@ bool Autodetection::detectUsb() | |||
262 | // the ini file needs to hold the IDs as hex values. | 262 | // the ini file needs to hold the IDs as hex values. |
263 | QMap<int, QString> usbids = settings->usbIdMap(); | 263 | QMap<int, QString> usbids = settings->usbIdMap(); |
264 | QMap<int, QString> usberror = settings->usbIdErrorMap(); | 264 | QMap<int, QString> usberror = settings->usbIdErrorMap(); |
265 | QMap<int, QString> usbincompat = settings->usbIdIncompatMap(); | ||
265 | 266 | ||
266 | // usb pid detection | 267 | // usb pid detection |
267 | #if defined(Q_OS_LINUX) | defined(Q_OS_MACX) | 268 | #if defined(Q_OS_LINUX) | defined(Q_OS_MACX) |
@@ -293,6 +294,11 @@ bool Autodetection::detectUsb() | |||
293 | qDebug() << "detected device with problems via usb!"; | 294 | qDebug() << "detected device with problems via usb!"; |
294 | return true; | 295 | return true; |
295 | } | 296 | } |
297 | if(usbincompat.contains(id)) { | ||
298 | m_incompat = usbincompat.value(id); | ||
299 | qDebug() << "detected incompatible player variant"; | ||
300 | return true; | ||
301 | } | ||
296 | u = u->next; | 302 | u = u->next; |
297 | } | 303 | } |
298 | } | 304 | } |
@@ -371,6 +377,14 @@ bool Autodetection::detectUsb() | |||
371 | qDebug() << "detected device with problems via usb!"; | 377 | qDebug() << "detected device with problems via usb!"; |
372 | return true; | 378 | return true; |
373 | } | 379 | } |
380 | if(usbincompat.contains(id)) { | ||
381 | m_incompat = usbincompat.value(id); | ||
382 | // we detected an incompatible player variant | ||
383 | if(buffer) free(buffer); | ||
384 | SetupDiDestroyDeviceInfoList(deviceInfo); | ||
385 | qDebug() << "detectUsb: detected incompatible variant"; | ||
386 | return true; | ||
387 | } | ||
374 | } | 388 | } |
375 | if(buffer) free(buffer); | 389 | if(buffer) free(buffer); |
376 | } | 390 | } |
diff --git a/rbutil/rbutilqt/autodetection.h b/rbutil/rbutilqt/autodetection.h index ed70233c52..ed0ba99bf8 100644 --- a/rbutil/rbutilqt/autodetection.h +++ b/rbutil/rbutilqt/autodetection.h | |||
@@ -44,6 +44,7 @@ public: | |||
44 | QString getDevice() {return m_device;} | 44 | QString getDevice() {return m_device;} |
45 | QString getMountPoint() {return m_mountpoint;} | 45 | QString getMountPoint() {return m_mountpoint;} |
46 | QString errdev(void) { return m_errdev; } | 46 | QString errdev(void) { return m_errdev; } |
47 | QString incompatdev(void) { return m_incompat; } | ||
47 | 48 | ||
48 | private: | 49 | private: |
49 | QStringList getMountpoints(void); | 50 | QStringList getMountpoints(void); |
@@ -54,6 +55,7 @@ private: | |||
54 | QString m_device; | 55 | QString m_device; |
55 | QString m_mountpoint; | 56 | QString m_mountpoint; |
56 | QString m_errdev; | 57 | QString m_errdev; |
58 | QString m_incompat; | ||
57 | QList<int> m_usbconid; | 59 | QList<int> m_usbconid; |
58 | RbSettings* settings; | 60 | RbSettings* settings; |
59 | }; | 61 | }; |
diff --git a/rbutil/rbutilqt/configure.cpp b/rbutil/rbutilqt/configure.cpp index 61d3d7e457..8361d7e45e 100644 --- a/rbutil/rbutilqt/configure.cpp +++ b/rbutil/rbutilqt/configure.cpp | |||
@@ -534,6 +534,18 @@ void Config::autodetect() | |||
534 | QMessageBox::critical(this, tr("Fatal error"), text, QMessageBox::Ok); | 534 | QMessageBox::critical(this, tr("Fatal error"), text, QMessageBox::Ok); |
535 | return; | 535 | return; |
536 | } | 536 | } |
537 | if(!detector.incompatdev().isEmpty()) { | ||
538 | QString text; | ||
539 | // we need to set the platform here to get the brand from the | ||
540 | // settings object | ||
541 | settings->setCurPlatform(detector.incompatdev()); | ||
542 | text = tr("Detected an unsupported %1 player variant. Sorry, " | ||
543 | "Rockbox doesn't run on your player.").arg(settings->curBrand()); | ||
544 | |||
545 | QMessageBox::critical(this, tr("Fatal error: incompatible player found"), | ||
546 | text, QMessageBox::Ok); | ||
547 | return; | ||
548 | } | ||
537 | 549 | ||
538 | if(detector.getMountPoint() != "" ) | 550 | if(detector.getMountPoint() != "" ) |
539 | { | 551 | { |
diff --git a/rbutil/rbutilqt/rbsettings.cpp b/rbutil/rbutilqt/rbsettings.cpp index fd74cbb2b5..78457809a3 100644 --- a/rbutil/rbutilqt/rbsettings.cpp +++ b/rbutil/rbutilqt/rbsettings.cpp | |||
@@ -461,6 +461,31 @@ QMap<int, QString> RbSettings::usbIdErrorMap() | |||
461 | } | 461 | } |
462 | 462 | ||
463 | 463 | ||
464 | QMap<int, QString> RbSettings::usbIdIncompatMap() | ||
465 | { | ||
466 | |||
467 | QMap<int, QString> map; | ||
468 | // get a list of ID -> target name | ||
469 | QStringList platforms; | ||
470 | devices->beginGroup("platforms"); | ||
471 | platforms = devices->childKeys(); | ||
472 | devices->endGroup(); | ||
473 | |||
474 | for(int i = 0; i < platforms.size(); i++) | ||
475 | { | ||
476 | devices->beginGroup("platforms"); | ||
477 | QString target = devices->value(platforms.at(i)).toString(); | ||
478 | devices->endGroup(); | ||
479 | devices->beginGroup(target); | ||
480 | QStringList ids = devices->value("usbincompat").toStringList(); | ||
481 | int j = ids.size(); | ||
482 | while(j--) | ||
483 | map.insert(ids.at(j).toInt(0, 16), target); | ||
484 | devices->endGroup(); | ||
485 | } | ||
486 | return map; | ||
487 | } | ||
488 | |||
464 | 489 | ||
465 | QString RbSettings::curResolution() | 490 | QString RbSettings::curResolution() |
466 | { | 491 | { |
diff --git a/rbutil/rbutilqt/rbsettings.h b/rbutil/rbutilqt/rbsettings.h index d7c0ab2d97..89064aa899 100644 --- a/rbutil/rbutilqt/rbsettings.h +++ b/rbutil/rbutilqt/rbsettings.h | |||
@@ -83,7 +83,7 @@ class RbSettings : public QObject | |||
83 | QStringList allLanguages(); | 83 | QStringList allLanguages(); |
84 | QMap<int, QString> usbIdMap(); | 84 | QMap<int, QString> usbIdMap(); |
85 | QMap<int, QString> usbIdErrorMap(); | 85 | QMap<int, QString> usbIdErrorMap(); |
86 | 86 | QMap<int, QString> usbIdIncompatMap(); | |
87 | 87 | ||
88 | bool curNeedsBootloader(); | 88 | bool curNeedsBootloader(); |
89 | QString curBrand(); | 89 | QString curBrand(); |