[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdegraphics/gwenview
From: Aurélien Gâteau <agateau () kde ! org>
Date: 2010-07-06 16:52:17
Message-ID: 20100706170141.E3FFDAC85D () svn ! kde ! org
[Download RAW message or body]
SVN commit 1146783 by gateau:
Use inline renaming in browse mode
M +9 -1 app/fileopscontextmanageritem.cpp
M +2 -1 app/fileopscontextmanageritem.h
M +1 -1 app/mainwindow.cpp
M +51 -2 lib/thumbnailview/previewitemdelegate.cpp
M +7 -2 lib/thumbnailview/previewitemdelegate.h
--- trunk/KDE/kdegraphics/gwenview/app/fileopscontextmanageritem.cpp #1146782:1146783
@@ -25,6 +25,7 @@
#include <QAction>
#include <QApplication>
#include <QClipboard>
+#include <QListView>
#include <QMenu>
#include <QMimeData>
@@ -97,6 +98,7 @@
struct FileOpsContextManagerItemPrivate {
FileOpsContextManagerItem* mContextManagerItem;
+ QListView* mThumbnailView;
SideBarGroup* mGroup;
KAction* mCutAction;
KAction* mCopyAction;
@@ -181,10 +183,11 @@
};
-FileOpsContextManagerItem::FileOpsContextManagerItem(ContextManager* manager, \
KActionCollection* actionCollection) \
+FileOpsContextManagerItem::FileOpsContextManagerItem(ContextManager* manager, \
QListView* thumbnailView, KActionCollection* actionCollection) : \
AbstractContextManagerItem(manager) , d(new FileOpsContextManagerItemPrivate) {
d->mContextManagerItem = this;
+ d->mThumbnailView = thumbnailView;
d->mGroup = new SideBarGroup(i18n("File Operations"));
setWidget(d->mGroup);
EventWatcher::install(d->mGroup, QEvent::Show, this, SLOT(updateSideBarContent()));
@@ -375,8 +378,13 @@
void FileOpsContextManagerItem::rename() {
+ if (d->mThumbnailView->isVisible()) {
+ QModelIndex index = d->mThumbnailView->currentIndex();
+ d->mThumbnailView->edit(index);
+ } else {
FileOperations::rename(d->urlList().first(), d->mGroup);
}
+}
void FileOpsContextManagerItem::createFolder() {
--- trunk/KDE/kdegraphics/gwenview/app/fileopscontextmanageritem.h #1146782:1146783
@@ -29,6 +29,7 @@
#include "abstractcontextmanageritem.h"
class QAction;
+class QListView;
class KAction;
class KActionCollection;
@@ -39,7 +40,7 @@
class FileOpsContextManagerItem : public AbstractContextManagerItem {
Q_OBJECT
public:
- FileOpsContextManagerItem(ContextManager*, KActionCollection*);
+ FileOpsContextManagerItem(Gwenview::ContextManager* manager, QListView* \
thumbnailView, KActionCollection* actionCollection); ~FileOpsContextManagerItem();
private Q_SLOTS:
--- trunk/KDE/kdegraphics/gwenview/app/mainwindow.cpp #1146782:1146783
@@ -450,7 +450,7 @@
new ImageOpsContextManagerItem(mContextManager, mWindow);
mContextManager->addItem(imageOpsItem);
- FileOpsContextManagerItem* fileOpsItem = new \
FileOpsContextManagerItem(mContextManager, actionCollection); \
+ FileOpsContextManagerItem* fileOpsItem = new \
FileOpsContextManagerItem(mContextManager, mThumbnailView, actionCollection); \
mContextManager->addItem(fileOpsItem);
// Fill sidebar
--- trunk/KDE/kdegraphics/gwenview/lib/thumbnailview/previewitemdelegate.cpp \
#1146782:1146783 @@ -40,6 +40,7 @@
#include <kdebug.h>
#include <kdirmodel.h>
#include <kglobalsettings.h>
+#include <klineedit.h>
#include <klocale.h>
#include <kurl.h>
#ifndef GWENVIEW_SEMANTICINFO_BACKEND_NONE
@@ -636,7 +637,7 @@
PreviewItemDelegate::PreviewItemDelegate(ThumbnailView* view)
-: QAbstractItemDelegate(view)
+: QItemDelegate(view)
, d(new PreviewItemDelegatePrivate) {
d->that = this;
d->mView = view;
@@ -708,7 +709,8 @@
}
-bool PreviewItemDelegate::eventFilter(QObject*, QEvent* event) {
+bool PreviewItemDelegate::eventFilter(QObject* object, QEvent* event) {
+ if (object == d->mView->viewport()) {
switch (event->type()) {
case QEvent::ToolTip:
return true;
@@ -724,7 +726,12 @@
default:
return false;
}
+ } else {
+ // Necessary for the item editor to work correctly (especially closing
+ // the editor with the Escape key)
+ return QItemDelegate::eventFilter(object, event);
}
+}
void PreviewItemDelegate::paint( QPainter * painter, const QStyleOptionViewItem & \
option, const QModelIndex & index ) const { @@ -956,4 +963,46 @@
}
+QWidget * PreviewItemDelegate::createEditor(QWidget* parent, const \
QStyleOptionViewItem& /*option*/, const QModelIndex& /*index*/) const { + KLineEdit* \
edit = new KLineEdit(parent); + return edit;
+}
+
+
+void PreviewItemDelegate::setEditorData(QWidget* widget, const QModelIndex& index) \
const { + KLineEdit* edit = qobject_cast<KLineEdit*>(widget);
+ if (!edit) {
+ return;
+ }
+ edit->setText(index.data().toString());
+}
+
+
+void PreviewItemDelegate::updateEditorGeometry(QWidget* widget, const \
QStyleOptionViewItem& option, const QModelIndex& index) const { + KLineEdit* edit = \
qobject_cast<KLineEdit*>(widget); + if (!edit) {
+ return;
+ }
+ QString text = index.data().toString();
+ int textWidth = edit->fontMetrics().width(" " + text + " ");
+ QRect textRect(
+ option.rect.left() + (option.rect.width() - textWidth) / 2,
+ option.rect.top() + 2 * ITEM_MARGIN + d->mThumbnailSize,
+ textWidth,
+ edit->sizeHint().height());
+
+ edit->setGeometry(textRect);
+}
+
+
+void PreviewItemDelegate::setModelData(QWidget* widget, QAbstractItemModel* model, \
const QModelIndex& index) const { + KLineEdit* edit = \
qobject_cast<KLineEdit*>(widget); + if (!edit) {
+ return;
+ }
+ if (index.data().toString() != edit->text()) {
+ model->setData(index, edit->text(), Qt::EditRole);
+ }
+}
+
} // namespace
--- trunk/KDE/kdegraphics/gwenview/lib/thumbnailview/previewitemdelegate.h \
#1146782:1146783 @@ -24,7 +24,7 @@
#include <lib/gwenviewlib_export.h>
// Qt
-#include <QAbstractItemDelegate>
+#include <QItemDelegate>
// KDE
@@ -44,7 +44,7 @@
* An ItemDelegate which generates thumbnails for images. It also makes sure
* all items are of the same size.
*/
-class GWENVIEWLIB_EXPORT PreviewItemDelegate : public QAbstractItemDelegate {
+class GWENVIEWLIB_EXPORT PreviewItemDelegate : public QItemDelegate {
Q_OBJECT
public:
PreviewItemDelegate(ThumbnailView*);
@@ -82,6 +82,11 @@
void setTextElideMode(Qt::TextElideMode);
+ virtual QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, \
const QModelIndex& index ) const; + virtual void setEditorData(QWidget* editor, const \
QModelIndex& index) const; + virtual void setModelData(QWidget* editor, \
QAbstractItemModel* model, const QModelIndex& index) const; + virtual void \
updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const \
QModelIndex& index) const; +
virtual void paint( QPainter * painter, const QStyleOptionViewItem & option, const \
QModelIndex & index ) const; virtual QSize sizeHint( const QStyleOptionViewItem & \
/*option*/, const QModelIndex & /*index*/ ) const;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic