summaryrefslogtreecommitdiff
authordrw <drw>2005-04-29 00:41:53 (UTC)
committer drw <drw>2005-04-29 00:41:53 (UTC)
commit7e13110d8d0c7cf0d7566484aae9a0664340a69e (patch) (side-by-side diff)
treed042f58fc9352eac332d73886633c70fc7b06510
parentcaedcea372fd99c7fae116ac3d0d1625f88bf138 (diff)
downloadopie-7e13110d8d0c7cf0d7566484aae9a0664340a69e.zip
opie-7e13110d8d0c7cf0d7566484aae9a0664340a69e.tar.gz
opie-7e13110d8d0c7cf0d7566484aae9a0664340a69e.tar.bz2
Resource -> OResource, simplified saving of image using name and used the correct MIME types for save dialog
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/screenshotapplet/inputDialog.cpp65
-rw-r--r--core/applets/screenshotapplet/inputDialog.h30
-rw-r--r--core/applets/screenshotapplet/opie-screenshotapplet.control2
-rw-r--r--core/applets/screenshotapplet/screenshot.cpp27
-rw-r--r--core/applets/screenshotapplet/screenshotapplet.pro6
5 files changed, 13 insertions, 117 deletions
diff --git a/core/applets/screenshotapplet/inputDialog.cpp b/core/applets/screenshotapplet/inputDialog.cpp
deleted file mode 100644
index ce03ec0..0000000
--- a/core/applets/screenshotapplet/inputDialog.cpp
+++ b/dev/null
@@ -1,65 +0,0 @@
-/****************************************************************************
-** Form implementation generated from reading ui file 'inputDialog.ui'
-**
-** Created: Sat Mar 2 07:55:03 2002
-** by: The User Interface Compiler (uic)
-**
-** WARNING! All changes made in this file will be lost!
-****************************************************************************/
-#include "inputDialog.h"
-
-#include <qpe/resource.h>
-
-#include <opie2/ofiledialog.h>
-
-#include <qlineedit.h>
-#include <qpushbutton.h>
-
-using namespace Opie::Ui;
-InputDialog::InputDialog( QWidget* parent, const char* name, bool modal, WFlags fl )
- : QDialog( parent, name, modal, fl )
-{
- if ( !name )
- setName( "InputDialog" );
- resize( 234, 115);
- setMaximumSize( QSize( 240, 40));
- setCaption( tr(name ) );
-
- QPushButton *browserButton;
- browserButton = new QPushButton( Resource::loadIconSet("fileopen"),"",this,"BrowseButton");
- browserButton->setGeometry( QRect( 205, 10, 22, 22));
- connect( browserButton, SIGNAL(released()),this,SLOT(browse()));
- LineEdit1 = new QLineEdit( this, "LineEdit1" );
- LineEdit1->setGeometry( QRect( 4, 10, 190, 22 ) );
-}
-
-/*
- * Destroys the object and frees any allocated resources
- */
-InputDialog::~InputDialog()
-{
- inputText= LineEdit1->text();
-
-}
-
-void InputDialog::browse() {
-
- MimeTypes types;
- QStringList audio, video, all;
- audio << "audio/*";
- audio << "playlist/plain";
- audio << "audio/x-mpegurl";
-
- video << "video/*";
- video << "playlist/plain";
-
- all += audio;
- all += video;
- types.insert("All Media Files", all );
- types.insert("Audio", audio );
- types.insert("Video", video );
-
- QString str = Opie::Ui::OFileDialog::getOpenFileName( 1,"/","", types, 0 );
- LineEdit1->setText(str);
-}
-
diff --git a/core/applets/screenshotapplet/inputDialog.h b/core/applets/screenshotapplet/inputDialog.h
deleted file mode 100644
index 3e3e36f..0000000
--- a/core/applets/screenshotapplet/inputDialog.h
+++ b/dev/null
@@ -1,30 +0,0 @@
-/****************************************************************************
-** Form interface generated from reading ui file 'inputDialog.ui'
-**
-** Created: Sat Mar 2 07:54:46 2002
-** by: The User Interface Compiler (uic)
-**
-** WARNING! All changes made in this file will be lost!
-****************************************************************************/
-#ifndef INPUTDIALOG_H
-#define INPUTDIALOG_H
-
-#include <qvariant.h>
-#include <qdialog.h>
-
-class QLineEdit;
-
-class InputDialog : public QDialog
-{
- Q_OBJECT
-
-public:
- InputDialog( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
- ~InputDialog();
- QString inputText;
- QLineEdit* LineEdit1;
-protected slots:
- void browse();
-};
-
-#endif // INPUTDIALOG_H
diff --git a/core/applets/screenshotapplet/opie-screenshotapplet.control b/core/applets/screenshotapplet/opie-screenshotapplet.control
index b0b9466..c08953b 100644
--- a/core/applets/screenshotapplet/opie-screenshotapplet.control
+++ b/core/applets/screenshotapplet/opie-screenshotapplet.control
@@ -1,10 +1,10 @@
Package: opie-screenshotapplet
Files: plugins/applets/libscreenshotapplet.so* screenshotapplet/*.png
Priority: optional
Section: opie/applets
Maintainer: L. J. Potter <lpotter@trolltech.com>
Architecture: arm
-Depends: task-opie-minimal
+Depends: task-opie-minimal, libopiecore2, libopieui2
Description: Screenshot Applet
A screenshot taskbar applet for the Opie environment
Version: $QPE_VERSION$EXTRAVERSION
diff --git a/core/applets/screenshotapplet/screenshot.cpp b/core/applets/screenshotapplet/screenshot.cpp
index 1d88aa5..4ea81c8 100644
--- a/core/applets/screenshotapplet/screenshot.cpp
+++ b/core/applets/screenshotapplet/screenshot.cpp
@@ -1,352 +1,343 @@
/**********************************************************************
** Copyright (C) 2002 L.J. Potter ljp@llornkcor.com
** All rights reserved.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
**********************************************************************/
#include "screenshot.h"
-#include "inputDialog.h"
/* OPIE */
#include <opie2/odebug.h>
+#include <opie2/ofiledialog.h>
+#include <opie2/oresource.h>
#include <opie2/otaskbarapplet.h>
+
#include <qpe/qpeapplication.h>
#include <qpe/applnk.h>
#include <qpe/qcopenvelope_qws.h>
-#include <qpe/resource.h>
-
/* QT */
#include <qlineedit.h>
#include <qdir.h>
#include <qlabel.h>
#include <qpushbutton.h>
#include <qpainter.h>
#include <qspinbox.h>
#include <qlayout.h>
#include <qcheckbox.h>
#include <qmessagebox.h>
/* STD */
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>
using namespace Opie::Core;
using namespace Opie::Ui;
static const char *SCAP_hostname = "www.handhelds.org";
static const int SCAP_port = 80;
ScreenshotControl::ScreenshotControl( QWidget *parent, const char *name )
: QFrame( parent, name, WDestructiveClose | WStyle_StaysOnTop | WType_Popup )
{
setFrameStyle( QFrame::PopupPanel | QFrame::Raised );
QVBoxLayout *vbox = new QVBoxLayout ( this, 5, 3 );
QHBoxLayout *hbox;
hbox = new QHBoxLayout ( vbox );
QLabel *l = new QLabel ( tr( "Delay" ), this );
hbox-> addWidget ( l );
delaySpin = new QSpinBox( 0, 60, 1, this, "Spinner" );
delaySpin-> setButtonSymbols ( QSpinBox::PlusMinus );
delaySpin-> setSuffix ( tr( "sec" ));
delaySpin-> setFocusPolicy( QWidget::NoFocus );
delaySpin-> setValue ( 1 );
hbox-> addWidget ( delaySpin );
saveNamedCheck = new QCheckBox ( tr( "Save named" ), this);
saveNamedCheck-> setFocusPolicy ( QWidget::NoFocus );
vbox->addWidget( saveNamedCheck);
vbox-> addSpacing ( 3 );
l = new QLabel ( tr( "Save screenshot as..." ), this );
vbox-> addWidget ( l, AlignCenter );
hbox = new QHBoxLayout ( vbox );
grabItButton = new QPushButton( tr( "File" ), this, "GrabButton" );
grabItButton ->setFocusPolicy( QWidget::TabFocus );
hbox-> addWidget ( grabItButton );
QPushButton* drawPadButton = new QPushButton( tr("Opie drawpad"), this, "DrawPadButton" );
drawPadButton->setFocusPolicy( QWidget::TabFocus );
hbox->addWidget( drawPadButton );
scapButton = new QPushButton( tr( "Scap" ), this, "ScapButton" );
scapButton ->setFocusPolicy( QWidget::TabFocus );
hbox-> addWidget ( scapButton );
setFixedSize ( sizeHint ( ));
setFocusPolicy ( QWidget::NoFocus );
grabTimer = new QTimer ( this, "grab timer");
connect ( grabTimer, SIGNAL( timeout()), this, SLOT( performGrab()));
connect ( grabItButton, SIGNAL( clicked()), SLOT( slotGrab()));
connect ( scapButton, SIGNAL( clicked()), SLOT( slotScap()));
connect ( drawPadButton, SIGNAL(clicked()), SLOT(slotDrawpad()) );
}
void ScreenshotControl::slotGrab()
{
buttonPushed = 1;
hide();
setFileName = FALSE;
if ( saveNamedCheck->isChecked()) {
setFileName = TRUE;
- InputDialog *fileDlg;
- fileDlg = new InputDialog( 0 , tr("Name of screenshot "), TRUE, 0);
- fileDlg->exec();
- fileDlg->raise();
- QString fileName, list;
- if ( fileDlg->result() == 1 ) {
- fileName = fileDlg->LineEdit1->text();
+ MimeTypes types;
+ QStringList list;
+ list << "image/*";
+ types. insert ( "Images", list );
- if (fileName.find("/", 0, TRUE) == -1)
- FileNamePath = QDir::homeDirPath() + "/Documents/image/png/" + fileName;
- else
- FileNamePath = fileName;
-
- }
- delete fileDlg;
+ FileNamePath = Opie::Ui::OFileDialog::getSaveFileName( 1,"/","", types, 0 );
}
if ( delaySpin->value() )
grabTimer->start( delaySpin->value() * 1000, true );
else
show();
}
void ScreenshotControl::slotScap()
{
buttonPushed = 2;
hide();
if ( delaySpin->value() )
grabTimer->start( delaySpin->value() * 1000, true );
else
show();
}
void ScreenshotControl::slotDrawpad()
{
buttonPushed = 3;
hide();
if ( delaySpin->value() )
grabTimer->start( delaySpin->value()*1000, true );
else
show();
}
void ScreenshotControl::savePixmap()
{
DocLnk lnk;
QString fileName;
if ( setFileName) {
fileName = FileNamePath;
//not sure why this is needed here, but it forgets fileName
// if this is below the braces
if (fileName.right(3) != "png")
fileName = fileName + ".png";
lnk.setFile(fileName); //sets File property
odebug << "saving file " + fileName << oendl;
snapshot.save( fileName, "PNG");
QFileInfo fi( fileName);
lnk.setName( fi.fileName()); //sets file name
if (!lnk.writeLink())
odebug << "Writing doclink did not work" << oendl;
}
else {
fileName = "sc_" + QDateTime::currentDateTime().toString();
fileName.replace(QRegExp("'"), "");
fileName.replace(QRegExp(" "), "_");
fileName.replace(QRegExp(":"), ".");
fileName.replace(QRegExp(","), "");
QString dirName = QDir::homeDirPath() + "/Documents/image/png/";
if ( !QDir( dirName).exists() ) {
odebug << "making dir " + dirName << oendl;
QString msg = "mkdir -p " + dirName;
system(msg.latin1());
}
fileName = dirName + fileName;
if (fileName.right(3) != "png")
fileName = fileName + ".png";
lnk.setFile(fileName); //sets File property
odebug << "saving file " + fileName << oendl;
snapshot.save( fileName, "PNG");
QFileInfo fi( fileName);
lnk.setName( fi.fileName()); //sets file name
if (!lnk.writeLink())
odebug << "Writing doclink did not work" << oendl;
}
QPEApplication::beep();
}
void ScreenshotControl::performGrab()
{
snapshot = QPixmap::grabWindow( QPEApplication::desktop()->winId(), 0, 0, QApplication::desktop()->width(), QApplication::desktop()->height() );
if (buttonPushed == 1) {
odebug << "grabbing screen" << oendl;
grabTimer->stop();
show();
qApp->processEvents();
savePixmap();
}else if ( buttonPushed == 3 ) {
grabTimer->stop();
show();
QCopEnvelope env("QPE/Application/drawpad", "importPixmap(QPixmap)" );
env << snapshot;
} else {
grabTimer->stop();
struct sockaddr_in raddr;
struct hostent *rhost_info;
int sock = -1;
bool ok = false;
QString displayEnv = getenv("QWS_DISPLAY");
odebug << displayEnv << oendl;
if(( displayEnv.left(2) != ":0" ) && (!displayEnv.isEmpty())) {
if (( rhost_info = (struct hostent *) ::gethostbyname ((char *) SCAP_hostname )) != 0 ) {
::memset ( &raddr, 0, sizeof (struct sockaddr_in));
::memcpy ( &raddr. sin_addr, rhost_info-> h_addr, rhost_info-> h_length );
raddr. sin_family = rhost_info-> h_addrtype;
raddr. sin_port = htons ( SCAP_port );
if (( sock = ::socket ( AF_INET, SOCK_STREAM, 0 )) >= 0 ) {
if ( ::connect ( sock, (struct sockaddr *) & raddr, sizeof (struct sockaddr)) >= 0 ) {
QString header;
QPixmap pix;
QString SCAP_model="";
#warning FIXME: model string should be filled with actual device model
if( snapshot.width() > 320)
SCAP_model ="Corgi";
if(displayEnv == "QVFb:0") {//set this if you plan on using this app in qvfb!!
pix = snapshot.xForm(QWMatrix().rotate(90));
} else
pix = ( snapshot.width() > snapshot.height() ) ? snapshot : snapshot.xForm( QWMatrix().rotate(90) );
QImage img = pix.convertToImage().convertDepth( 16 ); // could make that also depth independent, if hh.org/scap can handle it
header = "POST /scap/capture.cgi?%1+%2 HTTP/1.1\n" // 1: model / 2: user
"Content-length: %3\n" // 3: content length
"Content-Type: image/png\n"
"Host: %4\n" // 4: scap host
"\n";
header = header.arg( SCAP_model).arg( ::getenv( "USER" ) ).arg( img.numBytes() ).arg( SCAP_hostname );
odebug << header << oendl;
if ( !pix.isNull() ) {
const char *ascii = header.latin1( );
uint ascii_len = ::strlen( ascii );
::write ( sock, ascii, ascii_len );
::write ( sock, img.bits(), img.numBytes() );
ok = true;
}
}
::close ( sock );
}
}
if ( ok ) {
QMessageBox::information( 0, tr( "Success" ), QString( "<p>%1</p>" ).arg ( tr( "Screenshot was uploaded to %1" )).arg( SCAP_hostname ));
} else {
QMessageBox::warning( 0, tr( "Error" ), QString( "<p>%1</p>" ).arg( tr( "Connection to %1 failed." )).arg( SCAP_hostname ));
}
} else {
QMessageBox::warning( 0, tr( "Error" ),tr("Please set <b>QWS_DISPLAY</b> environmental variable."));
}
}
}
//===========================================================================
ScreenshotApplet::ScreenshotApplet( QWidget *parent, const char *name )
: QWidget( parent, name )
{
setFixedHeight( AppLnk::smallIconSize() );
setFixedWidth( AppLnk::smallIconSize() );
- m_icon.convertFromImage( Resource::loadImage( "screenshotapplet/screenshot" ).smoothScale( height(), width() ) );
+ m_icon = Opie::Core::OResource::loadPixmap( "screenshotapplet/screenshot", Opie::Core::OResource::SmallIcon );
}
ScreenshotApplet::~ScreenshotApplet()
{
}
int ScreenshotApplet::position()
{
return 6;
}
void ScreenshotApplet::mousePressEvent( QMouseEvent *)
{
ScreenshotControl *sc = new ScreenshotControl ( );
QPoint curPos = mapToGlobal ( QPoint ( 0, 0 ));
// windowPosX is the windows position centered above the applets icon.
// If the icon is near the edge of the screen, the window would leave the visible area
// so we check the position against the screen width and correct the difference if needed
int screenWidth = qApp->desktop()->width();
int windowPosX = curPos. x ( ) - ( sc-> sizeHint ( ). width ( ) - width ( )) / 2 ;
int ZwindowPosX, XwindowPosX;
// the window would be placed beyond the screen wich doesn't look tooo good
if ( (windowPosX + sc-> sizeHint ( ). width ( )) > screenWidth ) {
XwindowPosX = windowPosX + sc-> sizeHint ( ). width ( ) - screenWidth;
ZwindowPosX = windowPosX - XwindowPosX - 1;
} else {
ZwindowPosX = windowPosX;
}
sc-> move ( ZwindowPosX, curPos. y ( ) - sc-> sizeHint ( ). height ( ) );
sc-> show ( );
}
void ScreenshotApplet::paintEvent( QPaintEvent* )
{
QPainter p ( this );
p.drawPixmap( 0, 2, m_icon );
}
EXPORT_OPIE_APPLET_v1( ScreenshotApplet )
diff --git a/core/applets/screenshotapplet/screenshotapplet.pro b/core/applets/screenshotapplet/screenshotapplet.pro
index fe8299e..1e4d6a4 100644
--- a/core/applets/screenshotapplet/screenshotapplet.pro
+++ b/core/applets/screenshotapplet/screenshotapplet.pro
@@ -1,13 +1,13 @@
TEMPLATE = lib
CONFIG += qt plugin warn_on
-HEADERS = screenshot.h inputDialog.h
-SOURCES = screenshot.cpp inputDialog.cpp
+HEADERS = screenshot.h
+SOURCES = screenshot.cpp
TARGET = screenshotapplet
DESTDIR = $(OPIEDIR)/plugins/applets
INCLUDEPATH += $(OPIEDIR)/include
DEPENDPATH +=
-LIBS += -lqpe
+LIBS += -lqpe -lopiecore2 -lopieui2
VERSION = 1.0.0
include( $(OPIEDIR)/include.pro )
target.path = $$prefix/plugins/applets