author | llornkcor <llornkcor> | 2002-07-13 22:49:06 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-07-13 22:49:06 (UTC) |
commit | fc63a266936297efd9125c6418bbdccf1d0fcaa2 (patch) (unidiff) | |
tree | 1f255b956d7080443186fd4e319e6cdcfd7001a3 | |
parent | 1627ed22871af50d6debaa0140546c14984501cf (diff) | |
download | opie-fc63a266936297efd9125c6418bbdccf1d0fcaa2.zip opie-fc63a266936297efd9125c6418bbdccf1d0fcaa2.tar.gz opie-fc63a266936297efd9125c6418bbdccf1d0fcaa2.tar.bz2 |
added netcat button, and a 'name it' checkbox
-rw-r--r-- | core/applets/screenshotapplet/inputDialog.cpp | 67 | ||||
-rw-r--r-- | core/applets/screenshotapplet/inputDialog.h | 30 | ||||
-rw-r--r-- | core/applets/screenshotapplet/screenshot.cpp | 201 | ||||
-rw-r--r-- | core/applets/screenshotapplet/screenshot.h | 8 | ||||
-rw-r--r-- | core/applets/screenshotapplet/screenshotapplet.pro | 4 |
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 | |||
21 | InputDialog::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 | */ | ||
41 | InputDialog::~InputDialog() | ||
42 | { | ||
43 | inputText= LineEdit1->text(); | ||
44 | |||
45 | } | ||
46 | |||
47 | void 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 | |||
15 | class QLineEdit; | ||
16 | |||
17 | class InputDialog : public QDialog | ||
18 | { | ||
19 | Q_OBJECT | ||
20 | |||
21 | public: | ||
22 | InputDialog( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); | ||
23 | ~InputDialog(); | ||
24 | QString inputText; | ||
25 | QLineEdit* LineEdit1; | ||
26 | protected 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 | ||
44 | static char * snapshot_xpm[] = { | 52 | static 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 | ||
111 | void ScreenshotControl::slotGrab() | 144 | void 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 | |||
175 | void 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 | ||
123 | void ScreenshotControl::grabTimerDone() | 186 | void ScreenshotControl::grabTimerDone() { |
124 | { | ||
125 | performGrab(); | 187 | performGrab(); |
126 | } | 188 | } |
127 | 189 | ||
128 | void ScreenshotControl::savePixmap() | 190 | void 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 | ||
153 | void ScreenshotControl::performGrab() | 237 | void 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 | ||
162 | void ScreenshotControl::setTime(int newTime) | 268 | void ScreenshotControl::setTime(int newTime) { |
163 | { | ||
164 | delaySpin->setValue(newTime); | 269 | delaySpin->setValue(newTime); |
165 | } | 270 | } |
166 | 271 | ||
272 | void ScreenshotControl::nameScreenshot(bool b) { | ||
273 | |||
274 | |||
275 | } | ||
276 | |||
167 | //=========================================================================== | 277 | //=========================================================================== |
168 | 278 | ||
169 | ScreenshotApplet::ScreenshotApplet( QWidget *parent, const char *name ) | 279 | ScreenshotApplet::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 | ||
179 | ScreenshotApplet::~ScreenshotApplet() | 288 | ScreenshotApplet::~ScreenshotApplet() { |
180 | { | ||
181 | } | 289 | } |
182 | 290 | ||
183 | void ScreenshotApplet::mousePressEvent( QMouseEvent *) | 291 | void 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 | ||
193 | void ScreenshotApplet::paintEvent( QPaintEvent* ) | 300 | void 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 | ||
39 | public: | 39 | public: |
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; |
48 | private: | 51 | private: |
52 | int buttonPushed; | ||
49 | private slots: | 53 | private 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 @@ | |||
1 | TEMPLATE = lib | 1 | TEMPLATE = lib |
2 | CONFIG += qt warn_on release | 2 | CONFIG += qt warn_on release |
3 | HEADERS = screenshot.h screenshotappletimpl.h | 3 | HEADERS = screenshot.h inputDialog.h screenshotappletimpl.h |
4 | SOURCES = screenshot.cpp screenshotappletimpl.cpp | 4 | SOURCES = screenshot.cpp inputDialog.cpp screenshotappletimpl.cpp |
5 | TARGET = screenshotapplet | 5 | TARGET = screenshotapplet |
6 | DESTDIR = $(OPIEDIR)/plugins/applets | 6 | DESTDIR = $(OPIEDIR)/plugins/applets |