#include "filereadworker.h"
#include "foldermodel.h"
#include "folderview.h"
+#include "global.h"
+#include "hexview.h"
+#include "imageview.h"
#include "mainwindow.h"
#include "preferences.h"
+#include "textview.h"
#include "panel.h"
#include "ui_panel.h"
#include <QDebug>
+#include <QTextCodec>
///////////////////////////////////////////////////////////////////////////////
/// \brief Panel::Panel
m_worker()
{
ui->setupUi(this);
- ui->imageView->setVisible(false);
- ui->textView->setVisible(false);
ui->progressBar->setVisible(false);
+ ui->scrollArea->setVisible(false);
}
///////////////////////////////////////////////////////////////////////////////
{
qDebug() << "Panel::initialize()";
- ui->imageView->initialize(w);
ui->folderPanel->initialize(w);
- ui->textView->initialize(w);
ui->progressBar->installEventFilter(w);
+ ui->scrollArea->installEventFilter(w);
}
///////////////////////////////////////////////////////////////////////////////
}
ui->progressBar->setVisible(false);
+ ui->scrollArea->setVisible(false);
+ ui->folderPanel->setVisible(false);
if (!index.isValid()) {
- ui->imageView->setVisible(false);
- ui->textView->setVisible(false);
ui->folderPanel->setVisible(true);
return;
}
QString path = m->filePath(index);
if (m->isDir(index)) {
model()->setRootPath(path);
- ui->imageView->setVisible(false);
- ui->textView->setVisible(false);
ui->folderPanel->setVisible(true);
return;
}
connect(m_worker, SIGNAL(resultReady(QByteArray)), this, SLOT(onReady(QByteArray)));
ui->progressBar->setValue(0);
ui->progressBar->setVisible(true);
- ui->imageView->setVisible(false);
- ui->textView->setVisible(false);
- ui->folderPanel->setVisible(false);
m_worker->open(path);
m_worker->start();
QPalette pal;
- pal = ui->imageView->palette();
- pal.setColor(QPalette::Base, prefs.getImageViewBgColor());
- ui->imageView->setPalette(pal);
-
- pal = ui->textView->palette();
- pal.setColor(QPalette::Base, prefs.getTextViewBgColor());
- pal.setColor(QPalette::Text, prefs.getTextViewFgColor());
- ui->textView->setPalette(pal);
- ui->textView->setFont(prefs.getTextViewFont());
+ pal = this->palette();
+ pal.setColor(this->backgroundRole(), prefs.folderViewBgColor(objectName() == "FPanel"));
+ this->setAutoFillBackground(true);
+ this->setPalette(pal);
ui->folderPanel->updateAppearance(prefs);
+ if (model()) {
+ model()->updateAppearance(prefs);
+ }
}
///////////////////////////////////////////////////////////////////////////////
///
QWidget *Panel::visibleView() const
{
- if (ui->textView->isVisible()) {
- return ui->textView;
- }
- if (ui->imageView->isVisible()) {
- return ui->imageView;
+ if (ui->scrollArea->isVisible()) {
+ return ui->scrollArea/*->widget()*/;
}
if (ui->folderPanel->isVisible()) {
return ui->folderPanel->itemView();
///
void Panel::onReady(const QByteArray &data)
{
+ MainWindow *mainWnd;
+ if (parent()->objectName() == "splitter") {
+ mainWnd = static_cast<MainWindow*>(parent()->parent()->parent());
+ }
+ else {
+ mainWnd = static_cast<MainWindow*>(parent()->parent());
+ }
ui->progressBar->setVisible(false);
+ ui->folderPanel->setVisible(false);
+ ui->scrollArea->setVisible(true);
+ QWidget *w = ui->scrollArea->widget();
+ if (w) {
+ delete w;
+ }
QPixmap pixmap;
if (pixmap.loadFromData(data)) {
- ui->imageView->setSource(pixmap);
- ui->folderPanel->setVisible(false);
- ui->textView->setVisible(false);
- ui->imageView->setVisible(true);
- ui->imageView->setFocus();
+ ImageView *view = new ImageView(ui->scrollArea);
+ connect(view, SIGNAL(statusChanged(QString)), mainWnd, SLOT(view_statusChanged(QString)));
+ view->installEventFilter(mainWnd);
+ view->setData(pixmap);
+ emit showed(ui->scrollArea);
return;
}
- ui->textView->setSource(data);
- ui->folderPanel->setVisible(false);
- ui->imageView->setVisible(false);
- ui->textView->setVisible(true);
- ui->textView->setFocus();
+ std::string code = detectCode(data.left(1024));
+ QTextCodec *codec = QTextCodec::codecForName(code.c_str());
+ if (codec) {
+ TextView *view = new TextView(ui->scrollArea);
+ connect(view, SIGNAL(copyAvailable(bool)), mainWnd, SLOT(view_copyAvailable(bool)));
+ connect(view, SIGNAL(statusChanged(QString)), mainWnd, SLOT(view_statusChanged(QString)));
+ view->installEventFilter(mainWnd);
+ view->setData(data);
+ emit showed(ui->scrollArea);
+ return;
+ }
+
+ HexView *view = new HexView(ui->scrollArea);
+ connect(view, SIGNAL(copyAvailable(bool)), mainWnd, SLOT(view_copyAvailable(bool)));
+ connect(view, SIGNAL(statusChanged(QString)), mainWnd, SLOT(view_statusChanged(QString)));
+ view->installEventFilter(mainWnd);
+ view->setData(data);
+ emit showed(ui->scrollArea);
}