[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/multimedia/kmplayer/src
From:       Koos Vriezen <koos.vriezen () gmail ! com>
Date:       2012-01-29 11:55:49
Message-ID: 20120129115549.78D30AC893 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1276463 by vriezen:

Fix not saving TV list after in-place editing

Port code originally added to N770 edition to reduce saving unchanged
data to internal flash.

 M  +9 -1      kmplayer_lists.cpp  
 M  +2 -0      kmplayer_lists.h  
 M  +2 -2      kmplayerapp.cpp  
 M  +2 -0      kmplayertvsource.cpp  


--- trunk/extragear/multimedia/kmplayer/src/kmplayer_lists.cpp #1276462:1276463
@@ -51,7 +51,7 @@
 }
 
 KDE_NO_CDTOR_EXPORT FileDocument::FileDocument (short i, const QString &s, KMPlayer::Source *src)
- : KMPlayer::SourceDocument (src, s) {
+ : KMPlayer::SourceDocument (src, s), load_tree_version ((unsigned int)-1) {
     id = i;
 }
 
@@ -70,6 +70,7 @@
         KMPlayer::readXML (this, inxml, QString (), false);
         normalize ();
     }
+    load_tree_version = m_tree_version;
 }
 
 void FileDocument::writeToFile (const QString & fn) {
@@ -77,8 +78,15 @@
     kDebug () << "writeToFile " << fn;
     file.open (QIODevice::WriteOnly | QIODevice::Truncate);
     file.write (outerXML ().toUtf8 ());
+    load_tree_version = m_tree_version;
 }
 
+void FileDocument::sync (const QString &fn)
+{
+    if (resolved && load_tree_version != m_tree_version)
+        writeToFile (fn);
+}
+
 KDE_NO_CDTOR_EXPORT Recents::Recents (KMPlayerApp *a)
     : FileDocument (id_node_recent_document, "recents://"),
       app(a) {
--- trunk/extragear/multimedia/kmplayer/src/kmplayer_lists.h #1276462:1276463
@@ -67,6 +67,8 @@
     KMPlayer::Node *childFromTag (const QString &tag);
     void readFromFile (const QString &file);
     void writeToFile (const QString &file);
+    void sync (const QString & file);
+    unsigned int load_tree_version;
 };
 
 class KMPLAYER_NO_EXPORT Recents : public FileDocument {
--- trunk/extragear/multimedia/kmplayer/src/kmplayerapp.cpp #1276462:1276463
@@ -886,11 +886,11 @@
     Recents * rc = static_cast <Recents *> (recents.ptr ());
     if (rc && rc->resolved) {
         fileOpenRecent->saveEntries (KConfigGroup (config, "Recent Files"));
-        rc->writeToFile (KStandardDirs::locateLocal ("data", "kmplayer/recent.xml"));
+        rc->sync (KStandardDirs::locateLocal ("data", "kmplayer/recent.xml"));
     }
     Playlist * pl = static_cast <Playlist *> (playlist.ptr ());
     if (pl && pl->resolved)
-        pl->writeToFile (KStandardDirs::locateLocal ("data", "kmplayer/playlist.xml"));
+        pl->sync (KStandardDirs::locateLocal ("data", "kmplayer/playlist.xml"));
 }
 
 
--- trunk/extragear/multimedia/kmplayer/src/kmplayertvsource.cpp #1276462:1276463
@@ -370,6 +370,8 @@
 }
 
 KDE_NO_CDTOR_EXPORT KMPlayerTVSource::~KMPlayerTVSource () {
+    static_cast <TVDocument *> (m_document.ptr ())->sync
+        (KStandardDirs::locateLocal ("data", "kmplayer/tv.xml"));
 }
 
 KDE_NO_EXPORT void KMPlayerTVSource::activate () {
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic