Web search partially implemented

preferencesAboutTextFull
Anna Udovichenko 13 years ago
parent 62a82e1daa
commit ffc9b5c346
  1. 7
      resources/style.qss
  2. 14
      src/board/UBFeaturesController.cpp
  3. 5
      src/board/UBFeaturesController.h
  4. 105
      src/gui/UBFeaturesWidget.cpp
  5. 24
      src/gui/UBFeaturesWidget.h

@ -26,6 +26,13 @@ QWidget#UBLibWebView
border: 2px solid #999999; border: 2px solid #999999;
} }
QWidget#UBFeaturesWebView
{
background: #EEEEEE;
border-radius : 10px;
border: 2px solid #999999;
}
QListView QListView
{ {
background: #EEEEEE; background: #EEEEEE;

@ -65,6 +65,7 @@ void UBFeaturesController::initDirectoryTree()
mLibInteractiveDirectoryPath = UBSettings::settings()->applicationInteractivesDirectory(); mLibInteractiveDirectoryPath = UBSettings::settings()->applicationInteractivesDirectory();
mLibApplicationsDirectoryPath = UBSettings::settings()->applicationApplicationsLibraryDirectory(); mLibApplicationsDirectoryPath = UBSettings::settings()->applicationApplicationsLibraryDirectory();
mLibShapesDirectoryPath = UBSettings::settings()->applicationShapeLibraryDirectory() ; mLibShapesDirectoryPath = UBSettings::settings()->applicationShapeLibraryDirectory() ;
mLibSearchDirectoryPath = UBSettings::settings()->userSearchDirectory();
trashDirectoryPath = UBSettings::userTrashDirPath(); trashDirectoryPath = UBSettings::userTrashDirPath();
featuresList = new QList <UBFeature>(); featuresList = new QList <UBFeature>();
@ -100,7 +101,8 @@ void UBFeaturesController::initDirectoryTree()
featuresList->append( trashElement ); featuresList->append( trashElement );
favoriteElement = UBFeature( rootPath, QPixmap(":images/libpalette/FavoritesCategory.svg"), "Favorites", "favorites", FEATURE_FAVORITE ); favoriteElement = UBFeature( rootPath, QPixmap(":images/libpalette/FavoritesCategory.svg"), "Favorites", "favorites", FEATURE_FAVORITE );
featuresList->append( favoriteElement ); featuresList->append( favoriteElement );
searchElement = UBFeature( rootPath, QPixmap(":images/libpalette/WebSearchCategory.svg"), "Web search", mLibSearchDirectoryPath );
featuresList->append( searchElement );
loadFavoriteList(); loadFavoriteList();
foreach (UBToolsManager::UBToolDescriptor tool, tools) foreach (UBToolsManager::UBToolDescriptor tool, tools)
@ -122,7 +124,7 @@ void UBFeaturesController::initDirectoryTree()
fileSystemScan( mLibShapesDirectoryPath, shapesPath ); fileSystemScan( mLibShapesDirectoryPath, shapesPath );
fileSystemScan( mLibInteractiveDirectoryPath, interactPath ); fileSystemScan( mLibInteractiveDirectoryPath, interactPath );
fileSystemScan( trashDirectoryPath, trashPath ); fileSystemScan( trashDirectoryPath, trashPath );
fileSystemScan( mLibSearchDirectoryPath, rootPath + "/" + "Web search" );
} }
@ -137,7 +139,13 @@ void UBFeaturesController::fileSystemScan(const QString & currentPath, const QSt
UBFeatureElementType fileType = fileInfo->isDir() ? FEATURE_FOLDER : FEATURE_ITEM; UBFeatureElementType fileType = fileInfo->isDir() ? FEATURE_FOLDER : FEATURE_ITEM;
QString fileName = fileInfo->fileName(); QString fileName = fileInfo->fileName();
if ( UBFileSystemUtils::mimeTypeFromFileName(fileName).contains("application") ) { if ( UBFileSystemUtils::mimeTypeFromFileName(fileName).contains("application") )
{
if ( UBFileSystemUtils::mimeTypeFromFileName(fileName).contains("application/search") )
{
fileType = FEATURE_SEARCH;
}
else
fileType = FEATURE_INTERACTIVE; fileType = FEATURE_INTERACTIVE;
} }
QString itemName = (fileType != FEATURE_ITEM) ? fileName : fileInfo->completeBaseName(); QString itemName = (fileType != FEATURE_ITEM) ? fileName : fileInfo->completeBaseName();

@ -19,7 +19,8 @@ enum UBFeatureElementType
FEATURE_INTERNAL, FEATURE_INTERNAL,
FEATURE_ITEM, FEATURE_ITEM,
FEATURE_TRASH, FEATURE_TRASH,
FEATURE_FAVORITE FEATURE_FAVORITE,
FEATURE_SEARCH
}; };
class UBFeature class UBFeature
@ -105,6 +106,7 @@ private:
QString mLibApplicationsDirectoryPath; QString mLibApplicationsDirectoryPath;
QString mLibShapesDirectoryPath; QString mLibShapesDirectoryPath;
QString trashDirectoryPath; QString trashDirectoryPath;
QString mLibSearchDirectoryPath;
QString rootPath; QString rootPath;
QString audiosPath; QString audiosPath;
@ -127,6 +129,7 @@ private:
UBFeature interactElement; UBFeature interactElement;
UBFeature flashElement; UBFeature flashElement;
UBFeature shapesElement; UBFeature shapesElement;
UBFeature searchElement;
QSet <QString> *favoriteSet; QSet <QString> *favoriteSet;
}; };

@ -1,3 +1,5 @@
#include <QDomDocument>
#include "UBFeaturesWidget.h" #include "UBFeaturesWidget.h"
#include "domain/UBAbstractWidget.h" #include "domain/UBAbstractWidget.h"
#include "gui/UBThumbnailWidget.h" #include "gui/UBThumbnailWidget.h"
@ -6,6 +8,7 @@
#include "core/UBApplication.h" #include "core/UBApplication.h"
#include "core/UBDownloadManager.h" #include "core/UBDownloadManager.h"
#include "globals/UBGlobals.h" #include "globals/UBGlobals.h"
#include "board/UBBoardController.h"
UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPaletteWidget(parent) UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPaletteWidget(parent)
{ {
@ -82,6 +85,7 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPale
pathScene = new QGraphicsScene(this); pathScene = new QGraphicsScene(this);
//pathViewer = new UBFeaturesPathViewer( QPixmap(":images/libpalette/home.png"), controller->getRootPath(), pathScene, this ); //pathViewer = new UBFeaturesPathViewer( QPixmap(":images/libpalette/home.png"), controller->getRootPath(), pathScene, this );
featureProperties = new UBFeatureProperties(this); featureProperties = new UBFeatureProperties(this);
webView = new UBFeaturesWebView(this);
//layout->addWidget( pathViewer ); //layout->addWidget( pathViewer );
//pathViewer->show(); //pathViewer->show();
@ -91,6 +95,7 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPale
stackedWidget->addWidget( featuresListView ); stackedWidget->addWidget( featuresListView );
stackedWidget->addWidget( featureProperties ); stackedWidget->addWidget( featureProperties );
stackedWidget->addWidget( webView );
stackedWidget->setCurrentIndex(ID_LISTVIEW); stackedWidget->setCurrentIndex(ID_LISTVIEW);
currentStackedWidget = ID_LISTVIEW; currentStackedWidget = ID_LISTVIEW;
@ -183,6 +188,11 @@ void UBFeaturesWidget::currentSelected(const QModelIndex &current)
mActionBar->setCurrentState( IN_FOLDER ); mActionBar->setCurrentState( IN_FOLDER );
} }
} }
else if ( feature.getType() == FEATURE_SEARCH )
{
webView->showElement( feature );
switchToWebView();
}
else else
{ {
featureProperties->showElement( feature ); featureProperties->showElement( feature );
@ -307,6 +317,11 @@ void UBFeaturesWidget::switchToProperties()
currentStackedWidget = ID_PROPERTIES; currentStackedWidget = ID_PROPERTIES;
} }
void UBFeaturesWidget::switchToWebView()
{
stackedWidget->setCurrentIndex(ID_WEBVIEW);
currentStackedWidget = ID_WEBVIEW;
}
/* /*
@ -375,6 +390,96 @@ void UBFeaturesListView::dropEvent( QDropEvent *event )
} }
UBFeaturesWebView::UBFeaturesWebView(QWidget* parent, const char* name):QWidget(parent)
, mpView(NULL)
, mpWebSettings(NULL)
, mpLayout(NULL)
, mpSankoreAPI(NULL)
{
setObjectName(name);
SET_STYLE_SHEET();
mpLayout = new QVBoxLayout();
setLayout(mpLayout);
mpView = new QWebView(this);
mpView->setObjectName("SearchEngineView");
mpSankoreAPI = new UBWidgetUniboardAPI(UBApplication::boardController->activeScene());
mpView->page()->mainFrame()->addToJavaScriptWindowObject("sankore", mpSankoreAPI);
mpWebSettings = QWebSettings::globalSettings();
mpWebSettings->setAttribute(QWebSettings::JavaEnabled, true);
mpWebSettings->setAttribute(QWebSettings::PluginsEnabled, true);
mpWebSettings->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, true);
mpWebSettings->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, true);
mpWebSettings->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true);
mpWebSettings->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true);
mpWebSettings->setAttribute(QWebSettings::DnsPrefetchEnabled, true);
mpLayout->addWidget(mpView);
connect(mpView, SIGNAL(loadFinished(bool)), this, SLOT(onLoadFinished(bool)));
}
UBFeaturesWebView::~UBFeaturesWebView()
{
if(NULL != mpSankoreAPI){
delete mpSankoreAPI;
mpSankoreAPI = NULL;
}
if(NULL != mpView){
delete mpView;
mpView = NULL;
}
if(NULL != mpLayout){
delete mpLayout;
mpLayout = NULL;
}
}
void UBFeaturesWebView::showElement(const UBFeature &elem)
{
QString qsWidgetName;
QString path = elem.getFullPath();
QString qsConfigPath = QString("%0/config.xml").arg(path);
if(QFile::exists(qsConfigPath))
{
QFile f(qsConfigPath);
if(f.open(QIODevice::ReadOnly))
{
QDomDocument domDoc;
domDoc.setContent(QString(f.readAll()));
QDomElement root = domDoc.documentElement();
QDomNode node = root.firstChild();
while(!node.isNull())
{
if(node.toElement().tagName() == "content")
{
QDomAttr srcAttr = node.toElement().attributeNode("src");
qsWidgetName = srcAttr.value();
break;
}
node = node.nextSibling();
}
f.close();
}
}
mpView->load(QUrl::fromLocalFile(QString("%0/%1").arg(path).arg(qsWidgetName)));
}
void UBFeaturesWebView::onLoadFinished(bool ok)
{
if(ok && NULL != mpSankoreAPI){
mpView->page()->mainFrame()->addToJavaScriptWindowObject("sankore", mpSankoreAPI);
}
}
UBFeatureProperties::UBFeatureProperties( QWidget *parent, const char *name ) : QWidget(parent) UBFeatureProperties::UBFeatureProperties( QWidget *parent, const char *name ) : QWidget(parent)
, mpLayout(NULL) , mpLayout(NULL)
, mpButtonLayout(NULL) , mpButtonLayout(NULL)

@ -18,6 +18,7 @@
#include "UBDockPaletteWidget.h" #include "UBDockPaletteWidget.h"
//#include "UBLibActionBar.h" //#include "UBLibActionBar.h"
#include "board/UBFeaturesController.h" #include "board/UBFeaturesController.h"
#include "api/UBWidgetUniboardAPI.h"
#include "UBFeaturesActionBar.h" #include "UBFeaturesActionBar.h"
#include "UBRubberBand.h" #include "UBRubberBand.h"
@ -25,6 +26,7 @@
#define THUMBNAIL_WIDTH 400 #define THUMBNAIL_WIDTH 400
#define ID_LISTVIEW 0 #define ID_LISTVIEW 0
#define ID_PROPERTIES 1 #define ID_PROPERTIES 1
#define ID_WEBVIEW 2
class UBListModel; class UBListModel;
@ -38,6 +40,7 @@ class UBFeaturesPathViewer;
class UBFeatureProperties; class UBFeatureProperties;
class UBFeatureItemButton; class UBFeatureItemButton;
class UBFeaturesListView; class UBFeaturesListView;
class UBFeaturesWebView;
class UBFeaturesWidget : public UBDockPaletteWidget class UBFeaturesWidget : public UBDockPaletteWidget
{ {
@ -59,6 +62,7 @@ public:
private: private:
void switchToListView(); void switchToListView();
void switchToProperties(); void switchToProperties();
void switchToWebView();
UBFeaturesController *controller; UBFeaturesController *controller;
@ -79,8 +83,10 @@ private:
QGraphicsScene *pathScene; QGraphicsScene *pathScene;
UBFeaturesActionBar *mActionBar; UBFeaturesActionBar *mActionBar;
UBFeatureProperties *featureProperties; UBFeatureProperties *featureProperties;
UBFeaturesWebView *webView;
QStackedWidget *stackedWidget; QStackedWidget *stackedWidget;
int currentStackedWidget; int currentStackedWidget;
QModelIndex trashIndex; QModelIndex trashIndex;
private slots: private slots:
@ -114,6 +120,24 @@ private:
//QPoint rubberOrigin; //QPoint rubberOrigin;
}; };
class UBFeaturesWebView : public QWidget
{
Q_OBJECT
public:
UBFeaturesWebView(QWidget* parent = 0, const char* name = "UBFeaturesWebView");
~UBFeaturesWebView();
void showElement(const UBFeature &elem);
private slots:
void onLoadFinished(bool ok);
private:
QWebView* mpView;
QWebSettings* mpWebSettings;
QVBoxLayout* mpLayout;
UBWidgetUniboardAPI* mpSankoreAPI;
};
class UBFeatureProperties : public QWidget class UBFeatureProperties : public QWidget
{ {

Loading…
Cancel
Save