summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/confedit/listviewitemconf.h1
-rw-r--r--noncore/apps/confedit/listviewitemconffile.cpp30
-rw-r--r--noncore/apps/confedit/listviewitemconffile.h2
-rw-r--r--noncore/apps/confedit/mainwindow.cpp47
-rw-r--r--noncore/apps/confedit/mainwindow.h10
5 files changed, 71 insertions, 19 deletions
diff --git a/noncore/apps/confedit/listviewitemconf.h b/noncore/apps/confedit/listviewitemconf.h
index 5837625..c6e60ba 100644
--- a/noncore/apps/confedit/listviewitemconf.h
+++ b/noncore/apps/confedit/listviewitemconf.h
@@ -25,6 +25,7 @@ public:
25 int getType(); 25 int getType();
26 virtual void displayText() = 0; 26 virtual void displayText() = 0;
27 virtual void changed(); 27 virtual void changed();
28 bool isChanged() {return _changed;};
28 virtual void unchanged(); 29 virtual void unchanged();
29 30
30protected: 31protected:
diff --git a/noncore/apps/confedit/listviewitemconffile.cpp b/noncore/apps/confedit/listviewitemconffile.cpp
index 858726d..b075063 100644
--- a/noncore/apps/confedit/listviewitemconffile.cpp
+++ b/noncore/apps/confedit/listviewitemconffile.cpp
@@ -73,9 +73,32 @@ void ListViewItemConfFile::parseFile()
73 } 73 }
74 } 74 }
75 confFile.close(); 75 confFile.close();
76 unchanged();
76 setExpandable( _valid ); 77 setExpandable( _valid );
77} 78}
78 79
80
81void ListViewItemConfFile::revert()
82{
83 if (_changed)
84 {
85 parseFile();
86 }else{
87 QString backup = confFileInfo->absFilePath()+"~";
88 QFile conf(confFileInfo->absFilePath());
89 QFile back(backup);
90
91 if (!back.open(IO_ReadOnly)) return;
92 if (!conf.open(IO_WriteOnly)) return;
93
94 #define SIZE 124
95 char buf[SIZE];
96 while (int c = back.readBlock(buf, SIZE) ) conf.writeBlock(buf,c);
97 conf.close();
98 back.close();
99 }
100}
101
79void ListViewItemConfFile::save() 102void ListViewItemConfFile::save()
80{ 103{
81 if (!_changed) return; 104 if (!_changed) return;
@@ -101,6 +124,11 @@ void ListViewItemConfFile::save()
101 ((ListViewItemConfigEntry*)it)->save(t); 124 ((ListViewItemConfigEntry*)it)->save(t);
102 } 125 }
103 conf.close(); 126 conf.close();
104 qDebug("no saveing yet...");
105 unchanged(); 127 unchanged();
106} 128}
129
130
131bool ListViewItemConfFile::revertable()
132{
133 return _changed || QFile(confFileInfo->absFilePath()+"~").exists();
134} \ No newline at end of file
diff --git a/noncore/apps/confedit/listviewitemconffile.h b/noncore/apps/confedit/listviewitemconffile.h
index d89b19c..ae23eab 100644
--- a/noncore/apps/confedit/listviewitemconffile.h
+++ b/noncore/apps/confedit/listviewitemconffile.h
@@ -25,7 +25,9 @@ public:
25 void parseFile(); 25 void parseFile();
26 QString fileName(); 26 QString fileName();
27 virtual void displayText(); 27 virtual void displayText();
28 bool revertable();
28 void save(); 29 void save();
30 void revert();
29protected: 31protected:
30private: 32private:
31 bool _valid; 33 bool _valid;
diff --git a/noncore/apps/confedit/mainwindow.cpp b/noncore/apps/confedit/mainwindow.cpp
index 47d9518..77b91f6 100644
--- a/noncore/apps/confedit/mainwindow.cpp
+++ b/noncore/apps/confedit/mainwindow.cpp
@@ -38,9 +38,6 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags f ) :
38 { 38 {
39 setCaption( tr("Conf File Editor") ); 39 setCaption( tr("Conf File Editor") );
40 40
41 popupTimer = new QTimer(this);
42 popupMenu = new QPopupMenu(this);
43
44 QWidget *mainWidget = new QWidget(this); 41 QWidget *mainWidget = new QWidget(this);
45 setCentralWidget( mainWidget); 42 setCentralWidget( mainWidget);
46 43
@@ -58,10 +55,6 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags f ) :
58 connect(settingList, SIGNAL( pressed(QListViewItem*) ), 55 connect(settingList, SIGNAL( pressed(QListViewItem*) ),
59 this, SLOT(setCurrent(QListViewItem*))); 56 this, SLOT(setCurrent(QListViewItem*)));
60 57
61 connect( popupTimer, SIGNAL(timeout()),
62 this, SLOT(showPopup()) );
63 connect( settingList, SIGNAL( clicked( QListViewItem* ) ),
64 this, SLOT( stopTimer( QListViewItem* ) ) );
65 58
66 connect( editor->LineEditGroup, SIGNAL( textChanged(const QString&) ), 59 connect( editor->LineEditGroup, SIGNAL( textChanged(const QString&) ),
67 SLOT( groupChanged(const QString&) ) ); 60 SLOT( groupChanged(const QString&) ) );
@@ -76,6 +69,22 @@ void MainWindow::makeMenu()
76{ 69{
77 70
78 71
72 popupTimer = new QTimer(this);
73 popupMenuFile = new QPopupMenu(this);
74
75 popupActionSave = new QAction( tr("Save"),QString::null, 0, this, 0 );
76 popupActionSave->addTo( popupMenuFile );
77 connect( popupActionSave, SIGNAL( activated() ),
78 this , SLOT( saveConfFile() ) );
79 popupActionRevert = new QAction( tr("Revert"),QString::null, 0, this, 0 );
80 popupActionRevert->addTo( popupMenuFile );
81 connect( popupActionRevert, SIGNAL( activated() ),
82 this , SLOT( revertConfFile() ) );
83
84 connect( popupTimer, SIGNAL(timeout()),
85 this, SLOT(showPopup()) );
86 connect( settingList, SIGNAL( clicked( QListViewItem* ) ),
87 this, SLOT( stopTimer( QListViewItem* ) ) );
79} 88}
80 89
81MainWindow::~MainWindow() 90MainWindow::~MainWindow()
@@ -151,18 +160,22 @@ void MainWindow::saveConfFile()
151 _fileItem->save(); 160 _fileItem->save();
152} 161}
153 162
163void MainWindow::revertConfFile()
164{
165 if (!_fileItem) return;
166 _fileItem->revert();
167}
168
154void MainWindow::showPopup() 169void MainWindow::showPopup()
155{ 170{
156 qDebug("showPopup"); 171 qDebug("showPopup");
157 if (!_fileItem) return; 172 if (_fileItem)
158 popupMenu->clear(); 173 {
159 174 popupActionSave->setEnabled(_fileItem->isChanged());
160 QAction *popupAction; 175 popupActionRevert->setEnabled(_fileItem->revertable());
161 popupAction = new QAction( tr("Save"),QString::null, 0, this, 0 ); 176 popupMenuFile->popup( QCursor::pos() );
162 popupAction->addTo( popupMenu ); 177 }else if(_currentItem->isChanged())
163 connect( popupAction, SIGNAL( activated() ), 178 {
164 this , SLOT( saveConfFile() ) );
165
166 179
167 popupMenu->popup( QCursor::pos() ); 180 }
168} 181}
diff --git a/noncore/apps/confedit/mainwindow.h b/noncore/apps/confedit/mainwindow.h
index b015dac..e0dc0b0 100644
--- a/noncore/apps/confedit/mainwindow.h
+++ b/noncore/apps/confedit/mainwindow.h
@@ -41,6 +41,7 @@ public slots:
41 void showPopup(); 41 void showPopup();
42 void stopTimer( QListViewItem* ); 42 void stopTimer( QListViewItem* );
43 void saveConfFile(); 43 void saveConfFile();
44 void revertConfFile();
44 45
45private: 46private:
46 ListViewConfDir *settingList; 47 ListViewConfDir *settingList;
@@ -48,7 +49,14 @@ private:
48 ListViewItemConfigEntry *_currentItem; 49 ListViewItemConfigEntry *_currentItem;
49 ListViewItemConfFile *_fileItem; 50 ListViewItemConfFile *_fileItem;
50 QTimer *popupTimer; 51 QTimer *popupTimer;
51 QPopupMenu *popupMenu; 52 QPopupMenu *popupMenuFile;
53 QPopupMenu *popupMenuEntry;
54 QAction *popupActionSave;
55 QAction *popupActionRevert;
56 QAction *popupActionDelete;
57 QAction *popupActionNew;
58 //QAction *popupAction;
59 //QAction *popupAction;
52 60
53 void makeMenu(); 61 void makeMenu();
54}; 62};