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