hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.cpp
changeset 20 a60f8b6b1d32
parent 17 a10844a9914d
--- a/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.cpp	Fri Sep 17 15:55:58 2010 +0300
+++ b/hgcacheproxymodel/tsrc/fute/HgCacheProxyModelTestApp/src/mywindow.cpp	Wed Oct 06 14:53:41 2010 +0300
@@ -16,11 +16,6 @@
 *  Version     : %version: 8 %
 */
 #include "mywindow.h"
-#include <HbMenu>
-#include <HbAction>
-#include <HbMainWindow>
-#include <HbSlider>
-#include <HbScrollBar>
 #include <QTimer>
 #include <QtGui>
 #include <QDebug>
@@ -28,10 +23,16 @@
 #include <QApplication>
 #include <QGraphicsLinearLayout>
 #include <QCoreApplication>
+#include <QFileSystemWatcher>
 #include <HbGridView>
 #include <HbInstance>
 #include <HbInputDialog>
-#include <QFileSystemWatcher>
+#include <HbMenu>
+#include <HbAction>
+#include <HbMainWindow>
+#include <HbSlider>
+#include <HbScrollBar>
+#include <hbstyleloader.h>
 #include <hgwidgets/hgcacheproxymodel.h>
 #include <hgwidgets/hgmediawall.h>
 #include <hgwidgets/hggrid.h>
@@ -47,6 +48,8 @@
 const int KScrollTo546 = 6;
 const int KScrollTo875 = 7;
 const int KScrollToEnd = 8;
+const int KToogleStyle = 9;
+const int KToogleFriction = 10;
 
 const int KSort1Command = 1101;
 const int KSort2Command = 1102;
@@ -86,6 +89,7 @@
 
 const int KResetCommand = 10000;
 
+
 MyWindow::MyWindow()
     : HbMainWindow(), 
     mCurrentWidget(0),
@@ -100,7 +104,9 @@
     mFilterTestTimer(new QTimer(this)),
     mFilterTestVal(-1),
     mResetTestTimer(new QTimer(this)),
-    mResetTestVal(-1)
+    mResetTestVal(-1),
+    mUseStyles(false),
+    mEnableFriction(true)
 {
     mMainView = new HbView();
     addView( mMainView ); 
@@ -116,7 +122,7 @@
     connect(mResetTestTimer, SIGNAL(timeout()), this, SLOT(resetTestTimeout()));
     
     HbAction action;
-	action.setData ( QVariant(KListViewCommand) );	//select Grid
+	action.setData ( QVariant(KListViewCommand) );	//select List
 	processAction(&action);
 }
 
@@ -171,6 +177,11 @@
     action = viewSubMenu->addAction("Scroll to bottom");
     action->setData(QVariant(KScrollToEnd));
     
+    action = viewSubMenu->addAction("Enable styles usage");
+    action->setData(QVariant(KToogleStyle));
+    action = viewSubMenu->addAction("Disable friction");
+    action->setData(QVariant(KToogleFriction));
+    
 }
 
 void MyWindow::addCacheProxyModelMenu(HbMenu* parent)
@@ -277,11 +288,16 @@
     switch (command){
         case KGridViewCommand : {
             mMainView->setWidget( NULL ); //this will delete old Widget
+            mGridWidget = NULL;
+            mListWidget = NULL;
+            mMediaWallWidget = NULL;
+            mHgGridWidget = NULL;
             mGridWidget = new HbGridView();
+            if (mUseStyles) mGridWidget->setLayoutName( "hgcacheproxymodeltestapp_grid" );        
             if ( orientation() == Qt::Horizontal ) {
                 mGridWidget->setColumnCount( 5 );
                 mGridWidget->setRowCount( 3 );
-            }else {
+            } else {
                 mGridWidget->setColumnCount( 3 );
                 mGridWidget->setRowCount( 5 );         
             }
@@ -289,6 +305,7 @@
             mGridWidget->setItemRecycling( true );
             mGridWidget->verticalScrollBar()->setInteractive(true);
             mGridWidget->verticalScrollBar()->setVisible(true);
+            mGridWidget->setFrictionEnabled(mEnableFriction);
             mMainView->setWidget( mGridWidget );
             mGridWidget->setModel(mModel);
             mCurrentWidget = mGridWidget;
@@ -296,11 +313,17 @@
         }
         case KListViewCommand : {
             mMainView->setWidget( NULL ); //this will delete old Widget
+            mGridWidget = NULL;
+            mListWidget = NULL;
+            mMediaWallWidget = NULL;
+            mHgGridWidget = NULL;
             mListWidget = new HbListView();
+            if (mUseStyles) mListWidget->setLayoutName( "hgcacheproxymodeltestapp_list" );
             mListWidget->setUniformItemSizes( true );
             mListWidget->setItemRecycling( true );
             mListWidget->verticalScrollBar()->setInteractive(true);
             mListWidget->verticalScrollBar()->setVisible(true);
+            mListWidget->setFrictionEnabled(mEnableFriction);
             mMainView->setWidget( mListWidget );
             mListWidget->setModel(mModel);            
             mCurrentWidget = mListWidget;
@@ -308,6 +331,10 @@
         }
         case KMediaWallViewCommand : {
             mMainView->setWidget( NULL ); //this will delete old Widget
+            mGridWidget = NULL;
+            mListWidget = NULL;
+            mMediaWallWidget = NULL;
+            mHgGridWidget = NULL;      
             mMediaWallWidget = new HgMediawall();
             mMediaWallWidget->scrollBar()->setInteractive(true);
             mMediaWallWidget->scrollBar()->setVisible(true);            
@@ -318,6 +345,10 @@
         }
         case KHgGridViewCommand : {
             mMainView->setWidget( NULL ); //this will delete old Widget
+            mGridWidget = NULL;
+            mListWidget = NULL;
+            mMediaWallWidget = NULL;
+            mHgGridWidget = NULL;
             mHgGridWidget = new HgGrid(orientation());
             connect(this, SIGNAL(orientationChanged(Qt::Orientation)), mHgGridWidget, SLOT(orientationChanged(Qt::Orientation)));
             mHgGridWidget->scrollBar()->setInteractive(true);
@@ -343,6 +374,66 @@
             scrollTo(mMyDataProvider->rowCount()-1);
             break;
         }
+        case KToogleStyle : {
+            bool oldVal = mUseStyles;
+            if ( !mUseStyles ) {
+                bool widgetmlLoaded = HbStyleLoader::registerFilePath("f:/hgcacheproxymodeltestapp.widgetml");
+                if (!widgetmlLoaded) {
+                    widgetmlLoaded = HbStyleLoader::registerFilePath(":/layout/hgcacheproxymodeltestapp.widgetml");
+                }
+                bool cssLoaded = HbStyleLoader::registerFilePath("f:/hgcacheproxymodeltestapp.css");
+                if (!cssLoaded) {
+                    cssLoaded = HbStyleLoader::registerFilePath(":/layout/hgcacheproxymodeltestapp.css");
+                }
+                if (widgetmlLoaded && cssLoaded) {
+                    mUseStyles = true;
+                } else { //unload all, no layout files
+                    HbStyleLoader::unregisterFilePath("f:/hgcacheproxymodeltestapp.widgetml");
+                    HbStyleLoader::unregisterFilePath("f:/hgcacheproxymodeltestapp.css");
+                    HbStyleLoader::unregisterFilePath(":/layout/hgcacheproxymodeltestapp.widgetml");
+                    HbStyleLoader::unregisterFilePath(":/layout/hgcacheproxymodeltestapp.css");
+                    mUseStyles = false;
+                }
+            } else {
+                HbStyleLoader::unregisterFilePath("f:/hgcacheproxymodeltestapp.widgetml");
+                HbStyleLoader::unregisterFilePath("f:/hgcacheproxymodeltestapp.css");
+                HbStyleLoader::unregisterFilePath(":/layout/hgcacheproxymodeltestapp.widgetml");
+                HbStyleLoader::unregisterFilePath(":/layout/hgcacheproxymodeltestapp.css");
+                mUseStyles = false;
+            }
+            
+            if (oldVal != mUseStyles){
+                if (mUseStyles) {
+                    action->setText("Disable styles usage");
+                } else {
+                    action->setText("Enable styles usage");
+                }
+    
+                HbAction newAction;
+                if (mGridWidget) {
+                    newAction.setData ( QVariant(KGridViewCommand) );  //select hbgrid
+                } else if (mListWidget) {
+                    newAction.setData ( QVariant(KListViewCommand) );  //select hblist
+                } else {
+                    newAction.setData ( QVariant());
+                }
+                if (newAction.data().isValid()) processAction(&newAction); //don't change view for mediawall and hggrid
+            }
+            break;
+        }
+        case KToogleFriction : {
+            mEnableFriction = !mEnableFriction;
+            if (mGridWidget) mGridWidget->setFrictionEnabled(mEnableFriction);
+            if (mListWidget) mListWidget->setFrictionEnabled(mEnableFriction);
+            
+            if (mEnableFriction) {
+                action->setText("Disable friction");
+            } else {
+                action->setText("Enable friction");
+            }
+            
+            break;
+        }
         case KSort1Command : {
             mModel->setSortRole(Qt::UserRole+2);
             mModel->sort(0);