removed document mode

preferencesAboutTextFull
Claudio Valerio 11 years ago
parent 422ab4c537
commit 98e4abb7b4
  1. 6
      resources/etc/OpenBoard.css
  2. 30
      resources/forms/documents.ui
  3. 276
      src/document/UBDocumentController.cpp
  4. 10
      src/document/UBDocumentController.h
  5. 2
      src/document/UBDocumentProxy.cpp
  6. 122
      src/gui/UBDocumentTreeWidget.cpp
  7. 11
      src/gui/UBDocumentTreeWidget.h

@ -380,9 +380,3 @@ QLineEdit#ubWebBrowserLineEdit
padding: 2 2px;
background: white;
}
QSplitter
{
background-color: #b3b3b3;
width : 15px;

@ -40,15 +40,8 @@
<property name="lineWidth">
<number>0</number>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="childrenCollapsible">
<bool>false</bool>
</property>
<widget class="QFrame" name="topLeftFrame">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
@ -72,17 +65,11 @@
<item>
<widget class="UBDocumentTreeWidget" name="documentTreeWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<sizepolicy hsizetype="Maximum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>250</width>
<height>0</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
@ -116,6 +103,8 @@
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="topRightFrame" native="true">
<property name="styleSheet">
<string notr="true"/>
@ -126,12 +115,6 @@
</property>
<item>
<widget class="UBDocumentThumbnailWidget" name="thumbnailWidget">
<property name="minimumSize">
<size>
<width>250</width>
<height>0</height>
</size>
</property>
<property name="contextMenuPolicy">
<enum>Qt::NoContextMenu</enum>
</property>
@ -241,7 +224,6 @@
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
@ -261,6 +243,8 @@
<header>gui/UBDocumentTreeWidget.h</header>
</customwidget>
</customwidgets>
<resources/>
<resources>
<include location="../OpenBoard.qrc"/>
</resources>
<connections/>
</ui>

@ -103,9 +103,7 @@ void UBDocumentController::createNewDocument()
if (group)
{
QString path = group->buildEntirePath();
UBDocumentProxy *document = UBPersistenceManager::persistenceManager()->createDocument(path);
UBDocumentProxy *document = UBPersistenceManager::persistenceManager()->createDocument(group->groupName());
selectDocument(document);
}
@ -189,38 +187,21 @@ void UBDocumentController::selectDocument(UBDocumentProxy* proxy, bool setAsCurr
}
}
bool bullshitcode = true;
void UBDocumentController::createNewDocumentGroup()
{
if(bullshitcode){
mDocumentUI->documentTreeWidget->selectedItems().at(0)->setSelected(false);
mDocumentUI->documentTreeWidget->topLevelItem(0)->setSelected(true);
}
UBDocumentGroupTreeItem* docGroupItem = new UBDocumentGroupTreeItem(0); // deleted by the tree widget
int i = 1;
QString newFolderName = tr("New Folder");
while (allGroupNames().contains(newFolderName))
{
newFolderName = tr("New Folder") + " " + QVariant(i++).toString();
}
docGroupItem->setGroupName(newFolderName);
int trashIndex = mDocumentUI->documentTreeWidget->indexOfTopLevelItem(mTrashTi);
UBDocumentGroupTreeItem* selected = selectedDocumentGroupTreeItem();
QString parentGroupName("");
if(selected->groupName().contains(mDefaultDocumentGroupName))
mDocumentUI->documentTreeWidget->insertTopLevelItem(trashIndex, docGroupItem);
else
selected->addChild(docGroupItem);
parentGroupName = docGroupItem->buildEntirePath();
mMapOfPaths.insert(parentGroupName,docGroupItem);
mDocumentUI->documentTreeWidget->setCurrentItem(docGroupItem);
mDocumentUI->documentTreeWidget->expandItem(docGroupItem);
}
@ -312,7 +293,8 @@ void UBDocumentController::setupViews()
mDocumentUI->documentZoomSlider->setValue(thumbWidth);
mDocumentUI->thumbnailWidget->setThumbnailWidth(thumbWidth);
connect(mDocumentUI->documentZoomSlider, SIGNAL(valueChanged(int)), this, SLOT(documentZoomSliderValueChanged(int)));
connect(mDocumentUI->documentZoomSlider, SIGNAL(valueChanged(int)), this,
SLOT(documentZoomSliderValueChanged(int)));
connect(mMainWindow->actionOpen, SIGNAL(triggered()), this, SLOT(openSelectedItem()));
connect(mMainWindow->actionNewFolder, SIGNAL(triggered()), this, SLOT(createNewDocumentGroup()));
@ -630,38 +612,6 @@ void UBDocumentController::moveDocumentToTrash(UBDocumentGroupTreeItem* groupTi,
proxyTi->setFlags(proxyTi->flags() ^ Qt::ItemIsEditable);
}
QList<UBDocumentProxyTreeItem*> UBDocumentController::getProxies(QTreeWidgetItem* groupItem)
{
QList<UBDocumentProxyTreeItem*> result;
for(int i = 0; i < groupItem->childCount(); i += 1){
UBDocumentProxyTreeItem* docProxy = dynamic_cast<UBDocumentProxyTreeItem*>(groupItem->child(i));
if(docProxy)
result.append(docProxy);
else
result << getProxies(groupItem->child(i));
}
return result;
}
QList<UBDocumentGroupTreeItem*> UBDocumentController::getGroupTreeItem(QTreeWidgetItem* groupItem)
{
QList<UBDocumentGroupTreeItem*> result;
for(int i = 0; i < groupItem->childCount(); i += 1){
UBDocumentGroupTreeItem* group = dynamic_cast<UBDocumentGroupTreeItem*>(groupItem->child(i));
if(group)
result.append(group);
else
result << getGroupTreeItem(groupItem->child(i));
}
return result;
}
void UBDocumentController::moveFolderToTrash(UBDocumentGroupTreeItem* groupTi)
{
bool changeCurrentDocument = false;
@ -675,9 +625,15 @@ void UBDocumentController::moveFolderToTrash(UBDocumentGroupTreeItem* groupTi)
}
}
QList<UBDocumentProxyTreeItem*> toBeDeleted;
QList<UBDocumentProxyTreeItem*> toBeDeleted = getProxies(groupTi);
for (int i = 0; i < groupTi->childCount(); i++)
{
UBDocumentProxyTreeItem* proxyTi = dynamic_cast<UBDocumentProxyTreeItem*>(groupTi->child(i));
if (proxyTi && proxyTi->proxy())
toBeDeleted << proxyTi;
}
for (int i = 0; i < toBeDeleted.count(); i++)
{
@ -689,38 +645,21 @@ void UBDocumentController::moveFolderToTrash(UBDocumentGroupTreeItem* groupTi)
proxyTi->proxy()->setMetaData(UBSettings::documentGroupName, UBSettings::trashedDocumentGroupNamePrefix + oldGroupName);
UBPersistenceManager::persistenceManager()->persistDocumentMetadata(proxyTi->proxy());
UBDocumentGroupTreeItem* parentDirectory = dynamic_cast<UBDocumentGroupTreeItem*>(mMapOfPaths.value(oldGroupName));
parentDirectory->removeChild(proxyTi);
groupTi->removeChild(proxyTi);
mTrashTi->addChild(proxyTi);
proxyTi->setFlags(proxyTi->flags() ^ Qt::ItemIsEditable);
showMessage(QString("%1 deleted").arg(groupTi->groupName()));
}
QList<UBDocumentGroupTreeItem*> dirToDelete = getGroupTreeItem(groupTi);
for(int i = dirToDelete.count() - 1; i >= 0 ; i -= 1){
UBDocumentGroupTreeItem* parent = dynamic_cast<UBDocumentGroupTreeItem*>(dirToDelete.at(i)->parent());
if(parent){
mMapOfPaths.remove(dirToDelete.at(i)->buildEntirePath());
parent->removeChild(dirToDelete.at(i));
}
}
// dont remove default group
if (!groupTi->isDefaultFolder())
{
int index = mDocumentUI->documentTreeWidget->indexOfTopLevelItem(groupTi);
if (index >= 0)
{
mDocumentUI->documentTreeWidget->takeTopLevelItem(index);
else {
UBDocumentGroupTreeItem* parent = dynamic_cast<UBDocumentGroupTreeItem*>(groupTi->parent());
if(parent){
mMapOfPaths.remove(groupTi->buildEntirePath());
parent->removeChild(groupTi);
}
}
}
@ -871,90 +810,109 @@ void UBDocumentController::documentZoomSliderValueChanged (int value)
}
UBDocumentGroupTreeItem* UBDocumentController::getCommonGroupItem(QString &path)
{
QList<QString> paths = mMapOfPaths.keys();
if(paths.count() == 0)
return NULL;
QString commonPath = path;
do{
if(paths.contains(commonPath))
return mMapOfPaths.value(commonPath);
else{
int lastSeparatorIndex = commonPath.lastIndexOf("/");
if(lastSeparatorIndex>0)
commonPath = commonPath.left(lastSeparatorIndex);
else
commonPath = "";
}
}while(commonPath.length() > 0);
return NULL;
}
void UBDocumentController::loadDocumentProxies()
{
QList<QPointer<UBDocumentProxy> > proxies = UBPersistenceManager::persistenceManager()->documentProxies;
QStringList emptyGroupNames = UBSettings::settings()->value("Document/EmptyGroupNames", QStringList()).toStringList();
mDocumentUI->documentTreeWidget->clear();
UBDocumentGroupTreeItem* emptyGroupNameTi = new UBDocumentGroupTreeItem(0, false);
emptyGroupNameTi->setGroupName(mDefaultDocumentGroupName);
emptyGroupNameTi->setIcon(0, QIcon(":/images/toolbar/documents.png"));
mMapOfPaths.insert(mDefaultDocumentGroupName,emptyGroupNameTi);
QMap<QString, UBDocumentGroupTreeItem*> groupNamesMap;
UBDocumentGroupTreeItem* emptyGroupNameTi = 0;
mTrashTi = new UBDocumentGroupTreeItem(0, false); // deleted by the tree widget
mTrashTi->setGroupName(mDocumentTrashGroupName);
mTrashTi->setIcon(0, QIcon(":/images/trash.png"));
mMapOfPaths.insert(mDocumentTrashGroupName,mTrashTi);
mDocumentUI->documentTreeWidget->addTopLevelItem(emptyGroupNameTi);
mDocumentUI->documentTreeWidget->addTopLevelItem(mTrashTi);
foreach (QPointer<UBDocumentProxy> proxy, proxies)
{
if (proxy)
{
addDocumentInTree(proxy);
QString docGroup = proxy->metaData(UBSettings::documentGroupName).toString();
bool isEmptyGroupName = false;
bool isInTrash = false;
if (docGroup.isEmpty()) // #see https://trac.assembla.com/uniboard/ticket/426
{
docGroup = mDefaultDocumentGroupName;
isEmptyGroupName = true;
}
else if (docGroup.startsWith(UBSettings::trashedDocumentGroupNamePrefix))
{
isInTrash = true;
}
QString docName = proxy->metaData(UBSettings::documentName).toString();
if (emptyGroupNames.contains(docGroup))
emptyGroupNames.removeAll(docGroup);
if (!groupNamesMap.contains(docGroup) && !isInTrash)
{
UBDocumentGroupTreeItem* docGroupItem = new UBDocumentGroupTreeItem(0, !isEmptyGroupName); // deleted by the tree widget
groupNamesMap.insert(docGroup, docGroupItem);
docGroupItem->setGroupName(docGroup);
if (isEmptyGroupName)
emptyGroupNameTi = docGroupItem;
}
UBDocumentGroupTreeItem* docGroupItem;
if (isInTrash)
docGroupItem = mTrashTi;
else
docGroupItem = groupNamesMap.value(docGroup);
void UBDocumentController::itemClicked(QTreeWidgetItem * item, int column )
QTreeWidgetItem* docItem = new UBDocumentProxyTreeItem(docGroupItem, proxy, !isInTrash);
docItem->setText(0, docName);
if (mBoardController->selectedDocument() == proxy)
{
Q_UNUSED(item);
Q_UNUSED(column);
mDocumentUI->documentTreeWidget->expandItem(docGroupItem);
mDocumentUI->documentTreeWidget->setCurrentItem(docGroupItem);
}
}
}
selectDocument(selectedDocumentProxy(), false);
itemSelectionChanged();
foreach (const QString emptyGroupName, emptyGroupNames)
{
UBDocumentGroupTreeItem* docGroupItem = new UBDocumentGroupTreeItem(0); // deleted by the tree widget
groupNamesMap.insert(emptyGroupName, docGroupItem);
docGroupItem->setGroupName(emptyGroupName);
}
QList<QString> groupNamesList = groupNamesMap.keys();
qSort(groupNamesList);
void UBDocumentController::treeGroupItemRenamed(QString& oldPath,QString& newPath)
foreach (const QString groupName, groupNamesList)
{
if(oldPath.isEmpty() || newPath.isEmpty())
return;
UBDocumentGroupTreeItem* ti = groupNamesMap.value(groupName);
QList<QString> keys = mMapOfPaths.keys();
for(int i = 0; i < keys.count(); i += 1){
QString key = keys.at(i);
if(key.startsWith(oldPath)){
UBDocumentGroupTreeItem* value = mMapOfPaths.take(key);
key = key.remove(0,oldPath.size());
mMapOfPaths.insert(key.prepend(newPath),value);
if (ti != emptyGroupNameTi)
mDocumentUI->documentTreeWidget->addTopLevelItem(ti);
}
if (emptyGroupNameTi)
mDocumentUI->documentTreeWidget->addTopLevelItem(emptyGroupNameTi);
mDocumentUI->documentTreeWidget->addTopLevelItem(mTrashTi);
}
void UBDocumentController::itemClicked(QTreeWidgetItem * item, int column )
{
Q_UNUSED(item);
Q_UNUSED(column);
selectDocument(selectedDocumentProxy(), false);
itemSelectionChanged();
}
void UBDocumentController::itemChanged(QTreeWidgetItem * item, int column)
{
UBDocumentProxyTreeItem* proxyItem = dynamic_cast<UBDocumentProxyTreeItem*>(item);
disconnect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*)) , this, SLOT(updateDocumentInTree(UBDocumentProxy*)));
disconnect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*))
, this, SLOT(updateDocumentInTree(UBDocumentProxy*)));
if (proxyItem)
{
@ -986,7 +944,8 @@ void UBDocumentController::itemChanged(QTreeWidgetItem * item, int column)
}
}
connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*)), this, SLOT(updateDocumentInTree(UBDocumentProxy*)));
connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*)),
this, SLOT(updateDocumentInTree(UBDocumentProxy*)));
}
@ -1375,48 +1334,42 @@ void UBDocumentController::addToDocument()
QApplication::restoreOverrideCursor();
}
UBDocumentGroupTreeItem* UBDocumentController::getParentTreeItem(QString& documentGroup)
{
QString pathNotYetCreated = documentGroup;
UBDocumentGroupTreeItem* result = getCommonGroupItem(documentGroup);
if(result)
pathNotYetCreated = pathNotYetCreated.remove(0,result->buildEntirePath().size());
if(pathNotYetCreated.startsWith("/")) pathNotYetCreated = pathNotYetCreated.remove(0,1);
QString completePath = result ? result->groupName() + "/" : "";
QStringList folders = pathNotYetCreated.split("/");
for(int i = 0; i < folders.count(); i += 1 ){
if(!folders.at(i).isEmpty()){
completePath = completePath + folders.at(i);
UBDocumentGroupTreeItem* newTreeItem = new UBDocumentGroupTreeItem(result, true);
newTreeItem->setGroupName(folders.at(i));
if(completePath.indexOf("/") == -1)
mDocumentUI->documentTreeWidget->insertTopLevelItem(0,newTreeItem);
mMapOfPaths.insert(completePath,newTreeItem);
result = newTreeItem;
completePath += "/";
}
}
return result;
}
void UBDocumentController::addDocumentInTree(UBDocumentProxy* pDocument)
{
QString documentName = pDocument->name();
QString documentGroup = pDocument->groupName();
if (documentGroup.isEmpty())
{
documentGroup = mDefaultDocumentGroupName;
UBDocumentGroupTreeItem* group = NULL;
}
UBDocumentGroupTreeItem* group = 0;
if (documentGroup.startsWith(UBSettings::trashedDocumentGroupNamePrefix))
{
group = mTrashTi;
}
else
group = getParentTreeItem(documentGroup);
{
for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
{
QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
if (groupItem->groupName() == documentGroup)
{
group = groupItem;
break;
}
}
}
if (group == 0)
{
group = new UBDocumentGroupTreeItem(0); // deleted by the tree widget
group->setGroupName(documentGroup);
mDocumentUI->documentTreeWidget->addTopLevelItem(group);
}
UBDocumentProxyTreeItem *ti = new UBDocumentProxyTreeItem(group, pDocument, !group->isTrashFolder());
ti->setText(0, documentName);
@ -1445,25 +1398,12 @@ QStringList UBDocumentController::allGroupNames()
{
QStringList result;
UBDocumentGroupTreeItem* selectedGroup = selectedDocumentGroupTreeItem();
if(selectedGroup->isDefaultFolder()){
for (int i = 0; i < mDocumentUI->documentTreeWidget->topLevelItemCount(); i++)
{
QTreeWidgetItem* item = mDocumentUI->documentTreeWidget->topLevelItem(i);
UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
result << groupItem->groupName();
}
}
else{
for (int i = 0; i < selectedGroup->childCount(); i++)
{
QTreeWidgetItem* item = selectedGroup->child(i);
UBDocumentGroupTreeItem* groupItem = dynamic_cast<UBDocumentGroupTreeItem*>(item);
if(groupItem)
result << groupItem->groupName();
}
}
return result;
}

@ -66,8 +66,6 @@ class UBDocumentController : public UBDocumentContainer
QString documentTrashGroupName(){ return mDocumentTrashGroupName;}
QString defaultDocumentGroupName(){ return mDefaultDocumentGroupName;}
void treeGroupItemRenamed(QString& oldPath,QString& newPath);
signals:
void exportDone();
@ -130,14 +128,6 @@ class UBDocumentController : public UBDocumentContainer
QString mDocumentTrashGroupName;
QString mDefaultDocumentGroupName;
UBDocumentGroupTreeItem *getCommonGroupItem(QString& path);
QMap<QString, UBDocumentGroupTreeItem*> mMapOfPaths;
UBDocumentGroupTreeItem* getParentTreeItem(QString& documentGroup);
QList<UBDocumentProxyTreeItem*> getProxies(QTreeWidgetItem *groupItem);
QList<UBDocumentGroupTreeItem*> getGroupTreeItem(QTreeWidgetItem* groupItem);
private slots:
void documentZoomSliderValueChanged (int value);
void loadDocumentProxies();

@ -56,7 +56,7 @@ void UBDocumentProxy::init()
setMetaData(UBSettings::documentGroupName, "");
QDateTime now = QDateTime::currentDateTime();
setMetaData(UBSettings::documentName, now.toString(Qt::ISODate));
setMetaData(UBSettings::documentName, now.toString(Qt::SystemLocaleShortDate));
setUuid(QUuid::createUuid());

@ -33,9 +33,6 @@
#include "core/UBMimeData.h"
#include "core/UBApplicationController.h"
#include "core/UBDocumentManager.h"
#include "gui/UBMainWindow.h"
#include "document/UBDocumentController.h"
#include "adaptors/UBThumbnailAdaptor.h"
@ -44,23 +41,22 @@
#include "core/memcheck.h"
#include <QTimer>
UBDocumentTreeWidget::UBDocumentTreeWidget(QWidget * parent)
: QTreeWidget(parent)
, mSelectedProxyTi(0)
, mDropTargetProxyTi(0)
, mLastItemCompletePath("")
{
setDragDropMode(QAbstractItemView::InternalMove);
setAutoScroll(true);
mScrollTimer = new QTimer(this);
connect(UBDocumentManager::documentManager(), SIGNAL(documentUpdated(UBDocumentProxy*)), this, SLOT(documentUpdated(UBDocumentProxy*)));
connect(UBDocumentManager::documentManager(), SIGNAL(documentUpdated(UBDocumentProxy*))
, this, SLOT(documentUpdated(UBDocumentProxy*)));
connect(this, SIGNAL(itemChanged(QTreeWidgetItem *, int)) , this, SLOT(itemChangedValidation(QTreeWidgetItem *, int)));
connect(mScrollTimer, SIGNAL(timeout()) , this, SLOT(autoScroll()));
connect(this,SIGNAL(itemPressed(QTreeWidgetItem*,int)),this,SLOT(onItemPressed(QTreeWidgetItem*,int)));
connect(this, SIGNAL(itemChanged(QTreeWidgetItem *, int))
, this, SLOT(itemChangedValidation(QTreeWidgetItem *, int)));
connect(mScrollTimer, SIGNAL(timeout())
, this, SLOT(autoScroll()));
}
@ -69,89 +65,31 @@ UBDocumentTreeWidget::~UBDocumentTreeWidget()
// NOOP
}
void UBDocumentTreeWidget::onItemPressed(QTreeWidgetItem* item, int column)
{
Q_UNUSED(column)
UBDocumentGroupTreeItem* group = dynamic_cast<UBDocumentGroupTreeItem *>(item);
if(group){
mLastItemCompletePath = group->buildEntirePath();
mLastItemName = group->groupName();
}
}
void UBDocumentTreeWidget::itemChangedValidation(QTreeWidgetItem * item, int column)
{
QString emptyNameWarningTitle = tr("Empty name");
QString emptyNameWarningText = tr("The name should not be empty. Please enter a valid name.");
QString alreadyExistsNameWarningTitle = tr("Name already used");
QString alreadyExistsNameWarningText = tr("The actual name is in conflict with and existing. Please choose another one.");
UBDocumentProxyTreeItem* treeItem = dynamic_cast< UBDocumentProxyTreeItem *>(item);
if (treeItem)
if (column == 0)
{
QString name = treeItem->text(column);
if(name.isEmpty()){
mFailedValidationForTreeItem = item;
mFailedValidationItemColumn = column;
UBApplication::mainWindow->warning(emptyNameWarningTitle,emptyNameWarningText);
QTimer::singleShot(100,this,SLOT(validationFailed()));
return;
}
}
UBDocumentGroupTreeItem* group = dynamic_cast<UBDocumentGroupTreeItem *>(item);
if(group)
{
QString name = group->text(column);
if(name.isEmpty()){
mFailedValidationForTreeItem = item;
mFailedValidationItemColumn = column;
UBApplication::mainWindow->warning(emptyNameWarningTitle,emptyNameWarningText);
QTimer::singleShot(100,this,SLOT(validationFailed()));
return;
}
QString name = group->text(0);
if(group->parent()){
for(int i = 0; i < group->parent()->childCount(); i++)
for(int i = 0; i < topLevelItemCount (); i++)
{
QTreeWidgetItem* childAtPosition = group->parent()->child(i);
if (childAtPosition != item && childAtPosition->text(column) == name){
UBApplication::mainWindow->warning(alreadyExistsNameWarningTitle,alreadyExistsNameWarningText);
mFailedValidationForTreeItem = item;
mFailedValidationItemColumn = column;
QTimer::singleShot(100,this,SLOT(validationFailed()));
return;
}
}
}
else{
// We are looking at the top level items;
for(int i = 0; i < topLevelItemCount(); i += 1){
if(topLevelItem(i) != item && dynamic_cast<UBDocumentGroupTreeItem*>(topLevelItem(i))->groupName() == group->groupName()){
UBApplication::mainWindow->warning(tr("Name already in use"),tr("Please choose another name for the directory. The chosed name is already used."));
mFailedValidationForTreeItem = item;
mFailedValidationItemColumn = column;
QTimer::singleShot(100,this,SLOT(validationFailed()));
return;
}
QTreeWidgetItem *someTopLevelItem = topLevelItem(i);
if (someTopLevelItem != group &&
someTopLevelItem->text(0) == name)
{
group->setText(0, tr("%1 (copy)").arg(name));
}
}
QString newPath = group->buildEntirePath();
group->updateChildrenPath(column, mLastItemCompletePath, newPath);
UBApplication::documentController->treeGroupItemRenamed(mLastItemCompletePath, newPath);
}
}
void UBDocumentTreeWidget::validationFailed()
{
editItem(mFailedValidationForTreeItem,mFailedValidationItemColumn);
}
Qt::DropActions UBDocumentTreeWidget::supportedDropActions() const
@ -509,36 +447,6 @@ QString UBDocumentGroupTreeItem::groupName() const
return text(0);
}
QString UBDocumentGroupTreeItem::buildEntirePath()
{
QString result(groupName());
UBDocumentGroupTreeItem* item = this;
while(item->parent()){
item = dynamic_cast<UBDocumentGroupTreeItem*>(item->parent());
result = item->groupName() + "/" + result;
}
return result;
}
void UBDocumentGroupTreeItem::updateChildrenPath(int column, QString& previousText, const QString& text)
{
for(int i = 0; i < childCount(); i += 1){
UBDocumentGroupTreeItem* groupTreeItem = dynamic_cast<UBDocumentGroupTreeItem*>(child(i));
if(groupTreeItem)
groupTreeItem->updateChildrenPath(column, previousText,text);
else{
UBDocumentProxyTreeItem* docProxyItem = dynamic_cast<UBDocumentProxyTreeItem*>(child(i));
QString groupName = docProxyItem->proxy()->metaData(UBSettings::documentGroupName).toString();
groupName = groupName.remove(0,previousText.length());
groupName = text + groupName;
docProxyItem->proxy()->setMetaData(UBSettings::documentGroupName, groupName);
UBPersistenceManager::persistenceManager()->persistDocumentMetadata(docProxyItem->proxy());
}
}
}
bool UBDocumentGroupTreeItem::isTrashFolder() const
{
return (0 == (flags() & Qt::ItemIsEditable)) && UBApplication::app()->documentController && (groupName() == UBApplication::app()->documentController->documentTrashGroupName());

@ -54,9 +54,7 @@ class UBDocumentTreeWidget : public QTreeWidget
void documentUpdated(UBDocumentProxy *pDocument);
void itemChangedValidation(QTreeWidgetItem * item, int column);
void onItemPressed(QTreeWidgetItem* item, int column);
void autoScroll();
void validationFailed();
private:
UBDocumentProxyTreeItem *mSelectedProxyTi;
@ -64,10 +62,6 @@ class UBDocumentTreeWidget : public QTreeWidget
QBrush mBackground;
QTimer* mScrollTimer;
int mScrollMagnitude;
QTreeWidgetItem* mFailedValidationForTreeItem;
int mFailedValidationItemColumn;
QString mLastItemCompletePath;
QString mLastItemName;
};
@ -98,11 +92,6 @@ class UBDocumentGroupTreeItem : public QTreeWidgetItem
bool isTrashFolder() const;
bool isDefaultFolder() const;
QString buildEntirePath();
void updateChildrenPath(int column, QString& previousText, const QString &text);
};
#endif /* UBDOCUMENTTREEWIDGET_H_ */

Loading…
Cancel
Save