┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels/information/informationpanelcontent.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/panels/information/informationpanelcontent.h')
-rw-r--r--src/panels/information/informationpanelcontent.h139
1 files changed, 139 insertions, 0 deletions
diff --git a/src/panels/information/informationpanelcontent.h b/src/panels/information/informationpanelcontent.h
new file mode 100644
index 000000000..1277f31fa
--- /dev/null
+++ b/src/panels/information/informationpanelcontent.h
@@ -0,0 +1,139 @@
+/***************************************************************************
+ * Copyright (C) 2009 by Peter Penz <[email protected]> *
+ * *
+ * 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. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef INFORMATIONPANELCONTENT_H
+#define INFORMATIONPANELCONTENT_H
+
+#include <panels/panel.h>
+
+#include <kconfig.h>
+#include <kurl.h>
+#include <kvbox.h>
+
+class PhononWidget;
+class PixmapViewer;
+class MetaDataWidget;
+class MetaTextLabel;
+class QPixmap;
+class QString;
+class KFileItem;
+class KSeparator;
+class QLabel;
+class QScrollArea;
+
+/**
+ * @brief Manages the widgets that display the meta information
+* for file items of the Information Panel.
+ */
+class InformationPanelContent : public Panel
+{
+ Q_OBJECT
+
+public:
+ explicit InformationPanelContent(QWidget* parent = 0);
+ virtual ~InformationPanelContent();
+
+ /**
+ * Shows the meta information for the item \p item.
+ * The preview of the item is generated asynchronously,
+ * the other meta informations are fetched synchronously.
+ */
+ void showItem(const KFileItem& item);
+
+ /**
+ * Shows the meta information for the items \p items.
+ */
+ void showItems(const KFileItemList& items);
+
+ /**
+ * Opens a menu which allows to configure which meta information
+ * should be shown.
+ */
+ void configureSettings();
+
+protected:
+ /** @see QObject::eventFilter() */
+ virtual bool eventFilter(QObject* obj, QEvent* event);
+
+private slots:
+ /**
+ * Is invoked if no preview is available for the item. In this
+ * case the icon will be shown.
+ */
+ void showIcon(const KFileItem& item);
+
+ /**
+ * Is invoked if a preview is available for the item. The preview
+ * \a pixmap is shown inside the info page.
+ */
+ void showPreview(const KFileItem& item, const QPixmap& pixmap);
+
+ void slotPlayingStarted();
+ void slotPlayingStopped();
+
+private:
+ /**
+ * Checks whether the an URL is repesented by a place. If yes,
+ * then the place icon and name are shown instead of a preview.
+ * @return True, if the URL represents exactly a place.
+ * @param url The url to check.
+ */
+ bool applyPlace(const KUrl& url);
+
+ /**
+ * Sets the text for the label \a m_nameLabel and assures that the
+ * text is split in a way that it can be wrapped within the
+ * label width (QLabel::setWordWrap() does not work if the
+ * text represents one extremely long word).
+ */
+ void setNameLabelText(const QString& text);
+
+ /**
+ * Assures that the settings for the meta information
+ * are initialized with proper default values.
+ */
+ void initMetaInfoSettings(KConfigGroup& group);
+
+ /**
+ * Temporary helper method for KDE 4.3 as we currently don't get
+ * translated labels for Nepmok literals: Replaces camelcase labels
+ * like "fileLocation" by "File Location:".
+ */
+ QString tunedLabel(const QString& label) const;
+
+ void init();
+
+private:
+ KFileItem m_item;
+
+ bool m_pendingPreview;
+ QTimer* m_outdatedPreviewTimer;
+ QLabel* m_nameLabel;
+
+ PixmapViewer* m_preview;
+ KSeparator* m_previewSeparator;
+ PhononWidget* m_phononWidget;
+ MetaDataWidget* m_metaDataWidget;
+ KSeparator* m_metaDataSeparator;
+
+ QScrollArea* m_metaTextArea;
+ MetaTextLabel* m_metaTextLabel;
+};
+
+#endif // INFORMATIONPANELCONTENT_H