Skip to content
This repository has been archived by the owner on Oct 4, 2023. It is now read-only.

Commit

Permalink
File list initial content
Browse files Browse the repository at this point in the history
  • Loading branch information
oferkv committed Jan 21, 2018
1 parent 7e71a92 commit b6887ba
Show file tree
Hide file tree
Showing 13 changed files with 467 additions and 314 deletions.
62 changes: 62 additions & 0 deletions FileListWidget.cpp
@@ -0,0 +1,62 @@
/*
* Copyright (C) 2013-2018 Ofer Kashayov <oferkv@live.com>
* This file is part of Phototonic Image Viewer.
*
* Phototonic 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.
*
* Phototonic 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 Phototonic. If not, see <http://www.gnu.org/licenses/>.
*/

#include "FileListWidget.h"

FileListWidget::FileListWidget(QWidget *parent) : QTreeWidget(parent) {
setAcceptDrops(true);
setDragEnabled(false);
setDragDropMode(QAbstractItemView::DropOnly);
setColumnCount(1);
setHeaderHidden(true);
addFileListEntry();
setMaximumHeight((int) (QFontMetrics(font()).height() * 1.6));
}

void FileListWidget::addFileListEntry() {
QTreeWidgetItem *item = new QTreeWidgetItem(this);
item->setText(0, "File List");
item->setIcon(0, QIcon::fromTheme("edit-select-all"));
insertTopLevelItem(0, item);
}

void FileListWidget::resizeTreeColumn(const QModelIndex &) {
resizeColumnToContents(0);
}

void FileListWidget::dragEnterEvent(QDragEnterEvent *event) {
QModelIndexList selectedDirs = selectionModel()->selectedRows();

if (selectedDirs.size() > 0) {
dndOrigSelection = selectedDirs[0];
}
event->acceptProposedAction();
}

void FileListWidget::dragMoveEvent(QDragMoveEvent *event) {
setCurrentIndex(indexAt(event->pos()));
}

void FileListWidget::dropEvent(QDropEvent *event) {
if (event->source()) {
QString fileSystemTreeStr("FileSystemTree");
bool dirOp = (event->source()->metaObject()->className() == fileSystemTreeStr);
emit dropOp(event->keyboardModifiers(), dirOp, event->mimeData()->urls().at(0).toLocalFile());
}
}

53 changes: 53 additions & 0 deletions FileListWidget.h
@@ -0,0 +1,53 @@
/*
* Copyright (C) 2013-2014 Ofer Kashayov <oferkv@live.com>
* This file is part of Phototonic Image Viewer.
*
* Phototonic 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.
*
* Phototonic 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 Phototonic. If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef FILE_LIST_WIDGET_H
#define FILE_LIST_WIDGET_H

#include <QtWidgets>
#include "Settings.h"

class FileListWidget : public QTreeWidget {
Q_OBJECT

public:
FileListWidget(QWidget *parent);

void addFileListEntry();

private:
QModelIndex dndOrigSelection;

private slots:

void resizeTreeColumn(const QModelIndex &);

protected:
void dragEnterEvent(QDragEnterEvent *event);

void dragMoveEvent(QDragMoveEvent *event);

void dropEvent(QDropEvent *event);

signals:

void dropOp(Qt::KeyboardModifiers keyMods, bool dirOp, QString cpMvDirPath);
};

#endif // FILE_LIST_WIDGET_H

0 comments on commit b6887ba

Please sign in to comment.