editorwatcher.h
00001 /* 00002 Copyright (c) 2007 Volker Krause <vkrause@kde.org> 00003 00004 This program is free software; you can redistribute it and/or modify 00005 it under the terms of the GNU General Public License as published by 00006 the Free Software Foundation; either version 2 of the License, or 00007 (at your option) any later version. 00008 00009 This program is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 GNU General Public License for more details. 00013 00014 You should have received a copy of the GNU General Public License 00015 along with this program; if not, write to the Free Software 00016 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00017 */ 00018 00019 #ifndef KMAIL_EDITORWATCHER_H 00020 #define KMAIL_EDITORWATCHER_H 00021 00022 #include <kurl.h> 00023 00024 #include <tqdatetime.h> 00025 #include <tqobject.h> 00026 #include <tqtimer.h> 00027 00028 class KProcess; 00029 00030 namespace KMail { 00031 00038 class EditorWatcher : public TQObject 00039 { 00040 Q_OBJECT 00041 TQ_OBJECT 00042 public: 00050 EditorWatcher( const KURL &url, const TQString &mimeType, bool openWith, 00051 TQObject *parent, TQWidget *parentWidget ); 00052 bool start(); 00053 bool fileChanged() const { return mFileModified; } 00054 signals: 00055 void editDone( KMail::EditorWatcher* watcher ); 00056 00057 private slots: 00058 void editorExited(); 00059 void inotifyEvent(); 00060 void checkEditDone(); 00061 00062 private: 00063 KURL mUrl; 00064 TQString mMimeType; 00065 bool mOpenWith; 00066 KProcess *mEditor; 00067 TQWidget *mParentWidget; 00068 00069 int mInotifyFd; 00070 int mInotifyWatch; 00071 bool mHaveInotify; 00072 00073 bool mFileOpen; 00074 bool mEditorRunning; 00075 00076 bool mFileModified; 00077 00078 TQTimer mTimer; 00079 TQTime mEditTime; 00080 00081 bool mError; 00082 bool mDone; 00083 }; 00084 00085 } 00086 00087 #endif