All pastes #1893347 Raw Edit

Someone

public cpp v1 · immutable
#1893347 ·published 2010-07-02 10:53 UTC
rendered paste body
diff --git a/kget/conf/transfersgrouptree.cpp b/kget/conf/transfersgrouptree.cppindex d5482f7..483685c 100644--- a/kget/conf/transfersgrouptree.cpp+++ b/kget/conf/transfersgrouptree.cpp@@ -15,49 +15,89 @@ #include "transfersgrouptree.h"  #include "core/kget.h"+#include "core/transfertreemodel.h" #include "core/transfertreeselectionmodel.h"  #include <QtGui/QHeaderView> -TransfersGroupDelegate::TransfersGroupDelegate(QObject * parent)-    : QStyledItemDelegate(parent)+#include <KLineEdit>++TransfersGroupDelegate::TransfersGroupDelegate(QAbstractItemView *parent)+  : BasicTransfersViewDelegate(parent) {+} +QWidget *TransfersGroupDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const+{+    if (index.column() == TransferTreeModel::Name) {+        return new KLineEdit(parent);+    } else {+        return BasicTransfersViewDelegate::createEditor(parent, option, index);+    } } -QWidget * TransfersGroupDelegate::createEditor(QWidget * parent, const QStyleOptionViewItem & option,-                                                const QModelIndex & index) const+void TransfersGroupDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const {-    Q_UNUSED(option)-    return new GroupEditor(index, index.data(Qt::DisplayRole).toString(), parent);+    if (index.column() == TransferTreeModel::Name) {+        KLineEdit *groupEditor = static_cast<KLineEdit*>(editor);+        groupEditor->setText(index.data().toString());+    } else {+        BasicTransfersViewDelegate::setEditorData(editor, index);+    } } +void TransfersGroupDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const+{+    if (index.column() == TransferTreeModel::Name) {+        KLineEdit *groupEditor = static_cast<KLineEdit*>(editor);+        const QString newName = groupEditor->text();+        const QString oldName = index.data().toString();++        if (!newName.isEmpty()) {+            foreach (const QString &groupName, KGet::transferGroupNames()) {+                if (groupName == newName && groupName != oldName) {+                    groupEditor->setText(oldName);+                    return;+                }+            }++            KGet::renameGroup(oldName, newName);+        }+    } else {+        BasicTransfersViewDelegate::setModelData(editor, model, index);+    }+}++ TransfersGroupTree::TransfersGroupTree(QWidget *parent)     : QTreeView(parent) {     setItemDelegate(new TransfersGroupDelegate(this)); } -void TransfersGroupTree::commitData(QWidget *editor)+void TransfersGroupTree::setModel(QAbstractItemModel *model) {-    GroupEditor * groupEditor = static_cast<GroupEditor *>(editor);+    QTreeView::setModel(model); -    if (groupEditor->groupIndex() != currentIndex()) {-        return;+    int nGroups = model->rowCount(QModelIndex());+    for (int i = 0; i < nGroups; i++) {+        kDebug(5001) << "openEditor for row " << i;+        openPersistentEditor(model->index(i, TransferTreeModel::Status, QModelIndex()));     } -    const QString newName = groupEditor->text();-    if (!newName.isEmpty()){-        foreach (const QString &groupName, KGet::transferGroupNames()) {-            if (groupName == newName &&-                groupName != model()->data(currentIndex(), Qt::DisplayRole).toString()) {-                return;-            }-        }+    setColumnWidth(0 , 250);+} -        KGet::renameGroup(model()->data(currentIndex()).toString(), newName);-        setCurrentIndex(QModelIndex());+void TransfersGroupTree::rowsInserted(const QModelIndex &parent, int start, int end)+{+    if (!parent.isValid()) {+        for (int i = start; i <= end; ++i) {+            kDebug(5001) << "openEditor for row " << i;+            openPersistentEditor(model()->index(i, TransferTreeModel::Status, parent));+        }     }++    QTreeView::rowsInserted(parent, start, end); }  void TransfersGroupTree::editCurrent()diff --git a/kget/conf/transfersgrouptree.h b/kget/conf/transfersgrouptree.hindex f71ca56..5d6a710 100644--- a/kget/conf/transfersgrouptree.h+++ b/kget/conf/transfersgrouptree.h@@ -14,33 +14,23 @@ #ifndef TRANSFERSGROUPTREE_H #define TRANSFERSGROUPTREE_H +#include "ui/transfersviewdelegate.h"+ #include <QStyledItemDelegate> #include <QTreeView> -#include <KLineEdit>+class GroupStatusEditor; -class GroupEditor : public KLineEdit+class TransfersGroupDelegate : public BasicTransfersViewDelegate {     Q_OBJECT-public:-    GroupEditor(QModelIndex group, const QString contents, QWidget * parent=0)-        : KLineEdit(contents, parent), m_groupIndex(group)-    {-    }--    QModelIndex groupIndex() const  {return m_groupIndex;}--private:-    QModelIndex m_groupIndex;-}; -class TransfersGroupDelegate : public QStyledItemDelegate-{-    Q_OBJECT-public:-    TransfersGroupDelegate(QObject * parent=0);+    public:+        TransfersGroupDelegate(QAbstractItemView *parent); -    QWidget * createEditor(QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index) const;+        QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;+        void setEditorData(QWidget *editor, const QModelIndex &index) const;+        void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const; };  class TransfersGroupTree : public QTreeView@@ -48,6 +38,7 @@ class TransfersGroupTree : public QTreeView     Q_OBJECT     public:         TransfersGroupTree(QWidget *parent=0);+        void setModel(QAbstractItemModel *model);      public slots:         void editCurrent();@@ -55,7 +46,9 @@ class TransfersGroupTree : public QTreeView         void deleteSelectedGroup();         void renameSelectedGroup();         void changeIcon(const QString &icon);-        void commitData(QWidget *editor);++    private:+        void rowsInserted(const QModelIndex &index, int start, int end); };  #endifdiff --git a/kget/conf/transfersgroupwidget.cpp b/kget/conf/transfersgroupwidget.cppindex f89f135..8b9bbea 100644--- a/kget/conf/transfersgroupwidget.cpp+++ b/kget/conf/transfersgroupwidget.cpp@@ -27,12 +27,10 @@ TransfersGroupWidget::TransfersGroupWidget(QWidget *parent)     ui.treeView->setModel(KGet::model());     ui.treeView->setSelectionModel(KGet::selectionModel()); -    // hide the size, speed, percent and status columns-    ui.treeView->header()->hideSection(1);-    ui.treeView->header()->hideSection(2);-    ui.treeView->header()->hideSection(3);-    ui.treeView->header()->hideSection(4);-    ui.treeView->header()->hideSection(5);+    ui.treeView->header()->hideSection(TransferTreeModel::Progress);+    ui.treeView->header()->hideSection(TransferTreeModel::RemainingTime);+    ui.treeView->header()->hideSection(TransferTreeModel::Size);+    ui.treeView->header()->hideSection(TransferTreeModel::Speed);      ui.add->setGuiItem(KStandardGuiItem::add());     ui.remove->setGuiItem(KStandardGuiItem::remove());diff --git a/kget/ui/transfersview.cpp b/kget/ui/transfersview.cppindex 44a757c..527ac2d 100644--- a/kget/ui/transfersview.cpp+++ b/kget/ui/transfersview.cpp@@ -75,7 +75,7 @@ void TransfersView::setModel(QAbstractItemModel * model)     for(int i = 0; i < nGroups; i++)     {         kDebug(5001) << "openEditor for row " << i;-        openPersistentEditor(model->index(i, 1, QModelIndex()));+        openPersistentEditor(model->index(i, TransferTreeModel::Status, QModelIndex()));     }      QByteArray loadedState = QByteArray::fromBase64(Settings::headerState().toAscii());@@ -109,7 +109,7 @@ void TransfersView::rowsInserted(const QModelIndex & parent, int start, int end)         for(int i = start; i <= end; i++)         {             kDebug(5001) << "openEditor for row " << i;-            openPersistentEditor(model()->index(i, 1, parent));+            openPersistentEditor(model()->index(i, TransferTreeModel::Status, parent));         }     } diff --git a/kget/ui/transfersviewdelegate.cpp b/kget/ui/transfersviewdelegate.cppindex 949f439..168b205 100644--- a/kget/ui/transfersviewdelegate.cpp+++ b/kget/ui/transfersviewdelegate.cpp@@ -204,9 +204,8 @@ void GroupStatusButton::timerEvent(QTimerEvent *event)     update(); } -GroupStatusEditor::GroupStatusEditor(const QModelIndex & index, const TransfersViewDelegate * delegate, QWidget * parent)+GroupStatusEditor::GroupStatusEditor(const QModelIndex & index, const QStyledItemDelegate * delegate, QWidget * parent)     : QWidget(parent),-      m_delegate(delegate),       m_index(index) {     setMinimumWidth(80);@@ -224,7 +223,7 @@ GroupStatusEditor::GroupStatusEditor(const QModelIndex & index, const TransfersV     m_startBt->setIcon(KIcon("media-playback-start"));     m_startBt->setFixedSize(36, 36);     m_startBt->setIconSize(QSize(22, 22));-    m_startBt->installEventFilter(const_cast<TransfersViewDelegate *>(delegate));+    m_startBt->installEventFilter(const_cast<QStyledItemDelegate *>(delegate));     m_layout->addWidget(m_startBt);     m_btGroup->addButton(m_startBt); @@ -234,7 +233,7 @@ GroupStatusEditor::GroupStatusEditor(const QModelIndex & index, const TransfersV     m_stopBt->setIcon(KIcon("media-playback-pause"));     m_stopBt->setFixedSize(36, 36);     m_stopBt->setIconSize(QSize(22, 22));-    m_stopBt->installEventFilter(const_cast<TransfersViewDelegate *>(delegate));+    m_stopBt->installEventFilter(const_cast<QStyledItemDelegate *>(delegate));     m_layout->addWidget(m_stopBt);     m_btGroup->addButton(m_stopBt); @@ -243,8 +242,7 @@ GroupStatusEditor::GroupStatusEditor(const QModelIndex & index, const TransfersV     m_layout->addStretch();     m_layout->setMargin(1); -    connect(m_startBt, SIGNAL(toggled(bool)),-            this,      SLOT(slotStatusChanged(bool)));+    connect(m_startBt, SIGNAL(toggled(bool)), this, SLOT(slotStatusChanged())); }  void GroupStatusEditor::setRunning(bool running)@@ -263,15 +261,61 @@ bool GroupStatusEditor::isRunning()     return m_startBt->isChecked(); } -void GroupStatusEditor::slotStatusChanged(bool running)+void GroupStatusEditor::slotStatusChanged() {-    Q_UNUSED(running)+    emit changedStatus(this);+}+++BasicTransfersViewDelegate::BasicTransfersViewDelegate(QAbstractItemView *parent)+  : KExtendableItemDelegate(parent)+{+}++QWidget *BasicTransfersViewDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const+{+    if (index.column() == TransferTreeModel::Status) {+        GroupStatusEditor *qroupStatusEditor = new GroupStatusEditor(index, this, parent);+        connect(qroupStatusEditor, SIGNAL(changedStatus(GroupStatusEditor*)), this, SLOT(slotGroupStatusChanged(GroupStatusEditor*)));+        return qroupStatusEditor;+    } else {+        return KExtendableItemDelegate::createEditor(parent, option, index);+    }+}++void BasicTransfersViewDelegate::slotGroupStatusChanged(GroupStatusEditor *editor)+{+    commitData(editor);+}++void BasicTransfersViewDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const+{+    if (index.column() == TransferTreeModel::Status) {+        GroupStatusEditor *groupEditor = static_cast<GroupStatusEditor*>(editor);+        groupEditor->setRunning(KGet::model()->itemFromIndex(index)->asGroup()->groupHandler()->status() == JobQueue::Running);+    } else {+        KExtendableItemDelegate::setEditorData(editor, index);+    }+} -    emit const_cast<TransfersViewDelegate *>(m_delegate)->commitData(this);+void BasicTransfersViewDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const+{+    if (index.column() == TransferTreeModel::Status) {+        GroupStatusEditor *groupEditor = static_cast<GroupStatusEditor *>(editor);+        TransferGroupHandler *groupHandler = KGet::model()->itemFromIndex(index)->asGroup()->groupHandler();++        if (groupEditor->isRunning()) {+            groupHandler->start();+        } else {+            groupHandler->stop();+        }+    } else {+        KExtendableItemDelegate::setModelData(editor, model, index);+    } }  TransfersViewDelegate::TransfersViewDelegate(QAbstractItemView *parent)-    : KExtendableItemDelegate(parent)+    : BasicTransfersViewDelegate(parent) {     Q_ASSERT(qobject_cast<QAbstractItemView *>(parent));     setExtendPixmap(SmallIcon("arrow-right"));@@ -395,16 +439,6 @@ QSize TransfersViewDelegate::sizeHint(const QStyleOptionViewItem & option, const     } } -QWidget * TransfersViewDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem & option , const QModelIndex & index) const-{-    Q_UNUSED(option)-    Q_UNUSED(index)--    GroupStatusEditor * groupsStatusEditor = new GroupStatusEditor(index, this, parent);--    return groupsStatusEditor;-}- bool TransfersViewDelegate::editorEvent(QEvent * event, QAbstractItemModel * model, const QStyleOptionViewItem & option, const QModelIndex & index) {     Q_UNUSED(model)@@ -448,29 +482,4 @@ bool TransfersViewDelegate::editorEvent(QEvent * event, QAbstractItemModel * mod     return false; } -void TransfersViewDelegate::setEditorData(QWidget * editor, const QModelIndex & index) const-{-    GroupStatusEditor * groupEditor = static_cast<GroupStatusEditor *>(editor);-    -    TransferTreeModel * m = KGet::model();--    groupEditor->setRunning(m->itemFromIndex(index)->asGroup()->groupHandler()->status() == JobQueue::Running);-}--void TransfersViewDelegate::setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const-{-    Q_UNUSED(model)--    GroupStatusEditor * groupEditor = static_cast<GroupStatusEditor *>(editor);-    -    TransferTreeModel * m = KGet::model();-    -    TransferGroupHandler * groupHandler = m->itemFromIndex(index)->asGroup()->groupHandler();--    if (groupEditor->isRunning())-        groupHandler->start();-    else-        groupHandler->stop();-}- #include "transfersviewdelegate.moc"diff --git a/kget/ui/transfersviewdelegate.h b/kget/ui/transfersviewdelegate.hindex 1e13c18..89548a6 100644--- a/kget/ui/transfersviewdelegate.h+++ b/kget/ui/transfersviewdelegate.h@@ -53,17 +53,18 @@ class GroupStatusEditor : public QWidget     Q_OBJECT      public:-        explicit GroupStatusEditor(const QModelIndex & index, const TransfersViewDelegate * delegate, QWidget * parent=0);+        explicit GroupStatusEditor(const QModelIndex & index, const QStyledItemDelegate * delegate, QWidget * parent=0);          void setRunning(bool running);         bool isRunning();      private slots:-        void slotStatusChanged(bool running);+        void slotStatusChanged(); -    private:-        const TransfersViewDelegate * m_delegate;+    signals:+        void changedStatus(GroupStatusEditor *editor); +    private:         QModelIndex m_index;          QHBoxLayout * m_layout;@@ -73,11 +74,27 @@ class GroupStatusEditor : public QWidget         GroupStatusButton * m_stopBt; }; -class TransfersViewDelegate : public KExtendableItemDelegate+/**+ * The BasicTransfersViewDelegate handles the setting of the status of a group+ */+class BasicTransfersViewDelegate : public KExtendableItemDelegate {     Q_OBJECT -    friend class GroupStatusEditor;+    public:+        BasicTransfersViewDelegate(QAbstractItemView *parent);++        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;++    private slots:+        virtual void slotGroupStatusChanged(GroupStatusEditor *editor);+};++class TransfersViewDelegate : public BasicTransfersViewDelegate+{+    Q_OBJECT      public:         TransfersViewDelegate(QAbstractItemView *parent);@@ -88,12 +105,7 @@ class TransfersViewDelegate : public KExtendableItemDelegate          QSize sizeHint (const QStyleOptionViewItem & option, const QModelIndex & index) const; -        QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem & option, const QModelIndex & index) const;-         bool editorEvent(QEvent * event, QAbstractItemModel * model, const QStyleOptionViewItem & option, const QModelIndex & index);--        void setEditorData(QWidget * editor, const QModelIndex & index) const;-        void setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const; };  #endif