mirror of
https://github.com/epasveer/seer.git
synced 2026-08-31 01:20:45 +08:00
Add 'ignore' support when opening files.
Some system files won't be found and are annoying when prompted each time.
This commit is contained in:
+106
-36
@@ -1,6 +1,7 @@
|
||||
#include "SeerSourceConfigPage.h"
|
||||
#include <QtWidgets/QInputDialog>
|
||||
#include <QtWidgets/QFileDialog>
|
||||
#include <QtWidgets/QInputDialog>
|
||||
#include <QtWidgets/QWidget>
|
||||
#include <QtCore/QDebug>
|
||||
|
||||
@@ -10,16 +11,23 @@ SeerSourceConfigPage::SeerSourceConfigPage(QWidget* parent) : QWidget(parent) {
|
||||
setupUi(this);
|
||||
|
||||
// Setup the widgets
|
||||
directoriesTreeWidget->clear();
|
||||
directoriesTreeWidget->setSortingEnabled(false);
|
||||
directoriesTreeWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||
directoriesTreeWidget->resizeColumnToContents(0); // directory
|
||||
alternateDirectoriesTreeWidget->clear();
|
||||
alternateDirectoriesTreeWidget->setSortingEnabled(false);
|
||||
alternateDirectoriesTreeWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||
alternateDirectoriesTreeWidget->resizeColumnToContents(0); // directory
|
||||
ignoreDirectoriesTreeWidget->clear();
|
||||
ignoreDirectoriesTreeWidget->setSortingEnabled(false);
|
||||
ignoreDirectoriesTreeWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||
ignoreDirectoriesTreeWidget->resizeColumnToContents(0); // directory
|
||||
|
||||
|
||||
// Connect things.
|
||||
QObject::connect(addDirectoryToolButton, &QToolButton::clicked, this, &SeerSourceConfigPage::handleAddButtonClicked);
|
||||
QObject::connect(moveUpDirectoriesToolButton, &QToolButton::clicked, this, &SeerSourceConfigPage::handleUpButtonClicked);
|
||||
QObject::connect(moveDownDirectoriesToolButton, &QToolButton::clicked, this, &SeerSourceConfigPage::handleDownButtonClicked);
|
||||
QObject::connect(deleteDirectoriesToolButton, &QToolButton::clicked, this, &SeerSourceConfigPage::handleDeleteButtonClicked);
|
||||
QObject::connect(addAlternateDirectoryToolButton, &QToolButton::clicked, this, &SeerSourceConfigPage::handleAddAlternateButtonClicked);
|
||||
QObject::connect(moveUpAlternateDirectoriesToolButton, &QToolButton::clicked, this, &SeerSourceConfigPage::handleUpAlternateButtonClicked);
|
||||
QObject::connect(moveDownAlternateDirectoriesToolButton, &QToolButton::clicked, this, &SeerSourceConfigPage::handleDownAlternateButtonClicked);
|
||||
QObject::connect(deleteAlternateDirectoriesToolButton, &QToolButton::clicked, this, &SeerSourceConfigPage::handleDeleteAlternateButtonClicked);
|
||||
QObject::connect(addIgnoreDirectoryToolButton, &QToolButton::clicked, this, &SeerSourceConfigPage::handleAddIgnoreButtonClicked);
|
||||
QObject::connect(deleteIgnoreDirectoriesToolButton, &QToolButton::clicked, this, &SeerSourceConfigPage::handleDeleteIgnoreButtonClicked);
|
||||
|
||||
// Setup the defaults.
|
||||
reset();
|
||||
@@ -30,7 +38,7 @@ SeerSourceConfigPage::~SeerSourceConfigPage() {
|
||||
|
||||
void SeerSourceConfigPage::setAlternateDirectories (const QStringList& alternateDirectories) {
|
||||
|
||||
directoriesTreeWidget->clear();
|
||||
alternateDirectoriesTreeWidget->clear();
|
||||
|
||||
QStringListIterator iter(alternateDirectories);
|
||||
|
||||
@@ -39,17 +47,48 @@ void SeerSourceConfigPage::setAlternateDirectories (const QStringList& alternate
|
||||
QTreeWidgetItem* topItem = new QTreeWidgetItem;
|
||||
topItem->setText(0, iter.next());
|
||||
|
||||
directoriesTreeWidget->addTopLevelItem(topItem);
|
||||
alternateDirectoriesTreeWidget->addTopLevelItem(topItem);
|
||||
}
|
||||
|
||||
directoriesTreeWidget->resizeColumnToContents(0);
|
||||
alternateDirectoriesTreeWidget->resizeColumnToContents(0);
|
||||
}
|
||||
|
||||
QStringList SeerSourceConfigPage::alternateDirectories () const {
|
||||
|
||||
QStringList list;
|
||||
|
||||
QTreeWidgetItemIterator iter(directoriesTreeWidget);
|
||||
QTreeWidgetItemIterator iter(alternateDirectoriesTreeWidget);
|
||||
|
||||
while (*iter) {
|
||||
list << (*iter)->text(0);
|
||||
++iter;
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
void SeerSourceConfigPage::setIgnoreDirectories (const QStringList& ignoreDirectories) {
|
||||
|
||||
ignoreDirectoriesTreeWidget->clear();
|
||||
|
||||
QStringListIterator iter(ignoreDirectories);
|
||||
|
||||
while (iter.hasNext()) {
|
||||
|
||||
QTreeWidgetItem* topItem = new QTreeWidgetItem;
|
||||
topItem->setText(0, iter.next());
|
||||
|
||||
ignoreDirectoriesTreeWidget->addTopLevelItem(topItem);
|
||||
}
|
||||
|
||||
ignoreDirectoriesTreeWidget->resizeColumnToContents(0);
|
||||
}
|
||||
|
||||
QStringList SeerSourceConfigPage::ignoreDirectories () const {
|
||||
|
||||
QStringList list;
|
||||
|
||||
QTreeWidgetItemIterator iter(ignoreDirectoriesTreeWidget);
|
||||
|
||||
while (*iter) {
|
||||
list << (*iter)->text(0);
|
||||
@@ -66,9 +105,11 @@ void SeerSourceConfigPage::reset () {
|
||||
alternateDirectories << "./";
|
||||
|
||||
setAlternateDirectories(alternateDirectories);
|
||||
setIgnoreDirectories(QStringList());
|
||||
|
||||
}
|
||||
|
||||
void SeerSourceConfigPage::handleAddButtonClicked () {
|
||||
void SeerSourceConfigPage::handleAddAlternateButtonClicked () {
|
||||
|
||||
// Ask for the alternate directory to add to the list.
|
||||
QString directory = QFileDialog::getExistingDirectory(this, "Seer - Enter an alternate directory", QString(), QFileDialog::ShowDirsOnly|QFileDialog::DontUseNativeDialog);
|
||||
@@ -78,7 +119,7 @@ void SeerSourceConfigPage::handleAddButtonClicked () {
|
||||
}
|
||||
|
||||
// Get the selected items, if any.
|
||||
QList<QTreeWidgetItem*> matches = directoriesTreeWidget->selectedItems();
|
||||
QList<QTreeWidgetItem*> matches = alternateDirectoriesTreeWidget->selectedItems();
|
||||
|
||||
// Create the new item
|
||||
QTreeWidgetItem* topItem = new QTreeWidgetItem;
|
||||
@@ -87,30 +128,30 @@ void SeerSourceConfigPage::handleAddButtonClicked () {
|
||||
// If there is something selected, add the new item before the first selected item.
|
||||
if (matches.count() > 0) {
|
||||
|
||||
int index = directoriesTreeWidget->indexOfTopLevelItem(matches[0]);
|
||||
int index = alternateDirectoriesTreeWidget->indexOfTopLevelItem(matches[0]);
|
||||
|
||||
directoriesTreeWidget->insertTopLevelItem(index, topItem);
|
||||
alternateDirectoriesTreeWidget->insertTopLevelItem(index, topItem);
|
||||
|
||||
// Otherwise, just add it to the end of the list.
|
||||
}else{
|
||||
directoriesTreeWidget->addTopLevelItem(topItem);
|
||||
alternateDirectoriesTreeWidget->addTopLevelItem(topItem);
|
||||
}
|
||||
|
||||
// Resize the columns and select the item we just added.
|
||||
directoriesTreeWidget->resizeColumnToContents(0);
|
||||
alternateDirectoriesTreeWidget->resizeColumnToContents(0);
|
||||
|
||||
directoriesTreeWidget->setCurrentItem(topItem, 0);
|
||||
alternateDirectoriesTreeWidget->setCurrentItem(topItem, 0);
|
||||
}
|
||||
|
||||
void SeerSourceConfigPage::handleUpButtonClicked () {
|
||||
void SeerSourceConfigPage::handleUpAlternateButtonClicked () {
|
||||
|
||||
// Get the selected items.
|
||||
QList<QTreeWidgetItem*> matches = directoriesTreeWidget->selectedItems();
|
||||
QList<QTreeWidgetItem*> matches = alternateDirectoriesTreeWidget->selectedItems();
|
||||
|
||||
// Loop through them from low to high.
|
||||
for (int i=0; i<matches.count(); i++) {
|
||||
|
||||
int index = directoriesTreeWidget->indexOfTopLevelItem(matches[i]);
|
||||
int index = alternateDirectoriesTreeWidget->indexOfTopLevelItem(matches[i]);
|
||||
|
||||
// Stop if the item is at the top of the list.
|
||||
if (index <= 0) {
|
||||
@@ -118,57 +159,86 @@ void SeerSourceConfigPage::handleUpButtonClicked () {
|
||||
}
|
||||
|
||||
// Steel it from the treeWidget.
|
||||
QTreeWidgetItem* topItem = directoriesTreeWidget->takeTopLevelItem(index);
|
||||
QTreeWidgetItem* topItem = alternateDirectoriesTreeWidget->takeTopLevelItem(index);
|
||||
|
||||
// Re-add it to the moved up position.
|
||||
directoriesTreeWidget->insertTopLevelItem(index-1, topItem);
|
||||
alternateDirectoriesTreeWidget->insertTopLevelItem(index-1, topItem);
|
||||
}
|
||||
|
||||
// Re-selected the items.
|
||||
directoriesTreeWidget->clearSelection();
|
||||
alternateDirectoriesTreeWidget->clearSelection();
|
||||
for (int i=0; i<matches.count(); i++) {
|
||||
matches[i]->setSelected(true);
|
||||
}
|
||||
|
||||
// Resize the columns.
|
||||
directoriesTreeWidget->resizeColumnToContents(0);
|
||||
alternateDirectoriesTreeWidget->resizeColumnToContents(0);
|
||||
}
|
||||
|
||||
void SeerSourceConfigPage::handleDownButtonClicked () {
|
||||
void SeerSourceConfigPage::handleDownAlternateButtonClicked () {
|
||||
|
||||
// Get the selected items.
|
||||
QList<QTreeWidgetItem*> matches = directoriesTreeWidget->selectedItems();
|
||||
QList<QTreeWidgetItem*> matches = alternateDirectoriesTreeWidget->selectedItems();
|
||||
|
||||
// Loop through them from high to low.
|
||||
for (int i=matches.count()-1; i>=0; i--) {
|
||||
|
||||
int index = directoriesTreeWidget->indexOfTopLevelItem(matches[i]);
|
||||
int index = alternateDirectoriesTreeWidget->indexOfTopLevelItem(matches[i]);
|
||||
|
||||
// Stop if the item is at the bottom of the list.
|
||||
if (index >= directoriesTreeWidget->topLevelItemCount()-1) {
|
||||
if (index >= alternateDirectoriesTreeWidget->topLevelItemCount()-1) {
|
||||
break;
|
||||
}
|
||||
|
||||
// Steel it from the treeWidget.
|
||||
QTreeWidgetItem* topItem = directoriesTreeWidget->takeTopLevelItem(index);
|
||||
QTreeWidgetItem* topItem = alternateDirectoriesTreeWidget->takeTopLevelItem(index);
|
||||
|
||||
// Re-add it to the moved down position.
|
||||
directoriesTreeWidget->insertTopLevelItem(index+1, topItem);
|
||||
alternateDirectoriesTreeWidget->insertTopLevelItem(index+1, topItem);
|
||||
}
|
||||
|
||||
// Re-selected the items.
|
||||
directoriesTreeWidget->clearSelection();
|
||||
alternateDirectoriesTreeWidget->clearSelection();
|
||||
for (int i=0; i<matches.count(); i++) {
|
||||
matches[i]->setSelected(true);
|
||||
}
|
||||
|
||||
// Resize the columns.
|
||||
directoriesTreeWidget->resizeColumnToContents(0);
|
||||
alternateDirectoriesTreeWidget->resizeColumnToContents(0);
|
||||
}
|
||||
|
||||
void SeerSourceConfigPage::handleDeleteButtonClicked () {
|
||||
void SeerSourceConfigPage::handleDeleteAlternateButtonClicked () {
|
||||
|
||||
QList<QTreeWidgetItem*> matches = directoriesTreeWidget->selectedItems();
|
||||
QList<QTreeWidgetItem*> matches = alternateDirectoriesTreeWidget->selectedItems();
|
||||
|
||||
qDeleteAll(matches);
|
||||
}
|
||||
|
||||
void SeerSourceConfigPage::handleAddIgnoreButtonClicked () {
|
||||
|
||||
// Ask for the ignore directory to add to the list.
|
||||
QString directory = QInputDialog::getText(this, "Seer - Enter a directory to ignore", "Ignore directory:");
|
||||
|
||||
if (directory == "") {
|
||||
return;
|
||||
}
|
||||
|
||||
// Create the new item
|
||||
QTreeWidgetItem* topItem = new QTreeWidgetItem;
|
||||
topItem->setText(0, directory);
|
||||
|
||||
// Just add it to the end of the list.
|
||||
ignoreDirectoriesTreeWidget->addTopLevelItem(topItem);
|
||||
|
||||
// Resize the columns and select the item we just added.
|
||||
ignoreDirectoriesTreeWidget->resizeColumnToContents(0);
|
||||
|
||||
ignoreDirectoriesTreeWidget->setCurrentItem(topItem, 0);
|
||||
}
|
||||
|
||||
void SeerSourceConfigPage::handleDeleteIgnoreButtonClicked () {
|
||||
|
||||
QList<QTreeWidgetItem*> matches = ignoreDirectoriesTreeWidget->selectedItems();
|
||||
|
||||
qDeleteAll(matches);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user