summaryrefslogtreecommitdiff
path: root/src/ui/imageviewer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/imageviewer.cpp')
-rw-r--r--src/ui/imageviewer.cpp414
1 files changed, 0 insertions, 414 deletions
diff --git a/src/ui/imageviewer.cpp b/src/ui/imageviewer.cpp
index 5d6f34d..3292dd6 100644
--- a/src/ui/imageviewer.cpp
+++ b/src/ui/imageviewer.cpp
@@ -56,7 +56,6 @@
#include "fqterm_trace.h"
#include "imageviewer.h"
-
namespace FQTerm {
typedef enum {
@@ -1335,419 +1334,6 @@ namespace FQTerm {
return (image.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
}
- // original viewer
- void FQTermImageOrigin::onChange(const QModelIndex & index) {
-
- if (!model_->isDir(index)) {
-
- if (!isHidden())
- canvas_->hide();
-
- QString exifInfo = QString::fromStdString(exifExtractor_->extractExifInfo(model_->filePath(tree_->currentIndex()).toLocal8Bit().data()));
- bool resized = false;
-
- if (exifInfo != "") {
-
- if (!isExifTableShown_) {
- adjustLayout(true);
- isExifTableShown_ = true;
- resized = true;
- }
-
- updateExifInfo();
- } else {
-
- if (isExifTableShown_) {
- adjustLayout(false);
- isExifTableShown_ = false;
- resized = true;
- }
- }
-
- QString path = QDir::toNativeSeparators(model_->filePath(index));
-
- if (path.endsWith(QDir::separator()))
- path.chop(1);
-
- canvas_->loadImage(path, !resized);
-
- // canvas_->autoAdjust();
- if (!isHidden())
- canvas_->show();
- }
- }
-
- FQTermImageOrigin::~FQTermImageOrigin() {
- delete menuBar_;
- delete canvas_;
- delete tree_;
- delete model_;
- }
-
- FQTermImageOrigin::FQTermImageOrigin(FQTermConfig * config, QWidget *parent,
- Qt::WindowFlags wflag) :
- FQTermImage(parent, wflag),
- config_(config),
- isExifTableShown_(false) {
-
- setWindowTitle(tr("FQTerm Image Viewer"));
- ItemDelegate* itemDelegate = new ItemDelegate;
- exifExtractor_ = new ExifExtractor;
- exifTable_ = new ExifTable(this);
- exifTable_->setTextFormat(Qt::RichText);
- exifTable_->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
- canvas_ = new FQTermCanvas(config, this, 0);
- canvas_->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
- model_ = new ImageViewerDirModel;
- tree_ = new QTreeView;
-
-
- tree_->setModel(model_);
- tree_->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
- adjustItemSize();
- tree_->setItemDelegate(itemDelegate);
- tree_->setColumnWidth(0, 150);
- tree_->setColumnWidth(1, 0);
-
- tree_->hideColumn(0);
-
- tree_->setUniformRowHeights(true);
- tree_->setWordWrap(true);
- //tree_->header()->setResizeMode(0, QHeaderView::Fixed);
- //tree_->header()->setResizeMode(1, QHeaderView::ResizeToContents);
- //tree_->header()->resizeSection(0, 150);
- //tree_->header()->resizeSection(1, 1);
- comboBox_ = new QComboBox(this);
- comboBox_->addItem(tr("Sort by name"), QDir::Name);
- comboBox_->addItem(tr("Sort by time"), QDir::Time);
- comboBox_->addItem(tr("Sort by size"), QDir::Size);
- comboBox_->addItem(tr("Sort by type"), QDir::Type);
-
- FQ_VERIFY(connect(comboBox_, SIGNAL(currentIndexChanged(int)), this, SLOT(sortFileList(int))));
-
- comboBox_->setCurrentIndex(1);
-
- layout_ = new QGridLayout;
- menuBar_ = new QMenuBar(this);
- menuBar_->addMenu(canvas_->menu());
- menuBar_->resize(1,1);
-
- canvas_->ToolBar()->addAction(
- QIcon(getPath(RESOURCE) + ICON_SOURCE + "prev.png"), tr("Previous"),
- this, SLOT(previous()));
- canvas_->ToolBar()->addAction(
- QIcon(getPath(RESOURCE) + ICON_SOURCE + "next.png"), tr("Next"),
- this, SLOT(next()));
-
- layout_->addWidget(tree_, 0, 0, 12, 1);
- layout_->addWidget(comboBox_, 12, 0, 1, 1);
- layout_->addWidget(canvas_, 0, 1, 12, 10);
- // layout_->addWidget(exifTable_, 10, 1, 2, 10);
- layout_->addWidget(canvas_->ToolBar(), 12, 1, 1, 10, Qt::AlignHCenter);
- layout_->setColumnMinimumWidth(0, tree_->columnWidth(0) + 150);
- setLayout(layout_);
-
- /*
- FQ_VERIFY(connect(tree_, SIGNAL(clicked(const QModelIndex &)),
- this, SLOT(onChange(const QModelIndex &))));
- */
- FQ_VERIFY(connect(tree_, SIGNAL(activated(const QModelIndex &)),
- this, SLOT(onChange(const QModelIndex &))));
- FQ_VERIFY(connect(tree_->selectionModel(),
- SIGNAL(selectionChanged(const QItemSelection&,
- const QItemSelection&)),
- this, SLOT(selectionChanged(const QItemSelection&,
- const QItemSelection&))));
- FQ_VERIFY(connect(exifTable_, SIGNAL(showExifDetails()),
- this, SLOT(showFullExifInfo())));
- }
-
- void FQTermImageOrigin::scrollTo(const QString& filename) {
-
- QString path = QFileInfo(filename).absolutePath();
- model_->refresh();
- tree_->setRootIndex(model_->index(path));
- canvas_->loadImage(filename);
-
- if (canvas_->isHidden() && !isHidden()) {
- canvas_->show();
- }
-
- const QModelIndex& index = model_->index(filename);
- tree_->scrollTo(index);
- tree_->setCurrentIndex(index);
- }
-
- void FQTermImageOrigin::updateImage(const QString& filename) {
-
- static int i = 0;
- if (++i == 10) {
- model_->refresh(model_->index(filename));
- i = 0;
- }
- canvas_->updateImage(filename);
- }
-
- void FQTermImageOrigin::previous() {
-
- const QModelIndex& index = tree_->indexAbove(tree_->currentIndex());
- if (index.isValid()) {
- tree_->setCurrentIndex(index);
- canvas_->loadImage(QDir::toNativeSeparators(model_->filePath(index)));
- }
- }
-
- void FQTermImageOrigin::next() {
-
- const QModelIndex& index = tree_->indexBelow(tree_->currentIndex());
- if (index.isValid()) {
- tree_->setCurrentIndex(index);
- canvas_->loadImage(QDir::toNativeSeparators(model_->filePath(index)));
- }
- }
-
- void FQTermImageOrigin::adjustItemSize() {
-
- QFontMetrics fm(font());
- ItemDelegate::size_.setWidth(qMax(128, fm.width("WWWWWWWW.WWW")));
- ItemDelegate::size_.setHeight(fm.height() + 150);
- }
-
- void FQTermImageOrigin::selectionChanged(const QItemSelection & selected,
- const QItemSelection & deselected) {
-
- onChange(tree_->selectionModel()->currentIndex());
- }
-
- void FQTermImageOrigin::sortFileList(int index) {
-
- model_->setSorting(QDir::SortFlag(comboBox_->itemData(index).toInt()));
- QString poolPath = config_->getItemValue("preference", "pool");
-
- if (poolPath.isEmpty()) {
- poolPath = getPath(USER_CONFIG) + "pool/";
- }
-
- tree_->setRootIndex(model_->index(poolPath));
- }
-
- void FQTermImageOrigin::showFullExifInfo() {
-
- QString exifInfo = QString::fromStdString(exifExtractor_->extractExifInfo(model_->filePath(tree_->currentIndex()).toLocal8Bit().data()));
- QString comment;
-
- if ((*exifExtractor_)["UserComment"].length() > 8) {
-
- QString commentEncoding = QString::fromStdString((*exifExtractor_)["UserComment"].substr(0, 8));
-
- if (commentEncoding.startsWith("UNICODE")) {
- //UTF-16
- QTextCodec* c = QTextCodec::codecForName("UTF-16");
- comment = c->toUnicode((*exifExtractor_)["UserComment"].substr(8).c_str());
- } else if (commentEncoding.startsWith("JIS")) {
- //JIS X 0208
- QTextCodec* c = QTextCodec::codecForName("JIS X 0208");
- comment = c->toUnicode((*exifExtractor_)["UserComment"].substr(8).c_str());
- } else {
- comment = QString::fromStdString((*exifExtractor_)["UserComment"].substr(8));
- }
- }
-
-
- QTextEdit* info = new QTextEdit;
- info->setText(exifInfo + tr("Comment : ") + comment + "\n");
- info->setWindowFlags(Qt::Dialog);
- info->setAttribute(Qt::WA_DeleteOnClose);
- info->setAttribute(Qt::WA_ShowModal);
- // info->setLineWrapMode(QTextEdit::NoWrap);
- info->setReadOnly(true);
- QFontMetrics fm(font());
- info->resize(fm.width("Orientation : 1st row - 1st col : top - left side "), fm.height() * 20);
- info->show();
- }
-
- void FQTermImageOrigin::adjustLayout(bool withExifTable) {
-
- if (withExifTable) {
-
- layout_->addWidget(canvas_, 0, 1, 11, 10);
- layout_->addWidget(exifTable_, 11, 1, 1, 10, Qt::AlignHCenter);
- if (!isHidden() && exifTable_->isHidden()) {
- exifTable_->show();
- }
-
- layout_->addWidget(canvas_->ToolBar(), 12, 1, 1, 10, Qt::AlignHCenter);
- } else {
- layout_->addWidget(canvas_, 0, 1, 12, 10);
- layout_->removeWidget(exifTable_);
- exifTable_->hide();
- layout_->addWidget(canvas_->ToolBar(), 12, 1, 1, 10, Qt::AlignHCenter);
- }
- }
-
- void FQTermImageOrigin::updateExifInfo() {
-
- exifTable_->clear();
-
- QString exifInfoToShow = "<table border=\"1\"><tr><td>"
- + tr("Model") + " : " + QString::fromStdString((*exifExtractor_)["Model"]) + "</td><td>"
- + QString::fromStdString((*exifExtractor_)["DateTime"]) + "</td><td>"
- + QString::fromStdString((*exifExtractor_)["Flash"]) + "</td>"
- + "</tr><tr><td>"
- + tr("ExposureTime") + " : " + QString::fromStdString((*exifExtractor_)["ExposureTime"]) + "</td><td>"
- + tr("FNumber") + " : " + QString::fromStdString((*exifExtractor_)["FNumber"]) + "</td><td>"
- + tr("ISO") + " : " + QString::fromStdString((*exifExtractor_)["ISOSpeedRatings"]) + "</td>"
- + "</tr><tr><td>"
- + tr("FocalLength") + " : " + QString::fromStdString((*exifExtractor_)["FocalLength"]) + "</td><td>"
- + tr("MeteringMode") + " : " + QString::fromStdString((*exifExtractor_)["MeteringMode"]) + "</td><td>"
- + tr("ExposureBias") + " : " + QString::fromStdString((*exifExtractor_)["ExposureBiasValue"]) + "</td></tr></tabel>";
-
- exifTable_->setText(exifInfoToShow);
- if (!isHidden() && exifTable_->isHidden()) {
- exifTable_->show();
- }
- }
-
- void FQTermImageOrigin::closeEvent( QCloseEvent *clse ) {
-
- hide();
- clse->ignore();
- return ;
- }
-
- ImageViewerDirModel::ImageViewerDirModel(QObject *parent /*= 0*/)
- : QDirModel(parent) {
-
- //insertColumn(1);
- QStringList nameFilterList;
- QList<QByteArray> formats = QImageReader::supportedImageFormats();
- for (QList<QByteArray>::iterator it = formats.begin();
- it != formats.end();
- ++it) {
- QString filter("*.");
- filter.append(it->data());
- nameFilterList << filter;
- }
- setNameFilters(nameFilterList);
- setFilter(QDir::Files);
- }
-
- int ImageViewerDirModel::columnCount(const QModelIndex &/*parent*/) const {
-
- return 2;
- }
-
- QVariant ImageViewerDirModel::headerData(
- int section, Qt::Orientation orientation, int role) const {
- //if (section == 0) return QVariant();
- if (role == Qt::DisplayRole) {
- // if (section == 1) {
- return QString(tr("Image Preview"));
- //}
- }
- return QDirModel::headerData(section, orientation, role);
- }
-
- QVariant ImageViewerDirModel::data(const QModelIndex &index, int role) const {
- //if (index.column() == 0) return QVariant();
- if (role == Qt::DecorationRole) {
- if (isDir(index)) {
- return QVariant();
- }
-
- QString path = QDir::toNativeSeparators(filePath(index));
- if (path.endsWith(QDir::separator()))
- path.chop(1);
-
- QPixmap pixmap;
- bool res = pixmap.load(path);
- if (!res) {
- QList<QByteArray> formats = QImageReader::supportedImageFormats();
- for (QList<QByteArray>::iterator it = formats.begin();
- !res && it != formats.end();
- ++it) {
- res = pixmap.load(path, it->data());
- }
- }
-
- if (pixmap.height() > 128 || pixmap.width() > 128) {
- return pixmap.scaled(128, 128,
- Qt::KeepAspectRatio, Qt::SmoothTransformation);
- }
-
- return pixmap;
- } else if (role == Qt::DisplayRole) {
- return fileName(index);
- }/*
- else if (role == Qt::TextAlignmentRole) {
- return Qt::Qt::AlignBottom;
- }*/
- return QVariant();
- }
-
- QSize ItemDelegate::size_;
-
- void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem & option,
- const QModelIndex & index ) const {
- //if (index.column() == 0) return;
- QStyleOptionViewItemV3 opt = setOptions(index, option);
-
- // prepare
- painter->save();
-
- // get the data and the rectangles
- const QPixmap& pixmap
- = qvariant_cast<QPixmap>(index.data(Qt::DecorationRole));
- QRect decorationRect = QRect(opt.rect.topLeft(), pixmap.size());
- decorationRect.moveTo(decorationRect.left(), decorationRect.top() + 10);
- const QString& text = index.data(Qt::DisplayRole).toString();
- QFontMetrics fm(painter->font());
- QRect displayRect = QRect(decorationRect.bottomLeft(),
- QSize(fm.width(text),fm.height()));
-
- QRect checkRect;
- Qt::CheckState checkState = Qt::Unchecked;
- QVariant value = index.data(Qt::CheckStateRole);
-
- if (value.isValid()) {
- checkState = static_cast<Qt::CheckState>(value.toInt());
-#if QT_VERSION >= 0x050000
- checkRect = doCheck(opt, opt.rect, value);
-#else
- checkRect = check(opt, opt.rect, value);
-#endif
- }
-
- // do the layout
-
- // doLayout(opt, &checkRect, &decorationRect, &displayRect, false);
-
- // draw the item
-
- drawBackground(painter, opt, index);
- painter->drawPixmap(decorationRect, pixmap);
- painter->drawText(displayRect, text);
-
- drawFocus(painter, opt, displayRect);
-
- // done
- painter->restore();
- }
-
- void ExifTable::mouseReleaseEvent(QMouseEvent *pEvent) {
-
- if (pEvent->button() == Qt::LeftButton) {
- emit(showExifDetails());
- }
- }
-
- ExifTable::ExifTable(QWidget *parent) : QLabel(parent) {
-
- }
-
- FQTermImage::FQTermImage( QWidget * parent, Qt::WindowFlags f ) : QWidget(parent, f) {
- }
-
} // namespace FQTerm
#include "imageviewer.moc"