]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/metadatawidget.cpp
don't lose the history of the URL navigator if the settings of the Icons View, Detail...
[dolphin.git] / src / metadatawidget.cpp
index 35f24bea5264cedc59c07ab54caa618a3c06fa37..1bab4abd7bde897f46377fb1617ca03e594fce77 100644 (file)
 
 #include <klocale.h>
 
-#include <QLabel>
-#include <QGridLayout>
-#include <QTextEdit>
+#include <QtGui/QLabel>
+#include <QtGui/QGridLayout>
+#include <QtGui/QTextEdit>
 
 #ifdef HAVE_KMETADATA
-#include <kmetadatatagwidget.h>
+#include <kmetadata/kmetadatatagwidget.h>
 #include <kmetadata/resourcemanager.h>
-#include <kmetadata/file.h>
-#include <kratingwidget.h>
-#include <kmetadatatagwidget.h>
+#include <kmetadata/resource.h>
+#include <kmetadata/variant.h>
+#include <kmetadata/kratingwidget.h>
+#include <kmetadata/kmetadatatagwidget.h>
 #endif
 
+// FIXME: these should be replaced by using KMetaData::File once it is available again
+static const char* s_nfoFile = "http://ont.semanticdesktop.org/2007/03/22/nfo#File";
+static const char* s_nfoFileUrl = "http://ont.semanticdesktop.org/2007/03/22/nfo#fileUrl";
+
 
 bool MetaDataWidget::metaDataAvailable()
 {
@@ -50,22 +55,22 @@ class MetaDataWidget::Private
 {
 public:
 #ifdef HAVE_KMETADATA
-    void loadComment( const QString& comment ) {
-        editComment->blockSignals( true );
-        if ( comment.isEmpty() ) {
-            editComment->setFontItalic( true );
-            editComment->setText( i18n( "Click to add comment..." ) );
-        }
-        else {
-            editComment->setFontItalic( false );
-            editComment->setText( comment );
+    void loadComment(const QString& comment)
+    {
+        editComment->blockSignals(true);
+        if (comment.isEmpty()) {
+            editComment->setFontItalic(true);
+            editComment->setText(i18n("Click to add comment..."));
+        else {
+            editComment->setFontItalic(false);
+            editComment->setText(comment);
         }
-        editComment->blockSignals( false );
+        editComment->blockSignals(false);
     }
 
     KUrl fileUrl;
 
-    Nepomuk::KMetaData::File file;
+    Nepomuk::KMetaData::Resource file;
 
     QTextEdit* editComment;
     KRatingWidget* ratingWidget;
@@ -74,33 +79,34 @@ public:
 };
 
 
-MetaDataWidget::MetaDataWidget( QWidget* parent )
-    : QWidget( parent )
+MetaDataWidget::MetaDataWidget(QWidget* parent)
+        : QWidget(parent)
 {
-    d = new Private;
-
 #ifdef HAVE_KMETADATA
-    d->editComment = new QTextEdit( this );
-    d->tagWidget = new Nepomuk::KMetaData::TagWidget( this );
-    d->ratingWidget = new KRatingWidget( this );
-    connect( d->ratingWidget, SIGNAL(ratingChanged(int)), this, SLOT(slotRatingChanged(int)) );
-    connect( d->editComment, SIGNAL( textChanged() ), this, SLOT( slotCommentChanged() ) );
-
-    QVBoxLayout* lay = new QVBoxLayout( this );
-    lay->setMargin( 0 );
+    d = new Private;
+    d->editComment = new QTextEdit(this);
+    d->tagWidget = new Nepomuk::KMetaData::TagWidget(this);
+    d->ratingWidget = new KRatingWidget(this);
+    connect(d->ratingWidget, SIGNAL(ratingChanged(int)), this, SLOT(slotRatingChanged(int)));
+    connect(d->editComment, SIGNAL(textChanged()), this, SLOT(slotCommentChanged()));
+
+    QVBoxLayout* lay = new QVBoxLayout(this);
+    lay->setMargin(0);
     QHBoxLayout* hbox = new QHBoxLayout;
-    hbox->addWidget( new QLabel( i18n( "Rating:" ), this ) );
-    hbox->addStretch( 1 );
-    hbox->addWidget( d->ratingWidget );
-    lay->addLayout( hbox );
-    lay->addWidget( d->editComment );
+    hbox->addWidget(new QLabel(i18n("Rating:"), this));
+    hbox->addStretch(1);
+    hbox->addWidget(d->ratingWidget);
+    lay->addLayout(hbox);
+    lay->addWidget(d->editComment);
     hbox = new QHBoxLayout;
-    hbox->addWidget( new QLabel( i18n( "Tags:" ), this ) );
-    hbox->addWidget( d->tagWidget, 1 );
-    lay->addLayout( hbox );
+    hbox->addWidget(new QLabel(i18n("Tags:"), this));
+    hbox->addWidget(d->tagWidget, 1);
+    lay->addLayout(hbox);
 
-    d->editComment->installEventFilter( this );
-    d->editComment->viewport()->installEventFilter( this );
+    d->editComment->installEventFilter(this);
+    d->editComment->viewport()->installEventFilter(this);
+#else
+    d = 0;
 #endif
 }
 
@@ -111,61 +117,63 @@ MetaDataWidget::~MetaDataWidget()
 }
 
 
-void MetaDataWidget::setFile( const KUrl& url )
+void MetaDataWidget::setFile(const KUrl& url)
 {
 #ifdef HAVE_KMETADATA
+    // FIXME: replace with KMetaData::File once we have it again
     d->fileUrl = url;
-    d->file = Nepomuk::KMetaData::File( url.url() );
-    d->file.setLocation( url.url() );
-    d->ratingWidget->setRating( d->file.getRating() );
-    d->tagWidget->setTaggedResource( d->file );
-    d->loadComment( d->file.getComment() );
+    d->file = Nepomuk::KMetaData::Resource(url.url(), s_nfoFile);
+//    d->file.setLocation(url.url());
+    d->file.setProperty( s_nfoFileUrl, url.url() );
+    d->ratingWidget->setRating(d->file.rating());
+    d->tagWidget->setTaggedResource(d->file);
+    d->loadComment(d->file.description());
 #endif
 }
 
 
-void MetaDataWidget::setFiles( const KUrl::List urls )
+void MetaDataWidget::setFiles(const KUrl::List urls)
 {
+#ifdef HAVE_KMETADATA
     // FIXME: support multiple files
-    setFile( urls.first() );
+    setFile(urls.first());
+#endif
 }
 
 
 void MetaDataWidget::slotCommentChanged()
 {
 #ifdef HAVE_KMETADATA
-    d->file.setComment( d->editComment->toPlainText() );
+    d->file.setDescription(d->editComment->toPlainText());
 #endif
 }
 
 
-void MetaDataWidget::slotRatingChanged( int r )
+void MetaDataWidget::slotRatingChanged(int r)
 {
 #ifdef HAVE_KMETADATA
-    d->file.setRating( r );
+    d->file.setRating(r);
 #endif
 }
 
 
-bool MetaDataWidget::eventFilter( QObject* obj, QEvent* event )
+bool MetaDataWidget::eventFilter(QObject* obj, QEvent* event)
 {
 #ifdef HAVE_KMETADATA
-    if (  obj == d->editComment->viewport()
-          || obj == d->editComment ) {
-        if ( event->type() == QEvent::FocusOut ) {
+    if (obj == d->editComment->viewport()
+            || obj == d->editComment) {
+        if (event->type() == QEvent::FocusOut) {
             // make sure the info text is displayed again
-            d->loadComment( d->editComment->toPlainText() );
-        }
-        else if ( event->type() == QEvent::FocusIn ) {
-            qDebug() << "JKGHLKGLKHÖLKJHLÖ" << endl;
-            d->editComment->setFontItalic( false );
-            if ( d->file.getComment().isEmpty() )
-                d->editComment->setText( QString() );
+            d->loadComment(d->editComment->toPlainText());
+        } else if (event->type() == QEvent::FocusIn) {
+            d->editComment->setFontItalic(false);
+            if (d->file.description().isEmpty())
+                d->editComment->setText(QString());
         }
     }
 #endif
 
-    return QWidget::eventFilter( obj, event );
+    return QWidget::eventFilter(obj, event);
 }
 
 #include "metadatawidget.moc"