--- /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