Version: (using KDE Devel) Installed from: Compiled sources Even if I know that a camera uses mass storage i find it hard to find in the big list of supported cameras. - A first solution could be to put USB mass storage and PTP class at the beginning of the list - A second solution would be to remove USB mass storage and PTP class from the list and create a three choices widget, perhaps something like that : - 1 - My camera behaves like a removable drive - 2 - My camera uses the PTP protocol - 3 - My camera is in this list : - A third solution would be to put usb mass storage and ptp cameras in the list, but this is hard to maintain, i guess.
*** Bug 121649 has been marked as a duplicate of this bug. ***
I got the same Problem in UBUNTU dapper drake - yet for me i cannot find the USB-Massstorage - Option at all. Most annoying is, that this worked like a charm in digikam 0.7.2...
I have add some tips to the dialog on current trunk implementation. It's more clear. Take a look in setup camera dialog and give me a feedback... Gilles Caulier
Thank you Gilles, it is clearer indeed. But newbies do not know what is "USB mass storage", perhaps we could add "appears like an removable drive" between parentheses, i mean : To set an usb mass storage camera (a camera which appears like an removable drive) please use ...
Also there is no widgets tips (available using SHIFT+F1) on all widgets dialog. We can improve option descriptions using this way. Give me your proposals for that... Gilles Caulier
SVN commit 527246 by cgilles: digikam from trunk : improvements of USB Mass storage camera usability on Camera setup dialog : - Add a full description to all settings widgets. - Add a direct link to "Mounted Camera" option from camera list. There is no possible error from user to set an USB Mass Storage camera ! CCMAIL: digikam-devel@kde.org CCBUGS: 121308 M +45 -16 cameraselection.cpp M +1 -1 cameraselection.h --- trunk/extragear/graphics/digikam/utilities/setup/cameraselection.cpp #527245:527246 @@ -31,7 +31,7 @@ #include <qlayout.h> #include <qstring.h> #include <qstringlist.h> -#include <qlineedit.h> +#include <qwhatsthis.h> // KDE includes. @@ -40,6 +40,7 @@ #include <kurlrequester.h> #include <klocale.h> #include <klistview.h> +#include <klineedit.h> // Local includes. @@ -65,8 +66,6 @@ umsMountURL = 0; } - QLineEdit *titleEdit; - QVButtonGroup *portButtonGroup; QRadioButton *usbButton; @@ -81,6 +80,8 @@ QStringList serialPortList; + KLineEdit *titleEdit; + KListView *listView; KURLRequester *umsMountURL; @@ -98,16 +99,15 @@ QWidget *page = new QWidget( this ); setMainWidget(page); - QVBoxLayout *topLayout = new QVBoxLayout( page, 5, 5 ); + QVBoxLayout *topLayout = new QVBoxLayout( page ); // -------------------------------------------------------------- QGroupBox* mainBox = new QGroupBox( 0, Qt::Vertical, i18n( "Camera Configuration" ), page ); mainBox->setInsideMargin(KDialogBase::marginHint()); mainBox->setInsideSpacing(KDialogBase::spacingHint()); + QGridLayout* mainBoxLayout = new QGridLayout( mainBox->layout(), 6, 1, KDialog::spacingHint() ); - QGridLayout* mainBoxLayout = new QGridLayout( mainBox->layout(), 5, 1, KDialog::spacingHint() ); - // -------------------------------------------------------------- d->listView = new KListView( mainBox ); @@ -115,11 +115,15 @@ d->listView->setAllColumnsShowFocus(true); d->listView->setResizeMode(KListView::LastColumn); d->listView->setMinimumWidth(350); - + QWhatsThis::add( d->listView, i18n("<p>Select here the camera name that you want to use. All default settings on the right " + "will be set automaticly.</p><p>This list have been generated " + "using gphoto2 library installed in your computer.</p>")); + // -------------------------------------------------------------- QGroupBox* titleBox = new QGroupBox( 1, Qt::Vertical, i18n("Camera Title"), mainBox ); - d->titleEdit = new QLineEdit( titleBox ); + d->titleEdit = new KLineEdit( titleBox ); + QWhatsThis::add( d->titleEdit, i18n("<p>Set here the name used in digiKam interface to indentify this camera.</p>")); // -------------------------------------------------------------- @@ -128,9 +132,11 @@ d->usbButton = new QRadioButton( d->portButtonGroup ); d->usbButton->setText( i18n( "USB" ) ); + QWhatsThis::add( d->usbButton, i18n("<p>Select this option if your camera is connected to your computer using an USB cable.</p>")); d->serialButton = new QRadioButton( d->portButtonGroup ); d->serialButton->setText( i18n( "Serial" ) ); + QWhatsThis::add( d->serialButton, i18n("<p>Select this option if your camera is connected to your computer using a serial cable.</p>")); // -------------------------------------------------------------- @@ -140,6 +146,8 @@ d->portPathComboBox = new QComboBox( false, portPathBox ); d->portPathComboBox->setDuplicatesEnabled( false ); + QWhatsThis::add( d->portPathComboBox, i18n("<p>Select here the serial port to use on your computer. This option is only " + "require if you use a serial camera.</p>")); // -------------------------------------------------------------- @@ -150,31 +158,42 @@ d->umsMountURL = new KURLRequester( QString("/mnt/camera"), umsMountBox); d->umsMountURL->setMode(KFile::Directory | KFile::ExistingOnly | KFile::LocalOnly); + QWhatsThis::add( d->umsMountURL, i18n("<p>Set here the mount path to use on your computer. This option is only " + "require if you use an <b>Usb Mass Storage</b> camera.</p>")); // -------------------------------------------------------------- + KActiveLabel* link = new KActiveLabel(mainBox); + link->setText(i18n("<p>To set an <b>Usb Mass Storage</b> camera (which appears like a " + "removable drive), please use <a href=\"umscamera\">%1</a> from camera list.</p>") + .arg(d->UMSCameraNameShown)); + KActiveLabel* explanation = new KActiveLabel(mainBox); - explanation->setText(i18n("<p>To set an <b>Usb Mass Storage</b> camera (which appears like a " - "removable drive), please use <b>%1</b> from camera list.<p> " - "<p>To see a fresh list of supported cameras, take a look at " - "<a href='http://www.teaser.fr/~hfiguiere/linux/digicam.html'>this url</a>.</p>") - .arg(d->UMSCameraNameShown)); + explanation->setText(i18n("<p>To see a fresh list of supported cameras, take a look at " + "<a href='http://www.teaser.fr/~hfiguiere/linux/digicam.html'>this url</a>.</p>")); // -------------------------------------------------------------- - mainBoxLayout->addMultiCellWidget( d->listView, 0, 5, 0, 0 ); + mainBoxLayout->addMultiCellWidget( d->listView, 0, 6, 0, 0 ); mainBoxLayout->addMultiCellWidget( titleBox, 0, 0, 1, 1 ); mainBoxLayout->addMultiCellWidget( d->portButtonGroup, 1, 1, 1, 1 ); mainBoxLayout->addMultiCellWidget( portPathBox, 2, 2, 1, 1 ); mainBoxLayout->addMultiCellWidget( umsMountBox, 3, 3, 1, 1 ); - mainBoxLayout->addMultiCellWidget( explanation, 4, 4, 1, 1 ); + mainBoxLayout->addMultiCellWidget( link, 4, 4, 1, 1 ); + mainBoxLayout->addMultiCellWidget( explanation, 5, 5, 1, 1 ); mainBoxLayout->setColStretch( 0, 10 ); - mainBoxLayout->setRowStretch( 5, 10 ); + mainBoxLayout->setRowStretch( 6, 10 ); topLayout->addWidget( mainBox ); // Connections -------------------------------------------------- + disconnect(link, SIGNAL(linkClicked(const QString &)), + link, SLOT(openLink(const QString &))); + + connect(link, SIGNAL(linkClicked(const QString &)), + this, SLOT(slotUMSCameraLinkUsed())); + connect(d->listView, SIGNAL(selectionChanged(QListViewItem *)), this, SLOT(slotSelectionChanged(QListViewItem *))); @@ -195,6 +214,16 @@ delete d; } +void CameraSelection::slotUMSCameraLinkUsed() +{ + QListViewItem *item = d->listView->findItem(d->UMSCameraNameShown, 0); + if (item) + { + d->listView->setCurrentItem(item); + d->listView->ensureItemVisible(item); + } +} + void CameraSelection::setCamera(const QString& title, const QString& model, const QString& port, const QString& path) { --- trunk/extragear/graphics/digikam/utilities/setup/cameraselection.h #527245:527246 @@ -61,9 +61,9 @@ private slots: + void slotUMSCameraLinkUsed(); void slotSelectionChanged(QListViewItem *item); void slotPortChanged(); - void slotOkClicked(); signals:
Improvements are enough for 0.9.0 release. I close this file. Gilles Caulier
SVN commit 528098 by cgilles: digikam from trunk : Camera setup dialog : add link to USB PTP device to camera list CCBUGS: 121308 M +29 -4 cameraselection.cpp M +1 -0 cameraselection.h --- trunk/extragear/graphics/digikam/utilities/setup/cameraselection.cpp #528097:528098 @@ -80,6 +80,7 @@ QString UMSCameraNameActual; QString UMSCameraNameShown; + QString PTPCameraNameShown; QStringList serialPortList; @@ -99,6 +100,7 @@ setHelp("cameraselection.anchor", "digikam"); d->UMSCameraNameActual = QString("Directory Browse"); // Don't be i18n! d->UMSCameraNameShown = i18n("Mounted Camera"); + d->PTPCameraNameShown = QString("USB PTP Class Camera"); QGridLayout* mainBoxLayout = new QGridLayout( plainPage(), 6, 1, 0, KDialog::spacingHint() ); mainBoxLayout->setColStretch( 0, 10 ); @@ -166,7 +168,7 @@ QGroupBox* box2 = new QGroupBox( 0, Qt::Vertical, plainPage() ); box2->setFrameStyle( QFrame::NoFrame ); - QGridLayout* box2Layout = new QGridLayout( box2->layout(), 1, 2 ); + QGridLayout* box2Layout = new QGridLayout( box2->layout(), 1, 5 ); QLabel* logo = new QLabel( box2 ); @@ -179,15 +181,22 @@ "(which appears like a removable drive), please<br>" "use <a href=\"umscamera\">%1</a> from camera list.</p>") .arg(d->UMSCameraNameShown)); - + + KActiveLabel* link2 = new KActiveLabel(box2); + link2->setText(i18n("<p>To set a <b>Generic PTP Usb Device</b><br>" + "(which use Picture Transfert Protocol), please<br>" + "use <a href=\"ptpcamera\">%1</a> from camera list.</p>") + .arg(d->PTPCameraNameShown)); + KActiveLabel* explanation = new KActiveLabel(box2); - explanation->setText(i18n("<p>A fresh list of camera settings to use is<br>" + explanation->setText(i18n("<p>A complete list of camera settings to use is<br>" "available at <a href='http://www.teaser.fr/~hfiguiere/linux/digicam.html'>" "this url</a>.</p>")); box2Layout->addMultiCellWidget( logo, 0, 0, 0, 0 ); box2Layout->addMultiCellWidget( link, 0, 1, 1, 1 ); - box2Layout->addMultiCellWidget( explanation, 1, 2, 1, 1 ); + box2Layout->addMultiCellWidget( link2, 2, 3, 1, 1 ); + box2Layout->addMultiCellWidget( explanation, 4, 5, 1, 1 ); // -------------------------------------------------------------- @@ -205,7 +214,13 @@ connect(link, SIGNAL(linkClicked(const QString &)), this, SLOT(slotUMSCameraLinkUsed())); + + disconnect(link2, SIGNAL(linkClicked(const QString &)), + link2, SLOT(openLink(const QString &))); + connect(link2, SIGNAL(linkClicked(const QString &)), + this, SLOT(slotPTPCameraLinkUsed())); + connect(d->listView, SIGNAL(selectionChanged(QListViewItem *)), this, SLOT(slotSelectionChanged(QListViewItem *))); @@ -237,6 +252,16 @@ } } +void CameraSelection::slotPTPCameraLinkUsed() +{ + QListViewItem *item = d->listView->findItem(d->PTPCameraNameShown, 0); + if (item) + { + d->listView->setCurrentItem(item); + d->listView->ensureItemVisible(item); + } +} + void CameraSelection::setCamera(const QString& title, const QString& model, const QString& port, const QString& path) { --- trunk/extragear/graphics/digikam/utilities/setup/cameraselection.h #528097:528098 @@ -61,6 +61,7 @@ private slots: + void slotPTPCameraLinkUsed(); void slotUMSCameraLinkUsed(); void slotSelectionChanged(QListViewItem *item); void slotPortChanged();