# # # patch "src/model/Inventory.cpp" # from [cc25d57951aa466048f802c53ce1ad72cbaa13ea] # to [5cb43db568057c644f6e3b77e89e49b0e8ebf822] # # patch "src/model/Inventory.h" # from [eacc1e32020afe3568a697edec2bfc6ca59c1dbf] # to [2e63d286970c94f673751cd43e67bf9791a32eca] # # patch "src/view/WorkspaceMenuBar.cpp" # from [922ece3616bb2037926ba3266b7d1ac3b1a6a537] # to [7abb1f494ef4d02e00fa7e31546e9dedd5cae48b] # # patch "src/view/WorkspaceMenuBar.h" # from [278cea7ff6194f1e5498e539671c5564381ded4f] # to [1757b06e10644a8f4ff36a204a50d6787dec77dd] # # patch "src/view/WorkspaceWindow.cpp" # from [f4d368a24ee68c0ad3717d0653906eede9a1efd9] # to [61f4579fd647177555ca083c93caea741b4100e6] # # patch "src/view/dialogs/UnaccountedRenames.cpp" # from [25d128e8323df0b45c5b81168a5f2e5a38611e2f] # to [3d1f44d279e9d0b244834f879d8ad80e91bfaa48] # # patch "src/view/dialogs/UnaccountedRenames.h" # from [5289ad6e72401ed91ec2494aee91b99dcd892b1c] # to [b355bb8e75bf7471bbc450853c68ffd883415825] # # patch "src/view/dialogs/WorkspaceDialogManager.cpp" # from [230fa7643bc735740172a651cab792734104925b] # to [8b8904590203dc8cd1c4e66239cd40b808529033] # # patch "src/view/dialogs/WorkspaceDialogManager.h" # from [2ba9d0d0d78b0f1b47e1efd8dccd7d27a012e26d] # to [1bbaa9095ac458a84cdd56f5cdcd49859511619a] # ============================================================ --- src/model/Inventory.cpp cc25d57951aa466048f802c53ce1ad72cbaa13ea +++ src/model/Inventory.cpp 5cb43db568057c644f6e3b77e89e49b0e8ebf822 @@ -49,9 +49,9 @@ void Inventory::setWorkspacePath(const W refresh(); } -void Inventory::refresh() +void Inventory::refresh(bool fullQuery) { - readInventory(QString()); + readInventory(QString(), fullQuery); } bool Inventory::canFetchMore(const QModelIndex & parent) const @@ -117,7 +117,7 @@ void Inventory::fetchMore(const QModelIn readInventory(invitem->getPath()); } -void Inventory::readInventory(const QString & path) +void Inventory::readInventory(const QString & path, bool fullQuery) { I(!workspacePath.isEmpty()); @@ -131,7 +131,7 @@ void Inventory::readInventory(const QStr // if requested, just read one directory level ahead // (useful for big directory trees) - if (Settings::getBool("ReadWorkspaceIncrementally", false)) + if (!fullQuery && Settings::getBool("ReadWorkspaceIncrementally", false)) { opts << "depth" << QString::number(QueryLevel); opts << "no-corresponding-renames" << QString(); @@ -259,6 +259,8 @@ void Inventory::processTaskResult(const // index we're going to present her afterwards reset(); } + + emit inventoryRead(queriedPath); } QModelIndex Inventory::indexFromItem(ModelItem * item, int col) const @@ -415,7 +417,7 @@ int Inventory::rowCount(const QModelInde } //! TODO move this somewhere else without the inventory model dependency -QMap Inventory::findUnaccountedRenames() +QMap Inventory::findUnaccountedRenames() const { QList missingItems; QList unknownItems; ============================================================ --- src/model/Inventory.h eacc1e32020afe3568a697edec2bfc6ca59c1dbf +++ src/model/Inventory.h 2e63d286970c94f673751cd43e67bf9791a32eca @@ -31,7 +31,7 @@ public: Inventory(QObject *); ~Inventory(); - QMap findUnaccountedRenames(); + QMap findUnaccountedRenames() const; QVariant data(const QModelIndex &, int) const; Qt::ItemFlags flags(const QModelIndex &) const; @@ -47,14 +47,14 @@ public slots: public slots: void setWorkspacePath(const WorkspacePath &); - void refresh(); + void refresh(bool fullQuery = false); private: void processTaskResult(const MonotoneTask &); QModelIndex indexFromItem(ModelItem *, int) const; void insertRowsRecursive(ModelItem *, const QMap > &); void removeRowsRecursive(const QModelIndex &, int, int); - void readInventory(const QString &); + void readInventory(const QString &, bool fullQuery = false); ModelItem * rootItem; QString branchName; @@ -65,7 +65,7 @@ signals: void setWorkspacePath(); signals: - void modelCreated(); + void inventoryRead(const QString &); void invalidWorkspaceFormat(const QString &); }; ============================================================ --- src/view/WorkspaceMenuBar.cpp 922ece3616bb2037926ba3266b7d1ac3b1a6a537 +++ src/view/WorkspaceMenuBar.cpp 7abb1f494ef4d02e00fa7e31546e9dedd5cae48b @@ -160,7 +160,7 @@ WorkspaceMenuBar::WorkspaceMenuBar(QWidg connect( actionFind_unaccounted_renames, SIGNAL(triggered()), - this, SIGNAL(showUnaccountedRenames()) + this, SIGNAL(checkForUnaccountedRenames()) ); } ============================================================ --- src/view/WorkspaceMenuBar.h 278cea7ff6194f1e5498e539671c5564381ded4f +++ src/view/WorkspaceMenuBar.h 1757b06e10644a8f4ff36a204a50d6787dec77dd @@ -36,7 +36,7 @@ signals: void showUpdateWorkspace(); void showCommitRevision(); void reloadWorkspace(); - void showUnaccountedRenames(); + void checkForUnaccountedRenames(); protected: QAction * actionHide_ignored_files; ============================================================ --- src/view/WorkspaceWindow.cpp f4d368a24ee68c0ad3717d0653906eede9a1efd9 +++ src/view/WorkspaceWindow.cpp 61f4579fd647177555ca083c93caea741b4100e6 @@ -88,7 +88,7 @@ void WorkspaceWindow::init() ); connect( - menuBar, SIGNAL(showUnaccountedRenames()), + menuBar, SIGNAL(checkForUnaccountedRenames()), this, SLOT(checkForUnaccountedRenames()) ); @@ -282,23 +282,10 @@ void WorkspaceWindow::openFile(const QSt Platform::openFile(workspacePath + "/" + filePath); } -//! FIXME the dialog should query the data itself or retrieve from some global cache: void WorkspaceWindow::checkForUnaccountedRenames() { - QMap renames = invModel->findUnaccountedRenames(); - if (renames.size() == 0) - { - QMessageBox::information( - this, - tr("Nothing found"), - tr("No unaccounted renames found for this workspace."), - QMessageBox::Ok - ); - return; - } - reinterpret_cast(dialogManager) - ->showUnaccountedRenames(renames); + ->checkForUnaccountedRenames(); } void WorkspaceWindow::readAttributes(const QModelIndex & index) ============================================================ --- src/view/dialogs/UnaccountedRenames.cpp 25d128e8323df0b45c5b81168a5f2e5a38611e2f +++ src/view/dialogs/UnaccountedRenames.cpp 3d1f44d279e9d0b244834f879d8ad80e91bfaa48 @@ -21,13 +21,23 @@ #include #include +#include -UnaccountedRenames::UnaccountedRenames(QWidget * parent) : Dialog(parent) +UnaccountedRenames::UnaccountedRenames(QWidget * parent, const WorkspacePath & path) + : Dialog(parent), workspacePath(path), inventory(0) { setupUi(this); Dialog::init(); + inventory = new Inventory(this); + inventory->setWorkspacePath(workspacePath); + connect( + inventory, SIGNAL(inventoryRead(const QString &)), + this, SLOT(findUnaccountedRenames()) + ); + + connect( renameTree, SIGNAL(itemClicked(QTreeWidgetItem *, int)), this, SLOT(itemClicked(QTreeWidgetItem *, int)) ); @@ -40,12 +50,46 @@ UnaccountedRenames::UnaccountedRenames(Q renameTree->header()->resizeSection(0, 300); } -UnaccountedRenames::~UnaccountedRenames() {} +UnaccountedRenames::~UnaccountedRenames() +{ + delete inventory; +} -void UnaccountedRenames::showUnaccountedRenames(const QMap & renames) +void UnaccountedRenames::checkForUnaccountedRenames() { + connect( + inventory, SIGNAL(inventoryRead(const QString &)), + this, SLOT(findUnaccountedRenames()) + ); + + inventory->refresh(true); +} + +void UnaccountedRenames::findUnaccountedRenames() +{ renameTree->clear(); + const QMap & renames = + inventory->findUnaccountedRenames(); + + if (renames.size() == 0) + { + QMessageBox::information( + this, + tr("Nothing found"), + tr("No unaccounted renames found for this workspace."), + QMessageBox::Ok + ); + + disconnect( + inventory, SIGNAL(inventoryRead(const QString &)), + this, SLOT(findUnaccountedRenames()) + ); + + done(0); + return; + } + QFont boldFont; boldFont.setBold(true); IconProvider * iconProvider = IconProvider::singleton(); @@ -80,6 +124,12 @@ void UnaccountedRenames::showUnaccounted target->setText(1, en.fileid.isEmpty() ? tr("n/a") : en.fileid); } } + + disconnect( + inventory, SIGNAL(inventoryRead(const QString &)), + this, SLOT(findUnaccountedRenames()) + ); + } void UnaccountedRenames::itemClicked(QTreeWidgetItem * item, int column) ============================================================ --- src/view/dialogs/UnaccountedRenames.h 5289ad6e72401ed91ec2494aee91b99dcd892b1c +++ src/view/dialogs/UnaccountedRenames.h b355bb8e75bf7471bbc450853c68ffd883415825 @@ -21,19 +21,25 @@ #include "Dialog.h" #include "vocab.h" +#include "Inventory.h" #include "ui_unaccounted_renames.h" class UnaccountedRenames : public Dialog, private Ui::UnaccountedRenamesDialog { Q_OBJECT public: - UnaccountedRenames(QWidget *); + UnaccountedRenames(QWidget *, const WorkspacePath &); ~UnaccountedRenames(); - void showUnaccountedRenames(const QMap &); + void checkForUnaccountedRenames(); private slots: void itemClicked(QTreeWidgetItem *, int); + void findUnaccountedRenames(); + +private: + WorkspacePath workspacePath; + Inventory * inventory; }; #endif ============================================================ --- src/view/dialogs/WorkspaceDialogManager.cpp 230fa7643bc735740172a651cab792734104925b +++ src/view/dialogs/WorkspaceDialogManager.cpp 8b8904590203dc8cd1c4e66239cd40b808529033 @@ -116,14 +116,14 @@ void WorkspaceDialogManager::showRevisio revisionDiff->forWorkspace(workspacePath, file, base, target); showDialog(revisionDiff); } -void WorkspaceDialogManager::showUnaccountedRenames(const QMap & renames) +void WorkspaceDialogManager::checkForUnaccountedRenames() { if (!unaccountedRenames) { - unaccountedRenames = new UnaccountedRenames(parentWidget()); + unaccountedRenames = new UnaccountedRenames(parentWidget(), workspacePath); } - unaccountedRenames->showUnaccountedRenames(renames); + unaccountedRenames->checkForUnaccountedRenames(); } void WorkspaceDialogManager::showUpdateWorkspace() ============================================================ --- src/view/dialogs/WorkspaceDialogManager.h 2ba9d0d0d78b0f1b47e1efd8dccd7d27a012e26d +++ src/view/dialogs/WorkspaceDialogManager.h 1bbaa9095ac458a84cdd56f5cdcd49859511619a @@ -42,7 +42,7 @@ public slots: void init(const WorkspacePath &); void showCommitRevision(); void showCommitRevision(const QStringList &); - void showUnaccountedRenames(const QMap &); + void checkForUnaccountedRenames(); void showUpdateWorkspace(); void showFileDiff(const QString &); void showFileDiff(const QString &, const QString &, const QString &);