mirror of
https://github.com/YACReader/yacreader
synced 2025-06-04 01:28:55 -04:00
added support for creating new folders
This commit is contained in:
parent
a8ef8d07f1
commit
15873fdaff
@ -622,6 +622,42 @@ void TreeModel::fetchMoreFromDB(const QModelIndex &parent)
|
|||||||
QSqlDatabase::removeDatabase(_databasePath);
|
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)
|
void TreeModel::deleteFolder(const QModelIndex &mi)
|
||||||
{
|
{
|
||||||
beginRemoveRows(mi.parent(),mi.row(),mi.row());
|
beginRemoveRows(mi.parent(),mi.row(),mi.row());
|
||||||
|
@ -89,6 +89,8 @@ public:
|
|||||||
|
|
||||||
void fetchMoreFromDB(const QModelIndex & parent);
|
void fetchMoreFromDB(const QModelIndex & parent);
|
||||||
|
|
||||||
|
void addFolderAtParent(const QString & folderName, const QModelIndex & parent);
|
||||||
|
|
||||||
enum Columns {
|
enum Columns {
|
||||||
Name = 0,
|
Name = 0,
|
||||||
Path = 1,
|
Path = 1,
|
||||||
|
@ -1474,13 +1474,17 @@ void LibraryWindow::addFolderToCurrentIndex()
|
|||||||
QModelIndex currentIndex = getCurrentFolderIndex();
|
QModelIndex currentIndex = getCurrentFolderIndex();
|
||||||
|
|
||||||
bool ok;
|
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,
|
tr("Folder name:"), QLineEdit::Normal,
|
||||||
"", &ok);
|
"", &ok);
|
||||||
if (ok && !text.isEmpty())
|
if (ok && !newFolderName.isEmpty())
|
||||||
QLOG_INFO() << text;
|
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()
|
void LibraryWindow::deleteSelectedFolder()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user