/* * * $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"