summaryrefslogtreecommitdiff
Side-by-side diff
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
@@ -13,6 +13,8 @@
**********************************************************************/
#include "screenshot.h"
+#include "inputDialog.h"
+
#include <qapplication.h>
#include <stdlib.h>
@@ -24,7 +26,9 @@
#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>
@@ -40,6 +44,10 @@
#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",
@@ -77,40 +85,95 @@ ScreenshotControl::ScreenshotControl( QWidget *parent, const char *name )
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 );
@@ -120,55 +183,101 @@ void ScreenshotControl::slotGrab()
}
-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 );
@@ -176,12 +285,10 @@ ScreenshotApplet::ScreenshotApplet( QWidget *parent, const char *name )
// 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() );
@@ -190,10 +297,10 @@ void ScreenshotApplet::mousePressEvent( QMouseEvent *)
}
-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
@@ -37,19 +37,25 @@ public:
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
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,7 +1,7 @@
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