00001 /*********************************************************************** 00002 * * 00003 * MuViNo - ViTooKi Video Annotation Tool * 00004 * * 00005 * title: MP7VideoSegment.hpp * 00006 * * 00007 * $Id: MP7VideoSegment_8hpp-source.html,v 1.1 2004/09/27 07:24:51 mtaschwer Exp $ 00008 * * 00009 * ITEC institute of the University of Klagenfurt (Austria) * 00010 * http://www.itec.uni-klu.ac.at * 00011 * * 00012 * * 00013 * For more information visit the ViTooKi homepage: * 00014 * http://ViTooKi.sourceforge.net * 00015 * vitooki-user@lists.sourceforge.net * 00016 * vitooki-devel@lists.sourceforge.net * 00017 * * 00018 * This file is part of ViTooKi, a free video toolkit. * 00019 * ViTooKi is free software; you can redistribute it and/or * 00020 * modify it under the terms of the GNU General Public License * 00021 * as published by the Free Software Foundation; either version 2 * 00022 * of the License, or (at your option) any later version. * 00023 * * 00024 * This program is distributed in the hope that it will be useful, * 00025 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00026 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00027 * GNU General Public License for more details. * 00028 * * 00029 * You should have received a copy of the GNU General Public License * 00030 * along with this program; if not, write to the Free Software * 00031 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, * 00032 * MA 02111-1307, USA. * 00033 * * 00034 ***********************************************************************/ 00035 00036 #ifndef _MP7VIDEOSEGMENT_HPP_ 00037 #define _MP7VIDEOSEGMENT_HPP_ 00038 00043 #include <vector> 00044 00045 #include "MP7Doc.hpp" 00046 #include "MP7Time.hpp" 00047 #include "MP7View.hpp" 00048 #include "videosegment.hpp" 00049 00050 class MP7ListViewItem; 00051 00060 class MP7VideoSegment : public MP7View 00061 { 00062 public: 00064 MP7VideoSegment(); 00065 00071 MP7VideoSegment(MP7Doc *doc, MP7ListViewItem *root); 00072 00073 /* ------------------- Super class methods ------------------------------- */ 00074 00078 virtual MP7ListViewItem *parent(MP7ListViewItem *root = NULL) const; 00079 00083 virtual MP7ListViewItem *setRoot(MP7ListViewItem *root, bool searchUp = false); 00084 00088 virtual void setEmpty(); 00089 00094 virtual bool edit(); 00095 00096 /* ------------ Methods specific to this class ----------------------- */ 00097 00099 MP7Time mediaTime() const; 00100 00108 bool setMediaTime(const MP7Time &time); 00109 00118 bool modifyMediaStartTime(const MP7Time &startTime, bool recursive = false); 00119 00127 bool modifyMediaEndTime(const MP7Time &endTime, bool recursive = false); 00128 00130 QString title() const; 00131 00135 int level() const; 00136 00146 bool ancestor(MP7VideoSegment &result, int level = -1) const; 00147 00152 int childSegments(std::vector<MP7VideoSegment> &result) const; 00153 00159 bool addChildSegment(MP7VideoSegment &result); 00160 00168 bool move(MP7VideoSegment *newParent, MP7VideoSegment *newSibling = NULL); 00169 00178 bool split(MP7VideoSegment &result, const MP7Time &time); 00179 00191 bool remove(bool recursive = false); 00192 00202 bool searchByMediaTime(MP7VideoSegment &result, const MP7Time &time, int level) const; 00203 00210 bool prevGenSibling(MP7VideoSegment &result) const; 00211 00218 bool nextGenSibling(MP7VideoSegment &result) const; 00219 00226 MP7ListViewItem *setTitleImage(const MP7Time &time); 00227 00228 private: 00232 bool initDlgFromMP7Doc(VideoSegment &dlg); 00233 00237 bool updateMP7DocFromDlg(const VideoSegment &dlg); 00238 00239 }; 00240 00241 #endif /* _MP7VIDEOSEGMENT_HPP_ */