added support for creating new folders

This commit is contained in:
Luis Ángel San Martín 2014-10-22 17:08:21 +02:00
parent a8ef8d07f1
commit 15873fdaff
3 changed files with 46 additions and 4 deletions

View File

@ -622,6 +622,42 @@ void TreeModel::fetchMoreFromDB(const QModelIndex &parent)
QSqlDatabase::removeDatabase(_databasePath);
}
void TreeModel::addFolderAtParent(const QString &folderName, const QModelIndex &parent)
{
TreeItem * parentItem;
if(parent.isValid())
parentItem = static_cast<TreeItem*>(parent.internalPointer());
else
parentItem = rootItem;
Folder newFolder;
newFolder.name = folderName;
newFolder.parentId = parentItem->id;
newFolder.path = parentItem->data(1).toString() + "/" + folderName;
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
newFolder.id = DBHelper::insert(&newFolder, db);
QSqlDatabase::removeDatabase(_databasePath);
int destRow = 0;
QList<QVariant> data;
data << newFolder.name;
data << newFolder.path;
data << false;
data << false;
TreeItem * item = new TreeItem(data);
item->id = newFolder.id;
parentItem->appendChild(item);
destRow = parentItem->children().indexOf(item); //TODO optimize this, appendChild should return the index of the new item
beginInsertRows(parent,destRow,destRow);
endInsertRows();
}
void TreeModel::deleteFolder(const QModelIndex &mi)
{
beginRemoveRows(mi.parent(),mi.row(),mi.row());

View File

@ -89,6 +89,8 @@ public:
void fetchMoreFromDB(const QModelIndex & parent);
void addFolderAtParent(const QString & folderName, const QModelIndex & parent);
enum Columns {
Name = 0,
Path = 1,

View File

@ -1474,13 +1474,17 @@ void LibraryWindow::addFolderToCurrentIndex()
QModelIndex currentIndex = getCurrentFolderIndex();
bool ok;
QString text = QInputDialog::getText(this, tr("Add new folder"),
QString newFolderName = QInputDialog::getText(this, tr("Add new folder"),
tr("Folder name:"), QLineEdit::Normal,
"", &ok);
if (ok && !text.isEmpty())
QLOG_INFO() << text;
if (ok && !newFolderName.isEmpty())
QLOG_INFO() << newFolderName;
QString parentPath = QDir::cleanPath(currentPath()+foldersModel->getFolderPath(currentIndex));
QDir parentDir(parentPath);
QDir newFolder(parentPath+"/"+newFolderName);
if(parentDir.mkdir(newFolderName) || newFolder.exists())
foldersModel->addFolderAtParent(newFolderName,currentIndex);
}
void LibraryWindow::deleteSelectedFolder()