root/src/settingspage.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "settingspage.h"
#include "ui_settingspage.h"
#include <QFileDialog>
#include "searchdirectory.h"

SettingsPage::SettingsPage(Library &library, QWidget *parent) :
    Page(parent),
    ui(new Ui::SettingsPage),
    library(library)
{
    ui->setupUi(this);

    const QList<SearchDirectory>& directories = library.getSearchDirectories();
    for (int i=0; i < directories.length(); ++i) {
        const SearchDirectory& directory = directories.at(i);
        new QTreeWidgetItem(this->ui->searchDirectories, QStringList() <<
            directory.dir.path() <<
            (directory.enabled ? "enabled" : "disabled")
        );
    }
}

SettingsPage::~SettingsPage()
{
    delete ui;
}

bool SettingsPage::handleApiRequest(QHttpRequest *, QHttpResponse *)
{
    return false;
}

void SettingsPage::initFromQuery(const QString &)
{
}

void SettingsPage::on_addButton_clicked() {
    QString dir = QFileDialog::getExistingDirectory(this, "Add Searchpath", QDir::rootPath());
    if (!dir.isNull()) {
        library.addSearchDirectory(SearchDirectory(QDir(dir), true));
        //this->ui->searchDirectories->addTopLevelItem();
        new QTreeWidgetItem(this->ui->searchDirectories, QStringList() << dir << "enabled");
        library.startSearch();
    }
}

void SettingsPage::on_toggleDisableButton_clicked() {
    QList<QTreeWidgetItem*> items = this->ui->searchDirectories->selectedItems();
    for (int i=0; i < items.length(); ++i) {
        SearchDirectory* directory = library.getSearchDirectory(items.at(i)->text(0));
        if (directory) {
            directory->enabled = !directory->enabled;
            items[i]->setText(1, directory->enabled ? "enabled" : "disabled");
        }
    }
}

void SettingsPage::on_removeButton_clicked() {
    QList<QTreeWidgetItem*> items = this->ui->searchDirectories->selectedItems();
    for (int i=0; i < items.length(); ++i) {
        QTreeWidgetItem* item = items[i];
        if (library.removeSearchDirectory(items.at(i)->text(0))) {
            ui->searchDirectories->takeTopLevelItem(ui->searchDirectories->indexOfTopLevelItem(item));
            delete item;
        }
    }
}