--- a/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.cpp Fri May 14 16:57:01 2010 +0300
+++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.cpp Thu May 27 13:59:05 2010 +0300
@@ -13,7 +13,7 @@
*
* Description:
*
-* Version : %version: 1 %
+* Version : %version: 5 %
*/
#include "mywindow.h"
#include <hbmenu.h>
@@ -29,21 +29,58 @@
#include <QCoreApplication>
#include <hbgridview.h>
#include <hbinstance.h>
+#include <HbInputDialog>
#include <QFileSystemWatcher>
#include <hgwidgets/hgcacheproxymodel.h>
#include "mydataprovider.h"
#include "hglogger.h"
+const int KGridViewCommand = 1;
+const int KListViewCommand = 2;
-const QStringList KViewNames = (QStringList() << "GridView" << "ListView" );
+const int KSort1Command = 1101;
+const int KSort2Command = 1102;
+const int KSort3Command = 1103;
+const int KSortCaseSensitiveCommand = 1104;
+const int KSortCaseInsensitiveCommand = 1105;
+const int KDisableFilterCommand = 1200;
+const int KFilter1Command = 1201;
+const int KFilter2Command = 1202;
+const int KTogleDynamicCommand = 1000;
+const int KTogleSortTestCommand = 1001;
+const int KTogleFilterTestCommand = 1002;
+
+const int KInsert0Command = 2100;
+const int KInsert50Command = 2101;
+const int KInsert101Command = 2102;
+const int KInsert257Command = 2103;
+const int KInsert1000Command = 2104;
+const int KInsertEndCommand = 2105;
+const int KInsertEnd10Command = 2106;
+const int KInsertCustomCommand = 2107;
+const int KRemove0Command = 2200;
+const int KRemove50Command = 2201;
+const int KRemove101Command = 2202;
+const int KRemove257Command = 2203;
+const int KRemove1000Command = 2204;
+const int KRemoveLastCommand = 2205;
+const int KRemoveEnd10Command = 2206;
+const int KRemoveCustomCommand = 2207;
+const int KShowImagesCommand = 2300;
+const int KShowAudioCommand = 2301;
+
+const int KResetCommand = 10000;
MyWindow::MyWindow()
: HbMainWindow(),
mView(0),
mModel(0),
mMyDataProvider(0),
- mTimer(new QTimer(this))
+ mSortTestTimer(new QTimer(this)),
+ mSortTestVal(-1),
+ mFilterTestTimer(new QTimer(this)),
+ mFilterTestVal(-1)
{
mMainView = new HbView();
addView( mMainView );
@@ -54,10 +91,11 @@
mModel = new HgCacheProxyModel(this);
mModel->setDataProvider(mMyDataProvider, 120, 20);
- connect(mTimer, SIGNAL(timeout()), this, SLOT(timeout()));
+ connect(mSortTestTimer, SIGNAL(timeout()), this, SLOT(sortTestTimeout()));
+ connect(mSortTestTimer, SIGNAL(timeout()), this, SLOT(filterTestTimeout()));
HbAction action;
- action.setData ( QVariant(1) ); //select Grid
+ action.setData ( QVariant(KGridViewCommand) ); //select Grid
processAction(&action);
}
@@ -71,147 +109,353 @@
HbMenu* mainMenu = new HbMenu( );
connect(mainMenu, SIGNAL(triggered(HbAction*)),this, SLOT(processAction(HbAction*)));
- HbMenu *viewSubMenu = mainMenu->addMenu("Change view");
- QString temporaryString;
- int i(0);
- foreach (temporaryString , KViewNames) {
- HbAction* subAction = viewSubMenu->addAction(temporaryString);
- subAction->setData (QVariant(++i));
- }
+ addChangeViewMenu(mainMenu);
+ addCacheProxyModelMenu(mainMenu);
+ addDataProviderMenu(mainMenu);
- HbMenu *sortSubMenu = mainMenu->addMenu("Sort");
+ HbAction* action = mainMenu->addAction("Reset");
+ action->setData(QVariant(KResetCommand));
+
+ return mainMenu;
+}
+
+void MyWindow::addChangeViewMenu(HbMenu* parent)
+{
+ HbMenu *viewSubMenu = parent->addMenu("Change view");
+ HbAction* action = viewSubMenu->addAction("GridView");
+ action->setData(QVariant(KGridViewCommand));
+ action = viewSubMenu->addAction("ListView");
+ action->setData(QVariant(KListViewCommand));
+}
+
+void MyWindow::addCacheProxyModelMenu(HbMenu* parent)
+{
+
+ HbMenu *cpSubMenu = parent->addMenu("CacheProxyModel");
+
+ HbMenu *sortSubMenu = cpSubMenu->addMenu("Sort");
HbAction* action = sortSubMenu->addAction("Sort1");
- action->setData(QVariant(101));
+ action->setData(QVariant(KSort1Command));
action = sortSubMenu->addAction("Sort2");
- action->setData(QVariant(102));
+ action->setData(QVariant(KSort2Command));
action = sortSubMenu->addAction("Sort3");
- action->setData(QVariant(103));
+ action->setData(QVariant(KSort3Command));
HbMenu *sort4SubMenu = sortSubMenu->addMenu("Sort4 (String)");
action = sort4SubMenu->addAction("CaseSensitive");
- action->setData(QVariant(104));
+ action->setData(QVariant(KSortCaseSensitiveCommand));
action = sort4SubMenu->addAction("CaseInsensitive");
- action->setData(QVariant(105));
+ action->setData(QVariant(KSortCaseInsensitiveCommand));
- HbMenu *filterSubMenu = mainMenu->addMenu("Filter");
+ HbMenu *filterSubMenu = cpSubMenu->addMenu("Filter");
action = filterSubMenu->addAction("Disable filter");
- action->setData(QVariant(201));
+ action->setData(QVariant(KDisableFilterCommand));
action = filterSubMenu->addAction("Filter ITEM* (Case Sensitive)");
- action->setData(QVariant(202));
+ action->setData(QVariant(KFilter1Command));
action = filterSubMenu->addAction("Filter ITEM1*(Case Insensitive)");
- action->setData(QVariant(203));
+ action->setData(QVariant(KFilter2Command));
+
+ action = cpSubMenu->addAction("Enable dynamic Sort/Filter");
+ action->setData(QVariant(KTogleDynamicCommand));
+
+ action = cpSubMenu->addAction("Start Sort Test");
+ action->setData(QVariant(KTogleSortTestCommand));
+
+ action = cpSubMenu->addAction("Start Filter Test");
+ action->setData(QVariant(KTogleFilterTestCommand));
+
+
+}
+
+void MyWindow::addDataProviderMenu(HbMenu* parent)
+{
+ HbMenu *dpSubMenu = parent->addMenu("DataProvider");
- action = mainMenu->addAction("Reset");
- action->setData(QVariant(1000));
- action = mainMenu->addAction("Enable dynamic Sort/Filter");
- action->setData(QVariant(1001));
+ HbMenu *insertSubMenu = dpSubMenu->addMenu("Insert Item");
+ HbAction* action = insertSubMenu->addAction("at 0");
+ action->setData(QVariant(KInsert0Command));
+ action = insertSubMenu->addAction("at 50");
+ action->setData(QVariant(KInsert50Command));
+ action = insertSubMenu->addAction("at 101");
+ action->setData(QVariant(KInsert101Command));
+ action = insertSubMenu->addAction("at 257");
+ action->setData(QVariant(KInsert257Command));
+ action = insertSubMenu->addAction("at 1000");
+ action->setData(QVariant(KInsert1000Command));
+ action = insertSubMenu->addAction("at end");
+ action->setData(QVariant(KInsertEndCommand));
+ action = insertSubMenu->addAction("at end-10");
+ action->setData(QVariant(KInsertEnd10Command));
+ action = insertSubMenu->addAction("at ...");
+ action->setData(QVariant(KInsertCustomCommand));
+
+ HbMenu *removeSubMenu = dpSubMenu->addMenu("Remove Item");
+ action = removeSubMenu->addAction("at 0");
+ action->setData(QVariant(KRemove0Command));
+ action = removeSubMenu->addAction("at 50");
+ action->setData(QVariant(KRemove50Command));
+ action = removeSubMenu->addAction("at 101");
+ action->setData(QVariant(KRemove101Command));
+ action = removeSubMenu->addAction("at 257");
+ action->setData(QVariant(KRemove257Command));
+ action = removeSubMenu->addAction("at 1000");
+ action->setData(QVariant(KRemove1000Command));
+ action = removeSubMenu->addAction("last");
+ action->setData(QVariant(KRemoveLastCommand));
+ action = removeSubMenu->addAction("at end-10");
+ action->setData(QVariant(KRemoveEnd10Command));
+ action = removeSubMenu->addAction("at ...");
+ action->setData(QVariant(KRemoveCustomCommand));
- action = mainMenu->addAction("Test");
- action->setData(QVariant(1002));
+ action = dpSubMenu->addAction("Show Images");
+ action->setData(QVariant(KShowImagesCommand));
+ action = dpSubMenu->addAction("Show Audio");
+ action->setData(QVariant(KShowAudioCommand));
- action = mainMenu->addAction("Stop Test");
- action->setData(QVariant(1003));
-
- return mainMenu;
}
+
void MyWindow::processAction( HbAction* action )
{
int command = action->data().toInt();
- if ( command == 1) {
- HbGridView* view = new HbGridView();
- if ( orientation() == Qt::Horizontal ) {
- view->setColumnCount( 5 );
- view->setRowCount( 3 );
- }else {
- view->setColumnCount( 3 );
- view->setRowCount( 5 );
- }
-// view->setTextVisible(false);
- view->setUniformItemSizes( true );
- view->setItemRecycling( true );
- //this could be done to change mode, for images it doesn't make sence, becouse images thumbnails are created by default only for medium and fullsize
-// AbstractDataProvider *data = mModel->DataProvider();
-// MyDataProvider *prov = static_cast<MyDataProvider*>(data); //of course we have already poiter to that - mMyDataProvider, but it is example how to get it from model
-// prov->changeIconSize(ThumbnailManager::ThumbnailMedium);
- view->setModel(mModel);
- mMainView->setWidget( view );
- mView = view;
- } else if (command == 2) {
- HbListView* view = new HbListView();
- view->setUniformItemSizes( true );
- view->setItemRecycling( true );
- //this could be done to change mode, for images it doesn't make sence, becouse images thumbnails are created by default only for medium and fullsize
-// AbstractDataProvider *data = mModel->DataProvider();
-// MyDataProvider *prov = static_cast<MyDataProvider*>(data); //of course we have already poiter to that - mMyDataProvider, but it is example how to get it from model
-// prov->changeIconSize(ThumbnailManager::ThumbnailSmall);
- view->setModel(mModel);
- mMainView->setWidget( view );
- mView = view;
- } else if (command == 101) { //sort by KSort1Role
- mModel->setSortRole(Qt::UserRole+2);
- mModel->sort(0);
- } else if (command == 102) { //sort by KSort2Role
- mModel->setSortRole(Qt::UserRole+3);
- mModel->sort(0);
- } else if (command == 103) { //sort by KSort3Role
- mModel->setSortRole(Qt::UserRole+4);
- mModel->sort(0);
- } else if (command == 104) { //sort by DisplayRole CaseSensitive
- mModel->setSortRole(Qt::DisplayRole);
- mModel->setSortCaseSensitivity(Qt::CaseSensitive);
- mModel->sort(0);
- } else if (command == 105) { //sort by DisplayRole CaseInsensitive
- mModel->setSortRole(Qt::DisplayRole);
- mModel->setSortCaseSensitivity(Qt::CaseInsensitive);
- mModel->sort(0);
- } else if (command == 201) { //disable filter
- QRegExp reg = QRegExp();
- mModel->setFilterRegExp(reg);
- } else if (command == 202) { //Filter ITEM* (Case Sensitive)
- QRegExp reg = QRegExp("ITEM*", Qt::CaseSensitive, QRegExp::Wildcard);
- mModel->setFilterCaseSensitivity(Qt::CaseSensitive);
- mModel->setFilterRegExp(reg);
- } else if (command == 203) { //Filter ITEM1*(Case Insensitive)
- QRegExp reg = QRegExp("ITEM1*", Qt::CaseInsensitive, QRegExp::Wildcard);
- mModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
- mModel->setFilterRegExp(reg);
- } else if (command == 1000) { //reset
- mMyDataProvider->resetModel();
- } else if (command == 1001) { //reset
- bool current = !mModel->dynamicSortFilter();
- mModel->setDynamicSortFilter(current);
- if (current){
- action->setText("Disable dynamic Sort/Filter");
- }else{
- action->setText("Enable dynamic Sort/Filter");
+
+ switch (command){
+ case KGridViewCommand : {
+ HbGridView* view = new HbGridView();
+ if ( orientation() == Qt::Horizontal ) {
+ view->setColumnCount( 5 );
+ view->setRowCount( 3 );
+ }else {
+ view->setColumnCount( 3 );
+ view->setRowCount( 5 );
+ }
+ // view->setTextVisible(false);
+ view->setUniformItemSizes( true );
+ view->setItemRecycling( true );
+ view->setModel(mModel);
+ mMainView->setWidget( view );
+ mView = view;
+ break;
+ }
+ case KListViewCommand : {
+ HbListView* view = new HbListView();
+ view->setUniformItemSizes( true );
+ view->setItemRecycling( true );
+ view->setModel(mModel);
+ mMainView->setWidget( view );
+ mView = view;
+ break;
+ }
+ case KSort1Command : {
+ mModel->setSortRole(Qt::UserRole+2);
+ mModel->sort(0);
+ break;
+ }
+ case KSort2Command : {
+ mModel->setSortRole(Qt::UserRole+3);
+ mModel->sort(0);
+ break;
+ }
+ case KSort3Command : {
+ mModel->setSortRole(Qt::UserRole+4);
+ mModel->sort(0);
+ break;
+ }
+ case KSortCaseSensitiveCommand : {
+ mModel->setSortRole(Qt::DisplayRole);
+ mModel->setSortCaseSensitivity(Qt::CaseSensitive);
+ mModel->sort(0);
+ break;
+ }
+ case KSortCaseInsensitiveCommand : {
+ mModel->setSortRole(Qt::DisplayRole);
+ mModel->setSortCaseSensitivity(Qt::CaseInsensitive);
+ mModel->sort(0);
+ break;
+ }
+ case KDisableFilterCommand : {
+ QRegExp reg = QRegExp();
+ mModel->setFilterRegExp(reg);
+ break;
+ }
+ case KFilter1Command : {
+ QRegExp reg = QRegExp("ITEM*", Qt::CaseSensitive, QRegExp::Wildcard);
+ mModel->setFilterCaseSensitivity(Qt::CaseSensitive);
+ mModel->setFilterRegExp(reg);
+ break;
+ }
+ case KFilter2Command : {
+ QRegExp reg = QRegExp("ITEM1*", Qt::CaseInsensitive, QRegExp::Wildcard);
+ mModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
+ mModel->setFilterRegExp(reg);
+ break;
+ }
+ case KTogleDynamicCommand : {
+ bool current = !mModel->dynamicSortFilter();
+ mModel->setDynamicSortFilter(current);
+ if (current){
+ action->setText("Disable dynamic Sort/Filter");
+ }else{
+ action->setText("Enable dynamic Sort/Filter");
+ }
+ break;
+ }
+ case KTogleSortTestCommand : {
+ if (mSortTestVal == -1){
+ mSortTestVal = 500;
+ action->setText("Stop Sort Test");
+ sortTestTimeout();
+ }else{
+ mSortTestVal = -1;
+ action->setText("Start Sort Test");
+ }
+ break;
+ }
+ case KTogleFilterTestCommand : {
+ if (mFilterTestVal == -1){
+ mFilterTestVal = 500;
+ action->setText("Stop Filter Test");
+ sortTestTimeout();
+ }else{
+ mFilterTestVal = -1;
+ action->setText("Start Filter Test");
+ }
+ break;
}
- } else if (command == 1002) {
- mTestVal = 500;
- timeout();
- } else if (command == 1003) {
- mTestVal = -1;
+ case KInsert0Command : {
+ QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >();
+ data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) );
+ mMyDataProvider->testInsertItem(0, data);
+ delete data;
+ break;
+ }
+ case KInsert50Command : {
+ QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >();
+ data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) );
+ mMyDataProvider->testInsertItem(50, data);
+ delete data;
+ break;
+ }
+ case KInsert101Command : {
+ QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >();
+ data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) );
+ mMyDataProvider->testInsertItem(101, data);
+ delete data;
+ break;
+ }
+ case KInsert257Command : {
+ QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >();
+ data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) );
+ mMyDataProvider->testInsertItem(257, data);
+ delete data;
+ break;
+ }
+ case KInsert1000Command : {
+ QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >();
+ data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) );
+ mMyDataProvider->testInsertItem(1000, data);
+ delete data;
+ break;
+ }
+ case KInsertEndCommand : {
+ QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >();
+ data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) );
+ mMyDataProvider->testInsertItem(mMyDataProvider->rowCount(QModelIndex()), data);
+ delete data;
+ break;
+ }
+ case KInsertEnd10Command : {
+ QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >();
+ data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) );
+ mMyDataProvider->testInsertItem(mMyDataProvider->rowCount(QModelIndex())-10, data);
+ delete data;
+ break;
+ }
+ case KInsertCustomCommand : {
+ int val = HbInputDialog::getInteger( QString("Insert at position:"));
+ QList< QPair< QVariant, int > >* data = new QList< QPair< QVariant, int > >();
+ data->append( QPair< QVariant, int >(QString("NEW ITEM!!!!"), Qt::DisplayRole) );
+ mMyDataProvider->testInsertItem(val, data);
+ break;
+ }
+ case KRemove0Command : {
+ mMyDataProvider->testRemoveItem(0);
+ break;
+ }
+ case KRemove50Command : {
+ mMyDataProvider->testRemoveItem(50);
+ break;
+ }
+ case KRemove101Command : {
+ mMyDataProvider->testRemoveItem(101);
+ break;
+ }
+ case KRemove257Command : {
+ mMyDataProvider->testRemoveItem(257);
+ break;
+ }
+ case KRemove1000Command : {
+ mMyDataProvider->testRemoveItem(1000);
+ break;
+ }
+ case KRemoveLastCommand : {
+ mMyDataProvider->testRemoveItem(mMyDataProvider->rowCount(QModelIndex())-1);
+ break;
+ }
+ case KRemoveEnd10Command : {
+ mMyDataProvider->testRemoveItem(mMyDataProvider->rowCount(QModelIndex()) - 10);
+ break;
+ }
+ case KRemoveCustomCommand : {
+ int val = HbInputDialog::getInteger( QString("Remove from position:"));
+ mMyDataProvider->testRemoveItem(val);
+ break;
+ }
+ case KShowImagesCommand : {
+ mMyDataProvider->changeIconSize(ThumbnailManager::ThumbnailMedium);
+ mMyDataProvider->changeMode(0);
+ break;
+ }
+ case KShowAudioCommand : {
+ mMyDataProvider->changeIconSize(ThumbnailManager::ThumbnailSmall);
+ mMyDataProvider->changeMode(1);
+ break;
+ }
+ case KResetCommand : {
+ mMyDataProvider->resetModel();
+ break;
+ }
+ default: {
+ break;
+ }
}
}
-void MyWindow::setIndex(int /*index*/)
-{
- update();
+void MyWindow::sortTestTimeout()
+{
+ if (mSortTestVal>0){
+ HbAction action;
+ action.setData ( QVariant(KSort1Command + mSortTestVal%(KSortCaseInsensitiveCommand - KSort1Command + 1) ) );
+ processAction(&action);
+ mSortTestVal--;
+ if (mSortTestVal==0){
+ mSortTestVal = 500;
+ }
+ mSortTestTimer->start(2000);
+ }
}
-void MyWindow::timeout()
-{
- HbAction action;
- action.setData ( QVariant(101 + mTestVal%4) );
- processAction(&action);
-
-
- if (mTestVal>=0){
- mTestVal--;
- if (mTestVal==0){
- mTestVal = 500;
+void MyWindow::filterTestTimeout()
+{
+ if (mFilterTestVal>0){
+ HbAction action;
+ action.setData ( QVariant(KDisableFilterCommand + mFilterTestVal%(KFilter2Command - KDisableFilterCommand + 1 ) ) );
+ processAction(&action);
+ mFilterTestVal--;
+ if (mFilterTestVal==0){
+ mFilterTestVal = 500;
}
- mTimer->start(2000);
+ mFilterTestTimer->start(2000);
}
}