UBLibraryWidget.h 3.4 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"
32 33 34 35

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

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();

50
    UBLibraryController* libraryController() {return mLibraryController;}
51

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

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

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

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

Claudio Valerio's avatar
Claudio Valerio committed
78 79

private:
80

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

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

    UBLibElement* mpCrntDir;
    UBLibElement* mpCrntElem;
91
    UBLibElement* mpTmpElem;
Claudio Valerio's avatar
Claudio Valerio committed
92 93 94 95 96 97 98 99
    QList<UBLibElement*> mCurrentElems;
    QList<UBLibElement*> mOrigCurrentElems;
    QList<QGraphicsItem*> mItems;

};

class UBNewFolderDlg : public QDialog
{
100 101
    Q_OBJECT

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

    QString folderName();

108 109 110 111 112
public slots:
    void text_Changed(const QString &);
    void text_Edited(const QString &);


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

#endif // UBLIBRARYWIDGET_H