Skip to Content.
Sympa Menu

idok-commit - [idok-commit] idok commit r209 - trunk/java/ch/idok/qtgui

idok-commit AT lists.psi.ch

Subject: Commit emails of the iDok project

List archive

[idok-commit] idok commit r209 - trunk/java/ch/idok/qtgui


Chronological Thread 
  • From: "AFS account Florian Huebner" <huebner AT savannah.psi.ch>
  • To: idok-commit AT lists.psi.ch
  • Subject: [idok-commit] idok commit r209 - trunk/java/ch/idok/qtgui
  • Date: Thu, 11 Sep 2008 08:46:12 +0200
  • List-archive: <https://lists.web.psi.ch/pipermail/idok-commit/>
  • List-id: Commit emails of the iDok project <idok-commit.lists.psi.ch>

Author: huebner
Date: Thu Sep 11 08:46:12 2008
New Revision: 209

Log:
Improved the preview function:
-Faster text rendering
-File size warnings
-Added buttons for external preview

Modified:
trunk/java/ch/idok/qtgui/PreviewWidget.java

Modified: trunk/java/ch/idok/qtgui/PreviewWidget.java
==============================================================================
--- trunk/java/ch/idok/qtgui/PreviewWidget.java (original)
+++ trunk/java/ch/idok/qtgui/PreviewWidget.java Thu Sep 11 08:46:12 2008
@@ -31,7 +31,6 @@
import java.net.PasswordAuthentication;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
-import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
@@ -67,7 +66,9 @@
import com.trolltech.qt.gui.QScrollArea;
import com.trolltech.qt.gui.QSpacerItem;
import com.trolltech.qt.gui.QSpinBox;
+import com.trolltech.qt.gui.QTextEdit;
import com.trolltech.qt.gui.QWidget;
+import com.trolltech.qt.gui.QTextEdit.LineWrapMode;

/**
* Previews contents of a single file, both images and text are supported
@@ -100,7 +101,7 @@
/**
* Keeps the preview text
*/
- private QLabel textView_;
+ private QTextEdit textView_;

private QGridLayout layouter_;

@@ -150,7 +151,10 @@
startex = new StartExternalProgram();

imageView_ = new PreviewImage();
- textView_ = new QLabel();
+ textView_ = new QTextEdit();
+ textView_.setLineWrapMode(LineWrapMode.NoWrap);
+ textView_.setFrameShape(QFrame.Shape.NoFrame);
+ textView_.setReadOnly(true);
// imageView_.hide();
// textView_.hide();

@@ -281,7 +285,7 @@
| name.endsWith("tsv") | name.endsWith("odp")
| name.endsWith("sxi") | name.endsWith("ppt"))) {
textView_
- .setText("<b> Please press the button below to
generate a preview </b>");
+ .setHtml("<b> Please press the button below to
generate a preview </b>");
enableTextView();
previewButton_.show();
pdfPageSpinBox_.hide();
@@ -307,20 +311,27 @@
logger_.log(Level.WARNING, "Temporary File I/O problems", e);
}
}
-
+
+
+ private boolean previewFileSizeWithin(int sizeLimitMB, String text){
+ if
((repoCon_.getFileSize()>(sizeLimitMB*1000000))&&!enablePreviewAnyway) {
+ previewAnywayButton_.show();
+ previewExternalButton_.show();
+ double size =
Math.round(repoCon_.getFileSize()*100./1048576)/100.;
+ textView_.setHtml("<b> "+ text +"</b> <br>"+"Size: "+ size + "
MB");
+ enableTextView();
+ unsetCursor();
+ return false;
+ }else{
+ return true;
+ }
+ }
+
+
private void previewData(String name) {
setCursor(BUSYCURSOR);
startex.setPath(repPath_);

- if
(!localFile&&(repoCon_.getFileSize()>400000)&&!enablePreviewAnyway) {
- previewAnywayButton_.show();
- previewExternalButton_.show();
- double size = Math.round(repoCon_.getFileSize()*100./1048576)/100.;
- textView_.setText("Preview of the file might take some time.\n"
+"Size: "+ size + " MB");
- enableTextView();
- unsetCursor();
- return;
- }

String ext = new String("");
if ((name.split("\\.").length - 1) >= 0 &&
((name.split("\\.")[name.split("\\.").length - 1].length()) >=1 )) {
@@ -330,63 +341,32 @@

if (imageFilters_.contains(ext)) {
// Should contain: bmp,pbm,pgm,png,ppm,xbm,xpm
- previewImage();
- pdfPageSpinBox_.hide();
+ if(previewFileSizeWithin(15,"Large picture, preview might be
slow")){
+ previewImage();
+ pdfPageSpinBox_.hide();
+ }
} else if (ext.contains("txt") | ext.contains("htm")
| ext.contains("xml") | ext.contains("tex")
| ext.contains("log") | ext.contains("sh")
| ext.contains("bat") | ext.contains("cmd")
| ext.contains("py")) {
- previewText();
- pdfPageSpinBox_.hide();
+ if(previewFileSizeWithin(15,"Large PDF file, preview might be
slow")){
+ previewText();
+ pdfPageSpinBox_.hide();
+ }
} else if (ext.contains("pdf")) {
// fileName_ contains the local copy of the PDF file
- try {
- QTime time = new QTime();
- int displayTime = 0;
- time.start();
- File file = new File(fileName_);
- RandomAccessFile raf = new RandomAccessFile(file, "r");
- FileChannel channel = raf.getChannel();
- ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY,
0,
- channel.size());
- pdfFile_ = new PDFFile(buf);
- numPages_ = pdfFile_.getNumPages();
- pictureArray = new QImage[numPages_];
- pdfPageSpinBox_.setRange(1, numPages_);
- previewPdfFile(1);
- pdfPageSpinBox_.show();
- pdfPageSpinBox_.setValue(1);
- displayTime = time.elapsed();
- System.out.println("Display time: " + displayTime + " ms");
- } catch (Exception e) {
- QMessageBox.warning(null, tr("iDok Warning"),
- tr("General PDF decoding problem:") +
e.getMessage());
- logger_.log(Level.WARNING, "General PDF decoding problem",
e);
- }
- } else if (ext.contains("odt") | ext.contains("sxw")
- | ext.contains("rtf") | ext.contains("doc")
- | ext.contains("wpd") | ext.contains("ods")
- | ext.contains("sxc") | ext.contains("xls")
- | ext.contains("csv") | ext.contains("tsv")
- | ext.contains("odp") | ext.contains("sxi")
- | ext.contains("ppt")) {
- try {
- QTime time = new QTime();
- int convertTime = 0;
- int displayTime = 0;
- time.start();
- if (!localFile) {
- ByteArrayOutputStream outStream = new
ByteArrayOutputStream();
- outStream = repoCon_.getCurrentRepo().getFileOverHttp(
- repoCon_.getCurrentRepo(),
- repPath_,
- (repPath_.getRelativeFilesystemPath() + "?pdf")
- .toString().replaceAll(" ", "%20"));
- ByteBuffer outBuffer = ByteBuffer.wrap(outStream
- .toByteArray());
- outStream.close();
- pdfFile_ = new PDFFile(outBuffer);
+ if(previewFileSizeWithin(10,"Large PDF file, preview might be
slow")){
+ try {
+ QTime time = new QTime();
+ int displayTime = 0;
+ time.start();
+ File file = new File(fileName_);
+ RandomAccessFile raf = new RandomAccessFile(file, "r");
+ FileChannel channel = raf.getChannel();
+ ByteBuffer buf =
channel.map(FileChannel.MapMode.READ_ONLY, 0,
+ channel.size());
+ pdfFile_ = new PDFFile(buf);
numPages_ = pdfFile_.getNumPages();
pictureArray = new QImage[numPages_];
pdfPageSpinBox_.setRange(1, numPages_);
@@ -395,66 +375,107 @@
pdfPageSpinBox_.setValue(1);
displayTime = time.elapsed();
System.out.println("Display time: " + displayTime + "
ms");
- System.out.println("Conversion+Display= "
- + (convertTime + displayTime) + " ms");
- } else {
- textView_
- .setText("<b> Sorry, preview of this file type
on a local drive is not yet supported </b>");
- enableTextView();
- }
- } catch (Exception e) {
- QMessageBox.warning(null, tr("iDok Warning"),
- tr("General PDF decoding problem:") +
e.getMessage());
- logger_.log(Level.WARNING, "General PDF decoding problem",
e);
+ } catch (Exception e) {
+ QMessageBox.warning(null, tr("iDok Warning"),
+ tr("General PDF decoding problem:") +
e.getMessage());
+ logger_.log(Level.WARNING, "General PDF decoding
problem", e);
+ }
+ }
+ } else if (ext.contains("odt") | ext.contains("sxw")
+ | ext.contains("rtf") | ext.contains("doc")
+ | ext.contains("wpd") | ext.contains("ods")
+ | ext.contains("sxc") | ext.contains("xls")
+ | ext.contains("csv") | ext.contains("tsv")
+ | ext.contains("odp") | ext.contains("sxi")
+ | ext.contains("ppt")) {
+ if (!localFile) {
+ if(previewFileSizeWithin(10,"Large PDF file, preview might
be slow")){
+ try {
+ QTime time = new QTime();
+ int convertTime = 0;
+ int displayTime = 0;
+ time.start();
+ ByteArrayOutputStream outStream = new
ByteArrayOutputStream();
+ outStream =
repoCon_.getCurrentRepo().getFileOverHttp(
+ repoCon_.getCurrentRepo(),
+ repPath_,
+ (repPath_.getRelativeFilesystemPath() +
"?pdf")
+ .toString().replaceAll(" ", "%20"));
+ ByteBuffer outBuffer = ByteBuffer.wrap(outStream
+ .toByteArray());
+ outStream.close();
+ pdfFile_ = new PDFFile(outBuffer);
+ numPages_ = pdfFile_.getNumPages();
+ pictureArray = new QImage[numPages_];
+ pdfPageSpinBox_.setRange(1, numPages_);
+ previewPdfFile(1);
+ pdfPageSpinBox_.show();
+ pdfPageSpinBox_.setValue(1);
+ displayTime = time.elapsed();
+ System.out.println("Display time: " + displayTime +
" ms");
+ System.out.println("Conversion+Display= "
+ + (convertTime + displayTime) + " ms");
+
+ } catch (Exception e) {
+ QMessageBox.warning(null, tr("iDok Warning"),
+ tr("General PDF decoding problem:") +
e.getMessage());
+ logger_.log(Level.WARNING, "General PDF decoding
problem", e);
+ }
+ }
+ } else {
+ textView_.setHtml("<b> Sorry, preview of this file type on a
local drive is not supported </b>");
+ enableTextView();
}

} else if (ext.contains("jpg") | ext.contains("gif")
| ext.contains("tif") | ext.contains("svg")) {
- try {
- QTime time = new QTime();
- time.start();
if (!localFile) {
- ByteArrayOutputStream outStream = new
ByteArrayOutputStream();
- outStream = repoCon_.getCurrentRepo().getFileOverHttp(
- repoCon_.getCurrentRepo(),
- repPath_,
- (repPath_.getRelativeFilesystemPath() + "?png")
- .toString().replaceAll(" ", "%20"));
- byte[] buf = outStream.toByteArray();
- outStream.close();
- QPixmap pixMap = new QPixmap();
- pixMap.loadFromData(buf);
- QImage image = pixMap.toImage();
- imageView_.setImage(image);
- enableImageView();
- pdfPageSpinBox_.hide();
- System.out.println("Display time: " + time.elapsed()
- + " ms");
-
+ if(previewFileSizeWithin(2,"Large picture, preview might
be slow")){
+ try {
+ QTime time = new QTime();
+ time.start();
+ ByteArrayOutputStream outStream = new
ByteArrayOutputStream();
+ outStream =
repoCon_.getCurrentRepo().getFileOverHttp(
+ repoCon_.getCurrentRepo(),
+ repPath_,
+ (repPath_.getRelativeFilesystemPath() +
"?png")
+ .toString().replaceAll(" ",
"%20"));
+ byte[] buf = outStream.toByteArray();
+ outStream.close();
+ QPixmap pixMap = new QPixmap();
+ pixMap.loadFromData(buf);
+ QImage image = pixMap.toImage();
+ imageView_.setImage(image);
+ enableImageView();
+ pdfPageSpinBox_.hide();
+ System.out.println("Display time: " +
time.elapsed()
+ + " ms");
+ } catch (Exception e) {
+ QMessageBox.warning(null, tr("iDok Warning"),
+ tr("Image display problem:") +
e.getMessage());
+ logger_.log(Level.WARNING, "Image display
problem", e);
+ }
+ }
} else {
textView_
- .setText("<b> Sorry, preview of this file type
on a local drive is not yet supported </b>");
+ .setHtml("<b> Sorry, preview of this file type
on a local drive is supported </b>");
enableTextView();

}
- } catch (Exception e) {
- QMessageBox.warning(null, tr("iDok Warning"),
- tr("Image display problem:") + e.getMessage());
- logger_.log(Level.WARNING, "Image display problem", e);
- }
-
} else if (enablePreviewAnyway) {
previewText();
pdfPageSpinBox_.hide();
previewAsTextButton_.hide();
-// enablePreviewAnyway = false;
+ previewExternalButton_.hide();
+
} else {
textView_
- .setText("<b> Sorry, preview of this file type is not
yet supported </b> <br> (Doubleclick on document to start external viewer)");
+ .setHtml("<b> Sorry, preview of this file type is not
supported </b>");
enableTextView();
if (!localFile)
previewAsTextButton_.show();
-// enablePreviewAnyway = false;
+ previewExternalButton_.show();
+
}
unsetCursor();
enablePreviewAnyway = false;
@@ -507,7 +528,16 @@
data.open(QIODevice.OpenModeFlag.ReadOnly);
QTextStream text = new QTextStream(data);
text.setCodec("ISO 8859-1");
- textView_.setText(text.readAll());
+
+ String firstChar = text.readString();
+ if
(firstChar.startsWith("<!DOCTYPE")||firstChar.startsWith("<!--")||firstChar.startsWith("<html>")||firstChar.startsWith("<?xml"))
{
+ textView_.setHtml(firstChar);
+ textView_.insertHtml(text.readAll());
+ }else{
+ textView_.setPlainText(firstChar);
+ textView_.insertPlainText(text.readAll());
+ }
+
data.close();
enableTextView();
}



  • [idok-commit] idok commit r209 - trunk/java/ch/idok/qtgui, AFS account Florian Huebner, 09/11/2008

Archive powered by MHonArc 2.6.19.

Top of Page