FU Logo
  • Startseite
  • Kontakt
  • Impressum
  • Home
  • Listenauswahl
  • Anleitungen

Re: [linux-minidisc] netmd support for qhimdtransfer gui application

<-- thread -->
<-- date -->
  • From: Thomas Arp <manner.moe@gmx.de>
  • To: "linux-minidisc@lists.fu-berlin.de" <linux-minidisc@lists.fu-berlin.de>
  • Date: Wed, 25 Dec 2013 20:59:07 +0100
  • Subject: Re: [linux-minidisc] netmd support for qhimdtransfer gui application

Hi,

i fixed some bugs in my last patch:

patch #9: reload current index of the local browser, will be cleared by calling localmodel->setSelectableExtensions()
(can be applied anytime after patch #7)

patch #10: (not a bug but a new feature for windows users) add windows usb driver installation support, needed for netmd devices,
(can be applied anytime after patch #8)

patch #11: fixed a bug in connect() function finding the device list entry reserved for manual selected himd paths
(can be applied anytime after patch #9)

Thomas
>From 30c1240776de1ab47eac65e4aa6369523b75901f Mon Sep 17 00:00:00 2001
From: Thomas Arp <manner.moe@gmx.de>
Date: Sun, 22 Dec 2013 22:49:40 +0100
Subject: [PATCH 09/11] netmd support: reload the current index of the
 localbrowser after calling localmodel->setSelectableExtensions()

---
 qhimdtransfer/qhimdmainwindow.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/qhimdtransfer/qhimdmainwindow.cpp b/qhimdtransfer/qhimdmainwindow.cpp
index 0d90882..42281d3 100644
--- a/qhimdtransfer/qhimdmainwindow.cpp
+++ b/qhimdtransfer/qhimdmainwindow.cpp
@@ -132,6 +132,9 @@ void QHiMDMainWindow::open_device(QMDDevice * dev)
      }
 
     localmodel.setSelectableExtensions(current_device->downloadableFileExtensions());
+    QModelIndex curdir = localmodel.index(ui->updir->text());
+    ui->localScan->expand(curdir);
+    ui->localScan->setCurrentIndex(curdir);
     ui->DiscTitle->setText(current_device->discTitle());
     set_buttons_enable(1,0,0,1,1,1,1);
 }
-- 
1.8.4.msysgit.0

>From 7bb23749cf632c19e7e006d5de8b6674a94a5791 Mon Sep 17 00:00:00 2001
From: Thomas Arp <manner.moe@gmx.de>
Date: Tue, 24 Dec 2013 22:54:35 +0100
Subject: [PATCH 10/11] netmd support: add support for usb driver installation
 on windows

---
 qhimdtransfer/icons.qrc             |  1 +
 qhimdtransfer/netmd_win_hint.txt    | 39 ++++++++++++++++++
 qhimdtransfer/qhimdtransfer.pro     |  2 +
 qhimdtransfer/qhimdwindetection.cpp | 79 +++++++++++++++++++++++++++++++++++++
 4 files changed, 121 insertions(+)
 create mode 100644 qhimdtransfer/netmd_win_hint.txt

diff --git a/qhimdtransfer/icons.qrc b/qhimdtransfer/icons.qrc
index 2f44f90..9b7d6e1 100755
--- a/qhimdtransfer/icons.qrc
+++ b/qhimdtransfer/icons.qrc
@@ -14,5 +14,6 @@
         <file>icons/arrow_download.png</file>
         <file>icons/arrow_upload.png</file>
         <file>icons/qhimdtransfer_24.png</file>
+        <file>icons/qhimdtransfer_64.png</file>
     </qresource>
 </RCC>
diff --git a/qhimdtransfer/netmd_win_hint.txt b/qhimdtransfer/netmd_win_hint.txt
new file mode 100644
index 0000000..9184c7d
--- /dev/null
+++ b/qhimdtransfer/netmd_win_hint.txt
@@ -0,0 +1,39 @@
+How to install libusb compatible usb driver (WinUSB) for netmd devices:
+(Please read this instructions completely before installing the driver!)
+
+- connect your netmd device (or himddevice in netmd mode) to your computer via usb
+
+- run zadig_xp.exe if you are using Windows XP or zadig.exe for any later version of
+  windows, alternatively klick on "Install driver now" in the message box.
+
+- if your device is not listed in the combo box activate "list all devices" from "options"
+  menu first
+
+- select your netmd device from the combo box (e.g. "Net MD/HiMD")
+!!! Be sure to not select any "USB-HID" device, this should be mouse/keyboard or
+    something like this, they cannot be used anymore if you install the driver on it.
+
+Note: If you have more than one device you want to use QHimdTransfer with it is
+      recommended that you rename the device in the combo box by activating "Edit"
+      checkbox and edit the device name (e.g. "Net MD/HiMD" ->
+      "Sony MZ-RH1 NetMD" for Sony MZ-RH1, or anything else you want).
+
+- leave the <driver> section as it is, WinUSB driver works fine, the others may not
+  work correctly with the libusb version currently used
+
+- klick "Install WCID driver" to install the driver
+
+- If you get the "Driver was installed successfully" message you are done.
+  If this fails try to run zadig with root permissions and try again.
+
+You have to do this for ALL netmd devices you want to use QHiMDTransfer with.
+
+Important: The installed driver is not compatible with SonicStage!
+           For using the device with SonicStage you have to remove the driver first.
+           You can do this by opening windows device manager, find your device
+           at "Universal Serial Bus devices", right klick on it an choose "Uninstall"
+           After reconnection it can be used with SonicStage.
+
+If you select "Do not show this message again" you can find this driver installation
+instructions at netmd_win_hint.txt in the QHiMDTransfer programm folder if you need
+it for future reference.
diff --git a/qhimdtransfer/qhimdtransfer.pro b/qhimdtransfer/qhimdtransfer.pro
index 0fc2de1..6b250ab 100644
--- a/qhimdtransfer/qhimdtransfer.pro
+++ b/qhimdtransfer/qhimdtransfer.pro
@@ -101,3 +101,5 @@ unix:!macx {
     target.path = /usr/bin
     INSTALLS += target
 }
+
+win32:OTHER_FILES += netmd_win_hint.txt
diff --git a/qhimdtransfer/qhimdwindetection.cpp b/qhimdtransfer/qhimdwindetection.cpp
index f5a9d0c..bc29d4d 100644
--- a/qhimdtransfer/qhimdwindetection.cpp
+++ b/qhimdtransfer/qhimdwindetection.cpp
@@ -2,6 +2,14 @@
 #include <QtCore/QList>
 #include <QWidget>
 #include "qhimddetection.h"
+#include "QSettings"
+#include <QMessageBox>
+#include <QCheckBox>
+#include <QFile>
+#include <QString>
+#include <QPixmap>
+#include <QProcess>
+#include <QSysInfo>
 
 #include <windows.h>
 #include <dbt.h>
@@ -37,6 +45,8 @@ public:
 private:
     HDEVNOTIFY hDevNotify;
     HDEVNOTIFY listen_usbdev;
+    void show_netmd_hint();
+    void install_netmd_driver();
     QMDDevice *find_by_handle(HANDLE devhandle);
     void add_himddevice(QString path, QString name);
     virtual void remove_himddevice(QString path);
@@ -64,6 +74,8 @@ QHiMDWinDetection::QHiMDWinDetection(QObject * parent)
     // register for usb device notifications
     if((listen_usbdev = register_usbDeviceNotification()) == NULL)
         qDebug() << "cannot register usb device notifications" << endl;
+
+    show_netmd_hint();
 }
 
 QHiMDWinDetection::~QHiMDWinDetection()
@@ -73,6 +85,73 @@ QHiMDWinDetection::~QHiMDWinDetection()
     cleanup_netmd_list();
 }
 
+/* show_netmd_hint() and install_netmd_driver() are used for libusb compatible usb driver installation for netmd devices,
+ * when compiling yourself be sure that netmd_win_hint.txt, zadig.exe and zadig_xp.exe are located in the same directory as QHiMDTransfer.exe.
+ *
+ * these files will be provided and installed by the QHiMDTransfer windows installer package automatically
+ */
+
+void QHiMDWinDetection::show_netmd_hint()
+{
+    QSettings settings;
+    QString netmdText = QMessageBox::tr("<center><b>Preparing netmd devices for use with QHiMDTransfer</b></center>");
+    // begin string with <...> quotes to indicate that this string is in Qt::RichText format
+    QString netmdInfoText = QMessageBox::tr("<qt>For each netmd device (and himd device in netmd mode) a libusb compatible driver must be installed first.<br><br>");
+    netmdInfoText.append(QMessageBox::tr("To do this connect your netmd device to your computer and klick on <b><i>Install driver now</i></b>,"));
+    netmdInfoText.append(QMessageBox::tr("alternatively install the driver later by running the usb driver installer (zadig.exe).<br>"));
+    netmdInfoText.append(QMessageBox::tr("You can find it inside the QHiMDTransfer programm folder.<br><br>"));
+    netmdInfoText.append(QMessageBox::tr("For a more detailed description on how to use the usb driver installer klick on <b><i>Show Details...</i></b></qt>"));
+
+    QString netmdDetails;
+    QMessageBox msg;
+    QPushButton *install;
+    QFile file("netmd_win_hint.txt");
+
+    if(settings.value("hide_netmd_hint", false).toBool())
+        return;
+
+    //read detailed information from textfile
+    if(file.open(QIODevice::ReadOnly | QIODevice::Text))
+    {
+        QTextStream details(&file);
+        netmdDetails = details.readAll();
+    }
+    else
+        netmdDetails = msg.tr("No detailed information available");
+
+    msg.setIconPixmap(QPixmap(":icons/qhimdtransfer_64.png"));
+    msg.setWindowTitle(msg.tr("Using NetMD Devices with QHiMDTransfer"));
+    msg.setText(netmdText);
+    msg.setInformativeText(netmdInfoText);
+    msg.setDetailedText(netmdDetails);
+
+    /* keep button order/location by using the same button role, else hideInfo checkbox will appear anywhere
+     * in the middle between the other buttons
+     */
+    QCheckBox hideInfo(hideInfo.tr("Do not show this message again"), &msg);
+    hideInfo.blockSignals(true);   // prevent closing message box when checkbox is toggled
+    msg.addButton(&hideInfo, QMessageBox::NoRole);
+    install =  msg.addButton("Install driver now", QMessageBox::NoRole);
+    msg.addButton("Install later", QMessageBox::NoRole);
+
+    msg.exec();
+    if((QPushButton*)msg.clickedButton() == install)
+        install_netmd_driver();
+
+    settings.setValue("hide_netmd_hint", hideInfo.checkState() == Qt::Checked);
+}
+
+void QHiMDWinDetection::install_netmd_driver()
+{
+    QProcess process;
+    QSysInfo sys;
+
+    if(sys.windowsVersion() < QSysInfo::WV_6_0)
+        process.execute("zadig_xp.exe");
+    else
+        process.execute("zadig.exe");
+}
+
 void QHiMDWinDetection::scan_for_himd_devices()
 {
     unsigned long drives = GetLogicalDrives();
-- 
1.8.4.msysgit.0

>From f36722828f881deaa725bf6a2e44109c3c363eb9 Mon Sep 17 00:00:00 2001
From: Thomas Arp <manner.moe@gmx.de>
Date: Wed, 25 Dec 2013 20:22:03 +0100
Subject: [PATCH 11/11] fixed a bug in connect() function finding the correct
 device entry for disc images/ manual selected himd device paths

---
 qhimdtransfer/qhimdmainwindow.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/qhimdtransfer/qhimdmainwindow.cpp b/qhimdtransfer/qhimdmainwindow.cpp
index 42281d3..1ce0278 100644
--- a/qhimdtransfer/qhimdmainwindow.cpp
+++ b/qhimdtransfer/qhimdmainwindow.cpp
@@ -235,7 +235,7 @@ void QHiMDMainWindow::on_action_Connect_triggered()
     if(HiMDDirectory.isEmpty())
         return;
 
-    index = ui->himd_devices->findText("disc image");
+    index = ui->himd_devices->findText("disc image", Qt::MatchContains);
     ui->himd_devices->setCurrentIndex(index);   // index of disk image device
     dev = (QHiMDDevice *)ui->himd_devices->itemData(index).value<void *>();
     dev->setPath(HiMDDirectory);
-- 
1.8.4.msysgit.0

<-- thread -->
<-- date -->
  • Follow-Ups:
    • Re: [linux-minidisc] netmd support for qhimdtransfer gui application
      • From: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    • Re: [linux-minidisc] netmd support for qhimdtransfer gui application
      • From: Thomas Arp <manner.moe@gmx.de>
  • References:
    • [linux-minidisc] netmd support for qhimdtransfer gui application
      • From: Thomas Arp <manner.moe@gmx.de>
    • Re: [linux-minidisc] netmd support for qhimdtransfer gui application
      • From: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    • Re: [linux-minidisc] netmd support for qhimdtransfer gui application
      • From: Thomas Arp <manner.moe@gmx.de>
    • Re: [linux-minidisc] netmd support for qhimdtransfer gui application
      • From: Thomas Arp <manner.moe@gmx.de>
    • Re: [linux-minidisc] netmd support for qhimdtransfer gui application
      • From: Thomas Arp <manner.moe@gmx.de>
    • Re: [linux-minidisc] netmd support for qhimdtransfer gui application
      • From: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    • Re: [linux-minidisc] netmd support for qhimdtransfer gui application
      • From: Thomas Arp <manner.moe@gmx.de>
    • Re: [linux-minidisc] netmd support for qhimdtransfer gui application
      • From: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    • Re: [linux-minidisc] netmd support for qhimdtransfer gui application
      • From: Thomas Arp <manner.moe@gmx.de>
    • Re: [linux-minidisc] netmd support for qhimdtransfer gui application
      • From: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    • Re: [linux-minidisc] netmd support for qhimdtransfer gui application
      • From: Thomas Arp <manner.moe@gmx.de>
    • Re: [linux-minidisc] netmd support for qhimdtransfer gui application
      • From: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    • Re: [linux-minidisc] netmd support for qhimdtransfer gui application
      • From: Thomas Arp <manner.moe@gmx.de>
  • linux-minidisc - December 2013 - Archives indexes sorted by:
    [ thread ] [ subject ] [ author ] [ date ]
  • Complete archive of the linux-minidisc mailing list
  • More info on this list...

Hilfe

  • FAQ
  • Dienstbeschreibung
  • ZEDAT Beratung
  • postmaster@lists.fu-berlin.de

Service-Navigation

  • Startseite
  • Listenauswahl

Einrichtung Mailingliste

  • ZEDAT-Portal
  • Mailinglisten Portal