1 // Copyright (c) 2015, Ken Moore
2 // Available under the 3-clause BSD license
3 // See the LICENSE file for full details
4 //===========================================
5 #include "ConfigUI.h"
6 #include "ui_ConfigUI.h"
7
8 #include <QFileDialog>
9 #include <QListWidget>
10 #include <QListWidgetItem>
11 #include <QListView>
12 #include <QTreeView>
13 #include <QPoint>
14
15 #include <LuminaXDG.h>
16
ConfigUI(QWidget * parent)17 ConfigUI::ConfigUI(QWidget *parent) : QDialog(parent), ui(new Ui::ConfigUI){
18 ui->setupUi(this);
19 //Make sure this dialog is centered on the parent
20 if(parent!=0){
21 QPoint ctr = parent->geometry().center();
22 this->move( ctr.x()-(this->width()/2), ctr.y()-(this->height()/2) );
23 }
24 ui->tool_getStartDir->setIcon( LXDG::findIcon("folder","") );
25 ui->tool_adddirs->setIcon( LXDG::findIcon("list-add","") );
26 ui->tool_rmdir->setIcon( LXDG::findIcon("list-remove","") );
27 newDefaults = false;
28 }
29
~ConfigUI()30 ConfigUI::~ConfigUI(){
31
32 }
33
loadInitialValues(QString startdir,QStringList skipdirs)34 void ConfigUI::loadInitialValues(QString startdir, QStringList skipdirs){
35 ui->label_start->setText(startdir);
36 ui->list_excludes->clear();
37 ui->list_excludes->addItems(skipdirs);
38 }
39
on_tool_getStartDir_clicked()40 void ConfigUI::on_tool_getStartDir_clicked(){
41 QString dir = QFileDialog::getExistingDirectory(this, tr("Select Search Directory"), QDir::homePath() );
42 if(dir.isEmpty()){ return; }
43 ui->label_start->setText(dir);
44 }
45
on_tool_adddirs_clicked()46 void ConfigUI::on_tool_adddirs_clicked(){
47 QFileDialog dlg(this);
48 dlg.setFileMode(QFileDialog::DirectoryOnly);
49 QListView *l = dlg.findChild<QListView*>("listView");
50 if(l){ l->setSelectionMode(QAbstractItemView::MultiSelection); }
51 QTreeView *t = dlg.findChild<QTreeView*>();
52 if(t){ t->setSelectionMode(QAbstractItemView::MultiSelection); }
53 dlg.setDirectory(QDir::homePath());
54 dlg.setWindowTitle( tr("Exclude Directories") );
55 if(dlg.exec()){
56 //Directories selected
57 QStringList paths = dlg.selectedFiles();
58 ui->list_excludes->addItems(paths);
59 }
60 }
61
on_tool_rmdir_clicked()62 void ConfigUI::on_tool_rmdir_clicked(){
63 qDeleteAll(ui->list_excludes->selectedItems());
64 }
65
on_list_excludes_itemSelectionChanged()66 void ConfigUI::on_list_excludes_itemSelectionChanged(){
67 ui->tool_rmdir->setEnabled( !ui->list_excludes->selectedItems().isEmpty() );
68 }
69
on_buttonBox_accepted()70 void ConfigUI::on_buttonBox_accepted(){
71 newStartDir = ui->label_start->text();
72 QStringList dirs;
73 for(int i=0; i<ui->list_excludes->count(); i++){
74 dirs << ui->list_excludes->item(i)->text();
75 }
76 dirs.removeDuplicates();
77 newSkipDirs = dirs;
78 newDefaults = ui->check_setDefaults->isChecked();
79 this->close();
80 }
81
on_buttonBox_rejected()82 void ConfigUI::on_buttonBox_rejected(){
83 this->close();
84 }
85