/*
* This file is part of NixNote
* Copyright 2009 Randy Baumgarte
*
* This file may be licensed under the terms of of the
* GNU General Public License Version 2 (the ``GPL'').
*
* Software distributed under the License is distributed
* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
* express or implied. See the GPL for the specific language
* governing rights and limitations.
*
* You should have received a copy of the GPL along with this
* program. If not, go to http://www.gnu.org/licenses/gpl.html
* or write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
package cx.fbn.nevernote.dialog;
//**********************************************
//**********************************************
//* This isn't really used but at one time it
//* was used to create a full page preview.
//**********************************************
//**********************************************
import java.util.List;
import com.trolltech.qt.core.QPoint;
import com.trolltech.qt.core.QRect;
import com.trolltech.qt.core.Qt;
import com.trolltech.qt.core.Qt.WindowModality;
import com.trolltech.qt.gui.QApplication;
import com.trolltech.qt.gui.QColor;
import com.trolltech.qt.gui.QDesktopWidget;
import com.trolltech.qt.gui.QDialog;
import com.trolltech.qt.gui.QGridLayout;
import com.trolltech.qt.gui.QImage;
import com.trolltech.qt.gui.QKeyEvent;
import com.trolltech.qt.gui.QLabel;
import com.trolltech.qt.gui.QMouseEvent;
import com.trolltech.qt.gui.QPaintEvent;
import com.trolltech.qt.gui.QPainter;
import com.trolltech.qt.gui.QPalette;
import com.trolltech.qt.gui.QPalette.ColorRole;
import com.trolltech.qt.gui.QPixmap;
import com.trolltech.qt.gui.QWheelEvent;
public class ThumbnailViewer extends QDialog {
private String thumbnail;
private final QLabel picture;
QGridLayout grid = new QGridLayout();
public Signal0 upArrow;
public Signal0 downArrow;
public Signal0 leftArrow;
public Signal0 rightArrow;
private QImage image;
private List<String> guids;
public ThumbnailViewer() {
this.setVisible(false);
leftArrow = new Signal0();
rightArrow = new Signal0();
upArrow = new Signal0();
downArrow = new Signal0();
setAutoFillBackground(true);
QPalette palette = new QPalette(palette());
// Set background colour to black
palette.setColor(ColorRole.Base, QColor.black);
setPalette(palette);
grid = new QGridLayout();
setLayout(grid);
picture = new QLabel();
/*
QLabel left = new QLabel();
QLabel right = new QLabel();
grid.addWidget(left, 0,0);
grid.addWidget(picture,0,1);
grid.addWidget(right, 0,2);
grid.setWidgetSpacing(1);
grid.setContentsMargins(10, 10, -10, -10);
*/
setWindowModality(WindowModality.ApplicationModal);
setWindowFlags(Qt.WindowType.FramelessWindowHint);
setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground);
// setBackgroundRole(ColorRole.Shadow);
// setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose);
// showFullScreen();
// this.hide();
}
public void setThumbnail(String thumb) {
thumbnail = thumb;
image = new QImage(thumbnail);
picture.setPixmap(QPixmap.fromImage(image));
}
public void setThumbnail(QImage i) {
image = i;
picture.setPixmap(QPixmap.fromImage(image));
}
@Override
public void keyPressEvent(QKeyEvent e) {
if (e.key() == Qt.Key.Key_Up.value() || e.key() == Qt.Key.Key_Right.value()) {
upArrow.emit();
}
if (e.key() == Qt.Key.Key_Down.value() || e.key() == Qt.Key.Key_Left.value()) {
downArrow.emit();
}
super.keyPressEvent(e);
}
@Override
public void mousePressEvent(QMouseEvent e) {
if (e.button() == Qt.MouseButton.LeftButton)
close();
}
@Override
public void wheelEvent(QWheelEvent e) {
int numDegrees = e.delta() / 8;
int numSteps = numDegrees / 15;
if (e.orientation().equals(Qt.Orientation.Vertical)) {
if (numSteps > 0) {
for (int i=0; i<numSteps; i++) {
upArrow.emit();
repaint();
}
}
if (numSteps < 0) {
for (int i=numSteps; i<0; i++) {
downArrow.emit();
repaint();
}
}
}
}
@Override
public void paintEvent(QPaintEvent e) {
QDesktopWidget desktop = QApplication.desktop();
int screen = desktop.screenNumber();
this.setMaximumSize(desktop.size());
this.setMinimumSize(desktop.size());
resize(desktop.size());
QPainter painter = new QPainter(this);
painter.fillRect(desktop.screenGeometry(screen), QColor.black);
QRect availGeo = desktop.availableGeometry(screen);
int x1 = (availGeo.width()/2)-(image.size().width()/2);
int y1 = (availGeo.height()/2)-(image.size().height()/2);
painter.drawImage(new QPoint(x1,y1), image);
}
public List<String> getGuids() {
return guids;
}
public void setGuids(List<String> g) {
guids = g;
}
}