From: Oscar Blumberg Date: Fri, 23 Feb 2007 02:28:27 +0000 (+0000) Subject: Change the behavior of the info sidebar to show the preview of the current selection. X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/7a34c3321d1d36a9b20fb9116b33b8c8a9181e82?ds=inline Change the behavior of the info sidebar to show the preview of the current selection. svn path=/trunk/KDE/kdebase/apps/; revision=636423 --- diff --git a/src/infosidebarpage.cpp b/src/infosidebarpage.cpp index efc85cc71..8b5aea3ce 100644 --- a/src/infosidebarpage.cpp +++ b/src/infosidebarpage.cpp @@ -178,10 +178,14 @@ void InfoSidebarPage::showItemInfo() // show the preview... DolphinView* view = mainWindow()->activeView(); const KFileItemList selectedItems = view->selectedItems(); + KUrl file; if (selectedItems.count() > 1) { m_multipleSelection = true; + } else if(selectedItems.count() == 0) { + file = m_shownUrl; + } else { + file = selectedItems[0]->url(); } - if (m_multipleSelection) { KIconLoader iconLoader; QPixmap icon = iconLoader.loadIcon("exec", @@ -190,10 +194,10 @@ void InfoSidebarPage::showItemInfo() m_preview->setPixmap(icon); m_name->setText(i18n("%1 items selected",selectedItems.count())); } - else if (!applyBookmark()) { + else if (!applyBookmark(file)) { // try to get a preview pixmap from the item... KUrl::List list; - list.append(m_shownUrl); + list.append(file); m_pendingPreview = true; m_preview->setPixmap(QPixmap()); @@ -213,7 +217,7 @@ void InfoSidebarPage::showItemInfo() this, SLOT(slotPreviewFailed(const KFileItem*))); QString text(""); - text.append(m_shownUrl.fileName()); + text.append(file.fileName()); text.append(""); m_name->setText(text); } @@ -231,7 +235,7 @@ void InfoSidebarPage::slotTimeout() void InfoSidebarPage::slotPreviewFailed(const KFileItem* item) { m_pendingPreview = false; - if (!applyBookmark()) { + if (!applyBookmark(item->url())) { m_preview->setPixmap(item->pixmap(K3Icon::SizeEnormous)); } } @@ -271,12 +275,12 @@ void InfoSidebarPage::connectToActiveView() showItemInfo(); } -bool InfoSidebarPage::applyBookmark() +bool InfoSidebarPage::applyBookmark(const KUrl& url) { KBookmarkGroup root = DolphinSettings::instance().bookmarkManager()->root(); KBookmark bookmark = root.first(); while (!bookmark.isNull()) { - if (m_shownUrl.equals(bookmark.url(), KUrl::CompareWithoutTrailingSlash)) { + if (url.equals(bookmark.url(), KUrl::CompareWithoutTrailingSlash)) { QString text(""); text.append(bookmark.text()); text.append(""); @@ -536,18 +540,17 @@ void InfoSidebarPage::showAnnotation(const KUrl& file) void InfoSidebarPage::showAnnotations(const KUrl::List& files) { - static unsigned int maxShownAnnot = 3; + static unsigned int maxShownAnnot = 3; //The maximum number of show annotations when selecting multiple files if (m_metadata->storageUp()) { bool hasAnnotation = false; unsigned int annotateNum = 0; - QString firsts("%1 :
"); - firsts.arg(i18n("Annotations")); + QString firsts = QString("%1 :
").arg(i18n("Annotations")); foreach (KUrl file, files) { QString annotation = m_metadata->getAnnotation(file); if (!annotation.isEmpty()) { hasAnnotation = true; if(annotateNum < maxShownAnnot) { - firsts += m_annotationLabel->fontMetrics().elidedText(QString("%1 : %2
").arg(file.fileName()).arg(annotation), Qt::ElideRight, width()); + firsts += m_annotationLabel->fontMetrics().elidedText(QString("%1 : %2
").arg(file.fileName()).arg(annotation), Qt::ElideRight, width());//FIXME not really the good method, does not handle resizing ... annotateNum++; } } diff --git a/src/infosidebarpage.h b/src/infosidebarpage.h index cebb7f4aa..5509ed1f4 100644 --- a/src/infosidebarpage.h +++ b/src/infosidebarpage.h @@ -128,11 +128,12 @@ private: void connectToActiveView(); /** - * Checks whether the current Url is repesented by a bookmark. If yes, + * Checks whether the an Url is repesented by a bookmark. If yes, * then the bookmark icon and name are shown instead of a preview. * @return True, if the Url represents exactly a bookmark. + * @param url The url to check. */ - bool applyBookmark(); + bool applyBookmark(const KUrl& url); /** Assures that any pending item information request is cancelled. */ void cancelRequest();