Commit 8f0ee34d authored by KO Myung-Hun's avatar KO Myung-Hun Committed by Jean-Baptiste Kempf

Qt: Support disc drives probing for OS/2

(cherry picked from commit bcc966adc2519d3edcec86a7221bdefcfb4aa22c)
Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>

With some adpation to 2.0 branch
Signed-off-by: default avatarKO Myung-Hun <komh@chollian.net>
parent 717f28a0
...@@ -338,7 +338,7 @@ DiscOpenPanel::DiscOpenPanel( QWidget *_parent, intf_thread_t *_p_intf ) : ...@@ -338,7 +338,7 @@ DiscOpenPanel::DiscOpenPanel( QWidget *_parent, intf_thread_t *_p_intf ) :
ui.deviceCombo->setToolTip( qtr(I_DEVICE_TOOLTIP) ); ui.deviceCombo->setToolTip( qtr(I_DEVICE_TOOLTIP) );
ui.deviceCombo->setInsertPolicy( QComboBox::InsertAtTop ); ui.deviceCombo->setInsertPolicy( QComboBox::InsertAtTop );
#ifndef WIN32 #if !defined( WIN32 ) && !defined( __OS2__ )
char const * const ppsz_discdevices[] = { char const * const ppsz_discdevices[] = {
"sr*", "sr*",
"sg*", "sg*",
...@@ -404,6 +404,47 @@ void DiscOpenPanel::onFocus() ...@@ -404,6 +404,47 @@ void DiscOpenPanel::onFocus()
SetErrorMode(oldMode); SetErrorMode(oldMode);
} }
} }
#elif defined( __OS2__ ) /* Disc drives probing for OS/2 */
void DiscOpenPanel::onFocus()
{
ui.deviceCombo->clear();
#define IOCTL_CDROMDISK2 0x82
#define CDROMDISK2_DRIVELETTERS 0x60
HFILE hcd2;
ULONG ulAction;
ULONG ulParamLen;
ULONG ulData;
ULONG ulDataLen;
if( DosOpen(( PSZ )"CD-ROM2$", ( PHFILE )&hcd2, &ulAction, 0, FILE_NORMAL,
OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_FAIL_IF_NEW,
OPEN_ACCESS_READONLY | OPEN_SHARE_DENYNONE,
NULL ))
return;
if( !DosDevIOCtl( hcd2, IOCTL_CDROMDISK2, CDROMDISK2_DRIVELETTERS,
NULL, 0, &ulParamLen, &ulData, sizeof( ulData ), &ulDataLen ))
{
char szDriveName[] = "X:\\";
int count = LOUSHORT( ulData );
int drive = HIUSHORT( ulData );
for( ; count; --count, ++drive )
{
szDriveName[ 0 ] = 'A' + drive;
QString name = qfu( szDriveName );
ui.deviceCombo->addItem( name, name );
}
}
DosClose( hcd2 );
}
#endif #endif
DiscOpenPanel::~DiscOpenPanel() DiscOpenPanel::~DiscOpenPanel()
...@@ -422,7 +463,7 @@ void DiscOpenPanel::clear() ...@@ -422,7 +463,7 @@ void DiscOpenPanel::clear()
m_discType = None; m_discType = None;
} }
#ifdef WIN32 #if defined( WIN32 ) || defined( __OS2__ )
#define setDrive( psz_name ) {\ #define setDrive( psz_name ) {\
int index = ui.deviceCombo->findText( qfu( psz_name ) ); \ int index = ui.deviceCombo->findText( qfu( psz_name ) ); \
if( index != -1 ) ui.deviceCombo->setCurrentIndex( index );} if( index != -1 ) ui.deviceCombo->setCurrentIndex( index );}
......
...@@ -174,7 +174,7 @@ public: ...@@ -174,7 +174,7 @@ public:
virtual ~DiscOpenPanel(); virtual ~DiscOpenPanel();
virtual void clear() ; virtual void clear() ;
virtual void accept() ; virtual void accept() ;
#ifdef WIN32 #if defined( WIN32 ) || defined( __OS2__ )
void onFocus(); void onFocus();
#endif #endif
private: private:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment