kmail

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 TDEProcess;
00029 
00030 namespace KMail {
00031 
00038 class EditorWatcher : public TQObject
00039 {
00040   Q_OBJECT
00041   
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     TDEProcess *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