]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/panels/information/informationpanel.cpp
don't use empty dummy images if the preview takes a while to get generated, show...
[dolphin.git] / src / panels / information / informationpanel.cpp
index 1b8724f46568c566b529d0b542e81d2fe5d999e4..1fa5565d766186c2fbd45d1a4b1381a7cfffa668 100644 (file)
@@ -202,6 +202,12 @@ void InformationPanel::resizeEvent(QResizeEvent* event)
         const int maxWidth = event->size().width() - KDialog::spacingHint() * 4;
         m_nameLabel->setMaximumWidth(maxWidth);
 
+        // The metadata widget also contains a text widget which may return
+        // a large preferred width.
+        if (m_metaDataWidget != 0) {
+            m_metaDataWidget->setMaximumWidth(maxWidth);
+        }
+
         // try to increase the preview as large as possible
         m_preview->setSizeHint(QSize(maxWidth, maxWidth));
         m_urlCandidate = m_shownUrl; // reset the URL candidate if a resizing is done
@@ -345,10 +351,12 @@ void InformationPanel::contextMenuEvent(QContextMenuEvent* event)
         showMetaInfo();
     }
 
-    const bool visible = m_metaDataWidget->isRatingVisible() ||
-                         m_metaDataWidget->isCommentVisible() ||
-                         m_metaDataWidget->areTagsVisible();
-    m_metaDataSeparator->setVisible(visible);
+    if (m_metaDataWidget != 0) {
+        const bool visible = m_metaDataWidget->isRatingVisible() ||
+                             m_metaDataWidget->isCommentVisible() ||
+                             m_metaDataWidget->areTagsVisible();
+        m_metaDataSeparator->setVisible(visible);
+    }
 #endif
 }
 
@@ -438,25 +446,9 @@ void InformationPanel::showPreview(const KFileItem& item,
 
 void InformationPanel::slotFileRenamed(const QString& source, const QString& dest)
 {
-    const KUrl sourceUrl = KUrl(source);
-
-    // Verify whether the renamed item is selected. If this is the case, the
-    // selection must be updated with the renamed item.
-    bool isSelected = false;
-    for (int i = m_selection.size() - 1; i >= 0; --i) {
-        if (m_selection[i].url() == sourceUrl) {
-            m_selection.removeAt(i);
-            isSelected = true;
-            break;
-        }
-    }
-
-    if ((m_shownUrl == sourceUrl) || isSelected) {
+    if (m_shownUrl == KUrl(source)) {
         m_shownUrl = KUrl(dest);
         m_fileItem = KFileItem(KFileItem::Unknown, KFileItem::Unknown, m_shownUrl);
-        if (isSelected) {
-            m_selection.append(m_fileItem);
-        }
         showItemInfo();
     }
 }
@@ -591,9 +583,11 @@ void InformationPanel::showMetaInfo()
                 Nepomuk::Types::Property prop(it.key());
                 const QString label = prop.label();
                 if (settings.readEntry(label, true)) {
-                    // TODO: use Nepomuk::formatValue(res, prop) if available
+                    // TODO #1: use Nepomuk::formatValue(res, prop) if available
                     // instead of it.value().toString()
-                    m_metaTextLabel->add(label, it.value().toString());
+                    // TODO #2: using tunedLabel() is a workaround for KDE 4.3 until
+                    // we get translated labels
+                    m_metaTextLabel->add(tunedLabel(label), it.value().toString());
                 }
                 ++it;
             }
@@ -707,7 +701,7 @@ void InformationPanel::updatePhononWidget()
                                                            // thinks it supports PNG images
         if (usePhonon) {
             m_phononWidget->show();
-            PhononWidget::Mode mode = mimeType.startsWith("video")
+            PhononWidget::Mode mode = mimeType.startsWith(QLatin1String("video"))
                                       ? PhononWidget::Video
                                       : PhononWidget::Audio;
             m_phononWidget->setMode(mode);
@@ -722,6 +716,25 @@ void InformationPanel::updatePhononWidget()
     }
 }
 
+QString InformationPanel::tunedLabel(const QString& label) const
+{
+    QString tunedLabel;
+    const int labelLength = label.length();
+    if (labelLength > 0) {
+        tunedLabel.reserve(labelLength);
+        tunedLabel = label[0].toUpper();
+        for (int i = 1; i < labelLength; ++i) {
+            if (label[i].isUpper() && !label[i - 1].isSpace() && !label[i - 1].isUpper()) {
+                tunedLabel += ' ';
+                tunedLabel += label[i].toLower();
+            } else {
+                tunedLabel += label[i];
+            }
+        }
+    }
+    return tunedLabel;
+}
+
 void InformationPanel::init()
 {
     m_infoTimer = new QTimer(this);
@@ -775,6 +788,7 @@ void InformationPanel::init()
         // rating, comment and tags
         m_metaDataWidget = new MetaDataWidget(this);
         m_metaDataWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
+        m_metaDataWidget->setMaximumWidth(KIconLoader::SizeEnormous);
 
         const bool showRating  = InformationPanelSettings::showRating();
         const bool showComment = InformationPanelSettings::showComment();