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);
|
||||
}
|
||||
|
||||
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());
|
||||
|
@ -89,6 +89,8 @@ public:
|
||||
|
||||
void fetchMoreFromDB(const QModelIndex & parent);
|
||||
|
||||
void addFolderAtParent(const QString & folderName, const QModelIndex & parent);
|
||||
|
||||
enum Columns {
|
||||
Name = 0,
|
||||
Path = 1,
|
||||
|
@ -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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user