defuze.me
Client
|
00001 /************************************************************************** 00002 ** defuze.me Epitech Innovative Project 00003 ** 00004 ** Copyright 2010-2011 00005 ** Athena Calmettes - Jocelyn De La Rosa - Francois Gaillard 00006 ** Adrien Jarthon - Alexandre Moore - Luc Peres - Arnaud Sellier 00007 ** 00008 ** All rights reserved. 00009 **************************************************************************/ 00010 00011 #include "librarywidget.hpp" 00012 #include "library.hpp" 00013 #include <QFileDialog> 00014 #include "librarydelegate.hpp" 00015 00016 using namespace Library; 00017 00018 LibraryWidget::LibraryWidget(LibraryPlugin *library, QWidget *parent) : 00019 ModuleWidget(parent), library(library) 00020 { 00021 setupUi(this); 00022 updateProgressBar->hide(); 00023 QPalette palette; 00024 palette.setColor(QPalette::Background, QColor::fromRgb(132,130,128)); 00025 palette.setColor(QPalette::Base, QColor::fromRgb(192,192,192)); 00026 palette.setColor(QPalette::AlternateBase, QColor::fromRgb(177,177,177)); 00027 00028 treeView->setPalette(palette); 00029 treeView->setDragEnabled(true); 00030 treeView->setDragDropMode(QAbstractItemView::DragOnly); 00031 treeView->setHeaderHidden(true); 00032 treeView->setAttribute(Qt::WA_AcceptTouchEvents); 00033 treeView->setItemDelegate(new LibraryDelegate); 00034 treeView->itemDelegate()->setParent(this); 00035 QObject::connect(treeView, SIGNAL(clicked(const QModelIndex &)), this, SLOT(toogleItem(QModelIndex))); 00036 } 00037 00038 void LibraryWidget::changeEvent(QEvent *e) 00039 { 00040 QWidget::changeEvent(e); 00041 switch (e->type()) { 00042 case QEvent::LanguageChange: 00043 retranslateUi(this); 00044 break; 00045 default: 00046 break; 00047 } 00048 } 00049 00050 void LibraryWidget::toogleItem(const QModelIndex &index) 00051 { 00052 if (treeView->isExpanded(index)) 00053 treeView->collapse(index); 00054 else 00055 treeView->expand(index); 00056 //treeView->expandAll(); 00057 } 00058 00059 QTreeView *LibraryWidget::getTreeViewWidget() const 00060 { 00061 return treeView; 00062 } 00063 00064 QToolButton *LibraryWidget::getUpdateSourcesButton() const 00065 { 00066 return updateSourcesButton; 00067 } 00068 00069 QToolButton *LibraryWidget::getAddSourceButton() const 00070 { 00071 return addSourceButton; 00072 } 00073 00074 QProgressBar *LibraryWidget::getUpdateProgressBar() const 00075 { 00076 return updateProgressBar; 00077 } 00078 00079 void LibraryWidget::updatingSources() 00080 { 00081 getTreeViewWidget()->setDisabled(true); 00082 addSourceButton->setDisabled(true); 00083 addSourceButton->hide(); 00084 searchLineEdit->setDisabled(true); 00085 searchLineEdit->hide(); 00086 sortComboBox->setDisabled(true); 00087 sortComboBox->hide(); 00088 updateSourcesButton->setDisabled(true); 00089 updateSourcesButton->hide(); 00090 updateProgressBar->setValue(0); 00091 updateProgressBar->setRange(0, 0); 00092 updateProgressBar->setEnabled(true); 00093 updateProgressBar->show(); 00094 } 00095 00096 void LibraryWidget::endUpdatingSources() 00097 { 00098 getTreeViewWidget()->setDisabled(false); 00099 updateProgressBar->setEnabled(false); 00100 updateProgressBar->hide(); 00101 addSourceButton->setDisabled(false); 00102 addSourceButton->show(); 00103 updateSourcesButton->setDisabled(false); 00104 updateSourcesButton->show(); 00105 searchLineEdit->setDisabled(false); 00106 searchLineEdit->show(); 00107 sortComboBox->setDisabled(false); 00108 sortComboBox->show(); 00109 } 00110 00111 void Library::LibraryWidget::on_updateSourcesButton_clicked() 00112 { 00113 library->updateSources(); 00114 } 00115 00116 void Library::LibraryWidget::on_addSourceButton_clicked() 00117 { 00118 QString path; 00119 00120 addSourceButton->setDisabled(true); 00121 updateSourcesButton->setDisabled(true); 00122 sortComboBox->setDisabled(true); 00123 searchLineEdit->setDisabled(true); 00124 if (!(path = QFileDialog::getExistingDirectory(this, tr("Choose Source Directory"), "", 00125 QFileDialog::ShowDirsOnly | QFileDialog::DontUseNativeDialog)).isEmpty()) 00126 library->addSource(QUrl::fromUserInput(path)); 00127 addSourceButton->setDisabled(false); 00128 updateSourcesButton->setDisabled(false); 00129 if (!(path.isEmpty())) 00130 library->updateSources(); 00131 } 00132 00133 void Library::LibraryWidget::on_treeView_doubleClicked(const QModelIndex &index) 00134 { 00135 int id = library->getModel()->getIdByIndex(index); 00136 LibraryModel::SortKeys kind = library->getModel()->getKindByIndex(index); 00137 00138 if (id && (kind == LibraryModel::TRACK || kind == LibraryModel::TITLE)) 00139 library->addTrackToQueue(id); 00140 } 00141 00142 void Library::LibraryWidget::on_sortComboBox_currentIndexChanged(int index) 00143 { 00144 library->getModel()->update(index); 00145 } 00146 00147 void Library::LibraryWidget::on_searchLineEdit_textChanged(const QString &arg1) 00148 { 00149 library->getModel()->update(-1, arg1); 00150 }