You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
262 lines
8.4 KiB
262 lines
8.4 KiB
#include "UBFeaturesActionBar.h"
|
|
#include "core/memcheck.h"
|
|
#include "gui/UBFeaturesWidget.h"
|
|
|
|
UBFeaturesActionBar::UBFeaturesActionBar( UBFeaturesController *controller, QWidget* parent, const char* name ) : QWidget (parent)
|
|
, featuresController(controller)
|
|
, mButtonGroup(NULL)
|
|
, mSearchBar(NULL)
|
|
, mLayout(NULL)
|
|
, mpFavoriteAction(NULL)
|
|
, mpSocialAction(NULL)
|
|
, mpRescanModelAction(NULL)
|
|
, mpDeleteAction(NULL)
|
|
, mpSearchAction(NULL)
|
|
, mpCloseAction(NULL)
|
|
, mpRemoveFavorite(NULL)
|
|
, mpNewFolderAction(NULL)
|
|
, mpFavoriteBtn(NULL)
|
|
, mpSocialBtn(NULL)
|
|
, mpRescanModelBtn(NULL)
|
|
, mpDeleteBtn(NULL)
|
|
, mpCloseBtn(NULL)
|
|
, mpRemoveFavoriteBtn(NULL)
|
|
, mpNewFolderBtn(NULL)
|
|
{
|
|
setObjectName(name);
|
|
setStyleSheet(QString("background: #EEEEEE; border-radius : 10px; border : 2px solid #999999;"));
|
|
|
|
setAcceptDrops(true);
|
|
|
|
mButtonGroup = new QButtonGroup(this);
|
|
mSearchBar = new QLineEdit(this);
|
|
mSearchBar->setStyleSheet(QString("background-color:white; border-radius : 10px; padding : 2px;"));
|
|
|
|
mLayout = new QHBoxLayout();
|
|
setLayout(mLayout);
|
|
|
|
setMaximumHeight(ACTIONBAR_HEIGHT);
|
|
|
|
// Create the actions
|
|
mpFavoriteAction = new QAction(QIcon(":/images/libpalette/miniFavorite.png"), tr("Add to favorites"), this);
|
|
mpSocialAction = new QAction(QIcon(":/images/libpalette/social.png"), tr("Share"), this);
|
|
mpSearchAction = new QAction(QIcon(":/images/libpalette/miniSearch.png"), tr("Search"), this);
|
|
mpRescanModelAction = new QAction(QIcon(":/images/cursors/rotate.png"), tr("Rescan file system"), this);
|
|
mpDeleteAction = new QAction(QIcon(":/images/libpalette/miniTrash.png"), tr("Delete"), this);
|
|
mpCloseAction = new QAction(QIcon(":/images/close.svg"), tr("Back to folder"), this);
|
|
mpRemoveFavorite = new QAction(QIcon(":/images/libpalette/trash_favorite.svg"), tr("Remove from favorites"), this);
|
|
mpNewFolderAction = new QAction(QIcon(":/images/libpalette/miniNewFolder.png"), tr("Create new folder"), this);
|
|
|
|
// Create the buttons
|
|
mpFavoriteBtn = new UBActionButton(this, mpFavoriteAction);
|
|
mpSocialBtn = new UBActionButton(this, mpSocialAction);
|
|
|
|
//mpSearchBtn = new UBActionButton(this, mpSearchAction);
|
|
mpRescanModelBtn = new UBActionButton(this, mpRescanModelAction);
|
|
|
|
mpDeleteBtn = new UBActionButton(this, mpDeleteAction);
|
|
mpCloseBtn = new UBActionButton(this, mpCloseAction);
|
|
mpRemoveFavoriteBtn = new UBActionButton(this, mpRemoveFavorite);
|
|
mpNewFolderBtn = new UBActionButton(this, mpNewFolderAction);
|
|
|
|
// Initialize the buttons
|
|
//mpSearchBtn->setEnabled(false);
|
|
mpNewFolderBtn->setEnabled(false);
|
|
|
|
// Add the buttons to the button group
|
|
mButtonGroup->addButton(mpFavoriteBtn);
|
|
mButtonGroup->addButton(mpSocialBtn);
|
|
//mButtonGroup->addButton(mpSearchBtn);
|
|
mButtonGroup->addButton(mpDeleteBtn);
|
|
mButtonGroup->addButton(mpCloseBtn);
|
|
mButtonGroup->addButton(mpRemoveFavoriteBtn);
|
|
mButtonGroup->addButton(mpNewFolderBtn);
|
|
// Connect signals & slots
|
|
/*connect(mpFavoriteAction,SIGNAL(triggered()), this, SLOT(onActionFavorite()));
|
|
connect(mpSocialAction,SIGNAL(triggered()), this, SLOT(onActionSocial()));
|
|
connect(mpSearchAction,SIGNAL(triggered()), this, SLOT(onActionSearch()));
|
|
connect(mpDeleteAction,SIGNAL(triggered()), this, SLOT(onActionTrash()));
|
|
connect(mpCloseAction, SIGNAL(triggered()), this, SLOT(onActionClose()));
|
|
connect(mpRemoveFavorite, SIGNAL(triggered()), this, SLOT(onActionRemoveFavorite()));
|
|
connect(mSearchBar, SIGNAL(textChanged(QString)), this, SLOT(onSearchTextChanged(QString)));
|
|
connect(mpNewFolderAction, SIGNAL(triggered()), this, SLOT(onActionNewFolder()));*/
|
|
|
|
connect(mpFavoriteAction,SIGNAL(triggered()), this, SLOT(onActionFavorite()));
|
|
connect(mSearchBar, SIGNAL(textChanged(QString)), this, SLOT(onSearchTextChanged(QString)));
|
|
connect(mpNewFolderAction, SIGNAL(triggered()), this, SLOT(onActionNewFolder()));
|
|
connect(mpRemoveFavorite, SIGNAL(triggered()), this, SLOT(onActionRemoveFavorite()));
|
|
connect(mpRescanModelAction, SIGNAL(triggered()), this , SLOT(onActionRescanModel()));
|
|
connect(mpDeleteAction,SIGNAL(triggered()), this, SLOT(onActionTrash()));
|
|
|
|
|
|
// Build the default toolbar
|
|
mLayout->addWidget(mpFavoriteBtn);
|
|
mLayout->addWidget(mpSocialBtn);
|
|
mLayout->addWidget(mpNewFolderBtn);
|
|
mLayout->addWidget(mSearchBar);
|
|
//mLayout->addWidget(mpSearchBtn);
|
|
mLayout->addWidget(mpRescanModelBtn);
|
|
mLayout->addWidget(mpDeleteBtn);
|
|
mLayout->addWidget(mpCloseBtn);
|
|
mLayout->addWidget(mpRemoveFavoriteBtn);
|
|
setCurrentState( IN_ROOT );
|
|
mpDeleteBtn->setAcceptDrops(true);
|
|
setAcceptDrops( true );
|
|
}
|
|
|
|
void UBFeaturesActionBar::setCurrentState( UBFeaturesActionBarState state )
|
|
{
|
|
currentState = state;
|
|
setButtons();
|
|
}
|
|
|
|
void UBFeaturesActionBar::setButtons()
|
|
{
|
|
switch( currentState )
|
|
{
|
|
case IN_FOLDER:
|
|
mpFavoriteBtn->show();
|
|
mpSocialBtn->hide();
|
|
mSearchBar->show();
|
|
mpDeleteBtn->show();
|
|
mpCloseBtn->hide();
|
|
mpRemoveFavoriteBtn->hide();
|
|
mpNewFolderBtn->show();
|
|
mpNewFolderBtn->setEnabled(true);
|
|
mpDeleteBtn->setEnabled(true);
|
|
mpRescanModelBtn->show();
|
|
break;
|
|
case IN_ROOT:
|
|
mpFavoriteBtn->show();
|
|
mpSocialBtn->hide();
|
|
mSearchBar->show();
|
|
mpDeleteBtn->show();
|
|
mpCloseBtn->hide();
|
|
mpRemoveFavoriteBtn->hide();
|
|
mpNewFolderBtn->show();
|
|
mpNewFolderBtn->setEnabled(false);
|
|
mpDeleteBtn->setEnabled(false);
|
|
mpRescanModelBtn->show();
|
|
break;
|
|
case IN_PROPERTIES:
|
|
mpFavoriteBtn->show();
|
|
mpSocialBtn->hide();
|
|
mSearchBar->show();
|
|
//mpSearchBtn->show();
|
|
mpDeleteBtn->hide();
|
|
mpCloseBtn->hide();
|
|
mpRemoveFavoriteBtn->hide();
|
|
mpNewFolderBtn->hide();
|
|
mpRescanModelBtn->hide();
|
|
break;
|
|
case IN_FAVORITE:
|
|
mpFavoriteBtn->hide();
|
|
mpSocialBtn->hide();
|
|
mSearchBar->show();
|
|
//mpSearchBtn->show();
|
|
mpDeleteBtn->hide();
|
|
mpCloseBtn->hide();
|
|
mpRemoveFavoriteBtn->show();
|
|
mpNewFolderBtn->hide();
|
|
mpRescanModelBtn->hide();
|
|
break;
|
|
case IN_TRASH:
|
|
mpFavoriteBtn->hide();
|
|
mpSocialBtn->hide();
|
|
mSearchBar->show();
|
|
mpDeleteBtn->show();
|
|
mpDeleteBtn->setEnabled(true);
|
|
//mpSearchBtn->show();
|
|
//mpDeleteBtn->hide();
|
|
mpCloseBtn->hide();
|
|
//mpRemoveFavoriteBtn->show();
|
|
mpNewFolderBtn->hide();
|
|
mpRescanModelBtn->hide();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void UBFeaturesActionBar::onSearchTextChanged(QString txt)
|
|
{
|
|
Q_UNUSED(txt)
|
|
emit searchElement(mSearchBar->text());
|
|
}
|
|
|
|
void UBFeaturesActionBar::onActionNewFolder()
|
|
{
|
|
emit newFolderToCreate();
|
|
}
|
|
|
|
void UBFeaturesActionBar::onActionFavorite()
|
|
{
|
|
emit addElementsToFavorite();
|
|
}
|
|
|
|
void UBFeaturesActionBar::onActionRemoveFavorite()
|
|
{
|
|
emit removeElementsFromFavorite();
|
|
}
|
|
|
|
void UBFeaturesActionBar::onActionTrash()
|
|
{
|
|
emit deleteSelectedElements();
|
|
}
|
|
void UBFeaturesActionBar::onActionRescanModel()
|
|
{
|
|
emit rescanModel();
|
|
}
|
|
|
|
void UBFeaturesActionBar::dragEnterEvent( QDragEnterEvent *event )
|
|
{
|
|
const UBFeaturesMimeData *fMimeData = qobject_cast<const UBFeaturesMimeData*>(event->mimeData());
|
|
if (fMimeData) {
|
|
event->acceptProposedAction();
|
|
} else {
|
|
event->ignore();
|
|
}
|
|
}
|
|
|
|
void UBFeaturesActionBar::dropEvent(QDropEvent *event)
|
|
{
|
|
const UBFeaturesMimeData *fMimeData = qobject_cast<const UBFeaturesMimeData*>(event->mimeData());
|
|
|
|
if (!fMimeData) {
|
|
qWarning() << "data came from not supported widget";
|
|
event->ignore();
|
|
return;
|
|
}
|
|
|
|
QWidget *dest = childAt(event->pos());
|
|
if (dest == mpDeleteBtn) {
|
|
QList<UBFeature> featuresList = fMimeData->features();
|
|
foreach (UBFeature curFeature, featuresList) {
|
|
if (!curFeature.isDeletable()) {
|
|
qWarning() << "Undeletable feature found, stopping deleting process";
|
|
event->ignore();
|
|
return;
|
|
}
|
|
}
|
|
event->setDropAction(Qt::MoveAction);
|
|
event->accept();
|
|
|
|
emit deleteElements(fMimeData);
|
|
|
|
} else if (dest == mpFavoriteBtn) {
|
|
event->setDropAction( Qt::CopyAction);
|
|
event->accept();
|
|
|
|
emit addToFavorite(fMimeData);
|
|
|
|
} else if (dest == mpRemoveFavoriteBtn) {
|
|
event->setDropAction( Qt::MoveAction );
|
|
event->accept();
|
|
|
|
emit removeFromFavorite(fMimeData);
|
|
}
|
|
}
|
|
|
|
UBFeaturesActionBar::~UBFeaturesActionBar()
|
|
{
|
|
}
|
|
|