UBLibraryWidget.h 3.53 KB
Newer Older
Claudio Valerio's avatar
Claudio Valerio committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/*
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
Claudio Valerio's avatar
Claudio Valerio committed
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
#ifndef UBLIBRARYWIDGET_H
#define UBLIBRARYWIDGET_H

#include <QList>
#include <QVector>
#include <QGraphicsItem>
#include <QDragEnterEvent>
#include <QDragMoveEvent>
#include <QDropEvent>
#include <QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QDialogButtonBox>
#include <QHBoxLayout>
#include <QVBoxLayout>

#include "UBThumbnailWidget.h"
Anna Udovichenko's avatar
Anna Udovichenko committed
32
#include "board/UBLibraryController.h"
33 34 35 36

class UBLibraryController;
class UBChainedLibElement;
class UBLibElement;
Claudio Valerio's avatar
Claudio Valerio committed
37 38 39 40 41 42 43 44 45 46 47 48 49 50

class UBLibraryWidget : public UBThumbnailWidget
{
    Q_OBJECT
public:
    UBLibraryWidget(QWidget* parent=0, const char* name="UBLibraryWidget");
    ~UBLibraryWidget();

    UBChainedLibElement* chainedElements;
    void setCurrentElemsAndRefresh(UBChainedLibElement* elem);

    void updateThumbnailsSize(int newSize);
    void init();

51
    UBLibraryController* libraryController() {return mLibraryController;}
52
	bool isLoadingLibraryItems() const { return mLoadingLibraryItems; }
53

Claudio Valerio's avatar
Claudio Valerio committed
54 55 56 57 58
public slots:
    void onRefreshCurrentFolder();
    void onElementsDropped(QList<QString> elements, UBLibElement* target);
    void onSearchElement(QString elem);
    void onNewFolderToCreate();
shibakaneki's avatar
shibakaneki committed
59
    void onDropMe(const QMimeData* _data);
60 61
    void onAddDownloadedFileToLibrary(bool pSuccess, QUrl sourceUrl, QString pContentHeader, QByteArray pData);

Claudio Valerio's avatar
Claudio Valerio committed
62 63 64 65
signals:
    void navigBarUpdate(UBLibElement* pElem);
    void itemsSelected(QList<UBLibElement*> elemList, bool inTrash);
    void propertiesRequested(UBLibElement* pElem);
66
    void displaySearchEngine(UBLibElement* pElem);
Claudio Valerio's avatar
Claudio Valerio committed
67
    void favoritesEntered(bool bFav);
68
    void itemClicked();
Claudio Valerio's avatar
Claudio Valerio committed
69 70 71 72 73 74 75 76 77

protected:
    void dragEnterEvent(QDragEnterEvent *event);
    void dragMoveEvent(QDragMoveEvent *event);
    void dropEvent(QDropEvent *event);

private slots:
    void onItemClicked(QGraphicsItem* pItem, int index);
    void onSelectionChanged();
78 79
    void onDisplayMetadata(QMap<QString,QString> metadatas);

Claudio Valerio's avatar
Claudio Valerio committed
80 81

private:
82

Claudio Valerio's avatar
Claudio Valerio committed
83 84 85
    void refreshView();
    void generateItems();
    void appendChainedElement(UBChainedLibElement* element, UBChainedLibElement* toElem);
86

Claudio Valerio's avatar
Claudio Valerio committed
87 88
    UBLibElement* elementAt(QPoint p);
    UBLibElement* elementFromFilePath(const QString& filePath);
89
    UBLibraryController* mLibraryController;
Claudio Valerio's avatar
Claudio Valerio committed
90 91 92

    UBLibElement* mpCrntDir;
    UBLibElement* mpCrntElem;
93
    UBLibElement* mpTmpElem;
Claudio Valerio's avatar
Claudio Valerio committed
94 95 96
    QList<UBLibElement*> mCurrentElems;
    QList<UBLibElement*> mOrigCurrentElems;
    QList<QGraphicsItem*> mItems;
97
	bool mLoadingLibraryItems;
Claudio Valerio's avatar
Claudio Valerio committed
98 99 100 101
};

class UBNewFolderDlg : public QDialog
{
102 103
    Q_OBJECT

Claudio Valerio's avatar
Claudio Valerio committed
104 105 106 107 108 109
public:
    UBNewFolderDlg(QWidget* parent=0, const char* name="NewFolderDlg");
    ~UBNewFolderDlg();

    QString folderName();

110 111 112 113 114
public slots:
    void text_Changed(const QString &);
    void text_Edited(const QString &);


Claudio Valerio's avatar
Claudio Valerio committed
115 116 117 118
private:
    QLabel* mpLabel;
    QLineEdit* mpLineEdit;
    QDialogButtonBox* mpButtons;
119 120
    QPushButton* mpAddButton;
    QPushButton* mpCancelButton;
Claudio Valerio's avatar
Claudio Valerio committed
121 122 123 124 125
    QVBoxLayout* mpLayout;
    QHBoxLayout* mpHLayout;
};

#endif // UBLIBRARYWIDGET_H