[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/pim/ksig
From: Pino Toscano <pino () kde ! org>
Date: 2012-09-21 20:51:43
Message-ID: 20120921205143.16763AC7E8 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1317207 by pino:
convert to to itemview, with SigModel
switch from SigListView to a QTreeView + SigModel, with a proxy model for the filtering;
there is not single widget for the filter line edit, so create a new one manually
M +50 -20 ksig.cpp
M +4 -3 ksig.h
--- trunk/extragear/pim/ksig/ksig.cpp #1317206:1317207
@@ -15,7 +15,7 @@
* *
***************************************************************************/
#include "ksig.h"
-#include "siglistviewitem.h"
+#include "sigmodel.h"
#include <kstandardaction.h>
#include <kactioncollection.h>
@@ -23,14 +23,19 @@
#include <kconfig.h>
#include <kglobal.h>
#include <kglobalsettings.h>
+#include <klineedit.h>
#include <kmessagebox.h>
#include <kstatusbar.h>
#include <ktextedit.h>
-#include <k3listviewsearchline.h>
#include <klocale.h>
#include <kinputdialog.h>
+#include <qitemselectionmodel.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qsortfilterproxymodel.h>
#include <qsplitter.h>
+#include <qtreeview.h>
#include <kconfiggroup.h>
////////////////////////////////////////////////////////////////////////////////
@@ -95,7 +100,11 @@
setCentralWidget(splitter);
- sigList = SigListView::instance(splitter, "sigList");
+ m_treeView = new QTreeView(splitter);
+ m_treeView->setRootIsDecorated(false);
+ m_treeView->setMouseTracking(true);
+ m_model = new SigModel(m_treeView);
+ m_treeView->setModel(m_model);
sigEdit = new KTextEdit(splitter );
sigEdit->setObjectName("sigEdit");
@@ -110,13 +119,31 @@
updateListLock = false;
connect(sigEdit, SIGNAL(textChanged()), this, SLOT(updateList()));
- connect(sigList, SIGNAL(selectionChanged()), this, SLOT(updateEdit()));
+ connect(m_treeView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
+ this, SLOT(updateEdit()));
connect(sigEdit, SIGNAL(cursorPositionChanged()), this, SLOT(updateStatus()));
}
void KSig::setupSearchLine()
{
- K3ListViewSearchLineWidget *searchWidget = new K3ListViewSearchLineWidget(sigList, this);
+ QSortFilterProxyModel *proxy = new QSortFilterProxyModel(m_treeView);
+ proxy->setFilterRole(SigModel::SignatureRole);
+ proxy->setFilterCaseSensitivity(Qt::CaseInsensitive);
+ proxy->setSourceModel(m_model);
+ m_treeView->setModel(proxy);
+ connect(m_treeView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
+ this, SLOT(updateEdit()));
+
+ QWidget *searchWidget = new QWidget();
+ QHBoxLayout *lay = new QHBoxLayout(searchWidget);
+ lay->setMargin(0);
+ QLabel *label = new QLabel(i18n("Search:"), searchWidget);
+ lay->addWidget(label);
+ KLineEdit *lineEdit = new KLineEdit(searchWidget);
+ lineEdit->setClearButtonShown(true);
+ lay->addWidget(lineEdit);
+ connect(lineEdit, SIGNAL(textChanged(QString)), proxy, SLOT(setFilterFixedString(QString)));
+
KAction *act = actionCollection()->addAction( "search" );
act->setText( i18n("Search") );
act->setDefaultWidget(searchWidget);
@@ -125,9 +152,8 @@
void KSig::loadData()
{
- if(sigList->childCount() > 0) {
- sigList->setCurrentItem(sigList->firstChild());
- sigList->setSelected(sigList->firstChild(), true);
+ if(m_treeView->model()->rowCount() > 0) {
+ m_treeView->setCurrentIndex(m_treeView->model()->index(0, 0));
sigEdit->setEnabled(true);
}
@@ -201,24 +227,28 @@
void KSig::add()
{
setDataChanged();
- SigListViewItem *sigItem = sigList->createItem();
- sigList->setCurrentItem(sigItem);
+ const QModelIndex index = m_treeView->currentIndex();
+ const int baseRow = index.isValid() ? index.row() : 0;
+ m_treeView->model()->insertRow(baseRow);
+ m_treeView->setCurrentIndex(m_treeView->model()->index(baseRow, 0));
sigEdit->setEnabled(true);
sigEdit->setFocus();
- sigEdit->clear();
}
void KSig::remove()
{
+ const QModelIndex index = m_treeView->currentIndex();
+ if(!index.isValid())
+ return;
+
setDataChanged();
- sigEdit->clear();
- delete(sigList->currentItem());
+ m_treeView->model()->removeRow(index.row());
}
void KSig::save()
{
- sigList->save();
+ m_model->save();
setDataChanged(false);
}
@@ -252,9 +282,9 @@
{
if(!updateListLock) {
setDataChanged();
- SigListViewItem *item = sigList->currentItem();
- if(item)
- item->setText(sigEdit->toPlainText());
+ const QModelIndex index = m_treeView->currentIndex();
+ if(index.isValid())
+ m_treeView->model()->setData(index, sigEdit->toPlainText());
}
}
@@ -262,9 +292,9 @@
{
updateListLock = true;
- SigListViewItem *item = sigList->currentItem();
- if(item)
- sigEdit->setText(item->text());
+ const QModelIndex index = m_treeView->currentIndex();
+ if(index.isValid())
+ sigEdit->setText(index.data(SigModel::SignatureRole).toString());
updateListLock = false;
}
--- trunk/extragear/pim/ksig/ksig.h #1317206:1317207
@@ -18,12 +18,12 @@
#ifndef KSIG_H
#define KSIG_H
-#include "siglistview.h"
-
#include <kxmlguiwindow.h>
class KTextEdit;
class QSplitter;
+class QTreeView;
+class SigModel;
class KSig : public KXmlGuiWindow
{
@@ -66,7 +66,8 @@
QString footer;
QSplitter *splitter;
- SigListView *sigList;
+ QTreeView *m_treeView;
+ SigModel *m_model;
KTextEdit *sigEdit;
bool updateListLock;
bool changed;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic