diff --git a/src/board/UBFeaturesController.cpp b/src/board/UBFeaturesController.cpp index 3ba4f644..c45ebffd 100644 --- a/src/board/UBFeaturesController.cpp +++ b/src/board/UBFeaturesController.cpp @@ -424,6 +424,11 @@ void UBFeaturesController::addNewFolder(const QString &name) { QString path = currentElement.getFullPath().toLocalFile() + "/" + name; + if ("/root" == currentElement.getFullVirtualPath()) + { + return; + } + if(!QFileInfo(path).exists()) { QDir().mkpath(path); } diff --git a/src/gui/UBFeaturesWidget.cpp b/src/gui/UBFeaturesWidget.cpp index 1fb0ac08..f43584f2 100644 --- a/src/gui/UBFeaturesWidget.cpp +++ b/src/gui/UBFeaturesWidget.cpp @@ -3,7 +3,6 @@ #include "UBFeaturesWidget.h" #include "domain/UBAbstractWidget.h" #include "gui/UBThumbnailWidget.h" -#include "gui/UBLibraryWidget.h" #include "frameworks/UBFileSystemUtils.h" #include "core/UBApplication.h" #include "core/UBDownloadManager.h" @@ -18,7 +17,10 @@ const int FeatureListBorderOffset = 10; const char featureTypeSplitter = ':'; static const QString mimeSankoreFeatureTypes = "Sankore/featureTypes"; -UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name):UBDockPaletteWidget(parent), imageGatherer(NULL) +UBFeaturesWidget::UBFeaturesWidget(QWidget *parent, const char *name) + : UBDockPaletteWidget(parent) + , imageGatherer(NULL) + , mkFolderDlg(NULL) { setObjectName(name); @@ -162,10 +164,22 @@ void UBFeaturesWidget::currentSelected(const QModelIndex ¤t) void UBFeaturesWidget::createNewFolder() { - UBNewFolderDlg dlg; - if(QDialog::Accepted == dlg.exec()) { - controller->addNewFolder(dlg.folderName()); + if (!mkFolderDlg) + { + mkFolderDlg = new UBNewFolderDlg(this); + connect (mkFolderDlg, SIGNAL(accepted()), this, SLOT(addFolder())); } + + mkFolderDlg->setWindowFlags(Qt::WindowStaysOnTopHint); + mkFolderDlg->resize(this->size().width()-20 ,80); + mkFolderDlg->move(5,this->size().height()-200); + mkFolderDlg->show(); +} + +void UBFeaturesWidget::addFolder() +{ + if (mkFolderDlg) + controller->addNewFolder(mkFolderDlg->folderName()); } void UBFeaturesWidget::deleteElements( const UBFeaturesMimeData * mimeData ) @@ -337,6 +351,16 @@ void UBFeaturesWidget::removeElementsFromFavorite() controller->refreshModels(); } +void UBFeaturesWidget::resizeEvent(QResizeEvent *event) +{ + UBDockPaletteWidget::resizeEvent(event); + if (mkFolderDlg) + { + mkFolderDlg->resize(this->size().width()-20 ,80); + mkFolderDlg->move(5,this->size().height()-200); + } +} + void UBFeaturesWidget::switchToListView() { stackedWidget->setCurrentIndex(ID_LISTVIEW); diff --git a/src/gui/UBFeaturesWidget.h b/src/gui/UBFeaturesWidget.h index 0587f908..65c34db7 100644 --- a/src/gui/UBFeaturesWidget.h +++ b/src/gui/UBFeaturesWidget.h @@ -21,6 +21,7 @@ #include "api/UBWidgetUniboardAPI.h" #include "UBFeaturesActionBar.h" #include "UBRubberBand.h" +#include "gui/UBLibraryWidget.h" #define THUMBNAIL_WIDTH 400 #define ID_LISTVIEW 0 @@ -71,6 +72,7 @@ private slots: void currentSelected( const QModelIndex & ); void searchStarted( const QString & ); void createNewFolder(); + void addFolder(); void deleteElements( const UBFeaturesMimeData * ); void addToFavorite( const UBFeaturesMimeData *); void removeFromFavorite( const UBFeaturesMimeData * ); @@ -82,6 +84,7 @@ private slots: void rescanModel(); private: + void resizeEvent(QResizeEvent *event); void switchToListView(); void switchToProperties(); void switchToWebView(); @@ -97,6 +100,7 @@ private: QStackedWidget *stackedWidget; int currentStackedWidget; UBDownloadHttpFile* imageGatherer; + UBNewFolderDlg *mkFolderDlg; }; diff --git a/src/gui/UBLibraryWidget.cpp b/src/gui/UBLibraryWidget.cpp index 197b812e..6501a488 100644 --- a/src/gui/UBLibraryWidget.cpp +++ b/src/gui/UBLibraryWidget.cpp @@ -547,7 +547,6 @@ UBNewFolderDlg::UBNewFolderDlg(QWidget *parent, const char *name):QDialog(parent , mpAddButton(NULL) , mpCancelButton(NULL) , mpLayout(NULL) - , mpHLayout(NULL) { setObjectName(name); setWindowTitle(tr("Add new folder")); @@ -562,15 +561,14 @@ UBNewFolderDlg::UBNewFolderDlg(QWidget *parent, const char *name):QDialog(parent mpButtons = new QDialogButtonBox(Qt::Horizontal, this); mpLayout = new QVBoxLayout(this); - mpHLayout = new QHBoxLayout(0); setLayout(mpLayout); - mpLayout->addLayout(mpHLayout, 0); - mpHLayout->addWidget(mpLabel, 0); - mpHLayout->addWidget(mpLineEdit, 1); + + mpLayout->addWidget(mpLabel, 1); + mpLayout->addWidget(mpLineEdit); mpButtons->addButton(mpAddButton,QDialogButtonBox::ActionRole); mpButtons->addButton(mpCancelButton,QDialogButtonBox::ActionRole); - mpLayout->addWidget(mpButtons); + mpLayout->addWidget(mpButtons, 1,Qt::AlignJustify); connect(mpAddButton, SIGNAL(clicked()), this, SLOT(accept())); connect(mpCancelButton, SIGNAL(clicked()), this, SLOT(reject())); @@ -612,11 +610,7 @@ UBNewFolderDlg::~UBNewFolderDlg() delete mpLabel; mpLabel = NULL; } - if(NULL != mpHLayout) - { - delete mpHLayout; - mpHLayout = NULL; - } + if(NULL != mpLayout) { delete mpLayout; diff --git a/src/gui/UBLibraryWidget.h b/src/gui/UBLibraryWidget.h index 915829a9..bb655317 100644 --- a/src/gui/UBLibraryWidget.h +++ b/src/gui/UBLibraryWidget.h @@ -119,7 +119,6 @@ private: QPushButton* mpAddButton; QPushButton* mpCancelButton; QVBoxLayout* mpLayout; - QHBoxLayout* mpHLayout; }; #endif // UBLIBRARYWIDGET_H