[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