|
|
|
/*
|
|
|
|
*
|
|
|
|
* $Id: k3bmediacontentsview.cpp 627519 2007-01-26 22:37:51Z trueg $
|
|
|
|
* Copyright (C) 2003 Sebastian Trueg <trueg@k3b.org>
|
|
|
|
*
|
|
|
|
* This file is part of the K3b project.
|
|
|
|
* Copyright (C) 1998-2007 Sebastian Trueg <trueg@k3b.org>
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
* See the file "COPYING" for the exact licensing terms.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "k3bmediacontentsview.h"
|
|
|
|
|
|
|
|
#include <k3bmediacache.h>
|
|
|
|
#include <k3bapplication.h>
|
|
|
|
|
|
|
|
#include <tqlabel.h>
|
|
|
|
#include <tqlayout.h>
|
|
|
|
#include <tqpixmap.h>
|
|
|
|
#include <tqwidgetstack.h>
|
|
|
|
|
|
|
|
|
|
|
|
class K3bMediaContentsView::Private
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
K3bMedium medium;
|
|
|
|
int supportedMediumContent;
|
|
|
|
int supportedMediumTypes;
|
|
|
|
int supportedMediumStates;
|
|
|
|
|
|
|
|
bool autoReload;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
K3bMediaContentsView::K3bMediaContentsView( bool withHeader,
|
|
|
|
int mediumContent,
|
|
|
|
int mediumTypes,
|
|
|
|
int mediumState,
|
|
|
|
TQWidget* parent,
|
|
|
|
const char* name )
|
|
|
|
: K3bContentsView( withHeader, parent, name )
|
|
|
|
{
|
|
|
|
d = new Private;
|
|
|
|
d->supportedMediumContent = mediumContent;
|
|
|
|
d->supportedMediumTypes = mediumTypes;
|
|
|
|
d->supportedMediumStates = mediumState;
|
|
|
|
d->autoReload = true;
|
|
|
|
|
|
|
|
connect( k3bappcore->mediaCache(), TQ_SIGNAL(mediumChanged(K3bDevice::Device*)),
|
|
|
|
this, TQ_SLOT(slotMediumChanged(K3bDevice::Device*)) );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
K3bMediaContentsView::~K3bMediaContentsView()
|
|
|
|
{
|
|
|
|
delete d;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void K3bMediaContentsView::setAutoReload( bool b )
|
|
|
|
{
|
|
|
|
d->autoReload = b;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int K3bMediaContentsView::supportedMediumContent() const
|
|
|
|
{
|
|
|
|
return d->supportedMediumContent;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int K3bMediaContentsView::supportedMediumTypes() const
|
|
|
|
{
|
|
|
|
return d->supportedMediumTypes;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int K3bMediaContentsView::supportedMediumStates() const
|
|
|
|
{
|
|
|
|
return d->supportedMediumStates;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const K3bMedium& K3bMediaContentsView::medium() const
|
|
|
|
{
|
|
|
|
return d->medium;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
K3bDevice::Device* K3bMediaContentsView::device() const
|
|
|
|
{
|
|
|
|
return medium().device();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void K3bMediaContentsView::setMedium( const K3bMedium& m )
|
|
|
|
{
|
|
|
|
d->medium = m;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void K3bMediaContentsView::reload( K3bDevice::Device* dev )
|
|
|
|
{
|
|
|
|
reload( k3bappcore->mediaCache()->medium( dev ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void K3bMediaContentsView::reload( const K3bMedium& m )
|
|
|
|
{
|
|
|
|
setMedium( m );
|
|
|
|
reload();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void K3bMediaContentsView::reload()
|
|
|
|
{
|
|
|
|
enableInteraction( true );
|
|
|
|
reloadMedium();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void K3bMediaContentsView::enableInteraction( bool enable )
|
|
|
|
{
|
|
|
|
mainWidget()->setEnabled( enable );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void K3bMediaContentsView::slotMediumChanged( K3bDevice::Device* dev )
|
|
|
|
{
|
|
|
|
// FIXME: derive a K3bContentsStack from TQWidgetStack and let it set an active flag
|
|
|
|
// to replace this hack
|
|
|
|
if( TQWidgetStack* stack = dynamic_cast<TQWidgetStack*>( parentWidget() ) )
|
|
|
|
if( stack->visibleWidget() != this )
|
|
|
|
return;
|
|
|
|
|
|
|
|
if( !d->autoReload /*|| !isActive()*/ )
|
|
|
|
return;
|
|
|
|
|
|
|
|
if( dev == device() ) {
|
|
|
|
K3bMedium m = k3bappcore->mediaCache()->medium( dev );
|
|
|
|
|
|
|
|
// no need to reload if the medium did not change (this is even
|
|
|
|
// important since K3b blocks the devices in action and after
|
|
|
|
// the release they are signalled as changed)
|
|
|
|
if( m == medium() ) {
|
|
|
|
kdDebug() << k_funcinfo << " medium did not change" << endl;
|
|
|
|
enableInteraction( true );
|
|
|
|
}
|
|
|
|
else if( m.content() & supportedMediumContent() &&
|
|
|
|
m.diskInfo().mediaType() & supportedMediumTypes() &&
|
|
|
|
m.diskInfo().diskState() & supportedMediumStates() ) {
|
|
|
|
kdDebug() << k_funcinfo << " new supported medium found" << endl;
|
|
|
|
reload( m );
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
kdDebug() << k_funcinfo << " unsupported medium found" << endl;
|
|
|
|
enableInteraction( false );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#include "k3bmediacontentsview.moc"
|