[Add] File display widget.
[Remove] Removed pdf_file* for the time being.
This commit is contained in:
parent
efbc52cd2a
commit
80441018d6
10
bin/hpdf.pro
10
bin/hpdf.pro
@ -7,17 +7,19 @@ INCLUDEPATH += /usr/include/poppler/qt5
|
||||
LIBS += -L/usr/lib -lpoppler-qt5
|
||||
|
||||
HEADERS += \
|
||||
../src/file_widget.h \
|
||||
../src/pdf_factory.h \
|
||||
../src/pdf_file.h \
|
||||
../src/pdf_page_widget.h \
|
||||
../src/table_view.h
|
||||
../src/table_view.h \
|
||||
../src/file_frame_widget.h
|
||||
|
||||
SOURCES += \
|
||||
../src/main.cpp \
|
||||
../src/file_widget.cpp \
|
||||
../src/pdf_factory.cpp \
|
||||
../src/pdf_file.cpp \
|
||||
../src/pdf_page_widget.cpp \
|
||||
../src/table_view.cpp
|
||||
../src/table_view.cpp \
|
||||
../src/file_frame_widget.cpp
|
||||
|
||||
RESOURCES += hpdf.qrc
|
||||
|
||||
|
60
src/file_frame_widget.cpp
Normal file
60
src/file_frame_widget.cpp
Normal file
@ -0,0 +1,60 @@
|
||||
#include <QDebug>
|
||||
#include <QSizePolicy>
|
||||
#include "file_frame_widget.h"
|
||||
|
||||
#define COLLAPSE_BUTTON_WIDTH 60
|
||||
#define COLLAPSE_BUTTON_HEIGHT 40
|
||||
|
||||
FileFrameWidget::FileFrameWidget(QWidget* parent) {
|
||||
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
|
||||
topLayout = new QGridLayout();
|
||||
|
||||
scrollArea = new QScrollArea();
|
||||
mainChild = new FileWidget();
|
||||
|
||||
widgetName = new QLabel();
|
||||
widgetName->setText(tr("File 1"));
|
||||
topLayout->addWidget(widgetName, 0, 1);
|
||||
|
||||
collapseButton = new QPushButton(tr("X"));
|
||||
collapseButton->setMinimumSize(QSize(COLLAPSE_BUTTON_WIDTH, COLLAPSE_BUTTON_HEIGHT));
|
||||
collapseButton->setMaximumSize(QSize(COLLAPSE_BUTTON_WIDTH, COLLAPSE_BUTTON_HEIGHT));
|
||||
connect(collapseButton, SIGNAL(released()), this, SLOT(collapsedButtonClick()));
|
||||
topLayout->addWidget(collapseButton, 0, 0);
|
||||
|
||||
topLayout->addWidget(scrollArea, 1, 0, 1, 5);
|
||||
scrollArea->setWidget(mainChild);
|
||||
|
||||
setLayout(topLayout);
|
||||
|
||||
setCollapsed(false);
|
||||
adjustSize();
|
||||
}
|
||||
|
||||
QSize FileFrameWidget::sizeHint() const {
|
||||
if(collapsed == true)
|
||||
return QSize(mainChild->width(), collapseButton->height());
|
||||
else
|
||||
return QSize(mainChild->width(), collapseButton->height() + mainChild->height() + 50);
|
||||
}
|
||||
|
||||
void FileFrameWidget::setCollapsed(bool state) {
|
||||
if(state == true) {
|
||||
collapsed = true;
|
||||
scrollArea->hide();
|
||||
} else {
|
||||
collapsed = false;
|
||||
scrollArea->show();
|
||||
}
|
||||
|
||||
adjustSize();
|
||||
}
|
||||
|
||||
void FileFrameWidget::collapsedButtonClick(void) {
|
||||
if(collapsed == true)
|
||||
setCollapsed(false);
|
||||
else
|
||||
setCollapsed(true);
|
||||
}
|
||||
|
34
src/file_frame_widget.h
Normal file
34
src/file_frame_widget.h
Normal file
@ -0,0 +1,34 @@
|
||||
#include <QWidget>
|
||||
#include <QScrollArea>
|
||||
#include <QHBoxLayout>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QGridLayout>
|
||||
|
||||
#include "file_widget.h"
|
||||
|
||||
class FileFrameWidget : public QWidget {
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(bool collapsed READ isCollapsed WRITE setCollapsed)
|
||||
public:
|
||||
FileFrameWidget(QWidget* parent = 0);
|
||||
QSize sizeHint(void) const;
|
||||
|
||||
bool isCollapsed() { return collapsed; }
|
||||
void setCollapsed(bool collapsed);
|
||||
|
||||
protected:
|
||||
|
||||
private slots:
|
||||
void collapsedButtonClick(void);
|
||||
private:
|
||||
QGridLayout* topLayout;
|
||||
|
||||
QLabel* widgetName;
|
||||
QPushButton* collapseButton;
|
||||
QScrollArea* scrollArea;
|
||||
FileWidget* mainChild;
|
||||
|
||||
bool collapsed;
|
||||
};
|
||||
|
93
src/file_widget.cpp
Normal file
93
src/file_widget.cpp
Normal file
@ -0,0 +1,93 @@
|
||||
#include <QPixmap>
|
||||
#include <QLabel>
|
||||
#include <QSize>
|
||||
#include <QDrag>
|
||||
#include <QDragEnterEvent>
|
||||
#include <QMouseEvent>
|
||||
#include <QDropEvent>
|
||||
#include <QMimeData>
|
||||
#include <QDebug>
|
||||
|
||||
#include "file_widget.h"
|
||||
|
||||
#define CHILD_AREA_WIDTH 150
|
||||
#define CHILD_AREA_HEIGHT 180
|
||||
|
||||
FileWidget::FileWidget(QWidget* parent) {
|
||||
setAcceptDrops(true);
|
||||
mainLayout = new QHBoxLayout();
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
addChild(tr("Child number #") + QString::number(i));
|
||||
}
|
||||
|
||||
setLayout(mainLayout);
|
||||
}
|
||||
|
||||
int FileWidget::getChildCount() const {
|
||||
return child.size();
|
||||
}
|
||||
|
||||
QSize FileWidget::sizeHint() const {
|
||||
return QSize(CHILD_AREA_WIDTH*getChildCount(), CHILD_AREA_HEIGHT + 50);
|
||||
}
|
||||
|
||||
void FileWidget::addChild(QString name) {
|
||||
QLabel* newchild;
|
||||
newchild = new QLabel();
|
||||
newchild->setText(name);
|
||||
newchild->setStyleSheet("QLabel { background-color : red; color : blue; }");
|
||||
|
||||
child.push_back(newchild);
|
||||
|
||||
mainLayout->addWidget(newchild);
|
||||
}
|
||||
|
||||
void FileWidget::dragEnterEvent(QDragEnterEvent* event) {
|
||||
if(event->mimeData()->hasFormat("text/plain"))
|
||||
event->acceptProposedAction();
|
||||
}
|
||||
|
||||
void FileWidget::dropEvent(QDropEvent* event) {
|
||||
int from = event->mimeData()->text().toInt();
|
||||
int to = findChildPositionInLayout(child[findClickEventChild(event->pos())]);
|
||||
|
||||
qDebug() << QString::number(from) + " " + QString::number(to);
|
||||
|
||||
mainLayout->removeWidget(child[from]);
|
||||
mainLayout->insertWidget(to, child[from]);
|
||||
|
||||
event->acceptProposedAction();
|
||||
}
|
||||
|
||||
void FileWidget::mousePressEvent(QMouseEvent* event) {
|
||||
if(event->button() == Qt::LeftButton) {
|
||||
int draggedChild = (findClickEventChild(event->pos()));
|
||||
|
||||
QDrag* drag = new QDrag(this);
|
||||
QMimeData* mimeData = new QMimeData;
|
||||
|
||||
mimeData->setText(QString::number(draggedChild));
|
||||
drag->setMimeData(mimeData);
|
||||
drag->setPixmap(QPixmap(":/img/copy.png"));
|
||||
|
||||
Qt::DropAction dropAction = drag->exec();
|
||||
}
|
||||
}
|
||||
|
||||
int FileWidget::findClickEventChild(QPoint pos) {
|
||||
for(int i = 0; i < getChildCount(); i++)
|
||||
if(child[i]->geometry().contains(pos))
|
||||
return i;
|
||||
|
||||
return getChildCount()-1;
|
||||
}
|
||||
|
||||
int FileWidget::findChildPositionInLayout(QLabel* child) {
|
||||
for(int i = 0; i < getChildCount(); i++)
|
||||
if(mainLayout->itemAt(i)->widget() == child)
|
||||
return i;
|
||||
|
||||
return getChildCount()-1;
|
||||
}
|
||||
|
28
src/file_widget.h
Normal file
28
src/file_widget.h
Normal file
@ -0,0 +1,28 @@
|
||||
#include <QWidget>
|
||||
#include <QHBoxLayout>
|
||||
#include <QImage>
|
||||
#include <QString>
|
||||
#include <QLabel>
|
||||
#include <QPoint>
|
||||
#include <vector>
|
||||
|
||||
class FileWidget : public QWidget {
|
||||
Q_OBJECT
|
||||
public:
|
||||
FileWidget(QWidget* parent = 0);
|
||||
QSize sizeHint() const;
|
||||
protected:
|
||||
void dragEnterEvent(QDragEnterEvent* event);
|
||||
void dropEvent(QDropEvent* event);
|
||||
void mousePressEvent(QMouseEvent* event);
|
||||
private:
|
||||
std::vector<QLabel*> child;
|
||||
|
||||
QHBoxLayout* mainLayout;
|
||||
|
||||
void addChild(QString name);
|
||||
int findClickEventChild(QPoint pos);
|
||||
int findChildPositionInLayout(QLabel* child);
|
||||
int getChildCount() const;
|
||||
};
|
||||
|
@ -3,8 +3,9 @@
|
||||
#include <assert.h>
|
||||
#include "table_view.h"
|
||||
#include "pdf_page_widget.h"
|
||||
#include "file_frame_widget.h"
|
||||
|
||||
PDFPageWidget* test[10];
|
||||
FileFrameWidget* test[10];
|
||||
|
||||
TableView::TableView(QWidget* parent) : QWidget(parent) {
|
||||
outerLayout = new QVBoxLayout();
|
||||
@ -23,10 +24,17 @@ TableView::TableView(QWidget* parent) : QWidget(parent) {
|
||||
* To remove pagewidget and add filewidgets later,
|
||||
* use QVector<PDFFile> files to store files.
|
||||
*/
|
||||
for(i = 0; i < 10; i++) {
|
||||
/*for(i = 0; i < 10; i++) {
|
||||
test[i] = new PDFPageWidget();
|
||||
test[i]->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
|
||||
|
||||
layout->addWidget(test[i]);
|
||||
}*/
|
||||
|
||||
for(i = 0; i < 10; i++) {
|
||||
test[i] = new FileFrameWidget();
|
||||
/*test[i]->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Ignored);*/
|
||||
|
||||
layout->addWidget(test[i]);
|
||||
}
|
||||
/* End TODO. */
|
||||
|
Loading…
Reference in New Issue
Block a user