/* Marcion
Copyright (C) 2009 - 2011 Milan Konvicka
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; version 2 of the License.
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 */
#include "mimages2.h"
#include "ui_mimages2.h"
CMImages2::CMImages2(CMessages * const messages,QString const & filename,QWidget *parent) :
QWidget(parent),
ui(new Ui::CMImages2),
messages(messages),
/*drawarea(messages),*/
filename(filename)
{
ui->setupUi(this);
ui->treeImages->hideColumn(1);
ui->treeImages->hideColumn(2);
ui->iwImg->drawarea()->setSizePolicy(QSizePolicy::Expanding,
QSizePolicy::Expanding);
ui->iwImg->drawarea()->setImageMode(CMImage::Image);
ui->splitter->setStretchFactor(0,0);
ui->splitter->setStretchFactor(1,1);
QList<int> li;
li << 1 << 1;
ui->splitter->setSizes(li);
loadTree(filename);
ui->iwImg->drawarea()->loadPage(filename,computeValue());
IC_SIZES
}
CMImages2::~CMImages2()
{
delete ui;
}
void CMImages2::loadTree(QString const & f)
{
QFileInfo fi(f);
QDir dir(fi.dir());
QFileInfoList fl=dir.entryInfoList(QDir::Files|QDir::NoDotAndDotDot);
QTreeWidgetItem * it(0);
for(int x=0;x<fl.count();x++)
{
QString fn(fl.at(x).fileName());
if(fn.indexOf(QRegExp("(\\.png$|\\.jpeg$|\\.jpg$|\\.gif$|\\.tiff$)"))!=-1)
{
QTreeWidgetItem * i=new QTreeWidgetItem(0);
QString afn(fl.at(x).absoluteFilePath());
i->setText(0,fn);
i->setText(1,afn);
i->setIcon(0,QIcon(":/new/icons/icons/image.png"));
ui->treeImages->addTopLevelItem(i);
if(fi.fileName().compare(fl.at(x).fileName())==0)
it=i;
}
}
ui->treeImages->sortItems(0,Qt::AscendingOrder);
if(it)
ui->treeImages->setCurrentItem(it);
//it->setSelected(true);
}
/*void CMImages2::on_spnZoom_valueChanged(double newval)
{
drawarea.scale(newval);
//messages->MsgMsg("scaled");
ui->sldZoom->setValue((int)(newval*(double)100));
}*/
void CMImages2::on_btZ1_clicked()
{
//checkZoomB((QToolButton*)this->sender());
ui->sldZoom->setValue(100);
on_sldZoom_sliderReleased();
}
void CMImages2::on_btZ2_clicked()
{
//checkZoomB((QToolButton*)this->sender());
ui->sldZoom->setValue(200);
on_sldZoom_sliderReleased();
}
void CMImages2::on_btZ3_clicked()
{
//checkZoomB((QToolButton*)this->sender());
ui->sldZoom->setValue(300);
on_sldZoom_sliderReleased();
}
void CMImages2::on_btZ4_clicked()
{
//checkZoomB((QToolButton*)this->sender());
ui->sldZoom->setValue(400);
on_sldZoom_sliderReleased();
}
/*void CMImages2::checkZoomB(QToolButton * b)
{
ui->btZ1->setChecked(false);
ui->btZ2->setChecked(false);
ui->btZ3->setChecked(false);
ui->btZ4->setChecked(false);
ui->btZD2->setChecked(false);
ui->btZD3->setChecked(false);
ui->btZD4->setChecked(false);
ui->btZD5->setChecked(false);
b->setChecked(true);
}*/
void CMImages2::on_btZD2_clicked()
{
//checkZoomB((QToolButton*)this->sender());
ui->sldZoom->setValue(100/2);
on_sldZoom_sliderReleased();
}
void CMImages2::on_btZD5_clicked()
{
//checkZoomB((QToolButton*)this->sender());
ui->sldZoom->setValue(100/5);
on_sldZoom_sliderReleased();
}
void CMImages2::on_btZD4_clicked()
{
//checkZoomB((QToolButton*)this->sender());
ui->sldZoom->setValue(100/4);
on_sldZoom_sliderReleased();
}
void CMImages2::on_btZD3_clicked()
{
//checkZoomB((QToolButton*)this->sender());
ui->sldZoom->setValue(100/3);
on_sldZoom_sliderReleased();
}
void CMImages2::on_treeImages_currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* )
{
if(current)
ui->wdgImgZoomPanel->setEnabled(ui->iwImg->drawarea()->loadPage(current->text(1),computeValue()));
}
void CMImages2::on_sldZoom_valueChanged(int value)
{
//ui->spnZoom->setValue(((double)value)/100);
double v(((double)value)/100);
ui->lblValue->setText("x"+QString::number(v,'f',2));
//drawarea.scale(v);
}
void CMImages2::on_sldZoom_sliderReleased()
{
//ui->spnZoom->setValue(((double)value)/100);
double v(((double)ui->sldZoom->value())/100);
//ui->lblValue->setText("x"+QString::number(v,'f',2));
ui->iwImg->drawarea()->scale(v);
}
double CMImages2::computeValue() const
{
return ((double)ui->sldZoom->value())/100;
}