hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.cpp
changeset 1 e48454f237ca
child 2 49c70dcc3f17
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.cpp	Mon May 03 13:32:54 2010 +0300
@@ -0,0 +1,214 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*  Version     : %version: 1 %
+*/
+#include "mywindow.h"
+#include <hbmenu.h>
+#include <hbaction.h>
+#include <hbmainwindow.h>
+#include <hbslider.h>
+#include <QTimer>
+#include <QtGui>
+#include <QDebug>
+#include <QPushButton>
+#include <QApplication>
+#include <QGraphicsLinearLayout>
+#include <QCoreApplication>
+#include <hbgridview.h>
+#include <hbinstance.h>
+#include <QFileSystemWatcher>
+#include <hgwidgets/hgcacheproxymodel.h>
+
+#include "mydataprovider.h"
+#include "hglogger.h"
+
+
+const QStringList KViewNames = (QStringList() << "GridView" << "ListView" );
+
+MyWindow::MyWindow()
+    : HbMainWindow(), 
+    mView(0),
+    mModel(0),
+    mMyDataProvider(0),
+    mTimer(new QTimer(this))
+{
+    mMainView = new HbView();
+    addView( mMainView );
+
+    mMainView->setMenu( createMainMenu() ); 
+    
+    mMyDataProvider = new MyDataProvider(this);
+    mModel = new HgCacheProxyModel(this);
+    mModel->setDataProvider(mMyDataProvider, 120, 20);
+
+    connect(mTimer, SIGNAL(timeout()), this, SLOT(timeout()));
+    
+    HbAction action;
+	action.setData ( QVariant(1) );	//select Grid
+	processAction(&action);
+}
+
+MyWindow::~MyWindow()
+{
+//	delete mMyDataProvider;
+}
+
+HbMenu *MyWindow::createMainMenu()
+{
+    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));
+    }
+    
+    HbMenu *sortSubMenu = mainMenu->addMenu("Sort");
+    HbAction* action = sortSubMenu->addAction("Sort1");
+    action->setData(QVariant(101));
+    action = sortSubMenu->addAction("Sort2");
+    action->setData(QVariant(102));    
+    action = sortSubMenu->addAction("Sort3");
+    action->setData(QVariant(103));
+    HbMenu *sort4SubMenu = sortSubMenu->addMenu("Sort4 (String)");
+    action = sort4SubMenu->addAction("CaseSensitive");
+    action->setData(QVariant(104));
+    action = sort4SubMenu->addAction("CaseInsensitive");
+    action->setData(QVariant(105));
+    
+    HbMenu *filterSubMenu = mainMenu->addMenu("Filter");
+    action = filterSubMenu->addAction("Disable filter");
+    action->setData(QVariant(201));
+    action = filterSubMenu->addAction("Filter ITEM* (Case Sensitive)");
+    action->setData(QVariant(202));
+    action = filterSubMenu->addAction("Filter ITEM1*(Case Insensitive)");
+    action->setData(QVariant(203));
+    
+    action = mainMenu->addAction("Reset");
+    action->setData(QVariant(1000));
+    action = mainMenu->addAction("Enable dynamic Sort/Filter");
+    action->setData(QVariant(1001));    
+
+    action = mainMenu->addAction("Test");
+    action->setData(QVariant(1002));
+
+    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");            
+        }
+    } else if (command == 1002) {
+        mTestVal = 500;
+        timeout();
+    } else if (command == 1003) {
+        mTestVal = 0;
+    }
+}
+
+void MyWindow::setIndex(int /*index*/)
+{
+    update();
+}
+
+void MyWindow::timeout()
+{   
+    HbAction action;
+    action.setData ( QVariant(101 + mTestVal%4) );
+    processAction(&action);
+
+    if (mTestVal>0){
+        mTestVal--;
+        mTimer->start(1000);
+    }
+}
+
+//eof