Beispiel #1
0
/*
 * Aktionen, die ausgeführt werden müssen, wenn der 'zurück'-Knopf gedrückt wurde.
 */
void ProtoWindow::on_backPushButton_clicked()
{
	// Daten des "alten" Bildes müssen gespeichert werden.
	save();
		/*
		 * Textdatei erstellen, falls nicht vorhanden.
		 *
		 * Daten in Textdatei schreiben. Dabei werden die alten Daten für dieses Bild überschrieben.
		 * Die Daten werden in der folgenden Reihenfolge gespeichert:
		 * "&"Dateiname(mit Endung)$bildbeschreibung"$"x-Koordinate"%"y-Koordinate"%"Text"$"nächstes Quadrat..."&"
		 *
		 * Bis auf Weiteres wird der gesamte Inhalt der Datei neu gespeichert.
		 */

	// current-Counter eins runterzaehlen, damit das naechste Bild angezeigt wird
	if (this->currentIndex-1 < 0) {
		this->currentIndex = this->dirVec.size()-1;
	} else {
		this->currentIndex = (this->currentIndex-1) % (this->dirVec.size());
	}
	QString fileName = this->dirVec[currentIndex];

	showNextImage((this->curDir.absoluteFilePath(fileName)));

	scaleImage(fittingSize("on_backPushButton_clicked"));
	updateUI();
}
Beispiel #2
0
/*
 * Öffnet eine Bild-Datei und zeigt sie an (über Menü-Punkt)
 */
void ProtoWindow::open()
{
	// Öffnen-Dialog; Dateiname der zu öffnenden Datei wird in fileName gespeichert.
	const QString caption = trUtf8("Datei öffnen");
	const QString filter = trUtf8("Bilder (*.jpeg *.jpg *.JPG *.JPEG *.png)");
	QString fileName = QFileDialog::getOpenFileName(&(*(ui->centralWidget)), caption, QDir::homePath(), filter);

	if (fileName.isEmpty()) {
		// bedeutet, dass der Nutzer "Abbrechen" gedrückt hat
		return;
	}

	//wird gebraucht, um Pfad extrahieren zu können
	QFileInfo info(fileName);

	/*
	 * Die geöffnete Datei liegt in einem neuen Ordner, daher muss alles
	 * in Verbindung mit der Ordnerstruktur neu aufgebaut werden.
	 */
	if (info.absoluteDir() != this->curDir || this->dirVec.empty()) {
		onNewFolder(info.absoluteDir());
	}

	if (showNextImage(fileName)) {

		setCurrentIndex(info.absoluteFilePath());

		//scaleImage(fittingSize("on_backPushButton_clicked"));
		updateUI();
	}
}
//! Construtor
TerraMEPlayerDialog::TerraMEPlayerDialog(Services* manager, QWidget* parent, Qt::WFlags f)
: QDialog(parent, f)
{
	setupUi(this);
	_manager = manager;
	_currentAnalysisImageIndex = 0;
	_imageCountLabel->setText("");

	_imageFileFilter.append("terrama2_*.png"); //Este filtro deve ser igual ao usado para gerar as imagens das analises TerraME (ver AnalysisRule.cpp)
	_imageCountText = tr("Imagem: %1 / %2");

	connect(_terraMEAnalysisListWidget, SIGNAL(currentRowChanged(int)), SLOT(analysisSelected(int)));
	connect(_datetimeListWidget, SIGNAL(currentRowChanged(int)), SLOT(datetimeSelected(int)));

	connect(_previousBtn, SIGNAL(clicked()), SLOT(showPreviousImage()));
	connect(_nextBtn, SIGNAL(clicked()), SLOT(showNextImage()));
	connect(_rewindBtn, SIGNAL(clicked()), SLOT(rewindClicked()));
	connect(_forwardBtn, SIGNAL(clicked()), SLOT(forwardClicked()));
	connect(_pauseBtn, SIGNAL(clicked()), SLOT(pauseClicked()));

	connect(&_changeResultTimer, SIGNAL(timeout()), this, SLOT(changeResultSlot()));
	_changeResultTimer.setSingleShot(false);

	reloadInterface();
}
PhotoStripView::PhotoStripView(PhotoStrip *controller) :
    MWidgetView(controller),
    controller(controller),
    viewport(new Viewport),
    mainLayout(new QGraphicsLinearLayout(Qt::Horizontal)),
    pannedWidget(new QGraphicsWidget),
    focusedWidget(-1), _isPositionChanged(false),
    isModelRowChanged(false), currentModel(0),
    mode(PhotoStripView::OnNormal)
{
    /* controller initial setting */
    controller->setContentsMargins(0, 0, 0, 0);
    controller->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

    /* pannable viewport initial setting */
    viewport->setObjectName("PhotoStripDetailsViewport");
    viewport->setPanDirection(Qt::Horizontal);
    viewport->setContentsMargins(0, 0, 0, 0);
    viewport->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    viewport->setAutoRange(false);

    /* the layout of viewport initial setting */
    mainLayout->setSpacing(0);
    mainLayout->setContentsMargins(0, 0, 0, 0);
    mainLayout->addItem(viewport);

    controller->setLayout(mainLayout);

    /* pannedWidget initial setting */
    pannedWidget->setContentsMargins(0, 0, 0, 0);
    pannedWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

    /* pannedLayout initial setting */
    pannedLayout = new PhotoStripLayout();
    pannedWidget->setLayout(pannedLayout);
    pannedLayout->setSpacing(ITEM_SPACING);
    pannedLayout->setContentsMargins(0, 0, 0, 0);

    connect(viewport, SIGNAL(sizePosChanged(const QSizeF &, const QRectF &, const QPointF &)),
            this, SLOT(sizePosChanged(const QSizeF &, const QRectF &, const QPointF &)));

    viewport->setWidget(pannedWidget);
    viewport->positionIndicator()->hide();

    physics = new PhotoStripPhysics(this);
    connect(physics, SIGNAL(snapIndexChanged(int)), this, SLOT(snapIndexChanged(int)));
    viewport->setPhysics(physics);

    connect(viewport, SIGNAL(panningStopped()), this, SLOT(panningStopped()));
    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(showNextImage()));
    timer->setInterval(SLIDESHOW_INTERVAL);
    connect(viewport, SIGNAL(mousePress()), this, SLOT(mousePress()));

}
//! Slot chamado durante uma animacao. Atualiza a imagem que esta sendo exibida
void TerraMEPlayerDialog::changeResultSlot()
{
	if(_forward)
		showNextImage();
	else
		showPreviousImage();

	// Verificar se chegou ao inicio ou ao fim da lista de imagens a serem exibidas
	if( _currentAnalysisImageIndex == 0 || _currentAnalysisImageIndex == (_currentAnalysisResult.size() - 1) )
		_changeResultTimer.stop();
}
	void CImageAnimationUI::DoEvent( TEventUI& event )
	{
		if( event.Type == UIEVENT_TIMER && event.wParam == PicMoveNxtTimerId)
		{
			OnImageMoveNxt();
		}
		else if( event.Type == UIEVENT_TIMER && event.wParam == PicMovePreTimerId)
		{
			OnImageMovePre();
		}
		else if(event.Type == UIEVENT_TIMER && event.wParam == AutoPicMoveNxtTimerId)
		{
			showNextImage();
		}
		CControlUI::DoEvent(event);
	}
Beispiel #7
0
/*
 * wurde das Programm durch Doppelklick auf eine jp(e)g-Datei geöffnet, muss gleich dieses
 * Bild angezeigt werden.
 *
 * wird z.Zt. nicht weiter entwickelt
 */
void ProtoWindow::setFirstImage()
{
	QString q = QString::fromStdString(this->argv[1]);
	setCurrentIndex(q);

	// Bild anzeigen

	QString fileName = (this->curDir.filePath(this->dirVec[this->currentIndex]));
	// Dateiname sollte nicht leer sein...
	if (showNextImage(fileName)) {

		ui->backPushButton->setEnabled(true);
		ui->forwardPushButton->setEnabled(true);
		ui->showPushButton->setEnabled(true);
	}
}
Beispiel #8
0
/*
 * Aktionen, die ausgeführt werden müssen, wenn der 'vorwärts'-Knopf gedrückt wurde.
 */
void ProtoWindow::on_forwardPushButton_clicked()
{
	// Daten des "alten" Bildes muessen gespeichert werden.
	save();
		/*
		 * Textdatei erstellen, falls nicht vorhanden.
		 * s.o.
		 */

	// current-Counter eins hochzaehlen, damit das naechste Bild angezeigt wird
	this->currentIndex = (this->currentIndex+1) % (this->dirVec.size());
	QString fileName = this->dirVec[currentIndex];

	if (showNextImage(this->curDir.absoluteFilePath(fileName))) {
		scaleImage(fittingSize("on_backPushButton_clicked"));
		updateUI();
	}
}