defuze.me  Client
librarywidget.cpp
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 }