X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/e801bddf91ef73f0e05a0e810b9543c355ab877f..929931b060435686d8d7a0d9a745f045a28b445b:/src/metadatawidget.cpp diff --git a/src/metadatawidget.cpp b/src/metadatawidget.cpp index 35f24bea5..8db305e93 100644 --- a/src/metadatawidget.cpp +++ b/src/metadatawidget.cpp @@ -17,29 +17,32 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ -#include - #include "metadatawidget.h" -#include +#include -#include -#include -#include +#include -#ifdef HAVE_KMETADATA -#include -#include -#include -#include -#include +#include +#include +#include +#include + +#ifdef HAVE_NEPOMUK +#include +#include +#include +#include +#include +#include +#include #endif bool MetaDataWidget::metaDataAvailable() { -#ifdef HAVE_KMETADATA - return !Nepomuk::KMetaData::ResourceManager::instance()->init(); +#ifdef HAVE_NEPOMUK + return !Nepomuk::ResourceManager::instance()->init(); #else return false; #endif @@ -49,58 +52,61 @@ bool MetaDataWidget::metaDataAvailable() 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 ); - } - editComment->blockSignals( false ); - } +#ifdef HAVE_NEPOMUK + void loadComment(const QString& comment); - KUrl fileUrl; - - Nepomuk::KMetaData::File file; + QMap files; QTextEdit* editComment; KRatingWidget* ratingWidget; - Nepomuk::KMetaData::TagWidget* tagWidget; + Nepomuk::TagWidget* tagWidget; #endif }; - -MetaDataWidget::MetaDataWidget( QWidget* parent ) - : QWidget( parent ) +#ifdef HAVE_NEPOMUK +void MetaDataWidget::Private::loadComment(const QString& comment) { - d = new Private; + editComment->blockSignals(true); + if (comment.isEmpty()) { + editComment->setFontItalic(true); + editComment->setText(i18nc("@info:tooltip", "Click to add comment...")); + } else { + editComment->setFontItalic(false); + editComment->setText(comment); + } + editComment->blockSignals(false); +} +#endif -#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 ); +MetaDataWidget::MetaDataWidget(QWidget* parent) : + QWidget(parent) +{ +#ifdef HAVE_NEPOMUK + d = new Private; + d->editComment = new QTextEdit(this); + d->ratingWidget = new KRatingWidget(this); + d->tagWidget = new Nepomuk::TagWidget(this); + connect(d->ratingWidget, SIGNAL(ratingChanged(unsigned int)), this, SLOT(slotRatingChanged(unsigned 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(i18nc("@label:slider", "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(i18nc("@label:textbox", "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,88 @@ MetaDataWidget::~MetaDataWidget() } -void MetaDataWidget::setFile( const KUrl& url ) +void MetaDataWidget::setFile(const KUrl& url) { -#ifdef HAVE_KMETADATA - 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() ); -#endif + KUrl::List urls; + urls.append( url ); + setFiles( urls ); } -void MetaDataWidget::setFiles( const KUrl::List urls ) +void MetaDataWidget::setFiles(const KUrl::List& urls) { - // FIXME: support multiple files - setFile( urls.first() ); +#ifdef HAVE_NEPOMUK + // FIXME: replace with KMetaData::File once we have it again + d->files.clear(); + bool first = true; + QList fileRes; + Q_FOREACH( KUrl url, urls ) { + Nepomuk::Resource file( url.url(), Soprano::Vocabulary::Xesam::File() ); +// file.setLocation(url.url()); + d->files.insert( url, file ); + fileRes.append( file ); + + if ( !first && + d->ratingWidget->rating() != file.rating() ) { + d->ratingWidget->setRating( 0 ); // reset rating + } + else if ( first ) { + d->ratingWidget->setRating( file.rating() ); + } + + if ( !first && + d->editComment->toPlainText() != file.description() ) { + d->loadComment( QString() ); + } + else if ( first ) { + d->loadComment( file.description() ); + } + first = false; + } + d->tagWidget->setTaggedResources(fileRes); +#endif } void MetaDataWidget::slotCommentChanged() { -#ifdef HAVE_KMETADATA - d->file.setComment( d->editComment->toPlainText() ); +#ifdef HAVE_NEPOMUK + for ( QMap::iterator it = d->files.begin(); + it != d->files.end(); ++it ) { + it.value().setDescription(d->editComment->toPlainText()); + } #endif } -void MetaDataWidget::slotRatingChanged( int r ) +void MetaDataWidget::slotRatingChanged(unsigned int rating) { -#ifdef HAVE_KMETADATA - d->file.setRating( r ); +#ifdef HAVE_NEPOMUK + for ( QMap::iterator it = d->files.begin(); + it != d->files.end(); ++it ) { + it.value().setRating(rating); + } #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 ) { +#ifdef HAVE_NEPOMUK + 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->files.isEmpty() && d->files.begin().value().description().isEmpty()) { + d->editComment->setText(QString()); + } } } #endif - return QWidget::eventFilter( obj, event ); + return QWidget::eventFilter(obj, event); } #include "metadatawidget.moc"