summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2002-07-13 22:49:06 (UTC)
committer llornkcor <llornkcor>2002-07-13 22:49:06 (UTC)
commitfc63a266936297efd9125c6418bbdccf1d0fcaa2 (patch) (unidiff)
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) (ignore 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.cpp201
-rw-r--r--core/applets/screenshotapplet/screenshot.h8
-rw-r--r--core/applets/screenshotapplet/screenshotapplet.pro4
5 files changed, 260 insertions, 50 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 @@
1/****************************************************************************
2** Form implementation generated from reading ui file 'inputDialog.ui'
3**
4** Created: Sat Mar 2 07:55:03 2002
5** by: The User Interface Compiler (uic)
6**
7** WARNING! All changes made in this file will be lost!
8****************************************************************************/
9#include "inputDialog.h"
10
11#include <qpe/resource.h>
12
13#include <opie/ofiledialog.h>
14
15#include <qlineedit.h>
16#include <qlayout.h>
17#include <qvariant.h>
18#include <qpushbutton.h>
19#include <qwhatsthis.h>
20
21InputDialog::InputDialog( QWidget* parent, const char* name, bool modal, WFlags fl )
22 : QDialog( parent, name, modal, fl )
23{
24 if ( !name )
25 setName( "InputDialog" );
26 resize( 234, 115);
27 setMaximumSize( QSize( 240, 40));
28 setCaption( tr(name ) );
29
30 QPushButton *browserButton;
31 browserButton = new QPushButton( Resource::loadIconSet("fileopen"),"",this,"BrowseButton");
32 browserButton->setGeometry( QRect( 205, 10, 22, 22));
33 connect( browserButton, SIGNAL(released()),this,SLOT(browse()));
34 LineEdit1 = new QLineEdit( this, "LineEdit1" );
35 LineEdit1->setGeometry( QRect( 4, 10, 190, 22 ) );
36}
37
38/*
39 * Destroys the object and frees any allocated resources
40 */
41InputDialog::~InputDialog()
42{
43 inputText= LineEdit1->text();
44
45}
46
47void InputDialog::browse() {
48
49 MimeTypes types;
50 QStringList audio, video, all;
51 audio << "audio/*";
52 audio << "playlist/plain";
53 audio << "audio/x-mpegurl";
54
55 video << "video/*";
56 video << "playlist/plain";
57
58 all += audio;
59 all += video;
60 types.insert("All Media Files", all );
61 types.insert("Audio", audio );
62 types.insert("Video", video );
63
64 QString str = OFileDialog::getOpenFileName( 1,"/","", types, 0 );
65 LineEdit1->setText(str);
66}
67
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 @@
1/****************************************************************************
2** Form interface generated from reading ui file 'inputDialog.ui'
3**
4** Created: Sat Mar 2 07:54:46 2002
5** by: The User Interface Compiler (uic)
6**
7** WARNING! All changes made in this file will be lost!
8****************************************************************************/
9#ifndef INPUTDIALOG_H
10#define INPUTDIALOG_H
11
12#include <qvariant.h>
13#include <qdialog.h>
14
15class QLineEdit;
16
17class InputDialog : public QDialog
18{
19 Q_OBJECT
20
21public:
22 InputDialog( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
23 ~InputDialog();
24 QString inputText;
25 QLineEdit* LineEdit1;
26protected slots:
27 void browse();
28};
29
30#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
@@ -14,4 +14,6 @@
14 14
15#include "screenshot.h" 15#include "screenshot.h"
16#include "inputDialog.h"
17
16#include <qapplication.h> 18#include <qapplication.h>
17#include <stdlib.h> 19#include <stdlib.h>
@@ -25,5 +27,7 @@
25#include <qpe/applnk.h> 27#include <qpe/applnk.h>
26#include <qpe/config.h> 28#include <qpe/config.h>
29#include <qsocket.h>
27 30
31#include <qlineedit.h>
28#include <qdir.h> 32#include <qdir.h>
29#include <qfileinfo.h> 33#include <qfileinfo.h>
@@ -41,4 +45,8 @@
41#include <qfile.h> 45#include <qfile.h>
42#include <qtimer.h> 46#include <qtimer.h>
47#include <qfile.h>
48#include <qdatastream.h>
49#include <qcheckbox.h>
50
43 51
44static char * snapshot_xpm[] = { 52static char * snapshot_xpm[] = {
@@ -78,18 +86,46 @@ ScreenshotControl::ScreenshotControl( QWidget *parent, const char *name )
78// qDebug("screenshot control"); 86// qDebug("screenshot control");
79 QVBoxLayout *vbox = new QVBoxLayout( this ); 87 QVBoxLayout *vbox = new QVBoxLayout( this );
88 QHBoxLayout *hbox = new QHBoxLayout( this );
80// qDebug("new layout"); 89// qDebug("new layout");
81 delaySpin = new QSpinBox( 0,60,1, this, "Spinner" ); 90 delaySpin = new QSpinBox( 0,60,1, this, "Spinner" );
82// qDebug("new spinbox"); 91// qDebug("new spinbox");
83 delaySpin->setFocusPolicy( QWidget::NoFocus ); 92 delaySpin->setFocusPolicy( QWidget::NoFocus );
93
94
84 grabItButton= new QPushButton( this, "GrabButton" ); 95 grabItButton= new QPushButton( this, "GrabButton" );
85// qDebug("new pushbutton"); 96// qDebug("new pushbutton");
97
86 grabItButton ->setFocusPolicy( QWidget::TabFocus ); 98 grabItButton ->setFocusPolicy( QWidget::TabFocus );
87 grabItButton->setText(tr("Snapshot")); 99 grabItButton->setText(tr("Snapshot"));
100
101
88 vbox->setMargin( 6 ); 102 vbox->setMargin( 6 );
89 vbox->setSpacing( 3 ); 103 vbox->setSpacing( 3 );
104
90 vbox->addWidget( delaySpin); 105 vbox->addWidget( delaySpin);
106
91 vbox->setMargin( 6 ); 107 vbox->setMargin( 6 );
92 vbox->setSpacing( 3 ); 108 vbox->setSpacing( 3 );
93 vbox->addWidget( grabItButton); 109 QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
110 vbox->addItem( spacer );
111
112 saveNamedCheck= new QCheckBox ( "name it", this);
113 saveNamedCheck-> setFocusPolicy ( QWidget::NoFocus );
114 vbox->addWidget( saveNamedCheck);
115
116
117 scapButton = new QPushButton( this, "ScapButton" );
118
119 scapButton ->setFocusPolicy( QWidget::TabFocus );
120 scapButton ->setText(tr("scap"));
121 if( !QFile("/usr/bin/nc").exists())
122 scapButton->hide();
123
124 hbox->addWidget( grabItButton);
125 QSpacerItem* spacer2 = new QSpacerItem( 4, 4, QSizePolicy::Minimum, QSizePolicy::Expanding );
126 hbox->addItem( spacer2 );
127 hbox->addWidget( scapButton);
128
129 vbox->addItem(hbox);
94 130
95 setFixedHeight( 100 ); 131 setFixedHeight( 100 );
@@ -98,18 +134,45 @@ ScreenshotControl::ScreenshotControl( QWidget *parent, const char *name )
98 134
99 grabTimer= new QTimer(this,"grab timer"); 135 grabTimer= new QTimer(this,"grab timer");
100// qDebug("newTimer");
101 connect( grabTimer, SIGNAL( timeout() ), this, SLOT( grabTimerDone() ) ); 136 connect( grabTimer, SIGNAL( timeout() ), this, SLOT( grabTimerDone() ) );
102 137
103// Config cfg("Snapshot"); 138 delaySpin->setValue(1);
104// cfg.setGroup("General");
105 delaySpin->setValue(1);
106// delaySpin->setValue(cfg.readNumEntry("delay",0));
107 connect( grabItButton, SIGNAL(released()), SLOT(slotGrab()) ); 139 connect( grabItButton, SIGNAL(released()), SLOT(slotGrab()) );
108 140 connect( scapButton, SIGNAL(released()), SLOT(slotScap()) );
141 connect(saveNamedCheck, SIGNAL(toggled( bool)), this, SLOT( nameScreenshot(bool)) );
109} 142}
110 143
111void ScreenshotControl::slotGrab() 144void ScreenshotControl::slotGrab() {
112{
113// qDebug("SlotGrab"); 145// qDebug("SlotGrab");
146 buttonPushed=1;
147 hide();
148 setFileName=FALSE;
149 if( saveNamedCheck->isChecked()) {
150 setFileName=TRUE;
151// qDebug("checked");
152 InputDialog *fileDlg;
153
154 fileDlg = new InputDialog( 0 ,tr("Name of screenshot "),TRUE, 0);
155 fileDlg->exec();
156 fileDlg->raise();
157 QString fileName,list;
158 if( fileDlg->result() == 1 ) {
159 fileName = fileDlg->LineEdit1->text();
160
161 if(fileName.find("/",0,TRUE)==-1)
162 FileNamePath = QDir::homeDirPath()+"/Documents/image/png/"+fileName;
163// qDebug(fileName);
164
165 }
166 delete fileDlg;
167 }
168 if ( delaySpin->value() ) {
169 grabTimer->start( delaySpin->value() * 1000, true );
170 } else {
171 show();
172 }
173}
174
175void ScreenshotControl::slotScap() {
176 buttonPushed=2;
114 hide(); 177 hide();
115 if ( delaySpin->value() ) { 178 if ( delaySpin->value() ) {
@@ -121,53 +184,99 @@ void ScreenshotControl::slotGrab()
121 184
122 185
123void ScreenshotControl::grabTimerDone() 186void ScreenshotControl::grabTimerDone() {
124{
125 performGrab(); 187 performGrab();
126} 188}
127 189
128void ScreenshotControl::savePixmap() 190void ScreenshotControl::savePixmap() {
129{
130 DocLnk lnk; 191 DocLnk lnk;
131 QString fileName = "sc_"+TimeString::dateString( QDateTime::currentDateTime(),false,true); 192 QString fileName;
132 fileName.replace(QRegExp("'"),""); fileName.replace(QRegExp(" "),"_"); fileName.replace(QRegExp(":"),"."); fileName.replace(QRegExp(","),""); 193
133 194 if( setFileName) {
134 QString dirName = QDir::homeDirPath()+"/Documents/image/png/"; 195 fileName=FileNamePath;
135 if( !QDir( dirName).exists() ) { 196//not sure why this is needed here, but it forgets fileName
136 qDebug("making dir "+dirName); 197 // if this is below the braces
137 QString msg = "mkdir -p "+dirName; 198
138 system(msg.latin1()); 199 if(fileName.right(3)!="png")
200 fileName=fileName+".png";
201 lnk.setFile(fileName); //sets File property
202 qDebug("saving file "+fileName);
203 snapshot.save( fileName,"PNG");
204 QFileInfo fi( fileName);
205 lnk.setName( fi.fileName()); //sets file name
206
207 if(!lnk.writeLink())
208 qDebug("Writing doclink did not work");
209 } else {
210
211 fileName = "sc_"+TimeString::dateString( QDateTime::currentDateTime(),false,true);
212 fileName.replace(QRegExp("'"),""); fileName.replace(QRegExp(" "),"_"); fileName.replace(QRegExp(":"),"."); fileName.replace(QRegExp(","),"");
213 QString dirName = QDir::homeDirPath()+"/Documents/image/png/";
214
215 if( !QDir( dirName).exists() ) {
216 qDebug("making dir "+dirName);
217 QString msg = "mkdir -p "+dirName;
218 system(msg.latin1());
219 }
220 fileName=dirName+fileName;
221 if(fileName.right(3)!="png")
222 fileName=fileName+".png";
223 lnk.setFile(fileName); //sets File property
224 qDebug("saving file "+fileName);
225 snapshot.save( fileName,"PNG");
226 QFileInfo fi( fileName);
227 lnk.setName( fi.fileName()); //sets file name
228
229 if(!lnk.writeLink())
230 qDebug("Writing doclink did not work");
231
139 } 232 }
140 fileName=dirName+fileName+".png";
141 lnk.setFile(fileName); //sets File property
142 snapshot.save( fileName,"PNG");
143 qDebug("saving file "+fileName);
144 QFileInfo fi( fileName);
145 lnk.setName( fi.fileName()); //sets file name
146 if(!lnk.writeLink())
147 qDebug("Writing doclink did not work");
148 233
149 QPEApplication::beep(); 234 QPEApplication::beep();
150
151} 235}
152 236
153void ScreenshotControl::performGrab() 237void ScreenshotControl::performGrab() {
154{ 238
155 qDebug("grabbing screen"); 239 if(buttonPushed ==1) {
156 grabTimer->stop(); 240 qDebug("grabbing screen");
157 snapshot = QPixmap::grabWindow( QPEApplication::desktop()->winId(),0,0,QApplication::desktop()->width(),QApplication::desktop()->height() ); 241 grabTimer->stop();
158 show(); 242 snapshot = QPixmap::grabWindow( QPEApplication::desktop()->winId(),0,0,QApplication::desktop()->width(),QApplication::desktop()->height() );
159 savePixmap(); 243 show();
244 qApp->processEvents();
245 savePixmap();
246 } else {
247 qDebug("scap");
248 grabTimer->stop();
249// do scap here
250 QString cmd;
251 cmd="cat /dev/fd0 > /tmp/cap";
252 system(cmd.latin1());
253// qDebug("echo \"POST /scap/capture.cgi http1.1\"
254// echo \"Content-length: 153600\"
255// echo \"Content-Type: image/gif\"
256// echo \"HOST: www.handhelds.org\"
257// echo \"\"
258// cat /tmp/cap | nc h1.handhelds.org 80");
259 cmd="nc h1.handhelds.org 1011 </tmp/cap";
260 qDebug("running command "+cmd);
261
262 system(cmd.latin1());
263 show();
264 }
265
160} 266}
161 267
162void ScreenshotControl::setTime(int newTime) 268void ScreenshotControl::setTime(int newTime) {
163{
164 delaySpin->setValue(newTime); 269 delaySpin->setValue(newTime);
165} 270}
166 271
272void ScreenshotControl::nameScreenshot(bool b) {
273
274
275}
276
167//=========================================================================== 277//===========================================================================
168 278
169ScreenshotApplet::ScreenshotApplet( QWidget *parent, const char *name ) 279ScreenshotApplet::ScreenshotApplet( QWidget *parent, const char *name )
170 : QWidget( parent, name ) 280 : QWidget( parent, name ) {
171{
172// qDebug("beginning applet"); 281// qDebug("beginning applet");
173 setFixedHeight( 18 ); 282 setFixedHeight( 18 );
@@ -177,10 +286,8 @@ ScreenshotApplet::ScreenshotApplet( QWidget *parent, const char *name )
177} 286}
178 287
179ScreenshotApplet::~ScreenshotApplet() 288ScreenshotApplet::~ScreenshotApplet() {
180{
181} 289}
182 290
183void ScreenshotApplet::mousePressEvent( QMouseEvent *) 291void ScreenshotApplet::mousePressEvent( QMouseEvent *) {
184{
185// if(!vc) 292// if(!vc)
186 vc = new ScreenshotControl; 293 vc = new ScreenshotControl;
@@ -191,6 +298,5 @@ void ScreenshotApplet::mousePressEvent( QMouseEvent *)
191} 298}
192 299
193void ScreenshotApplet::paintEvent( QPaintEvent* ) 300void ScreenshotApplet::paintEvent( QPaintEvent* ) {
194{
195 QPainter p(this); 301 QPainter p(this);
196 qDebug("paint pixmap"); 302 qDebug("paint pixmap");
@@ -198,2 +304,3 @@ void ScreenshotApplet::paintEvent( QPaintEvent* )
198 304
199} 305}
306
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
@@ -38,7 +38,10 @@ public:
38 38
39public: 39public:
40 QPushButton *grabItButton; 40 QPushButton *grabItButton, *scapButton;
41 QPixmap snapshot; 41 QPixmap snapshot;
42 QTimer* grabTimer; 42 QTimer* grabTimer;
43 QCheckBox *saveNamedCheck;
44 QString FileNamePath;
45 bool setFileName;
43 void slotSave(); 46 void slotSave();
44 void slotCopy(); 47 void slotCopy();
@@ -47,8 +50,11 @@ public:
47 QSpinBox *delaySpin; 50 QSpinBox *delaySpin;
48private: 51private:
52 int buttonPushed;
49private slots: 53private slots:
50 void slotGrab(); 54 void slotGrab();
55 void slotScap();
51 void savePixmap(); 56 void savePixmap();
52 void grabTimerDone(); 57 void grabTimerDone();
58 void nameScreenshot(bool);
53}; 59};
54 60
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,6 +1,6 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt warn_on release
3HEADERS = screenshot.h screenshotappletimpl.h 3HEADERS = screenshot.h inputDialog.h screenshotappletimpl.h
4SOURCES = screenshot.cpp screenshotappletimpl.cpp 4SOURCES = screenshot.cpp inputDialog.cpp screenshotappletimpl.cpp
5TARGET = screenshotapplet 5TARGET = screenshotapplet
6DESTDIR = $(OPIEDIR)/plugins/applets 6DESTDIR = $(OPIEDIR)/plugins/applets