Fix a number of issues with the media tdeioslave

This relates to Bug 1450
Add media disk space overlay and enable by default
pull/2/head
Timothy Pearson 11 years ago
parent 9e4aad6b3b
commit 41c013e06c

@ -910,8 +910,9 @@ void KonqKfmIconView::slotCompleted()
{
// Stop the "refresh if busy too long" timer because a viewport
// update is coming.
if ( m_pTimeoutRefreshTimer && m_pTimeoutRefreshTimer->isActive() )
if ( m_pTimeoutRefreshTimer && m_pTimeoutRefreshTimer->isActive() ) {
m_pTimeoutRefreshTimer->stop();
}
// If updates to the viewport are still blocked (so slotNewItems() has
// not been called), a viewport repaint is forced.
@ -938,23 +939,25 @@ void KonqKfmIconView::slotCompleted()
extension()->urlArgs().yOffset );
}
if ( m_pEnsureVisible ){
if ( m_pEnsureVisible ) {
m_pIconView->ensureItemVisible( m_pEnsureVisible );
m_pEnsureVisible = 0;
}
m_bUpdateContentsPosAfterListing = false;
if ( !m_pIconView->firstItem() )
if ( !m_pIconView->firstItem() ) {
resetCount();
}
slotOnViewport();
// slotRenderingFinished will do it
m_bNeedEmitCompleted = true;
if (m_pProps->isShowingPreview())
if (m_pProps->isShowingPreview()) {
m_mimeTypeResolver->start( 0 ); // We need the mimetypes asap
}
else
{
slotRenderingFinished(); // emit completed, we don't want the wheel...
@ -972,8 +975,9 @@ void KonqKfmIconView::slotNewItems( const KFileItemList& entries )
{
// Stop the autorefresh timer since data to display has arrived and will
// be drawn in moments
if ( m_pTimeoutRefreshTimer && m_pTimeoutRefreshTimer->isActive() )
if ( m_pTimeoutRefreshTimer && m_pTimeoutRefreshTimer->isActive() ) {
m_pTimeoutRefreshTimer->stop();
}
// We need to disable graphics updates on the iconview when
// inserting items, or else a blank paint operation will be
// performed on the top-left corner for each inserted item!
@ -1003,7 +1007,7 @@ void KonqKfmIconView::slotNewItems( const KFileItemList& entries )
if ( fileItem->isDir() && m_pProps->isShowingDirectoryOverlays() ) {
showDirectoryOverlay(item);
}
if ( fileItem->mimetype().startsWith("media/") && m_pProps->isShowingFreeSpaceOverlays() ) {
if ( fileItem->mimetype().startsWith("media/") && fileItem->mimetype().contains("_mounted") && m_pProps->isShowingFreeSpaceOverlays() ) {
showFreeSpaceOverlay(item);
}
@ -1028,8 +1032,9 @@ void KonqKfmIconView::slotNewItems( const KFileItemList& entries )
item->setKey( key );
//kdDebug() << "KonqKfmIconView::slotNewItems " << (*it)->url().url() << " " << (*it)->mimeTypePtr()->name() << " mimetypeknown:" << (*it)->isMimeTypeKnown() << endl;
if ( !(*it)->isMimeTypeKnown() )
if ( !(*it)->isMimeTypeKnown() ) {
m_mimeTypeResolver->m_lstPendingMimeIconItems.append( item );
}
m_itemDict.insert( *it, item );
}
@ -1037,8 +1042,9 @@ void KonqKfmIconView::slotNewItems( const KFileItemList& entries )
m_pIconView->setUpdatesEnabled( true );
// Locking the viewport has filtered out blanking and now, since we
// have some items to draw, we can restore updating.
if ( !m_pIconView->viewport()->isUpdatesEnabled() )
if ( !m_pIconView->viewport()->isUpdatesEnabled() ) {
m_pIconView->viewport()->setUpdatesEnabled( true );
}
KonqDirPart::newItems( entries );
}
@ -1195,13 +1201,19 @@ void KonqKfmIconView::slotRefreshItems( const KFileItemList& entries )
bNeedPreviewJob = true;
ivi->invalidateThumbnail();
}
else
else {
ivi->refreshIcon( true );
}
ivi->setText( rit.current()->text() );
if ( rit.current()->isMimeTypeKnown() )
if ( rit.current()->isMimeTypeKnown() ) {
ivi->setMouseOverAnimation( rit.current()->iconName() );
if ( !bNeedRepaint && oldSize != ivi->pixmap()->size() )
}
if ( !bNeedRepaint && oldSize != ivi->pixmap()->size() ) {
bNeedRepaint = true;
}
if ( (*rit)->mimetype().startsWith("media/") && (*rit)->mimetype().contains("_mounted") && m_pProps->isShowingFreeSpaceOverlays() ) {
showFreeSpaceOverlay(ivi);
}
}
}
@ -1212,8 +1224,9 @@ void KonqKfmIconView::slotRefreshItems( const KFileItemList& entries )
else
{
// In case we replace a big icon with a small one, need to repaint.
if ( bNeedRepaint )
if ( bNeedRepaint ) {
m_pIconView->updateContents();
}
}
}

@ -85,35 +85,37 @@ void KIVFreeSpaceOverlay::slotCompleted()
{
KFileItem* item = m_freespace->item();
if (item) {
bool isLocal = false;
KURL localURL = item->mostLocalURL(isLocal);
if (!isLocal) {
m_freespace->setOverlayProgressBar(-1);
}
else {
TQString localPath = localURL.path();
if (localPath != "") {
TDEIO::filesize_t m_total = 0;
TDEIO::filesize_t m_used = 0;
TDEIO::filesize_t m_free = 0;
struct statvfs vfs;
memset(&vfs, 0, sizeof(vfs));
if ( ::statvfs(TQFile::encodeName(localPath), &vfs) != -1 )
{
m_total = static_cast<TDEIO::filesize_t>(vfs.f_blocks) * static_cast<TDEIO::filesize_t>(vfs.f_frsize);
m_free = static_cast<TDEIO::filesize_t>(vfs.f_bavail) * static_cast<TDEIO::filesize_t>(vfs.f_frsize);
m_used = m_total - m_free;
m_freespace->setOverlayProgressBar((m_used/(m_total*1.0))*100.0);
if (item->mimetype().contains("_mounted")) {
bool isLocal = false;
KURL localURL = item->mostLocalURL(isLocal);
if (!isLocal) {
m_freespace->setOverlayProgressBar(-1);
}
else {
TQString localPath = localURL.path();
if (localPath != "") {
TDEIO::filesize_t m_total = 0;
TDEIO::filesize_t m_used = 0;
TDEIO::filesize_t m_free = 0;
struct statvfs vfs;
memset(&vfs, 0, sizeof(vfs));
if ( ::statvfs(TQFile::encodeName(localPath), &vfs) != -1 )
{
m_total = static_cast<TDEIO::filesize_t>(vfs.f_blocks) * static_cast<TDEIO::filesize_t>(vfs.f_frsize);
m_free = static_cast<TDEIO::filesize_t>(vfs.f_bavail) * static_cast<TDEIO::filesize_t>(vfs.f_frsize);
m_used = m_total - m_free;
m_freespace->setOverlayProgressBar((m_used/(m_total*1.0))*100.0);
}
else {
m_freespace->setOverlayProgressBar(-1);
}
}
else {
m_freespace->setOverlayProgressBar(-1);
}
}
else {
m_freespace->setOverlayProgressBar(-1);
}
}
}
else {

@ -440,8 +440,9 @@ void KonqDirPart::updatePasteAction() // KDE4: merge into method above
void KonqDirPart::newItems( const KFileItemList & entries )
{
d->dirSizeDirty = true;
if ( m_findPart )
if ( m_findPart ) {
emitTotalCount();
}
emit itemsAdded( entries );
}
@ -454,8 +455,9 @@ void KonqDirPart::deleteItem( KFileItem * fileItem )
void KonqDirPart::emitTotalCount()
{
if ( !d->dirLister || d->dirLister->url().isEmpty() )
if ( !d->dirLister || d->dirLister->url().isEmpty() ) {
return;
}
if ( d->dirSizeDirty ) {
m_lDirSize = 0;
m_lFileCount = 0;
@ -465,12 +467,14 @@ void KonqDirPart::emitTotalCount()
{
if ( !it.current()->isDir() )
{
if (!it.current()->isLink()) // symlinks don't contribute to the size
if (!it.current()->isLink()) { // symlinks don't contribute to the size
m_lDirSize += it.current()->size();
}
m_lFileCount++;
}
else
else {
m_lDirCount++;
}
}
d->dirSizeDirty = false;
}
@ -521,10 +525,12 @@ void KonqDirPart::emitCounts( const KFileItemList & lst )
void KonqDirPart::emitCounts( const KFileItemList & lst, bool selectionChanged )
{
if ( lst.count() == 0 )
if ( lst.count() == 0 ) {
emitTotalCount();
else
}
else {
emitCounts( lst );
}
// Yes, the caller could do that too :)
// But this bool could also be used to cache the TQString for the last
@ -533,8 +539,9 @@ void KonqDirPart::emitCounts( const KFileItemList & lst, bool selectionChanged )
// MiB: no, I don't think it's worth it. Especially regarding the
// loss of readability of the code. Thus, this will be removed in
// KDE 4.0.
if ( selectionChanged )
if ( selectionChanged ) {
emit m_extension->selectionInfo( lst );
}
}
void KonqDirPart::emitMouseOver( const KFileItem* item )

@ -94,7 +94,7 @@ KonqPropsView::KonqPropsView( TDEInstance * instance, KonqPropsView * defaultPro
d->descending = config->readBoolEntry( "SortDescending", false );
m_bShowDot = config->readBoolEntry( "ShowDotFiles", false );
m_bShowDirectoryOverlays = config->readBoolEntry( "ShowDirectoryOverlays", false );
m_bShowFreeSpaceOverlays = config->readBoolEntry( "ShowFreeSpaceOverlays", false );
m_bShowFreeSpaceOverlays = config->readBoolEntry( "ShowFreeSpaceOverlays", true );
m_dontPreview = config->readListEntry( "DontPreview" );
m_dontPreview.remove("audio/"); //Use the separate setting.

@ -440,19 +440,33 @@ void KFileIVI::paintOverlayProgressBar( TQPainter *p ) const
// p->setBrush(TQt::green);
// p->drawPie(rect, 1440, (((100-d->m_progress)*5760)/100));
// Progress bar
// // Horizontal progress bar
// TQRect rect = pixmapRect(true);
// int verticalOffset = 0;
// int usedBarWidth = ((d->m_progress*pixmapRect().width())/100);
// int endPosition = x() + rect.x() + usedBarWidth;
//
// p->save();
//
// p->setPen(TQPen::NoPen);
// p->setBrush(TQt::red);
// p->drawRect(TQRect(x() + rect.x(), y() + rect.y() + (pixmapRect().height() - verticalOffset), usedBarWidth, 1));
// p->setBrush(TQt::green);
// p->drawRect(TQRect(endPosition, y() + rect.y() + (pixmapRect().height() - verticalOffset), pixmapRect().width() - usedBarWidth, 1));
// Vertical progress bar
TQRect rect = pixmapRect(true);
int verticalOffset = 0;
int usedBarWidth = ((d->m_progress*pixmapRect().width())/100);
int endPosition = x() + rect.x() + usedBarWidth;
int horizontalOffset = 0;
int usedBarHeight = (((100-d->m_progress)*pixmapRect().height())/100);
int endPosition = y() + rect.y() + usedBarHeight;
p->save();
p->setPen(TQPen::NoPen);
p->setBrush(TQt::red);
p->drawRect(TQRect(x() + rect.x(), y() + rect.y() + (pixmapRect().height() - verticalOffset), usedBarWidth, 1));
p->setBrush(TQt::green);
p->drawRect(TQRect(endPosition, y() + rect.y() + (pixmapRect().height() - verticalOffset), pixmapRect().width() - usedBarWidth, 1));
p->drawRect(TQRect(x() + rect.x() + (pixmapRect().width() - horizontalOffset), y() + rect.y(), 1, usedBarHeight));
p->setBrush(TQt::red);
p->drawRect(TQRect(x() + rect.x() + (pixmapRect().width() - horizontalOffset), endPosition, 1, pixmapRect().height() - usedBarHeight));
p->restore();
}

@ -138,8 +138,7 @@ bool MediaList::changeMediumState(const Medium &medium, bool allowNotification)
TQString fs_type = medium.fsType();
bool mounted = medium.isMounted();
m->mountableState( device_node, clear_device_udi, mount_point,
fs_type, mounted );
m->mountableState( device_node, clear_device_udi, mount_point, fs_type, mounted );
}
else
{

@ -751,7 +751,7 @@ TQStringList TDEBackend::mountoptions(const TQString &name)
value = config.readBoolEntry("automount", false);
}
else {
QString current_group = config.group();
TQString current_group = config.group();
config.setGroup(drive_udi);
value = config.readBoolEntry("automount", false);
config.setGroup(current_group);
@ -1125,8 +1125,9 @@ TQString TDEBackend::mount(const Medium *medium)
TQString TDEBackend::mount(const TQString &_udi)
{
const Medium* medium = m_mediaList.findById(_udi);
if (!medium)
if (!medium) {
return i18n("No such medium: %1").arg(_udi);
}
return mount(medium);
}
@ -1135,11 +1136,13 @@ TQString TDEBackend::unmount(const TQString &_udi)
{
const Medium* medium = m_mediaList.findById(_udi);
if ( !medium )
if ( !medium ) {
return i18n("No such medium: %1").arg(_udi);
}
if (!medium->isMounted())
if (!medium->isMounted()) {
return TQString(); // that was easy
}
TQString mountPoint = isInFstab(medium);
if (!mountPoint.isNull())
@ -1222,23 +1225,6 @@ TQString TDEBackend::unmount(const TQString &_udi)
if (!checkDN.exists()) {
m_mediaList.removeMedium(uid, true);
}
else {
TQString mountedPath = sdevice->mountPath();
if (!mountedPath.isNull()) {
// Because the TDE hardware backend is event driven it might take a little while for the device to show up as unmounted
// Wait up to 30 seconds for the mount to disappear...
for (int i=0;i<300;i++) {
mountedPath = sdevice->mountPath();
if (mountedPath.isNull()) {
break;
}
tqApp->processEvents(50);
usleep(50000);
}
}
ResetProperties(sdevice, false);
}
return TQString();
}

@ -149,8 +149,9 @@ MountHelper::MountHelper() : TDEApplication()
if (medium.isMounted())
{
DCOPReply reply = mediamanager.call( "unmount", medium.id());
if (reply.isValid())
reply.get(m_errorStr);
if (reply.isValid()) {
reply.get(m_errorStr);
}
}
/* If this is a decrypted volume and there is no error yet
@ -158,14 +159,17 @@ MountHelper::MountHelper() : TDEApplication()
if (m_errorStr.isNull() && medium.isEncrypted() && !medium.clearDeviceUdi().isNull())
{
DCOPReply reply = mediamanager.call( "undecrypt", medium.id());
if (reply.isValid())
if (reply.isValid()) {
reply.get(m_errorStr);
}
}
if (m_errorStr.isNull())
if (m_errorStr.isNull()) {
invokeEject(device, true);
else
}
else {
error();
}
}
else
{

@ -80,7 +80,6 @@ bool MediaProtocol::rewriteURL(const KURL &url, KURL &newUrl)
return false;
}
if ( !m_impl.realURL(name, path, newUrl) )
{
error( m_impl.lastErrorCode(), m_impl.lastErrorMessage() );

Loading…
Cancel
Save