summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2002-07-13 22:49:06 (UTC)
committer llornkcor <llornkcor>2002-07-13 22:49:06 (UTC)
commitfc63a266936297efd9125c6418bbdccf1d0fcaa2 (patch) (side-by-side diff)
tree1f255b956d7080443186fd4e319e6cdcfd7001a3
parent1627ed22871af50d6debaa0140546c14984501cf (diff)
downloadopie-fc63a266936297efd9125c6418bbdccf1d0fcaa2.zip
opie-fc63a266936297efd9125c6418bbdccf1d0fcaa2.tar.gz
opie-fc63a266936297efd9125c6418bbdccf1d0fcaa2.tar.bz2
added netcat button, and a 'name it' checkbox
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/applets/screenshotapplet/inputDialog.cpp67
-rw-r--r--core/applets/screenshotapplet/inputDialog.h30
-rw-r--r--core/applets/screenshotapplet/screenshot.cpp165
-rw-r--r--core/applets/screenshotapplet/screenshot.h8
-rw-r--r--core/applets/screenshotapplet/screenshotapplet.pro4
5 files changed, 242 insertions, 32 deletions
diff --git a/core/applets/screenshotapplet/inputDialog.cpp b/core/applets/screenshotapplet/inputDialog.cpp
new file mode 100644
index 0000000..da8e276
--- a/dev/null
+++ b/core/applets/screenshotapplet/inputDialog.cpp
@@ -0,0 +1,67 @@
+/****************************************************************************
+** 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 <opie/ofiledialog.h>
+
+#include <qlineedit.h>
+#include <qlayout.h>
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qwhatsthis.h>
+
+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 = OFileDialog::getOpenFileName( 1,"/","", types, 0 );
+ LineEdit1->setText(str);
+}
+
diff --git a/core/applets/screenshotapplet/inputDialog.h b/core/applets/screenshotapplet/inputDialog.h
new file mode 100644
index 0000000..3e3e36f
--- a/dev/null
+++ b/core/applets/screenshotapplet/inputDialog.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+** 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/screenshot.cpp b/core/applets/screenshotapplet/screenshot.cpp
index 8a2a956..4ebdb7a 100644
--- a/core/applets/screenshotapplet/screenshot.cpp
+++ b/core/applets/screenshotapplet/screenshot.cpp
@@ -4,51 +4,59 @@
**
** 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"
+
#include <qapplication.h>
#include <stdlib.h>
#include <qpe/resource.h>
#include <qpe/qpeapplication.h>
#include <qpe/timestring.h>
#include <qpe/resource.h>
#include <qpe/config.h>
#include <qpe/applnk.h>
#include <qpe/config.h>
+#include <qsocket.h>
+#include <qlineedit.h>
#include <qdir.h>
#include <qfileinfo.h>
#include <qpoint.h>
#include <qpushbutton.h>
#include <qpainter.h>
#include <qcombobox.h>
#include <qspinbox.h>
#include <qslider.h>
#include <qlayout.h>
#include <qframe.h>
#include <qpixmap.h>
#include <qregexp.h>
#include <qstring.h>
#include <qfile.h>
#include <qtimer.h>
+#include <qfile.h>
+#include <qdatastream.h>
+#include <qcheckbox.h>
+
static char * snapshot_xpm[] = {
"16 16 10 1",
" c None",
". c #000000",
"+ c #00C000",
"@ c #585858",
"# c #808080",
"$ c #00FF00",
"% c #008000",
"& c #00FFFF",
"* c #FF0000",
@@ -68,132 +76,231 @@ static char * snapshot_xpm[] = {
" ..%%+%%. ",
" ..%%.. ",
" .. ",
" "};
ScreenshotControl::ScreenshotControl( QWidget *parent, const char *name )
: QFrame( parent, name, WDestructiveClose | WStyle_StaysOnTop | WType_Popup )
{
setFrameStyle( QFrame::PopupPanel | QFrame::Raised );
// qDebug("screenshot control");
QVBoxLayout *vbox = new QVBoxLayout( this );
+ QHBoxLayout *hbox = new QHBoxLayout( this );
// qDebug("new layout");
delaySpin = new QSpinBox( 0,60,1, this, "Spinner" );
// qDebug("new spinbox");
delaySpin->setFocusPolicy( QWidget::NoFocus );
+
+
grabItButton= new QPushButton( this, "GrabButton" );
// qDebug("new pushbutton");
+
grabItButton ->setFocusPolicy( QWidget::TabFocus );
grabItButton->setText(tr("Snapshot"));
+
+
vbox->setMargin( 6 );
vbox->setSpacing( 3 );
+
vbox->addWidget( delaySpin);
+
vbox->setMargin( 6 );
vbox->setSpacing( 3 );
- vbox->addWidget( grabItButton);
+ QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+ vbox->addItem( spacer );
+
+ saveNamedCheck= new QCheckBox ( "name it", this);
+ saveNamedCheck-> setFocusPolicy ( QWidget::NoFocus );
+ vbox->addWidget( saveNamedCheck);
+
+
+ scapButton = new QPushButton( this, "ScapButton" );
+
+ scapButton ->setFocusPolicy( QWidget::TabFocus );
+ scapButton ->setText(tr("scap"));
+ if( !QFile("/usr/bin/nc").exists())
+ scapButton->hide();
+
+ hbox->addWidget( grabItButton);
+ QSpacerItem* spacer2 = new QSpacerItem( 4, 4, QSizePolicy::Minimum, QSizePolicy::Expanding );
+ hbox->addItem( spacer2 );
+ hbox->addWidget( scapButton);
+
+ vbox->addItem(hbox);
setFixedHeight( 100 );
setFixedWidth( sizeHint().width() );
setFocusPolicy(QWidget::NoFocus);
grabTimer= new QTimer(this,"grab timer");
-// qDebug("newTimer");
connect( grabTimer, SIGNAL( timeout() ), this, SLOT( grabTimerDone() ) );
-// Config cfg("Snapshot");
-// cfg.setGroup("General");
delaySpin->setValue(1);
-// delaySpin->setValue(cfg.readNumEntry("delay",0));
connect( grabItButton, SIGNAL(released()), SLOT(slotGrab()) );
-
+ connect( scapButton, SIGNAL(released()), SLOT(slotScap()) );
+ connect(saveNamedCheck, SIGNAL(toggled( bool)), this, SLOT( nameScreenshot(bool)) );
}
-void ScreenshotControl::slotGrab()
-{
+void ScreenshotControl::slotGrab() {
// qDebug("SlotGrab");
+ buttonPushed=1;
+ hide();
+ setFileName=FALSE;
+ if( saveNamedCheck->isChecked()) {
+ setFileName=TRUE;
+// qDebug("checked");
+ 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();
+
+ if(fileName.find("/",0,TRUE)==-1)
+ FileNamePath = QDir::homeDirPath()+"/Documents/image/png/"+fileName;
+// qDebug(fileName);
+
+ }
+ delete fileDlg;
+ }
+ 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::grabTimerDone()
-{
+void ScreenshotControl::grabTimerDone() {
performGrab();
}
-void ScreenshotControl::savePixmap()
-{
+void ScreenshotControl::savePixmap() {
DocLnk lnk;
- QString fileName = "sc_"+TimeString::dateString( QDateTime::currentDateTime(),false,true);
- fileName.replace(QRegExp("'"),""); fileName.replace(QRegExp(" "),"_"); fileName.replace(QRegExp(":"),"."); fileName.replace(QRegExp(","),"");
+ 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
+ qDebug("saving file "+fileName);
+ snapshot.save( fileName,"PNG");
+ QFileInfo fi( fileName);
+ lnk.setName( fi.fileName()); //sets file name
+
+ if(!lnk.writeLink())
+ qDebug("Writing doclink did not work");
+ } else {
+
+ fileName = "sc_"+TimeString::dateString( QDateTime::currentDateTime(),false,true);
+ fileName.replace(QRegExp("'"),""); fileName.replace(QRegExp(" "),"_"); fileName.replace(QRegExp(":"),"."); fileName.replace(QRegExp(","),"");
QString dirName = QDir::homeDirPath()+"/Documents/image/png/";
+
if( !QDir( dirName).exists() ) {
qDebug("making dir "+dirName);
QString msg = "mkdir -p "+dirName;
system(msg.latin1());
}
- fileName=dirName+fileName+".png";
+ fileName=dirName+fileName;
+ if(fileName.right(3)!="png")
+ fileName=fileName+".png";
lnk.setFile(fileName); //sets File property
- snapshot.save( fileName,"PNG");
qDebug("saving file "+fileName);
+ snapshot.save( fileName,"PNG");
QFileInfo fi( fileName);
lnk.setName( fi.fileName()); //sets file name
+
if(!lnk.writeLink())
qDebug("Writing doclink did not work");
- QPEApplication::beep();
+ }
+ QPEApplication::beep();
}
-void ScreenshotControl::performGrab()
-{
+void ScreenshotControl::performGrab() {
+
+ if(buttonPushed ==1) {
qDebug("grabbing screen");
grabTimer->stop();
snapshot = QPixmap::grabWindow( QPEApplication::desktop()->winId(),0,0,QApplication::desktop()->width(),QApplication::desktop()->height() );
show();
+ qApp->processEvents();
savePixmap();
+ } else {
+ qDebug("scap");
+ grabTimer->stop();
+// do scap here
+ QString cmd;
+ cmd="cat /dev/fd0 > /tmp/cap";
+ system(cmd.latin1());
+// qDebug("echo \"POST /scap/capture.cgi http1.1\"
+// echo \"Content-length: 153600\"
+// echo \"Content-Type: image/gif\"
+// echo \"HOST: www.handhelds.org\"
+// echo \"\"
+// cat /tmp/cap | nc h1.handhelds.org 80");
+ cmd="nc h1.handhelds.org 1011 </tmp/cap";
+ qDebug("running command "+cmd);
+
+ system(cmd.latin1());
+ show();
}
-void ScreenshotControl::setTime(int newTime)
-{
+}
+
+void ScreenshotControl::setTime(int newTime) {
delaySpin->setValue(newTime);
}
+void ScreenshotControl::nameScreenshot(bool b) {
+
+
+}
+
//===========================================================================
ScreenshotApplet::ScreenshotApplet( QWidget *parent, const char *name )
- : QWidget( parent, name )
-{
+ : QWidget( parent, name ) {
// qDebug("beginning applet");
setFixedHeight( 18 );
setFixedWidth( 14 );
vc = new ScreenshotControl;
// qDebug("new screenshotapplet");
}
-ScreenshotApplet::~ScreenshotApplet()
-{
+ScreenshotApplet::~ScreenshotApplet() {
}
-void ScreenshotApplet::mousePressEvent( QMouseEvent *)
-{
+void ScreenshotApplet::mousePressEvent( QMouseEvent *) {
// if(!vc)
vc = new ScreenshotControl;
QPoint curPos = mapToGlobal( rect().topLeft() );
vc->move( curPos.x()-(vc->sizeHint().width()-width())/2, curPos.y() - 100 );
vc->show();
}
-void ScreenshotApplet::paintEvent( QPaintEvent* )
-{
+void ScreenshotApplet::paintEvent( QPaintEvent* ) {
QPainter p(this);
qDebug("paint pixmap");
p.drawPixmap( 0, 1, ( const char** ) snapshot_xpm );
}
+
diff --git a/core/applets/screenshotapplet/screenshot.h b/core/applets/screenshotapplet/screenshot.h
index 82800b9..c8dfeaa 100644
--- a/core/applets/screenshotapplet/screenshot.h
+++ b/core/applets/screenshotapplet/screenshot.h
@@ -28,37 +28,43 @@ class QCheckBox;
class QSpinBox;
class QPushButton;
//class QImage;
class ScreenshotControl : public QFrame
{
Q_OBJECT
public:
ScreenshotControl( QWidget *parent=0, const char *name=0 );
void performGrab();
public:
- QPushButton *grabItButton;
+ QPushButton *grabItButton, *scapButton;
QPixmap snapshot;
QTimer* grabTimer;
+ QCheckBox *saveNamedCheck;
+ QString FileNamePath;
+ bool setFileName;
void slotSave();
void slotCopy();
void setTime(int newTime);
QSpinBox *delaySpin;
private:
+ int buttonPushed;
private slots:
void slotGrab();
+ void slotScap();
void savePixmap();
void grabTimerDone();
+ void nameScreenshot(bool);
};
class ScreenshotApplet : public QWidget
{
Q_OBJECT
public:
ScreenshotApplet( QWidget *parent = 0, const char *name=0 );
~ScreenshotApplet();
ScreenshotControl *vc;
public slots:
private:
void mousePressEvent( QMouseEvent * );
diff --git a/core/applets/screenshotapplet/screenshotapplet.pro b/core/applets/screenshotapplet/screenshotapplet.pro
index 2fc8a05..4064836 100644
--- a/core/applets/screenshotapplet/screenshotapplet.pro
+++ b/core/applets/screenshotapplet/screenshotapplet.pro
@@ -1,16 +1,16 @@
TEMPLATE = lib
CONFIG += qt warn_on release
-HEADERS = screenshot.h screenshotappletimpl.h
-SOURCES = screenshot.cpp screenshotappletimpl.cpp
+HEADERS = screenshot.h inputDialog.h screenshotappletimpl.h
+SOURCES = screenshot.cpp inputDialog.cpp screenshotappletimpl.cpp
TARGET = screenshotapplet
DESTDIR = $(OPIEDIR)/plugins/applets
INCLUDEPATH += $(OPIEDIR)/include
DEPENDPATH += ../$(OPIEDIR)/include
LIBS += -lqpe
VERSION = 1.0.0
MOC_DIR=opieobj
OBJECTS_DIR=opieobj
TRANSLATIONS = ../../../i18n/de/libscreenshotapplet.ts \
../../../i18n/en/libscreenshotapplet.ts \
../../../i18n/es/libscreenshotapplet.ts \