Commit 424f91db authored by Aleksei Kanash's avatar Aleksei Kanash

Merge branch 'master' of github.com:Sankore/Sankore-3.1

parents e6194ef5 22b68c8a
...@@ -154,6 +154,10 @@ a { ...@@ -154,6 +154,10 @@ a {
vertical-align: top; vertical-align: top;
} }
.imgContainer img{
max-width: 150px;
max-height:150px;
}
.filterContainer{ .filterContainer{
float: left; float: left;
......
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<script type="text/javascript"> <script type="text/javascript">
var category = "image"; var category = "image";
var thumbnails = true; var thumbnails = true;
var minHeight = 180; var minHeight = 150;
var minWidth = 150; var minWidth = 150;
var currentIndex = 0; var currentIndex = 0;
...@@ -78,12 +78,12 @@ ...@@ -78,12 +78,12 @@
// There is also a result.file property which has the escaped version // There is also a result.file property which has the escaped version
if (thumbnails) { if (thumbnails) {
newImg.src = result.file; newImg.src = result.file;
if(result.height >= result.width) /*if(result.height >= result.width)
newImg.height = minHeight; newImg.height = minHeight;
else{ else{
newImg.width = minWidth; newImg.width = minWidth;
//newImg.style.margin = (120 - result.height)/2 + "px 0"; //newImg.style.margin = (120 - result.height)/2 + "px 0";
} }*/
} else { } else {
newImg.src = "./images/thumbnail_icon.png"; newImg.src = "./images/thumbnail_icon.png";
} }
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
const QString UBFeaturesController::virtualRootName = "root"; const QString UBFeaturesController::virtualRootName = "root";
void UBFeaturesComputingThread::scanFS(const QUrl & currentPath, const QString & currVirtualPath) void UBFeaturesComputingThread::scanFS(const QUrl & currentPath, const QString & currVirtualPath, const QSet<QUrl> &pFavoriteSet)
{ {
Q_ASSERT(QFileInfo(currentPath.toLocalFile()).exists()); Q_ASSERT(QFileInfo(currentPath.toLocalFile()).exists());
...@@ -47,27 +47,29 @@ void UBFeaturesComputingThread::scanFS(const QUrl & currentPath, const QString & ...@@ -47,27 +47,29 @@ void UBFeaturesComputingThread::scanFS(const QUrl & currentPath, const QString &
emit sendFeature(testFeature); emit sendFeature(testFeature);
emit featureSent(); emit featureSent();
emit scanPath(fullFileName);
// featuresList->append(testFeature); if ( pFavoriteSet.find(QUrl::fromLocalFile(fullFileName)) != pFavoriteSet.end()) {
//TODO send favoritePath from the controller or make favoritePath public and static
// if ( favoriteSet->find( QUrl::fromLocalFile( fullFileName ) ) != favoriteSet->end() ) { emit sendFeature(UBFeature( "/root/Favorites", icon, fileName, QUrl::fromLocalFile(fullFileName), featureType));
// featuresList->append( UBFeature( favoritePath, icon, fileName, QUrl::fromLocalFile( fullFileName ), featureType ) ); }
// }
if (featureType == FEATURE_FOLDER) { if (featureType == FEATURE_FOLDER) {
scanFS(QUrl::fromLocalFile(fullFileName), currVirtualPath + "/" + fileName); scanFS(QUrl::fromLocalFile(fullFileName), currVirtualPath + "/" + fileName, pFavoriteSet);
} }
} }
} }
void UBFeaturesComputingThread::scanAll(QList<QPair<QUrl, QString> > pScanningData) void UBFeaturesComputingThread::scanAll(QList<QPair<QUrl, QString> > pScanningData, const QSet<QUrl> &pFavoriteSet)
{ {
for (int i = 0; i < pScanningData.count(); i++) { for (int i = 0; i < pScanningData.count(); i++) {
if (abort) { if (abort) {
return; return;
} }
QPair<QUrl, QString> curPair = pScanningData.at(i); QPair<QUrl, QString> curPair = pScanningData.at(i);
scanFS(curPair.first, curPair.second);
emit scanCategory(UBFeaturesController::categoryNameForVirtualPath(curPair.second));
scanFS(curPair.first, curPair.second, pFavoriteSet);
} }
} }
...@@ -84,8 +86,6 @@ int UBFeaturesComputingThread::featuresCount(const QUrl &pPath) ...@@ -84,8 +86,6 @@ int UBFeaturesComputingThread::featuresCount(const QUrl &pPath)
if (featureType != FEATURE_INVALID && !fullFileName.contains(".thumbnail.")) { if (featureType != FEATURE_INVALID && !fullFileName.contains(".thumbnail.")) {
noItems++; noItems++;
} else {
continue;
} }
if (featureType == FEATURE_FOLDER) { if (featureType == FEATURE_FOLDER) {
...@@ -114,11 +114,12 @@ QThread(parent) ...@@ -114,11 +114,12 @@ QThread(parent)
abort = false; abort = false;
} }
void UBFeaturesComputingThread::compute(const QList<QPair<QUrl, QString> > &pScanningData) void UBFeaturesComputingThread::compute(const QList<QPair<QUrl, QString> > &pScanningData, QSet<QUrl> *pFavoritesSet)
{ {
QMutexLocker curLocker(&mMutex); QMutexLocker curLocker(&mMutex);
mScanningData = pScanningData; mScanningData = pScanningData;
mFavoriteSet = *pFavoritesSet;
if (!isRunning()) { if (!isRunning()) {
start(LowPriority); start(LowPriority);
...@@ -135,6 +136,7 @@ void UBFeaturesComputingThread::run() ...@@ -135,6 +136,7 @@ void UBFeaturesComputingThread::run()
mMutex.lock(); mMutex.lock();
QList<QPair<QUrl, QString> > searchData = mScanningData; QList<QPair<QUrl, QString> > searchData = mScanningData;
QSet<QUrl> favoriteSet = mFavoriteSet;
mMutex.unlock(); mMutex.unlock();
if (abort) { if (abort) {
...@@ -152,7 +154,7 @@ void UBFeaturesComputingThread::run() ...@@ -152,7 +154,7 @@ void UBFeaturesComputingThread::run()
emit maxFilesCountEvaluated(fsCnt); emit maxFilesCountEvaluated(fsCnt);
emit scanStarted(); emit scanStarted();
scanAll(searchData); scanAll(searchData, favoriteSet);
emit scanFinished(); emit scanFinished();
mMutex.lock(); mMutex.lock();
...@@ -210,9 +212,12 @@ bool UBFeature::isFolder() const ...@@ -210,9 +212,12 @@ bool UBFeature::isFolder() const
|| elementType == FEATURE_FOLDER; || elementType == FEATURE_FOLDER;
} }
bool UBFeature::isDeletable()const bool UBFeature::isDeletable() const
{ {
return elementType == FEATURE_ITEM return elementType == FEATURE_ITEM
|| elementType == FEATURE_AUDIO
|| elementType == FEATURE_VIDEO
|| elementType == FEATURE_IMAGE
|| elementType == FEATURE_FOLDER; || elementType == FEATURE_FOLDER;
} }
...@@ -238,6 +243,7 @@ UBFeaturesController::UBFeaturesController(QWidget *pParentWidget) : ...@@ -238,6 +243,7 @@ UBFeaturesController::UBFeaturesController(QWidget *pParentWidget) :
shapesPath = rootPath + "/Shapes"; shapesPath = rootPath + "/Shapes";
trashPath = rootPath + "/Trash"; trashPath = rootPath + "/Trash";
favoritePath = rootPath + "/Favorites"; favoritePath = rootPath + "/Favorites";
webSearchPath = rootPath + "/Web search";
//Initializing physical directories from UBSettings //Initializing physical directories from UBSettings
mUserAudioDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userAudioDirectory()); mUserAudioDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->userAudioDirectory());
...@@ -295,11 +301,10 @@ UBFeaturesController::UBFeaturesController(QWidget *pParentWidget) : ...@@ -295,11 +301,10 @@ UBFeaturesController::UBFeaturesController(QWidget *pParentWidget) :
connect(&mCThread, SIGNAL(scanStarted()), this, SIGNAL(scanStarted())); connect(&mCThread, SIGNAL(scanStarted()), this, SIGNAL(scanStarted()));
connect(&mCThread, SIGNAL(scanFinished()), this, SIGNAL(scanFinished())); connect(&mCThread, SIGNAL(scanFinished()), this, SIGNAL(scanFinished()));
connect(&mCThread, SIGNAL(maxFilesCountEvaluated(int)), this, SIGNAL(maxFilesCountEvaluated(int))); connect(&mCThread, SIGNAL(maxFilesCountEvaluated(int)), this, SIGNAL(maxFilesCountEvaluated(int)));
//Very unsafe function. Considering using deleteLater() instead connect(&mCThread, SIGNAL(scanCategory(QString)), this, SIGNAL(scanCategory(QString)));
// connect(qApp, SIGNAL(aboutToQuit()), &mCThread, SLOT(terminate())); connect(&mCThread, SIGNAL(scanPath(QString)), this, SIGNAL(scanPath(QString)));
QTimer::singleShot(0, this, SLOT(startThread())); QTimer::singleShot(0, this, SLOT(startThread()));
// startThread();
} }
void UBFeaturesController::startThread() void UBFeaturesController::startThread()
...@@ -323,7 +328,7 @@ void UBFeaturesController::startThread() ...@@ -323,7 +328,7 @@ void UBFeaturesController::startThread()
<< QPair<QUrl, QString>(trashDirectoryPath, trashPath) << QPair<QUrl, QString>(trashDirectoryPath, trashPath)
<< QPair<QUrl, QString>(mLibSearchDirectoryPath, rootPath + "/" + "Web search" ); << QPair<QUrl, QString>(mLibSearchDirectoryPath, rootPath + "/" + "Web search" );
mCThread.compute(computingData); mCThread.compute(computingData, favoriteSet);
} }
void UBFeaturesController::scanFS() void UBFeaturesController::scanFS()
...@@ -342,6 +347,7 @@ void UBFeaturesController::scanFS() ...@@ -342,6 +347,7 @@ void UBFeaturesController::scanFS()
<< webSearchElement << webSearchElement
<< trashElement; << trashElement;
//filling favoriteList
loadFavoriteList(); loadFavoriteList();
QList <UBToolsManager::UBToolDescriptor> tools = UBToolsManager::manager()->allTools(); QList <UBToolsManager::UBToolDescriptor> tools = UBToolsManager::manager()->allTools();
...@@ -352,52 +358,7 @@ void UBFeaturesController::scanFS() ...@@ -352,52 +358,7 @@ void UBFeaturesController::scanFS()
featuresList->append(UBFeature(favoritePath, tool.icon.toImage(), tool.label, QUrl(tool.id), FEATURE_INTERNAL)); featuresList->append(UBFeature(favoritePath, tool.icon.toImage(), tool.label, QUrl(tool.id), FEATURE_INTERNAL));
} }
} }
QTime time = QTime::currentTime();
//Claudio:
// don't change the order of the scans
// fileSystemScan( mLibAudiosDirectoryPath, audiosPath);
// fileSystemScan( mLibVideosDirectoryPath, moviesPath);
// fileSystemScan( mLibAnimationsDirectoryPath, flashPath);
// fileSystemScan( mLibPicturesDirectoryPath, picturesPath );
// fileSystemScan( mUserInteractiveDirectoryPath, appPath );
// fileSystemScan( mUserAudioDirectoryPath, audiosPath );
// fileSystemScan( mUserPicturesDirectoryPath, picturesPath );
// fileSystemScan( mUserVideoDirectoryPath, moviesPath );
// fileSystemScan( mUserAnimationDirectoryPath, flashPath );
// fileSystemScan( mLibApplicationsDirectoryPath, appPath );
// fileSystemScan( mLibShapesDirectoryPath, shapesPath );
// fileSystemScan( mLibInteractiveDirectoryPath, interactPath );
// fileSystemScan( trashDirectoryPath, trashPath );
// fileSystemScan( mLibSearchDirectoryPath, rootPath + "/" + "Web search" );
int i =0;
i += featuresCount(mLibAudiosDirectoryPath);
i += featuresCount(mLibVideosDirectoryPath);
i += featuresCount(mLibAnimationsDirectoryPath);
i += featuresCount(mLibPicturesDirectoryPath);
i += featuresCount(mUserInteractiveDirectoryPath);
i += featuresCount(mUserAudioDirectoryPath);
i += featuresCount(mUserPicturesDirectoryPath);
i += featuresCount(mUserVideoDirectoryPath);
i += featuresCount(mUserAnimationDirectoryPath);
i += featuresCount(mLibApplicationsDirectoryPath);
i += featuresCount(mLibShapesDirectoryPath);
i += featuresCount(mLibInteractiveDirectoryPath);
i += featuresCount(trashDirectoryPath);
i += featuresCount(mLibSearchDirectoryPath);
int msecs = QTime(time).msecsTo(QTime::currentTime());
qDebug() << "Loading library" << msecs << "msecs\nNumber of elements" << i;
// emit TopIndexingLimitSet(i);
// emit indexingProgressValueChanged(i / 4);
} }
void UBFeaturesController::fileSystemScan(const QUrl & currentPath, const QString & currVirtualPath) void UBFeaturesController::fileSystemScan(const QUrl & currentPath, const QString & currVirtualPath)
{ {
QFileInfoList fileInfoList = UBFileSystemUtils::allElementsInDirectory(currentPath.toLocalFile()); QFileInfoList fileInfoList = UBFileSystemUtils::allElementsInDirectory(currentPath.toLocalFile());
...@@ -492,7 +453,8 @@ void UBFeaturesController::addToFavorite( const QUrl &path ) ...@@ -492,7 +453,8 @@ void UBFeaturesController::addToFavorite( const QUrl &path )
{ {
QFileInfo fileInfo( filePath ); QFileInfo fileInfo( filePath );
QString fileName = fileInfo.fileName(); QString fileName = fileInfo.fileName();
UBFeature elem(favoritePath, getIcon( filePath, FEATURE_CATEGORY ), fileName, path, fileTypeFromUrl(filePath) ); UBFeatureElementType type = fileTypeFromUrl(fileInfo.absoluteFilePath());
UBFeature elem(favoritePath, getIcon(filePath, type), fileName, path, fileTypeFromUrl(filePath) );
favoriteSet->insert( path ); favoriteSet->insert( path );
saveFavoriteList(); saveFavoriteList();
...@@ -524,7 +486,7 @@ QString UBFeaturesController::fileNameFromUrl( const QUrl &url ) ...@@ -524,7 +486,7 @@ QString UBFeaturesController::fileNameFromUrl( const QUrl &url )
} }
UBFeatureElementType UBFeaturesController::fileTypeFromUrl( const QString &path ) UBFeatureElementType UBFeaturesController::fileTypeFromUrl(const QString &path)
{ {
QFileInfo fileInfo(path); QFileInfo fileInfo(path);
...@@ -535,7 +497,7 @@ UBFeatureElementType UBFeaturesController::fileTypeFromUrl( const QString &path ...@@ -535,7 +497,7 @@ UBFeatureElementType UBFeaturesController::fileTypeFromUrl( const QString &path
QString fileName = fileInfo.fileName(); QString fileName = fileInfo.fileName();
QString mimeString = UBFileSystemUtils::mimeTypeFromFileName(fileName); QString mimeString = UBFileSystemUtils::mimeTypeFromFileName(fileName);
UBFeatureElementType fileType = fileInfo.isDir() ? FEATURE_FOLDER : FEATURE_ITEM; UBFeatureElementType fileType = FEATURE_INVALID;
if ( mimeString.contains("application")) { if ( mimeString.contains("application")) {
if (mimeString.contains("application/search")) { if (mimeString.contains("application/search")) {
...@@ -545,6 +507,16 @@ UBFeatureElementType UBFeaturesController::fileTypeFromUrl( const QString &path ...@@ -545,6 +507,16 @@ UBFeatureElementType UBFeaturesController::fileTypeFromUrl( const QString &path
} }
} else if ( path.contains("uniboardTool://")) { } else if ( path.contains("uniboardTool://")) {
fileType = FEATURE_INTERNAL; fileType = FEATURE_INTERNAL;
} else if (mimeString.contains("audio")) {
fileType = FEATURE_AUDIO;
} else if (mimeString.contains("video")) {
fileType = FEATURE_VIDEO;
} else if (mimeString.contains("image")) {
fileType = FEATURE_IMAGE;
} else if (fileInfo.isDir()) {
fileType = FEATURE_FOLDER;
} else {
fileType = FEATURE_INVALID;
} }
return fileType; return fileType;
...@@ -554,64 +526,65 @@ QImage UBFeaturesController::getIcon(const QString &path, UBFeatureElementType p ...@@ -554,64 +526,65 @@ QImage UBFeaturesController::getIcon(const QString &path, UBFeatureElementType p
{ {
if (pFType == FEATURE_FOLDER) { if (pFType == FEATURE_FOLDER) {
return QImage(":images/libpalette/folder.svg"); return QImage(":images/libpalette/folder.svg");
} else if (pFType == FEATURE_INTERACTIVE || pFType == FEATURE_SEARCH) {
} else if (pFType == FEATURE_INTERACTIVE) {
return QImage(UBGraphicsWidgetItem::iconFilePath(QUrl::fromLocalFile(path))); return QImage(UBGraphicsWidgetItem::iconFilePath(QUrl::fromLocalFile(path)));
} else if (pFType == FEATURE_INTERNAL) {
return QImage(UBToolsManager::manager()->iconFromToolId(path));
} else if (pFType == FEATURE_AUDIO) {
return QImage(":images/libpalette/soundIcon.svg");
} else if (pFType == FEATURE_VIDEO) {
return QImage(":images/libpalette/movieIcon.svg");
} else if (pFType == FEATURE_IMAGE) {
QImage pix(path);
if (pix.isNull()) {
pix = QImage(":images/libpalette/notFound.png");
} else {
pix = pix.scaledToWidth(qMin(UBSettings::maxThumbnailWidth, pix.width()));
} }
return pix;
if ( path.contains("uniboardTool://") ) {
return QImage( UBToolsManager::manager()->iconFromToolId(path) );
} if ( UBFileSystemUtils::mimeTypeFromFileName(path).contains("application")) {
return QImage( UBGraphicsWidgetItem::iconFilePath( QUrl::fromLocalFile(path) ) );
} }
QImage thumb; return QImage(":images/libpalette/notFound.png");
QString thumbnailPath = UBFileSystemUtils::thumbnailPath(path);
if ( QFileInfo( thumbnailPath ).exists() )
thumb = QImage( thumbnailPath );
else thumb = createThumbnail( path );
return thumb;
} }
bool UBFeaturesController::isDeletable( const QUrl &url ) bool UBFeaturesController::isDeletable( const QUrl &url )
{ {
UBFeatureElementType type = fileTypeFromUrl( fileNameFromUrl(url) ); UBFeatureElementType type = fileTypeFromUrl(fileNameFromUrl(url));
return type == FEATURE_ITEM; return type == FEATURE_AUDIO
|| type == FEATURE_VIDEO
|| type == FEATURE_IMAGE
|| type == FEATURE_ITEM;
}
QString UBFeaturesController::categoryNameForVirtualPath(const QString &str)
{
QString result;
int ind = str.lastIndexOf("/");
if (ind != -1) {
result = str.right(str.count() - ind - 1);
}
return result;
} }
QImage UBFeaturesController::createThumbnail(const QString &path) QImage UBFeaturesController::createThumbnail(const QString &path)
{ {
QString thumbnailPath = UBFileSystemUtils::thumbnailPath(path); QString thumbnailPath = path;
QString mimetype = UBFileSystemUtils::mimeTypeFromFileName(path); QString mimetype = UBFileSystemUtils::mimeTypeFromFileName(path);
QString extension = QFileInfo(path).completeSuffix();
if ( mimetype.contains("audio" )) if ( mimetype.contains("audio" )) {
thumbnailPath = ":images/libpalette/soundIcon.svg"; thumbnailPath = ":images/libpalette/soundIcon.svg";
else if ( mimetype.contains("video") ) } else if ( mimetype.contains("video")) {
thumbnailPath = ":images/libpalette/movieIcon.svg"; thumbnailPath = ":images/libpalette/movieIcon.svg";
else } else {
{
if ( extension.startsWith("svg", Qt::CaseInsensitive) || extension.startsWith("svgz", Qt::CaseInsensitive) )
{
thumbnailPath = path;
}
else
{
QImage pix(path); QImage pix(path);
if (!pix.isNull()) if (!pix.isNull()) {
{
pix = pix.scaledToWidth(qMin(UBSettings::maxThumbnailWidth, pix.width()), Qt::SmoothTransformation); pix = pix.scaledToWidth(qMin(UBSettings::maxThumbnailWidth, pix.width()), Qt::SmoothTransformation);
pix.save(thumbnailPath); return pix;
UBPlatformUtils::hideFile(thumbnailPath);
} } else {
else{
thumbnailPath = ":images/libpalette/notFound.png"; thumbnailPath = ":images/libpalette/notFound.png";
} }
}
} }
return QImage(thumbnailPath); return QImage(thumbnailPath);
......
...@@ -33,7 +33,7 @@ class UBFeaturesComputingThread : public QThread ...@@ -33,7 +33,7 @@ class UBFeaturesComputingThread : public QThread
public: public:
explicit UBFeaturesComputingThread(QObject *parent = 0); explicit UBFeaturesComputingThread(QObject *parent = 0);
virtual ~UBFeaturesComputingThread(); virtual ~UBFeaturesComputingThread();
void compute(const QList<QPair<QUrl, QString> > &pScanningData); void compute(const QList<QPair<QUrl, QString> > &pScanningData, QSet<QUrl> *pFavoritesSet);
protected: protected:
void run(); void run();
...@@ -44,12 +44,14 @@ signals: ...@@ -44,12 +44,14 @@ signals:
void scanStarted(); void scanStarted();
void scanFinished(); void scanFinished();
void maxFilesCountEvaluated(int max); void maxFilesCountEvaluated(int max);
void scanCategory(const QString &str);
void scanPath(const QString &str);
public slots: public slots:
private: private:
void scanFS(const QUrl & currentPath, const QString & currVirtualPath); void scanFS(const QUrl & currentPath, const QString & currVirtualPath, const QSet<QUrl> &pFavoriteSet);
void scanAll(QList<QPair<QUrl, QString> > pScanningData); void scanAll(QList<QPair<QUrl, QString> > pScanningData, const QSet<QUrl> &pFavoriteSet);
int featuresCount(const QUrl &pPath); int featuresCount(const QUrl &pPath);
int featuresCountAll(QList<QPair<QUrl, QString> > pScanningData); int featuresCountAll(QList<QPair<QUrl, QString> > pScanningData);
...@@ -59,6 +61,7 @@ private: ...@@ -59,6 +61,7 @@ private:
QUrl mScanningPath; QUrl mScanningPath;
QString mScanningVirtualPath; QString mScanningVirtualPath;
QList<QPair<QUrl, QString> > mScanningData; QList<QPair<QUrl, QString> > mScanningData;
QSet<QUrl> mFavoriteSet;
bool restart; bool restart;
bool abort; bool abort;
}; };
...@@ -72,6 +75,9 @@ enum UBFeatureElementType ...@@ -72,6 +75,9 @@ enum UBFeatureElementType
FEATURE_INTERACTIVE, FEATURE_INTERACTIVE,
FEATURE_INTERNAL, FEATURE_INTERNAL,
FEATURE_ITEM, FEATURE_ITEM,
FEATURE_AUDIO,
FEATURE_VIDEO,
FEATURE_IMAGE,
FEATURE_TRASH, FEATURE_TRASH,
FEATURE_FAVORITE, FEATURE_FAVORITE,
FEATURE_SEARCH, FEATURE_SEARCH,
...@@ -107,6 +113,7 @@ public: ...@@ -107,6 +113,7 @@ public:
private: private:
QString virtualDir; QString virtualDir;
QString virtualPath;
QImage mThumbnail; QImage mThumbnail;
QString mName; QString mName;
QUrl mPath; QUrl mPath;
...@@ -167,6 +174,7 @@ public: ...@@ -167,6 +174,7 @@ public:
static QImage getIcon( const QString &path, UBFeatureElementType pFType ); static QImage getIcon( const QString &path, UBFeatureElementType pFType );
static bool isDeletable( const QUrl &url ); static bool isDeletable( const QUrl &url );
static char featureTypeSplitter() {return ':';} static char featureTypeSplitter() {return ':';}
static QString categoryNameForVirtualPath(const QString &str);
static const QString virtualRootName; static const QString virtualRootName;
...@@ -178,6 +186,8 @@ signals: ...@@ -178,6 +186,8 @@ signals:
void scanStarted(); void scanStarted();
void scanFinished(); void scanFinished();
void featureAddedFromThread(); void featureAddedFromThread();
void scanCategory(const QString &);
void scanPath(const QString &);
private slots: private slots:
void addNewFolder(QString name); void addNewFolder(QString name);
...@@ -233,6 +243,7 @@ private: ...@@ -233,6 +243,7 @@ private:
QString interactPath; QString interactPath;
QString trashPath; QString trashPath;
QString favoritePath; QString favoritePath;
QString webSearchPath;
int mLastItemOffsetIndex; int mLastItemOffsetIndex;
UBFeature currentElement; UBFeature currentElement;
......
...@@ -81,7 +81,9 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name) ...@@ -81,7 +81,9 @@ UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name)
connect(controller, SIGNAL(scanStarted()), mActionBar, SLOT(lockIt())); connect(controller, SIGNAL(scanStarted()), mActionBar, SLOT(lockIt()));
connect(controller, SIGNAL(scanFinished()), mActionBar, SLOT(unlockIt())); connect(controller, SIGNAL(scanFinished()), mActionBar, SLOT(unlockIt()));
connect(controller, SIGNAL(maxFilesCountEvaluated(int)), centralWidget, SIGNAL(maxFilesCountEvaluated(int))); connect(controller, SIGNAL(maxFilesCountEvaluated(int)), centralWidget, SIGNAL(maxFilesCountEvaluated(int)));
connect(controller, SIGNAL(featureAddedFromThread()), centralWidget, SLOT(increaseStatusBarValue())); connect(controller, SIGNAL(featureAddedFromThread()), centralWidget, SIGNAL(increaseStatusBarValue()));
connect(controller, SIGNAL(scanCategory(QString)), centralWidget, SIGNAL(scanCategory(QString)));
connect(controller, SIGNAL(scanPath(QString)), centralWidget, SIGNAL(scanPath(QString)));
} }
UBFeaturesWidget::~UBFeaturesWidget() UBFeaturesWidget::~UBFeaturesWidget()
...@@ -497,15 +499,14 @@ UBFeaturesCentralWidget::UBFeaturesCentralWidget(QWidget *parent) : QWidget(pare ...@@ -497,15 +499,14 @@ UBFeaturesCentralWidget::UBFeaturesCentralWidget(QWidget *parent) : QWidget(pare
connect(this, SIGNAL(sendFileNameList(QStringList)), dlg, SLOT(setFileNameList(QStringList))); connect(this, SIGNAL(sendFileNameList(QStringList)), dlg, SLOT(setFileNameList(QStringList)));
//Progress bar to show scanning progress //Progress bar to show scanning progress
QProgressBar *progressBar = new QProgressBar(); UBFeaturesProgressInfo *progressBar = new UBFeaturesProgressInfo();
mAdditionalDataContainer->addWidget(progressBar); mAdditionalDataContainer->addWidget(progressBar);
mAdditionalDataContainer->setCurrentIndex(ProgressBarWidget); mAdditionalDataContainer->setCurrentIndex(ProgressBarWidget);
progressBar->setMinimum(0);
progressBar->setValue(0);
progressBar->setMaximum(10000);
connect(this, SIGNAL(maxFilesCountEvaluated(int)), progressBar, SLOT(setProgressMax(int)));
connect(this, SIGNAL(maxFilesCountEvaluated(int)), progressBar, SLOT(setMaximum(int))); connect(this, SIGNAL(increaseStatusBarValue()), progressBar, SLOT(increaseProgressValue()));
connect(this, SIGNAL(scanCategory(QString)), progressBar, SLOT(setCommmonInfoText(QString)));
connect(this, SIGNAL(scanPath(QString)), progressBar, SLOT(setDetailedInfoText(QString)));
mLayout->addWidget(mStackedWidget, 1); mLayout->addWidget(mStackedWidget, 1);
mLayout->addWidget(mAdditionalDataContainer, 0); mLayout->addWidget(mAdditionalDataContainer, 0);
...@@ -546,6 +547,11 @@ UBFeature UBFeaturesCentralWidget::getCurElementFromProperties() ...@@ -546,6 +547,11 @@ UBFeature UBFeaturesCentralWidget::getCurElementFromProperties()
void UBFeaturesCentralWidget::showAdditionalData(AddWidget pWidgetType, AddWidgetState pState) void UBFeaturesCentralWidget::showAdditionalData(AddWidget pWidgetType, AddWidgetState pState)
{ {
if (!mAdditionalDataContainer->widget(pWidgetType)) {
qDebug() << "can't find widget specified by UBFeaturesCentralWidget::showAdditionalData(AddWidget pWidgetType, AddWidgetState pState)";
return;
}
mAdditionalDataContainer->setMaximumHeight(mAdditionalDataContainer->widget(pWidgetType)->sizeHint().height()); mAdditionalDataContainer->setMaximumHeight(mAdditionalDataContainer->widget(pWidgetType)->sizeHint().height());
mAdditionalDataContainer->setCurrentIndex(pWidgetType); mAdditionalDataContainer->setCurrentIndex(pWidgetType);
...@@ -573,46 +579,21 @@ void UBFeaturesCentralWidget::hideAdditionalData() ...@@ -573,46 +579,21 @@ void UBFeaturesCentralWidget::hideAdditionalData()
void UBFeaturesCentralWidget::scanStarted() void UBFeaturesCentralWidget::scanStarted()
{ {
if (!mAdditionalDataContainer->widget(ProgressBarWidget)) { showAdditionalData(ProgressBarWidget);
return;
}
QProgressBar *progressBar = qobject_cast<QProgressBar*>(mAdditionalDataContainer->widget(ProgressBarWidget));
if (progressBar && !progressBar->isVisible()) {
showAdditionalData((AddWidget)1);
}
} }
void UBFeaturesCentralWidget::scanFinished() void UBFeaturesCentralWidget::scanFinished()
{ {
if (!mAdditionalDataContainer->widget(ProgressBarWidget)) {
return;
}
QProgressBar *progressBar = qobject_cast<QProgressBar*>(mAdditionalDataContainer->widget(ProgressBarWidget));
if (progressBar && progressBar->isVisible()) {
hideAdditionalData(); hideAdditionalData();
qDebug() << "progressBar max value is " << progressBar->maximum();
}
}
void UBFeaturesCentralWidget::increaseStatusBarValue()
{
if (!mAdditionalDataContainer->widget(ProgressBarWidget)) {
return;
}
QProgressBar *progressBar = qobject_cast<QProgressBar*>(mAdditionalDataContainer->widget(ProgressBarWidget));
if (progressBar) {
progressBar->setValue(progressBar->value() + 1);
}
} }
UBFeaturesNewFolderDialog::UBFeaturesNewFolderDialog(QWidget *parent) : QWidget(parent) UBFeaturesNewFolderDialog::UBFeaturesNewFolderDialog(QWidget *parent) : QWidget(parent)
{ {
this->setStyleSheet("background:white;"); this->setStyleSheet("background:white;");
QVBoxLayout *mainLayout = new QVBoxLayout(); QVBoxLayout *mainLayout = new QVBoxLayout(this);
setLayout(mainLayout);
QVBoxLayout *labelLayout = new QVBoxLayout(this); QVBoxLayout *labelLayout = new QVBoxLayout();
QLabel *mLabel = new QLabel(labelText, this); QLabel *mLabel = new QLabel(labelText, this);
mLineEdit = new QLineEdit(this); mLineEdit = new QLineEdit(this);
...@@ -622,7 +603,7 @@ UBFeaturesNewFolderDialog::UBFeaturesNewFolderDialog(QWidget *parent) : QWidget( ...@@ -622,7 +603,7 @@ UBFeaturesNewFolderDialog::UBFeaturesNewFolderDialog(QWidget *parent) : QWidget(
labelLayout->addWidget(mLabel); labelLayout->addWidget(mLabel);
labelLayout->addWidget(mLineEdit); labelLayout->addWidget(mLineEdit);
QHBoxLayout *buttonLayout = new QHBoxLayout(this); QHBoxLayout *buttonLayout = new QHBoxLayout();
acceptButton = new QPushButton(acceptText, this); acceptButton = new QPushButton(acceptText, this);
QPushButton *cancelButton = new QPushButton(cancelText, this); QPushButton *cancelButton = new QPushButton(cancelText, this);
...@@ -676,6 +657,64 @@ void UBFeaturesNewFolderDialog::reactOnTextChanged(const QString &pStr) ...@@ -676,6 +657,64 @@ void UBFeaturesNewFolderDialog::reactOnTextChanged(const QString &pStr)
} }
} }
UBFeaturesProgressInfo::UBFeaturesProgressInfo(QWidget *parent) :
QWidget(parent),
mProgressBar(0),
mCommonInfoLabel(0),
mDetailedInfoLabel(0)
{
QVBoxLayout *mainLayer = new QVBoxLayout(this);
mProgressBar = new QProgressBar(this);
// setting defaults
mProgressBar->setMinimum(0);
mProgressBar->setMaximum(100000);
mProgressBar->setValue(0);
mProgressBar->setStyleSheet("background:white");
mCommonInfoLabel = new QLabel(this);
mDetailedInfoLabel = new QLabel(this);
mDetailedInfoLabel->setAlignment(Qt::AlignRight);
mCommonInfoLabel->hide();
mDetailedInfoLabel->hide();
mainLayer->addWidget(mCommonInfoLabel);
mainLayer->addWidget(mDetailedInfoLabel);
mainLayer->addWidget(mProgressBar);
}
void UBFeaturesProgressInfo::setCommmonInfoText(const QString &str)
{
mProgressBar->setFormat(str + tr(" load") + "(%p%)");
}
void UBFeaturesProgressInfo::setDetailedInfoText(const QString &str)
{
mDetailedInfoLabel->setText(str);
}
void UBFeaturesProgressInfo::setProgressMax(int pValue)
{
mProgressBar->setMaximum(pValue);
}
void UBFeaturesProgressInfo::setProgressMin(int pValue)
{
mProgressBar->setMinimum(pValue);
}
void UBFeaturesProgressInfo::increaseProgressValue()
{
mProgressBar->setValue(mProgressBar->value() + 1);
}
void UBFeaturesProgressInfo::sendFeature(UBFeature pFeature)
{
Q_UNUSED(pFeature);
}
UBFeaturesWebView::UBFeaturesWebView(QWidget* parent, const char* name):QWidget(parent) UBFeaturesWebView::UBFeaturesWebView(QWidget* parent, const char* name):QWidget(parent)
, mpView(NULL) , mpView(NULL)
, mpWebSettings(NULL) , mpWebSettings(NULL)
...@@ -1295,6 +1334,9 @@ Qt::ItemFlags UBFeaturesModel::flags( const QModelIndex &index ) const ...@@ -1295,6 +1334,9 @@ Qt::ItemFlags UBFeaturesModel::flags( const QModelIndex &index ) const
UBFeature item = index.data( Qt::UserRole + 1 ).value<UBFeature>(); UBFeature item = index.data( Qt::UserRole + 1 ).value<UBFeature>();
if ( item.getType() == FEATURE_INTERACTIVE if ( item.getType() == FEATURE_INTERACTIVE
|| item.getType() == FEATURE_ITEM || item.getType() == FEATURE_ITEM
|| item.getType() == FEATURE_AUDIO
|| item.getType() == FEATURE_VIDEO
|| item.getType() == FEATURE_IMAGE
|| item.getType() == FEATURE_INTERNAL || item.getType() == FEATURE_INTERNAL
|| item.getType() == FEATURE_FOLDER) || item.getType() == FEATURE_FOLDER)
...@@ -1340,7 +1382,10 @@ bool UBFeaturesSearchProxyModel::filterAcceptsRow( int sourceRow, const QModelIn ...@@ -1340,7 +1382,10 @@ bool UBFeaturesSearchProxyModel::filterAcceptsRow( int sourceRow, const QModelIn
UBFeature feature = sourceModel()->data(index, Qt::UserRole + 1).value<UBFeature>(); UBFeature feature = sourceModel()->data(index, Qt::UserRole + 1).value<UBFeature>();
bool isFile = feature.getType() == FEATURE_INTERACTIVE bool isFile = feature.getType() == FEATURE_INTERACTIVE
|| feature.getType() == FEATURE_INTERNAL || feature.getType() == FEATURE_INTERNAL
|| feature.getType() == FEATURE_ITEM; || feature.getType() == FEATURE_ITEM
|| feature.getType() == FEATURE_AUDIO
|| feature.getType() == FEATURE_VIDEO
|| feature.getType() == FEATURE_IMAGE;
return isFile && filterRegExp().exactMatch( feature.getName() ); return isFile && filterRegExp().exactMatch( feature.getName() );
} }
......
...@@ -45,6 +45,7 @@ class UBFeaturesNavigatorWidget; ...@@ -45,6 +45,7 @@ class UBFeaturesNavigatorWidget;
class UBFeaturesMimeData; class UBFeaturesMimeData;
class UBFeaturesCentralWidget; class UBFeaturesCentralWidget;
class UBFeaturesNewFolderDialog; class UBFeaturesNewFolderDialog;
class UBFeaturesProgressBar;
class UBFeaturesWidget : public UBDockPaletteWidget class UBFeaturesWidget : public UBDockPaletteWidget
{ {
...@@ -189,7 +190,6 @@ public: ...@@ -189,7 +190,6 @@ public:
void setPropertiesThumbnail(const QPixmap &pix); void setPropertiesThumbnail(const QPixmap &pix);
StackElement currentView() const {return static_cast<StackElement>(mStackedWidget->currentIndex());} StackElement currentView() const {return static_cast<StackElement>(mStackedWidget->currentIndex());}
UBFeature getCurElementFromProperties(); UBFeature getCurElementFromProperties();
void showAdditionalData(AddWidget pWidgetType, AddWidgetState pState = NonModal);
void setLockedExcludingAdditional(bool pLock); void setLockedExcludingAdditional(bool pLock);
...@@ -207,6 +207,12 @@ signals: ...@@ -207,6 +207,12 @@ signals:
// progressbar widget related signals // progressbar widget related signals
void maxFilesCountEvaluated(int pValue); void maxFilesCountEvaluated(int pValue);
void increaseStatusBarValue();
void scanCategory(const QString &);
void scanPath(const QString &);
public slots:
void showAdditionalData(AddWidget pWidgetType, AddWidgetState pState = NonModal);
private slots: private slots:
void createNewFolderSlot(QString pStr); void createNewFolderSlot(QString pStr);
...@@ -214,7 +220,6 @@ private slots: ...@@ -214,7 +220,6 @@ private slots:
void scanStarted(); void scanStarted();
void scanFinished(); void scanFinished();
void increaseStatusBarValue();
private: private:
...@@ -252,6 +257,27 @@ private: ...@@ -252,6 +257,27 @@ private:
}; };
class UBFeaturesProgressInfo: public QWidget {
Q_OBJECT
public:
UBFeaturesProgressInfo(QWidget *parent = 0);
private slots:
void setCommmonInfoText(const QString &str);
void setDetailedInfoText(const QString &str);
void setProgressMin(int pValue);
void setProgressMax(int pValue);
void increaseProgressValue();
void sendFeature(UBFeature pFeature);
private:
QProgressBar *mProgressBar;
QLabel *mCommonInfoLabel;
QLabel *mDetailedInfoLabel;
};
class UBFeaturesWebView : public QWidget class UBFeaturesWebView : public QWidget
{ {
Q_OBJECT Q_OBJECT
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment