summaryrefslogtreecommitdiff
authorerik <erik>2007-01-26 20:22:50 (UTC)
committer erik <erik>2007-01-26 20:22:50 (UTC)
commit53d630c9c4813142ee13e6843c30476a5db26e78 (patch) (unidiff)
tree50a77a94cfeaccbb3d993bced8b7d0f498f74c7c
parent152a8fe978851aea8dac6ae5cb11f73540746b83 (diff)
downloadopie-53d630c9c4813142ee13e6843c30476a5db26e78.zip
opie-53d630c9c4813142ee13e6843c30476a5db26e78.tar.gz
opie-53d630c9c4813142ee13e6843c30476a5db26e78.tar.bz2
Each file in this commit exhibit an example of what prevent calls
'reverse inull'. All that means is that a pointer gets dereferenced. Then a pointer gets checked for validity before being dereferenced again. This almost always points to shenanigans. For example, the konsole.cpp file has this konsoleInit() call which passes in a const char** shell variable. Since it is a double pointer the programmer who wrote the code made the mistake of mixing the checking of the pointer and the pointer that points to the pointer. This commit attempts to correct that. Of course there are other instances of the same thing. But they all boil down to a small mistake which might have produced strange side effects.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/embeddedkonsole/konsole.cpp10
-rw-r--r--core/apps/textedit/textedit.cpp100
-rw-r--r--noncore/applets/notesapplet/notes.cpp2
-rw-r--r--noncore/apps/advancedfm/advancedfm.cpp2
4 files changed, 49 insertions, 65 deletions
diff --git a/core/apps/embeddedkonsole/konsole.cpp b/core/apps/embeddedkonsole/konsole.cpp
index f4ca0bf..5c40569 100644
--- a/core/apps/embeddedkonsole/konsole.cpp
+++ b/core/apps/embeddedkonsole/konsole.cpp
@@ -124,196 +124,202 @@ public:
124 124
125 125
126 void addTab(QWidget* w) 126 void addTab(QWidget* w)
127 { 127 {
128 QTab* t = new QTab(QString::number(tabBar()->count()+1)); 128 QTab* t = new QTab(QString::number(tabBar()->count()+1));
129 QTabWidget::addTab(w,t); 129 QTabWidget::addTab(w,t);
130 } 130 }
131 131
132 void removeTab(QWidget* w) 132 void removeTab(QWidget* w)
133 { 133 {
134 removePage(w); 134 removePage(w);
135 ((EKNumTabBar*)tabBar())->numberTabs(); 135 ((EKNumTabBar*)tabBar())->numberTabs();
136 } 136 }
137}; 137};
138 138
139// This could be configurable or dynamicly generated from the bash history 139// This could be configurable or dynamicly generated from the bash history
140// file of the user 140// file of the user
141static const char *commonCmds[] = 141static const char *commonCmds[] =
142 { 142 {
143 "ls ", // I left this here, cause it looks better than the first alpha 143 "ls ", // I left this here, cause it looks better than the first alpha
144 "cardctl eject", 144 "cardctl eject",
145 "cat ", 145 "cat ",
146 "cd ", 146 "cd ",
147 "chmod ", 147 "chmod ",
148 "clear", 148 "clear",
149 "cp ", 149 "cp ",
150 "dc ", 150 "dc ",
151 "df ", 151 "df ",
152 "dmesg", 152 "dmesg",
153 "echo ", 153 "echo ",
154 "env", 154 "env",
155 "find ", 155 "find ",
156 "free", 156 "free",
157 "grep ", 157 "grep ",
158 "ifconfig ", 158 "ifconfig ",
159 "ipkg ", 159 "ipkg ",
160 "mkdir ", 160 "mkdir ",
161 "mv ", 161 "mv ",
162 "nc localhost 7776", 162 "nc localhost 7776",
163 "nc localhost 7777", 163 "nc localhost 7777",
164 "netstat ", 164 "netstat ",
165 "nslookup ", 165 "nslookup ",
166 "ping ", 166 "ping ",
167 "ps aux", 167 "ps aux",
168 "pwd ", 168 "pwd ",
169// "qcop QPE/System 'linkChanged(QString)' ''", 169// "qcop QPE/System 'linkChanged(QString)' ''",
170// "qcop QPE/System 'restart()'", 170// "qcop QPE/System 'restart()'",
171// "qcop QPE/System 'quit()'", 171// "qcop QPE/System 'quit()'",
172 "rm ", 172 "rm ",
173 "rmdir ", 173 "rmdir ",
174 "route ", 174 "route ",
175 "set ", 175 "set ",
176 "traceroute", 176 "traceroute",
177 177
178 /* 178 /*
179 "gzip", 179 "gzip",
180 "gunzip", 180 "gunzip",
181 "chgrp", 181 "chgrp",
182 "chown", 182 "chown",
183 "date", 183 "date",
184 "dd", 184 "dd",
185 "df", 185 "df",
186 "dmesg", 186 "dmesg",
187 "fuser", 187 "fuser",
188 "hostname", 188 "hostname",
189 "kill", 189 "kill",
190 "killall", 190 "killall",
191 "ln", 191 "ln",
192 "ping", 192 "ping",
193 "mount", 193 "mount",
194 "more", 194 "more",
195 "sort", 195 "sort",
196 "touch", 196 "touch",
197 "umount", 197 "umount",
198 "mknod", 198 "mknod",
199 "netstat", 199 "netstat",
200 */ 200 */
201 201
202 "exit", 202 "exit",
203 NULL 203 NULL
204 }; 204 };
205 205
206 206
207static void konsoleInit(const char** shell) { 207static void konsoleInit(const char** shell) {
208 if(setuid(getuid()) !=0) odebug << "setuid failed" << oendl; 208 if(setuid(getuid()) !=0) odebug << "setuid failed" << oendl;
209 if(setgid(getgid()) != 0) odebug << "setgid failed" << oendl; // drop privileges 209 if(setgid(getgid()) != 0) odebug << "setgid failed" << oendl; // drop privileges
210 210
211 211
212// QPEApplication::grabKeyboard(); // for CTRL and ALT 212// QPEApplication::grabKeyboard(); // for CTRL and ALT
213 213
214 odebug << "keyboard grabbed" << oendl; 214 odebug << "keyboard grabbed" << oendl;
215#ifdef FAKE_CTRL_AND_ALT 215#ifdef FAKE_CTRL_AND_ALT
216 odebug << "Fake Ctrl and Alt defined" << oendl; 216 odebug << "Fake Ctrl and Alt defined" << oendl;
217 QPEApplication::grabKeyboard(); // for CTRL and ALT 217 QPEApplication::grabKeyboard(); // for CTRL and ALT
218#endif 218#endif
219 219
220 if (!shell) {
221 owarn << "No double pointer 'shell'" << oendl;
222 return;
223 }
224
220 *shell = getenv("SHELL"); 225 *shell = getenv("SHELL");
221 owarn << "SHell initially is " << *shell << "" << oendl; 226 if (*shell)
227 owarn << "Current shell: " << *shell << "" << oendl;
222 228
223 if (shell == NULL || *shell == '\0') { 229 if (*shell == NULL || **shell == '\0') {
224 struct passwd *ent = 0; 230 struct passwd *ent = 0;
225 uid_t me = getuid(); 231 uid_t me = getuid();
226 *shell = "/bin/sh"; 232 *shell = "/bin/sh";
227 233
228 while ( (ent = getpwent()) != 0 ) { 234 while ( (ent = getpwent()) != 0 ) {
229 if (ent->pw_uid == me) { 235 if (ent->pw_uid == me) {
230 if (ent->pw_shell != "") 236 if (ent->pw_shell != "")
231 *shell = ent->pw_shell; 237 *shell = ent->pw_shell;
232 break; 238 break;
233 } 239 }
234 } 240 }
235 endpwent(); 241 endpwent();
236 } 242 }
237 243
238 if( putenv((char*)"COLORTERM=") !=0) 244 if( putenv((char*)"COLORTERM=") !=0)
239 odebug << "putenv failed" << oendl; // to trigger mc's color detection 245 odebug << "putenv failed" << oendl; // to trigger mc's color detection
240} 246}
241 247
242 248
243Konsole::Konsole(QWidget* parent, const char* name, WFlags fl) : 249Konsole::Konsole(QWidget* parent, const char* name, WFlags fl) :
244 QMainWindow(parent, name, fl) 250 QMainWindow(parent, name, fl)
245{ 251{
246 QStrList tmp; const char* shell; 252 QStrList tmp; const char* shell;
247 253
248 konsoleInit( &shell); 254 konsoleInit( &shell);
249 init(shell,tmp); 255 init(shell,tmp);
250} 256}
251 257
252Konsole::Konsole(const char* name, const char* _pgm, QStrList & _args, int) 258Konsole::Konsole(const char* name, const char* _pgm, QStrList & _args, int)
253 : QMainWindow(0, name) 259 : QMainWindow(0, name)
254{ 260{
255 init(_pgm,_args); 261 init(_pgm,_args);
256} 262}
257 263
258struct HistoryItem 264struct HistoryItem
259{ 265{
260 HistoryItem(int c, const QString &l) 266 HistoryItem(int c, const QString &l)
261 { 267 {
262 count = c; 268 count = c;
263 line = l; 269 line = l;
264 } 270 }
265 int count; 271 int count;
266 QString line; 272 QString line;
267}; 273};
268 274
269class HistoryList : public QList<HistoryItem> 275class HistoryList : public QList<HistoryItem>
270{ 276{
271 virtual int compareItems( QCollection::Item item1, QCollection::Item item2) 277 virtual int compareItems( QCollection::Item item1, QCollection::Item item2)
272 { 278 {
273 int c1 = ((HistoryItem*)item1)->count; 279 int c1 = ((HistoryItem*)item1)->count;
274 int c2 = ((HistoryItem*)item2)->count; 280 int c2 = ((HistoryItem*)item2)->count;
275 if (c1 > c2) 281 if (c1 > c2)
276 return(1); 282 return(1);
277 if (c1 < c2) 283 if (c1 < c2)
278 return(-1); 284 return(-1);
279 return(0); 285 return(0);
280 } 286 }
281}; 287};
282 288
283void Konsole::initCommandList() 289void Konsole::initCommandList()
284{ 290{
285 // odebug << "Konsole::initCommandList" << oendl; 291 // odebug << "Konsole::initCommandList" << oendl;
286 Config cfg( "Konsole" ); 292 Config cfg( "Konsole" );
287 cfg.setGroup("Commands"); 293 cfg.setGroup("Commands");
288 // commonCombo->setInsertionPolicy(QComboBox::AtCurrent); 294 // commonCombo->setInsertionPolicy(QComboBox::AtCurrent);
289 commonCombo->clear(); 295 commonCombo->clear();
290 296
291 if (cfg.readEntry("ShellHistory","TRUE") == "FALSE") { 297 if (cfg.readEntry("ShellHistory","TRUE") == "FALSE") {
292 QString histfilename = QString(getenv("HOME")) + "/.bash_history"; 298 QString histfilename = QString(getenv("HOME")) + "/.bash_history";
293 histfilename = cfg.readEntry("ShellHistoryPath",histfilename); 299 histfilename = cfg.readEntry("ShellHistoryPath",histfilename);
294 QFile histfile(histfilename); 300 QFile histfile(histfilename);
295 // note: compiler barfed on: 301 // note: compiler barfed on:
296 // QFile histfile(QString(getenv("HOME")) + "/.bash_history"); 302 // QFile histfile(QString(getenv("HOME")) + "/.bash_history");
297 if (histfile.open( IO_ReadOnly )) { 303 if (histfile.open( IO_ReadOnly )) {
298 QString line; 304 QString line;
299 uint i; 305 uint i;
300 HistoryList items; 306 HistoryList items;
301 307
302 int lineno = 0; 308 int lineno = 0;
303 while(!histfile.atEnd()) { 309 while(!histfile.atEnd()) {
304 if (histfile.readLine(line, 200) < 0) { 310 if (histfile.readLine(line, 200) < 0) {
305 break; 311 break;
306 } 312 }
307 line = line.left(line.length()-1); 313 line = line.left(line.length()-1);
308 lineno++; 314 lineno++;
309 315
310 for(i=0; i<items.count(); i++) { 316 for(i=0; i<items.count(); i++) {
311 if (line == items.at(i)->line) { 317 if (line == items.at(i)->line) {
312 // weight recent commands & repeated commands more 318 // weight recent commands & repeated commands more
313 // by adding up the index of each command 319 // by adding up the index of each command
314 items.at(i)->count += lineno; 320 items.at(i)->count += lineno;
315 break; 321 break;
316 } 322 }
317 } 323 }
318 if (i >= items.count()) { 324 if (i >= items.count()) {
319 items.append(new HistoryItem(lineno, line)); 325 items.append(new HistoryItem(lineno, line));
diff --git a/core/apps/textedit/textedit.cpp b/core/apps/textedit/textedit.cpp
index 61beac5..4bbc62b 100644
--- a/core/apps/textedit/textedit.cpp
+++ b/core/apps/textedit/textedit.cpp
@@ -757,292 +757,272 @@ void TextEdit::openFile( const DocLnk &f ) {
757 if ( doc ) 757 if ( doc )
758 delete doc; 758 delete doc;
759 doc = new DocLnk(f); 759 doc = new DocLnk(f);
760 editor->setText(txt); 760 editor->setText(txt);
761 editor->setEdited( false); 761 editor->setEdited( false);
762 edited1=false; 762 edited1=false;
763 edited=false; 763 edited=false;
764 764
765 doc->setName(currentFileName); 765 doc->setName(currentFileName);
766 updateCaption(); 766 updateCaption();
767 setTimer(); 767 setTimer();
768} 768}
769 769
770void TextEdit::showEditTools() { 770void TextEdit::showEditTools() {
771 menu->show(); 771 menu->show();
772 editBar->show(); 772 editBar->show();
773 if(!useSearchBar) 773 if(!useSearchBar)
774 searchBar->hide(); 774 searchBar->hide();
775 else 775 else
776 searchBar->show(); 776 searchBar->show();
777 setWState (WState_Reserved1 ); 777 setWState (WState_Reserved1 );
778} 778}
779 779
780/*! 780/*!
781 unprompted save */ 781 unprompted save */
782bool TextEdit::save() { 782bool TextEdit::save() {
783 QString name, file; 783 QString name, file;
784 odebug << "saveAsFile " + currentFileName << oendl; 784 odebug << "saveAsFile " + currentFileName << oendl;
785 if(currentFileName.isEmpty()) { 785 if(currentFileName.isEmpty()) {
786 saveAs(); 786 saveAs();
787 return false; 787 return false;
788 } 788 }
789 name = currentFileName; 789 name = currentFileName;
790 if(doc) { 790 if(doc) {
791 file = doc->file(); 791 file = doc->file();
792 odebug << "saver file "+file << oendl; 792 odebug << "saver file "+file << oendl;
793 name = doc->name(); 793 name = doc->name();
794 odebug << "File named "+name << oendl; 794 odebug << "File named "+name << oendl;
795 } else { 795 } else {
796 file = currentFileName; 796 file = currentFileName;
797 name = QFileInfo(currentFileName).baseName(); 797 name = QFileInfo(currentFileName).baseName();
798 } 798 }
799 799
800 QString rt = editor->text(); 800 QString rt = editor->text();
801 if( !rt.isEmpty() ) { 801 if( !rt.isEmpty() ) {
802 if(name.isEmpty()) { 802 if(name.isEmpty()) {
803 saveAs(); 803 saveAs();
804 } else { 804 } else {
805 currentFileName = name; 805 currentFileName = name;
806 odebug << "saveFile "+currentFileName << oendl; 806 odebug << "saveFile "+currentFileName << oendl;
807 807
808 struct stat buf; 808 struct stat buf;
809 mode_t mode; 809 mode_t mode;
810 stat(file.latin1(), &buf); 810 stat(file.latin1(), &buf);
811 mode = buf.st_mode; 811 mode = buf.st_mode;
812 812
813 if(!fileIs) { 813 if(!fileIs) {
814 doc->setName( name); 814 doc->setName( name);
815 FileManager fm; 815 FileManager fm;
816 if ( !fm.saveFile( *doc, rt ) ) { 816 if ( !fm.saveFile( *doc, rt ) ) {
817 QMessageBox::message(tr("Text Edit"),tr("Save Failed")); 817 QMessageBox::message(tr("Text Edit"),tr("Save Failed"));
818 return false; 818 return false;
819 } 819 }
820 } else { 820 } else {
821 odebug << "regular save file" << oendl; 821 odebug << "regular save file" << oendl;
822 QFile f(file); 822 QFile f(file);
823 if( f.open(IO_WriteOnly)) { 823 if( f.open(IO_WriteOnly)) {
824 QCString crt = rt.utf8(); 824 QCString crt = rt.utf8();
825 f.writeBlock(crt,crt.length()); 825 f.writeBlock(crt,crt.length());
826 } else { 826 } else {
827 QMessageBox::message(tr("Text Edit"),tr("Write Failed")); 827 QMessageBox::message(tr("Text Edit"),tr("Write Failed"));
828 return false; 828 return false;
829 } 829 }
830 830
831 } 831 }
832 editor->setEdited( false); 832 editor->setEdited( false);
833 edited1=false; 833 edited1=false;
834 edited=false; 834 edited=false;
835 if(caption().left(1)=="*") 835 if(caption().left(1)=="*")
836 setCaption(caption().right(caption().length()-1)); 836 setCaption(caption().right(caption().length()-1));
837 837
838 838
839 chmod( file.latin1(), mode); 839 chmod( file.latin1(), mode);
840 } 840 }
841 return true; 841 return true;
842 } 842 }
843 return false; 843 return false;
844} 844}
845 845
846/*! 846/*!
847 prompted save */ 847 prompted save */
848bool TextEdit::saveAs() { 848bool TextEdit::saveAs() {
849 849
850 if(caption() == tr("Text Editor")) 850 if(caption() == tr("Text Editor"))
851 return false; 851 return false;
852 odebug << "saveAsFile " + currentFileName << oendl; 852 odebug << "saveAsFile " + currentFileName << oendl;
853 // case of nothing to save...
854// if ( !doc && !currentFileName.isEmpty()) {
855// //|| !bFromDocView)
856// odebug << "no doc" << oendl;
857// return true;
858// }
859// if ( !editor->edited() ) {
860// delete doc;
861// doc = 0;
862// return true;
863// }
864 853
865 QString rt = editor->text(); 854 QString rt = editor->text();
866 odebug << currentFileName << oendl; 855 odebug << currentFileName << oendl;
867 856
868 if( currentFileName.isEmpty() 857 if( currentFileName.isEmpty()
869 || currentFileName == tr("Unnamed") 858 || currentFileName == tr("Unnamed")
870 || currentFileName == tr("Text Editor")) { 859 || currentFileName == tr("Text Editor"))
860 {
871 odebug << "do silly TT filename thing" << oendl; 861 odebug << "do silly TT filename thing" << oendl;
872// if ( doc && doc->name().isEmpty() ) {
873 QString pt = rt.simplifyWhiteSpace(); 862 QString pt = rt.simplifyWhiteSpace();
874 int i = pt.find( ' ' ); 863 int i = pt.find( ' ' );
875 QString docname = pt; 864 QString docname = pt;
876 if ( i > 0 ) 865 if ( i > 0 ) docname = pt.left( i );
877 docname = pt.left( i ); 866
878 // remove "." at the beginning
879 while( docname.startsWith( "." ) ) 867 while( docname.startsWith( "." ) )
880 docname = docname.mid( 1 ); 868 docname = docname.mid( 1 );
881 docname.replace( QRegExp("/"), "_" ); 869 docname.replace( QRegExp("/"), "_" );
882 // cut the length. filenames longer than that 870 // Cut the length. Filenames longer than 40 are not helpful
883 //don't make sense and something goes wrong when they get too long. 871 // and something goes wrong when they get too long.
884 if ( docname.length() > 40 ) 872 if ( docname.length() > 40 ) docname = docname.left(40);
885 docname = docname.left(40); 873
886 if ( docname.isEmpty() ) 874 if ( docname.isEmpty() ) docname = tr("Unnamed");
887 docname = tr("Unnamed"); 875
888 if(doc) doc->setName(docname); 876 if(doc) doc->setName(docname);
877
889 currentFileName=docname; 878 currentFileName=docname;
890// }
891// else
892// odebug << "hmmmmmm" << oendl;
893 } 879 }
894 880
895 881
896 QMap<QString, QStringList> map; 882 QMap<QString, QStringList> map;
897 map.insert(tr("All"), QStringList() ); 883 map.insert(tr("All"), QStringList() );
898 QStringList text; 884 QStringList text;
899 text << "text/*"; 885 text << "text/*";
900 map.insert(tr("Text"), text ); 886 map.insert(tr("Text"), text );
901 text << "*"; 887 text << "*";
902 map.insert(tr("All"), text ); 888 map.insert(tr("All"), text );
903 889
904 QFileInfo cuFi( currentFileName); 890 QFileInfo cuFi( currentFileName);
905 QString filee = cuFi.fileName(); 891 QString filee = cuFi.fileName();
906 QString dire = cuFi.dirPath(); 892 QString dire = cuFi.dirPath();
907 if(dire==".") 893 if(dire==".")
908 dire = QPEApplication::documentDir(); 894 dire = QPEApplication::documentDir();
895
909 QString str; 896 QString str;
910 if( !featureAutoSave) { 897 if( !featureAutoSave) {
911 str = OFileDialog::getSaveFileName( 2, 898 str = OFileDialog::getSaveFileName( 2, dire, filee, map);
912 dire, 899 } else
913 filee, map);
914 } else
915 str = currentFileName; 900 str = currentFileName;
916 901
917 if(!str.isEmpty()) { 902 if(!str.isEmpty()) {
918 QString fileNm=str; 903 QString fileNm=str;
919 904
920 odebug << "saving filename "+fileNm << oendl; 905 odebug << "saving filename "+fileNm << oendl;
921 QFileInfo fi(fileNm); 906 QFileInfo fi(fileNm);
922 currentFileName=fi.fileName(); 907 currentFileName=fi.fileName();
923 if(doc) 908 if(doc)
924// QString file = doc->file();
925// doc->removeFiles();
926 delete doc; 909 delete doc;
927 DocLnk nf; 910
928 nf.setType("text/plain"); 911 DocLnk nf;
929 nf.setFile( fileNm); 912 nf.setType("text/plain");
930 doc = new DocLnk(nf); 913 nf.setFile( fileNm);
931// editor->setText(rt); 914 doc = new DocLnk(nf);
932 odebug << "Saving file as "+currentFileName << oendl; 915 odebug << "Saving file as "+currentFileName << oendl;
933 doc->setName( fi.baseName() /*currentFileName*/); 916 doc->setName( fi.baseName() );
934 updateCaption( currentFileName); 917 updateCaption( currentFileName);
935 918
936 FileManager fm; 919 FileManager fm;
937 if ( !fm.saveFile( *doc, rt ) ) { 920 if ( !fm.saveFile( *doc, rt ) ) {
938 QMessageBox::message(tr("Text Edit"),tr("Save Failed")); 921 QMessageBox::message(tr("Text Edit"),tr("Save Failed"));
939 return false; 922 return false;
940 } 923 }
941 924
942 if( filePerms ) { 925 if( filePerms ) {
943 filePermissions *filePerm; 926 filePermissions *filePerm;
944 filePerm = new filePermissions(this, 927 filePerm = new filePermissions(this, tr("Permissions"),true, 0,
945 tr("Permissions"),true, 928 (const QString &)fileNm);
946 0,(const QString &)fileNm); 929 QPEApplication::execDialog( filePerm );
947 QPEApplication::execDialog( filePerm ); 930
948 931 delete filePerm;
949 if( filePerm) 932 }
950 delete filePerm;
951 }
952// }
953 editor->setEdited( false); 933 editor->setEdited( false);
954 edited1 = false; 934 edited1 = false;
955 edited = false; 935 edited = false;
956 if(caption().left(1)=="*") 936 if(caption().left(1)=="*")
957 setCaption(caption().right(caption().length()-1)); 937 setCaption(caption().right(caption().length()-1));
958 938
959 return true; 939 return true;
960 } 940 }
961 odebug << "returning false" << oendl; 941 odebug << "returning false" << oendl;
962 currentFileName = ""; 942 currentFileName = "";
963 return false; 943 return false;
964} //end saveAs 944} //end saveAs
965 945
966void TextEdit::clear() { 946void TextEdit::clear() {
967 delete doc; 947 delete doc;
968 doc = 0; 948 doc = 0;
969 editor->clear(); 949 editor->clear();
970} 950}
971 951
972void TextEdit::updateCaption( const QString &name ) { 952void TextEdit::updateCaption( const QString &name ) {
973 953
974 if ( name.isEmpty() ) 954 if ( name.isEmpty() )
975 setCaption( tr("Text Editor") ); 955 setCaption( tr("Text Editor") );
976 else { 956 else {
977 QString s = name; 957 QString s = name;
978 if ( s.isNull() ) 958 if ( s.isNull() )
979 s = doc->name(); 959 s = doc->name();
980 if ( s.isEmpty() ) { 960 if ( s.isEmpty() ) {
981 s = tr( "Unnamed" ); 961 s = tr( "Unnamed" );
982 currentFileName=s; 962 currentFileName=s;
983 } 963 }
984// if(s.left(1) == "/") 964// if(s.left(1) == "/")
985// s = s.right(s.length()-1); 965// s = s.right(s.length()-1);
986 setCaption( tr("%1 - Text Editor").arg( s ) ); 966 setCaption( tr("%1 - Text Editor").arg( s ) );
987 } 967 }
988} 968}
989 969
990void TextEdit::setDocument(const QString& fileref) { 970void TextEdit::setDocument(const QString& fileref) {
991 if(fileref != "Unnamed") { 971 if(fileref != "Unnamed") {
992 currentFileName=fileref; 972 currentFileName=fileref;
993 odebug << "setDocument" << oendl; 973 odebug << "setDocument" << oendl;
994 QFileInfo fi(currentFileName); 974 QFileInfo fi(currentFileName);
995 odebug << "basename:"+fi.baseName()+": current filenmame "+currentFileName << oendl; 975 odebug << "basename:"+fi.baseName()+": current filenmame "+currentFileName << oendl;
996 if( (fi.baseName().left(1)).isEmpty() ) { 976 if( (fi.baseName().left(1)).isEmpty() ) {
997 openDotFile(currentFileName); 977 openDotFile(currentFileName);
998 978
999 } else { 979 } else {
1000 odebug << "setDoc open" << oendl; 980 odebug << "setDoc open" << oendl;
1001 bFromDocView = true; 981 bFromDocView = true;
1002 openFile(fileref); 982 openFile(fileref);
1003 editor->setEdited(true); 983 editor->setEdited(true);
1004 edited1=false; 984 edited1=false;
1005 edited=true; 985 edited=true;
1006 // fromSetDocument=false; 986 // fromSetDocument=false;
1007 // doSearchBar(); 987 // doSearchBar();
1008 } 988 }
1009 } 989 }
1010 updateCaption( currentFileName); 990 updateCaption( currentFileName);
1011} 991}
1012 992
1013void TextEdit::changeFont() { 993void TextEdit::changeFont() {
1014 QDialog *d = new QDialog ( this, "FontDialog", true ); 994 QDialog *d = new QDialog ( this, "FontDialog", true );
1015 d-> setCaption ( tr( "Choose font" )); 995 d-> setCaption ( tr( "Choose font" ));
1016 QBoxLayout *lay = new QVBoxLayout ( d ); 996 QBoxLayout *lay = new QVBoxLayout ( d );
1017 OFontSelector *ofs = new OFontSelector ( true, d ); 997 OFontSelector *ofs = new OFontSelector ( true, d );
1018 lay-> addWidget ( ofs ); 998 lay-> addWidget ( ofs );
1019 ofs-> setSelectedFont ( editor-> font ( )); 999 ofs-> setSelectedFont ( editor-> font ( ));
1020 1000
1021 if ( QPEApplication::execDialog( d ) == QDialog::Accepted ) 1001 if ( QPEApplication::execDialog( d ) == QDialog::Accepted )
1022 editor-> setFont ( ofs-> selectedFont ( )); 1002 editor-> setFont ( ofs-> selectedFont ( ));
1023 delete d; 1003 delete d;
1024 1004
1025} 1005}
1026 1006
1027void TextEdit::editDelete() { 1007void TextEdit::editDelete() {
1028 switch ( QMessageBox::warning(this,tr("Text Editor"), 1008 switch ( QMessageBox::warning(this,tr("Text Editor"),
1029 tr("Do you really want<BR>to <B>delete</B> " 1009 tr("Do you really want<BR>to <B>delete</B> "
1030 "the current file\nfrom the disk?<BR>This is " 1010 "the current file\nfrom the disk?<BR>This is "
1031 "<B>irreversable!</B>"), 1011 "<B>irreversable!</B>"),
1032 tr("Yes"),tr("No"),0,0,1) ) { 1012 tr("Yes"),tr("No"),0,0,1) ) {
1033 case 0: 1013 case 0:
1034 if(doc) { 1014 if(doc) {
1035 doc->removeFiles(); 1015 doc->removeFiles();
1036 clear(); 1016 clear();
1037 setCaption( tr("Text Editor") ); 1017 setCaption( tr("Text Editor") );
1038 } 1018 }
1039 break; 1019 break;
1040 case 1: 1020 case 1:
1041 // exit 1021 // exit
1042 break; 1022 break;
1043 }; 1023 };
1044} 1024}
1045 1025
1046void TextEdit::changeStartConfig( bool b ) { 1026void TextEdit::changeStartConfig( bool b ) {
1047 startWithNew=b; 1027 startWithNew=b;
1048 Config cfg("TextEdit"); 1028 Config cfg("TextEdit");
@@ -1104,110 +1084,108 @@ void TextEdit::editPasteTimeDate() {
1104 cb->setText( dt.toString()); 1084 cb->setText( dt.toString());
1105 editor->paste(); 1085 editor->paste();
1106#endif 1086#endif
1107} 1087}
1108 1088
1109int TextEdit::savePrompt() 1089int TextEdit::savePrompt()
1110{ 1090{
1111 switch( QMessageBox::information( 0, (tr("Textedit")), 1091 switch( QMessageBox::information( 0, (tr("Textedit")),
1112 (tr("Textedit detected\n" 1092 (tr("Textedit detected\n"
1113 "you have unsaved changes\n" 1093 "you have unsaved changes\n"
1114 "Go ahead and save?\n")), 1094 "Go ahead and save?\n")),
1115 (tr("Save")), (tr("Don't Save")), (tr("&Cancel")), 2, 2 ) ) 1095 (tr("Save")), (tr("Don't Save")), (tr("&Cancel")), 2, 2 ) )
1116 { 1096 {
1117 case 0: 1097 case 0:
1118 { 1098 {
1119 return 1; 1099 return 1;
1120 } 1100 }
1121 break; 1101 break;
1122 1102
1123 case 1: 1103 case 1:
1124 { 1104 {
1125 return 2; 1105 return 2;
1126 } 1106 }
1127 break; 1107 break;
1128 1108
1129 case 2: 1109 case 2:
1130 { 1110 {
1131 return -1; 1111 return -1;
1132 } 1112 }
1133 break; 1113 break;
1134 }; 1114 };
1135 1115
1136 return 0; 1116 return 0;
1137} 1117}
1138 1118
1139void TextEdit::timerCrank() 1119void TextEdit::timerCrank()
1140{ 1120{
1141 if(featureAutoSave && edited1) 1121 if(featureAutoSave && edited1)
1142 { 1122 {
1143 if(currentFileName.isEmpty()) 1123 if(currentFileName.isEmpty())
1144 { 1124 {
1145 currentFileName = QDir::homeDirPath()+"/textedit.tmp"; 1125 currentFileName = QDir::homeDirPath()+"/textedit.tmp";
1146 saveAs(); 1126 saveAs();
1147 } 1127 }
1148 else 1128 else
1149 { 1129 {
1150// odebug << "autosave" << oendl; 1130// odebug << "autosave" << oendl;
1151 save(); 1131 save();
1152 } 1132 }
1153 setTimer(); 1133 setTimer();
1154 } 1134 }
1155} 1135}
1156 1136
1157void TextEdit::doTimer(bool b) 1137void TextEdit::doTimer(bool b)
1158{ 1138{
1159 Config cfg("TextEdit"); 1139 Config cfg("TextEdit");
1160 cfg.setGroup ( "View" ); 1140 cfg.setGroup ( "View" );
1161 cfg.writeEntry ( "autosave", b); 1141 cfg.writeEntry ( "autosave", b);
1162 featureAutoSave = b; 1142 featureAutoSave = b;
1163 nAutoSave->setOn(b); 1143 nAutoSave->setOn(b);
1164 if(b) 1144 if(b)
1165 { 1145 {
1166// odebug << "doTimer true" << oendl; 1146// odebug << "doTimer true" << oendl;
1167 setTimer(); 1147 setTimer();
1168 } 1148 }
1169// else 1149// else
1170// odebug << "doTimer false" << oendl; 1150// odebug << "doTimer false" << oendl;
1171} 1151}
1172 1152
1173void TextEdit::setTimer() 1153void TextEdit::setTimer()
1174{ 1154{
1175if(featureAutoSave) 1155if(featureAutoSave)
1176 { 1156 {
1177// odebug << "setting autosave" << oendl; 1157// odebug << "setting autosave" << oendl;
1178 QTimer *timer = new QTimer(this ); 1158 QTimer *timer = new QTimer(this );
1179 connect( timer, SIGNAL(timeout()), this, SLOT(timerCrank()) ); 1159 connect( timer, SIGNAL(timeout()), this, SLOT(timerCrank()) );
1180 timer->start( 300000, true); //5 minutes 1160 timer->start( 300000, true); //5 minutes
1181 } 1161 }
1182} 1162}
1183 1163
1184void TextEdit::gotoLine() { 1164void TextEdit::gotoLine() {
1185 if( editor->length() < 1) 1165 if( editor->length() < 1)
1186 return; 1166 return;
1187 QWidget *d = QApplication::desktop(); 1167 QWidget *d = QApplication::desktop();
1188 gotoEdit = new QLineEdit( 0, "Goto line"); 1168 gotoEdit = new QLineEdit( 0, "Goto line");
1189 1169
1190 gotoEdit->move( (d->width()/2) - ( gotoEdit->width()/2) , (d->height()/2) - (gotoEdit->height()/2)); 1170 gotoEdit->move( (d->width()/2) - ( gotoEdit->width()/2) , (d->height()/2) - (gotoEdit->height()/2));
1191 gotoEdit->setFrame(true); 1171 gotoEdit->setFrame(true);
1192 gotoEdit->show(); 1172 gotoEdit->show();
1193 connect (gotoEdit,SIGNAL(returnPressed()), this, SLOT(doGoto())); 1173 connect (gotoEdit,SIGNAL(returnPressed()), this, SLOT(doGoto()));
1194} 1174}
1195 1175
1196void TextEdit::doGoto() { 1176void TextEdit::doGoto() {
1197 QString number = gotoEdit->text(); 1177 QString number = gotoEdit->text();
1198 gotoEdit->hide(); 1178 gotoEdit->hide();
1199 1179
1200 if(gotoEdit) { 1180 delete gotoEdit;
1201 delete gotoEdit; 1181 gotoEdit = 0;
1202 gotoEdit = 0;
1203 }
1204 1182
1205 bool ok; 1183 bool ok;
1206 int lineNumber = number.toInt(&ok, 10); 1184 int lineNumber = number.toInt(&ok, 10);
1207 if( editor->numLines() < lineNumber) 1185 if( editor->numLines() < lineNumber)
1208 QMessageBox::message(tr("Text Edit"),tr("Not enough lines")); 1186 QMessageBox::message(tr("Text Edit"),tr("Not enough lines"));
1209 else 1187 else
1210 { 1188 {
1211 editor->setCursorPosition(lineNumber, 0, false); 1189 editor->setCursorPosition(lineNumber, 0, false);
1212 } 1190 }
1213} 1191}
diff --git a/noncore/applets/notesapplet/notes.cpp b/noncore/applets/notesapplet/notes.cpp
index 13f297e..61a47d7 100644
--- a/noncore/applets/notesapplet/notes.cpp
+++ b/noncore/applets/notesapplet/notes.cpp
@@ -142,193 +142,193 @@ void NotesControl::slotDeleteButton() {
142 142
143 Config cfg("Notes"); 143 Config cfg("Notes");
144 cfg.setGroup("Docs"); 144 cfg.setGroup("Docs");
145 int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); 145 int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 );
146 QString entryName, entryName2;; 146 QString entryName, entryName2;;
147 for ( int i = 0; i < noOfFiles; i++ ) { 147 for ( int i = 0; i < noOfFiles; i++ ) {
148 entryName.sprintf( "File%i", i + 1 ); 148 entryName.sprintf( "File%i", i + 1 );
149 if(selectedText == cfg.readEntry( entryName )) { 149 if(selectedText == cfg.readEntry( entryName )) {
150 odebug << "removing " << selectedText.latin1() << ", " << i << "" << oendl; 150 odebug << "removing " << selectedText.latin1() << ", " << i << "" << oendl;
151 for ( int j = i; j < noOfFiles; j++ ) { 151 for ( int j = i; j < noOfFiles; j++ ) {
152 entryName.sprintf( "File%i", i + 1 ); 152 entryName.sprintf( "File%i", i + 1 );
153 entryName2.sprintf( "File%i", i + 2 ); 153 entryName2.sprintf( "File%i", i + 2 );
154 QString temp = cfg.readEntry(entryName2); 154 QString temp = cfg.readEntry(entryName2);
155 odebug << "move "+temp << oendl; 155 odebug << "move "+temp << oendl;
156 cfg.writeEntry(entryName, temp); 156 cfg.writeEntry(entryName, temp);
157 i++; 157 i++;
158 } 158 }
159 cfg.writeEntry("NumberOfFiles", noOfFiles-1 ); 159 cfg.writeEntry("NumberOfFiles", noOfFiles-1 );
160 entryName.sprintf( "File%i", noOfFiles ); 160 entryName.sprintf( "File%i", noOfFiles );
161 cfg.removeEntry(entryName); 161 cfg.removeEntry(entryName);
162 cfg.write(); 162 cfg.write();
163 DocLnk nf(selectedText); 163 DocLnk nf(selectedText);
164 nf.removeFiles(); 164 nf.removeFiles();
165 QString fi=QPEApplication::documentDir()+"/text/plain/"+selectedText+".desktop"; 165 QString fi=QPEApplication::documentDir()+"/text/plain/"+selectedText+".desktop";
166 odebug << fi << oendl; 166 odebug << fi << oendl;
167 167
168 QFile f( fi); 168 QFile f( fi);
169 if( !f.remove()) odebug << ".desktop file not removed" << oendl; 169 if( !f.remove()) odebug << ".desktop file not removed" << oendl;
170 170
171 } 171 }
172 } 172 }
173 view->clear(); 173 view->clear();
174 174
175 populateBox(); 175 populateBox();
176 } 176 }
177} 177}
178 178
179void NotesControl::slotNewButton() { 179void NotesControl::slotNewButton() {
180 if(edited) save(); 180 if(edited) save();
181 view->clear(); 181 view->clear();
182 view->setFocus(); 182 view->setFocus();
183 edited=false; 183 edited=false;
184 isNew=false; 184 isNew=false;
185} 185}
186 186
187void NotesControl::slotBeamButton() { 187void NotesControl::slotBeamButton() {
188 Ir ir; 188 Ir ir;
189 if(!ir.supported()){ 189 if(!ir.supported()){
190 } else { 190 } else {
191 this->hide(); 191 this->hide();
192 QString selectedText = box->currentText(); 192 QString selectedText = box->currentText();
193 if( !selectedText.isEmpty()) { 193 if( !selectedText.isEmpty()) {
194 QString file = QDir::homeDirPath()+"/"+selectedText; 194 QString file = QDir::homeDirPath()+"/"+selectedText;
195 QFile f(file); 195 QFile f(file);
196 Ir *irFile = new Ir(this, "IR"); 196 Ir *irFile = new Ir(this, "IR");
197 connect( irFile, SIGNAL(done(Ir*)), this, SLOT( slotBeamFinished(Ir*))); 197 connect( irFile, SIGNAL(done(Ir*)), this, SLOT( slotBeamFinished(Ir*)));
198 irFile->send( file, "Note", "text/plain" ); 198 irFile->send( file, "Note", "text/plain" );
199 } 199 }
200 } 200 }
201} 201}
202 202
203void NotesControl::slotBeamFinished(Ir *) { 203void NotesControl::slotBeamFinished(Ir *) {
204 this->show(); 204 this->show();
205} 205}
206 206
207void NotesControl::boxPressed(int mouse, QListBoxItem *, const QPoint&) { 207void NotesControl::boxPressed(int mouse, QListBoxItem *, const QPoint&) {
208 switch (mouse) { 208 switch (mouse) {
209 case 1:{ 209 case 1:{
210 } 210 }
211 break; 211 break;
212 case 2: 212 case 2:
213 menuTimer.start( 500, TRUE ); 213 menuTimer.start( 500, TRUE );
214 break; 214 break;
215 }; 215 };
216} 216}
217 217
218void NotesControl::slotBoxSelected(const QString &itemString) { 218void NotesControl::slotBoxSelected(const QString &itemString) {
219 if(edited) { 219 if(edited) {
220 save(); 220 save();
221 } 221 }
222 loaded=false; 222 loaded=false;
223 edited=false; 223 edited=false;
224 load(itemString); 224 load(itemString);
225} 225}
226 226
227 227
228void NotesControl::showMenu() { 228void NotesControl::showMenu() {
229 QPopupMenu *m = new QPopupMenu(0); 229 QPopupMenu *m = new QPopupMenu(0);
230 m->insertItem( tr( "Beam Out" ), this, SLOT( slotBeamButton() )); 230 m->insertItem( tr( "Beam Out" ), this, SLOT( slotBeamButton() ));
231 m->insertItem( tr( "Search For..." ), this, SLOT( slotSearch() )); 231 m->insertItem( tr( "Search For..." ), this, SLOT( slotSearch() ));
232 m->insertItem( tr( "Toggle Maximized" ), this, SLOT( slotShowMax() )); 232 m->insertItem( tr( "Toggle Maximized" ), this, SLOT( slotShowMax() ));
233 m->insertSeparator(); 233 m->insertSeparator();
234 m->insertItem( tr( "Delete" ), this, SLOT( slotDeleteButton() )); 234 m->insertItem( tr( "Delete" ), this, SLOT( slotDeleteButton() ));
235 m->setFocus(); 235 m->setFocus();
236 m->exec( QCursor::pos() ); 236 m->exec( QCursor::pos() );
237 237
238 if(m) delete m; 238 delete m;
239} 239}
240 240
241void NotesControl::focusOutEvent ( QFocusEvent * e) { 241void NotesControl::focusOutEvent ( QFocusEvent * e) {
242 if( e->reason() == QFocusEvent::Popup) 242 if( e->reason() == QFocusEvent::Popup)
243 save(); 243 save();
244 else { 244 else {
245 if(!loaded) { 245 if(!loaded) {
246 populateBox(); 246 populateBox();
247 load(); 247 load();
248 } 248 }
249 } 249 }
250 QWidget::focusOutEvent(e); 250 QWidget::focusOutEvent(e);
251} 251}
252 252
253void NotesControl::save() { 253void NotesControl::save() {
254 Config cfg("Notes"); 254 Config cfg("Notes");
255 cfg.setGroup("Docs"); 255 cfg.setGroup("Docs");
256 if( edited) { 256 if( edited) {
257// odebug << "is edited" << oendl; 257// odebug << "is edited" << oendl;
258 QString rt = view->text(); 258 QString rt = view->text();
259 if( rt.length()>1) { 259 if( rt.length()>1) {
260 QString pt = rt.simplifyWhiteSpace(); 260 QString pt = rt.simplifyWhiteSpace();
261 int i = pt.find( ' ', pt.find( ' ' )+2 ); 261 int i = pt.find( ' ', pt.find( ' ' )+2 );
262 QString docname = pt; 262 QString docname = pt;
263 if ( i > 0 ) 263 if ( i > 0 )
264 docname = pt.left(i); 264 docname = pt.left(i);
265 // remove "." at the beginning 265 // remove "." at the beginning
266 while( docname.startsWith( "." ) ) 266 while( docname.startsWith( "." ) )
267 docname = docname.mid( 1 ); 267 docname = docname.mid( 1 );
268 docname.replace( QRegExp("/"), "_" ); 268 docname.replace( QRegExp("/"), "_" );
269 // cut the length. filenames longer than that don't make sense 269 // cut the length. filenames longer than that don't make sense
270 // and something goes wrong when they get too long. 270 // and something goes wrong when they get too long.
271 if ( docname.length() > 40 ) 271 if ( docname.length() > 40 )
272 docname = docname.left(40); 272 docname = docname.left(40);
273 if ( docname.isEmpty() ) 273 if ( docname.isEmpty() )
274 docname = "Empty Text"; 274 docname = "Empty Text";
275// odebug << docname << oendl; 275// odebug << docname << oendl;
276 276
277 if( oldDocName != docname) { 277 if( oldDocName != docname) {
278 int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); 278 int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 );
279 QString entryName; 279 QString entryName;
280 entryName.sprintf( "File%i", noOfFiles + 1 ); 280 entryName.sprintf( "File%i", noOfFiles + 1 );
281 cfg.writeEntry( entryName,docname ); 281 cfg.writeEntry( entryName,docname );
282 cfg.writeEntry("NumberOfFiles", noOfFiles+1 ); 282 cfg.writeEntry("NumberOfFiles", noOfFiles+1 );
283 cfg.write(); 283 cfg.write();
284 } 284 }
285// else 285// else
286// odebug << "oldname equals docname" << oendl; 286// odebug << "oldname equals docname" << oendl;
287 287
288 doc = new DocLnk(docname); 288 doc = new DocLnk(docname);
289 if(QFile(doc->linkFile()).exists()) 289 if(QFile(doc->linkFile()).exists())
290 odebug << "puppie" << oendl; 290 odebug << "puppie" << oendl;
291 doc->setType("text/plain"); 291 doc->setType("text/plain");
292 doc->setName(docname); 292 doc->setName(docname);
293 QString temp = docname.replace( QRegExp(" "), "_" ); 293 QString temp = docname.replace( QRegExp(" "), "_" );
294 doc->setFile( QDir::homeDirPath()+"/notes/"+temp); 294 doc->setFile( QDir::homeDirPath()+"/notes/"+temp);
295 FileManager fm; 295 FileManager fm;
296 if ( !fm.saveFile( *doc, rt ) ) { 296 if ( !fm.saveFile( *doc, rt ) ) {
297 } 297 }
298 298
299 oldDocName=docname; 299 oldDocName=docname;
300 edited=false; 300 edited=false;
301// odebug << "save" << oendl; 301// odebug << "save" << oendl;
302 if (doPopulate) 302 if (doPopulate)
303 populateBox(); 303 populateBox();
304 } 304 }
305 cfg.writeEntry( "LastDoc",oldDocName ); 305 cfg.writeEntry( "LastDoc",oldDocName );
306 cfg.write(); 306 cfg.write();
307 307
308 } 308 }
309} 309}
310 310
311void NotesControl::populateBox() { 311void NotesControl::populateBox() {
312 box->clear(); 312 box->clear();
313// odebug << "populate" << oendl; 313// odebug << "populate" << oendl;
314 Config cfg("Notes"); 314 Config cfg("Notes");
315 cfg.setGroup("Docs"); 315 cfg.setGroup("Docs");
316 int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 ); 316 int noOfFiles = cfg.readNumEntry("NumberOfFiles", 0 );
317 QStringList list; 317 QStringList list;
318 QString entryName; 318 QString entryName;
319 for ( int i = 0; i < noOfFiles; i++ ) { 319 for ( int i = 0; i < noOfFiles; i++ ) {
320 entryName.sprintf( "File%i", i + 1 ); 320 entryName.sprintf( "File%i", i + 1 );
321 list.append(cfg.readEntry( entryName )); 321 list.append(cfg.readEntry( entryName ));
322 } 322 }
323 list.sort(); 323 list.sort();
324 box->insertStringList(list,-1); 324 box->insertStringList(list,-1);
325 doPopulate=false; 325 doPopulate=false;
326 update(); 326 update();
327} 327}
328 328
329void NotesControl::load() { 329void NotesControl::load() {
330 330
331 if(!loaded) { 331 if(!loaded) {
332 Config cfg("Notes"); 332 Config cfg("Notes");
333 cfg.setGroup("Docs"); 333 cfg.setGroup("Docs");
334 QString lastDoc=cfg.readEntry( "LastDoc","notes"); 334 QString lastDoc=cfg.readEntry( "LastDoc","notes");
diff --git a/noncore/apps/advancedfm/advancedfm.cpp b/noncore/apps/advancedfm/advancedfm.cpp
index 828f5a1..cf19ba8 100644
--- a/noncore/apps/advancedfm/advancedfm.cpp
+++ b/noncore/apps/advancedfm/advancedfm.cpp
@@ -403,193 +403,193 @@ QString AdvancedFm::getFileSystemType(const QString &currentText) {
403 parsetab("/etc/mtab"); //why did TT forget filesystem type? 403 parsetab("/etc/mtab"); //why did TT forget filesystem type?
404 QString current = currentText;//.right( currentText.length()-1); 404 QString current = currentText;//.right( currentText.length()-1);
405 QString baseFs; 405 QString baseFs;
406 for ( QStringList::Iterator it = fileSystemTypeList.begin(); it != fileSystemTypeList.end(); ++it ) { 406 for ( QStringList::Iterator it = fileSystemTypeList.begin(); it != fileSystemTypeList.end(); ++it ) {
407 QString temp = (*it); 407 QString temp = (*it);
408 QString path = temp.left(temp.find("::",0,TRUE) ); 408 QString path = temp.left(temp.find("::",0,TRUE) );
409 path = path.right( path.length()-1); 409 path = path.right( path.length()-1);
410 if(path.isEmpty()) baseFs = temp.right( temp.length() - temp.find("::",0,TRUE) - 2); 410 if(path.isEmpty()) baseFs = temp.right( temp.length() - temp.find("::",0,TRUE) - 2);
411 if( current.find( path,0,TRUE) != -1 && !path.isEmpty()) { 411 if( current.find( path,0,TRUE) != -1 && !path.isEmpty()) {
412 return temp.right( temp.length() - temp.find("::",0,TRUE) - 2); 412 return temp.right( temp.length() - temp.find("::",0,TRUE) - 2);
413 } 413 }
414 } 414 }
415 return baseFs; 415 return baseFs;
416} 416}
417 417
418QString AdvancedFm::getDiskSpace( const QString &path) { 418QString AdvancedFm::getDiskSpace( const QString &path) {
419 struct statfs fss; 419 struct statfs fss;
420 if ( !statfs( path.latin1(), &fss ) ) { 420 if ( !statfs( path.latin1(), &fss ) ) {
421 int blkSize = fss.f_bsize; 421 int blkSize = fss.f_bsize;
422 // int totalBlks = fs.f_blocks; 422 // int totalBlks = fs.f_blocks;
423 int availBlks = fss.f_bavail; 423 int availBlks = fss.f_bavail;
424 424
425 long mult = blkSize / 1024; 425 long mult = blkSize / 1024;
426 long div = 1024 / blkSize; 426 long div = 1024 / blkSize;
427 if ( !mult ) mult = 1; 427 if ( !mult ) mult = 1;
428 if ( !div ) div = 1; 428 if ( !div ) div = 1;
429 429
430 return QString::number(availBlks * mult / div); 430 return QString::number(availBlks * mult / div);
431 } 431 }
432 return ""; 432 return "";
433} 433}
434 434
435 435
436void AdvancedFm::showFileMenu() { 436void AdvancedFm::showFileMenu() {
437 QString curApp; 437 QString curApp;
438 curApp = CurrentView()->currentItem()->text(0); 438 curApp = CurrentView()->currentItem()->text(0);
439 439
440 MimeType mt(curApp); 440 MimeType mt(curApp);
441 const AppLnk* app = mt.application(); 441 const AppLnk* app = mt.application();
442 QFile fi(curApp); 442 QFile fi(curApp);
443 QPopupMenu *m = new QPopupMenu(0); 443 QPopupMenu *m = new QPopupMenu(0);
444 QPopupMenu *n = new QPopupMenu(0); 444 QPopupMenu *n = new QPopupMenu(0);
445 // QPopupMenu *o = new QPopupMenu(0); 445 // QPopupMenu *o = new QPopupMenu(0);
446 m->insertItem(tr("Show Hidden Files"),this,SLOT(showHidden())); 446 m->insertItem(tr("Show Hidden Files"),this,SLOT(showHidden()));
447 447
448 if ( QFileInfo(fi).isDir()) { 448 if ( QFileInfo(fi).isDir()) {
449 m->insertSeparator(); 449 m->insertSeparator();
450 m->insertItem(tr("Change Directory"),this,SLOT(doDirChange())); 450 m->insertItem(tr("Change Directory"),this,SLOT(doDirChange()));
451 } else { 451 } else {
452 452
453 if (app) 453 if (app)
454 m->insertItem(app->pixmap(),tr("Open in " + app->name()),this,SLOT(runThis())); 454 m->insertItem(app->pixmap(),tr("Open in " + app->name()),this,SLOT(runThis()));
455 else if(QFileInfo(fi).isExecutable() ) //damn opie doesnt like this 455 else if(QFileInfo(fi).isExecutable() ) //damn opie doesnt like this
456 m->insertItem(tr("Execute"),this,SLOT(runThis())); 456 m->insertItem(tr("Execute"),this,SLOT(runThis()));
457 m->insertItem( Opie::Core::OResource::loadPixmap( "txt", Opie::Core::OResource::SmallIcon ), 457 m->insertItem( Opie::Core::OResource::loadPixmap( "txt", Opie::Core::OResource::SmallIcon ),
458 tr("Open as text"),this,SLOT(runText())); 458 tr("Open as text"),this,SLOT(runText()));
459 } 459 }
460 460
461 m->insertItem(tr("Actions"),n); 461 m->insertItem(tr("Actions"),n);
462 n->insertItem(tr("Make Directory"),this,SLOT(makeDir())); 462 n->insertItem(tr("Make Directory"),this,SLOT(makeDir()));
463 463
464 n->insertItem(tr("Make Symlink"),this,SLOT(mkSym())); 464 n->insertItem(tr("Make Symlink"),this,SLOT(mkSym()));
465 465
466 n->insertSeparator(); 466 n->insertSeparator();
467 n->insertItem(tr("Rename"),this,SLOT(renameIt())); 467 n->insertItem(tr("Rename"),this,SLOT(renameIt()));
468 468
469 n->insertItem(tr("Copy"),this,SLOT(copyTimer())); 469 n->insertItem(tr("Copy"),this,SLOT(copyTimer()));
470 n->insertItem(tr("Copy As"),this,SLOT(copyAsTimer())); 470 n->insertItem(tr("Copy As"),this,SLOT(copyAsTimer()));
471 n->insertItem(tr("Copy Same Dir"),this,SLOT(copySameDirTimer())); 471 n->insertItem(tr("Copy Same Dir"),this,SLOT(copySameDirTimer()));
472 n->insertItem(tr("Move"),this,SLOT(moveTimer())); 472 n->insertItem(tr("Move"),this,SLOT(moveTimer()));
473 473
474 n->insertSeparator(); 474 n->insertSeparator();
475 n->insertItem(tr("Delete"),this,SLOT(doDelete())); 475 n->insertItem(tr("Delete"),this,SLOT(doDelete()));
476 m->insertItem(tr("Add To Documents"),this,SLOT(addToDocs())); 476 m->insertItem(tr("Add To Documents"),this,SLOT(addToDocs()));
477 477
478 m->insertItem(tr("Run Command"),this,SLOT(runCommand())); 478 m->insertItem(tr("Run Command"),this,SLOT(runCommand()));
479 m->insertItem(tr("File Info"),this,SLOT(fileStatus())); 479 m->insertItem(tr("File Info"),this,SLOT(fileStatus()));
480 480
481 m->insertSeparator(); 481 m->insertSeparator();
482 m->insertItem(tr("Set Permissions"),this,SLOT(filePerms())); 482 m->insertItem(tr("Set Permissions"),this,SLOT(filePerms()));
483 483
484#if defined(QT_QWS_OPIE) 484#if defined(QT_QWS_OPIE)
485 m->insertItem(tr("Properties"),this,SLOT(doProperties())); 485 m->insertItem(tr("Properties"),this,SLOT(doProperties()));
486#endif 486#endif
487 m->setCheckable(TRUE); 487 m->setCheckable(TRUE);
488 if (!b) 488 if (!b)
489 m->setItemChecked(m->idAt(0),TRUE); 489 m->setItemChecked(m->idAt(0),TRUE);
490 else 490 else
491 m->setItemChecked(m->idAt(0),FALSE); 491 m->setItemChecked(m->idAt(0),FALSE);
492 492
493 if(Ir::supported()) 493 if(Ir::supported())
494 m->insertItem(tr("Beam File"),this,SLOT(doBeam())); 494 m->insertItem(tr("Beam File"),this,SLOT(doBeam()));
495 m->setFocus(); 495 m->setFocus();
496 496
497 m->exec(QPoint(QCursor::pos().x(),QCursor::pos().y())); 497 m->exec(QPoint(QCursor::pos().x(),QCursor::pos().y()));
498 498
499 if(m) delete m; 499 delete m;
500} 500}
501 501
502 502
503QString AdvancedFm::checkDiskSpace(const QString &path) { 503QString AdvancedFm::checkDiskSpace(const QString &path) {
504 struct statfs fss; 504 struct statfs fss;
505 if ( !statfs( path.latin1(), &fss ) ) { 505 if ( !statfs( path.latin1(), &fss ) ) {
506 int blkSize = fss.f_bsize; 506 int blkSize = fss.f_bsize;
507// int totalBlks = fs.f_blocks; 507// int totalBlks = fs.f_blocks;
508 int availBlks = fss.f_bavail; 508 int availBlks = fss.f_bavail;
509 509
510 long mult = blkSize / 1024; 510 long mult = blkSize / 1024;
511 long div = 1024 / blkSize; 511 long div = 1024 / blkSize;
512 if ( !mult ) mult = 1; 512 if ( !mult ) mult = 1;
513 if ( !div ) div = 1; 513 if ( !div ) div = 1;
514 514
515 515
516 return QString::number(availBlks * mult / div); 516 return QString::number(availBlks * mult / div);
517 } 517 }
518 return ""; 518 return "";
519} 519}
520 520
521void AdvancedFm::addToDocs() { 521void AdvancedFm::addToDocs() {
522 QStringList strListPaths = getPath(); 522 QStringList strListPaths = getPath();
523 QDir *thisDir = CurrentDir(); 523 QDir *thisDir = CurrentDir();
524 524
525 if( strListPaths.count() > 0) { 525 if( strListPaths.count() > 0) {
526 QString curFile; 526 QString curFile;
527 for ( QStringList::Iterator it = strListPaths.begin(); it != strListPaths.end(); ++it ) { 527 for ( QStringList::Iterator it = strListPaths.begin(); it != strListPaths.end(); ++it ) {
528 curFile = thisDir->canonicalPath()+"/"+(*it); 528 curFile = thisDir->canonicalPath()+"/"+(*it);
529// odebug << curFile << oendl; 529// odebug << curFile << oendl;
530 QFileInfo fi(curFile); 530 QFileInfo fi(curFile);
531 DocLnk f; 531 DocLnk f;
532// curFile.replace(QRegExp("\\..*"),""); 532// curFile.replace(QRegExp("\\..*"),"");
533 f.setName(fi.baseName() ); 533 f.setName(fi.baseName() );
534 f.setFile( curFile); 534 f.setFile( curFile);
535 f.writeLink(); 535 f.writeLink();
536 } 536 }
537 } 537 }
538} 538}
539 539
540 540
541void AdvancedFm::customDirsToMenu() { 541void AdvancedFm::customDirsToMenu() {
542 542
543 Config cfg("AdvancedFm"); 543 Config cfg("AdvancedFm");
544 cfg.setGroup("Menu"); 544 cfg.setGroup("Menu");
545 545
546 QStringList list = cfg.readListEntry( "CustomDir", ','); 546 QStringList list = cfg.readListEntry( "CustomDir", ',');
547 menuButton->insertItems(list ); 547 menuButton->insertItems(list );
548 548
549// for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) 549// for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it )
550// { 550// {
551// customDirMenu->insertItem(*it ); 551// customDirMenu->insertItem(*it );
552// } 552// }
553} 553}
554 554
555void AdvancedFm::dirMenuSelected(int item) { 555void AdvancedFm::dirMenuSelected(int item) {
556 switch(item) 556 switch(item)
557 { 557 {
558 558
559 case -21: 559 case -21:
560 case 0: 560 case 0:
561 addCustomDir(); 561 addCustomDir();
562 break; 562 break;
563 case -22: 563 case -22:
564 case 1: 564 case 1:
565 removeCustomDir(); 565 removeCustomDir();
566 break; 566 break;
567 default: 567 default:
568 { 568 {
569// gotoCustomDir( menuButton->text(item)); 569// gotoCustomDir( menuButton->text(item));
570// gotoCustomDir( customDirMenu->text(item)); 570// gotoCustomDir( customDirMenu->text(item));
571 } 571 }
572 break; 572 break;
573 573
574 }; 574 };
575} 575}
576 576
577void AdvancedFm::addCustomDir() { 577void AdvancedFm::addCustomDir() {
578 Config cfg("AdvancedFm"); 578 Config cfg("AdvancedFm");
579 cfg.setGroup("Menu"); 579 cfg.setGroup("Menu");
580 QString dir; 580 QString dir;
581 QStringList list = cfg.readListEntry( (const QString &)"CustomDir", (const QChar)','); 581 QStringList list = cfg.readListEntry( (const QString &)"CustomDir", (const QChar)',');
582 582
583 dir = CurrentDir()->canonicalPath(); 583 dir = CurrentDir()->canonicalPath();
584 584
585 bool addIt=true; 585 bool addIt=true;
586 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { 586 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) {
587 if( dir == (*it)) { 587 if( dir == (*it)) {
588 addIt=false; 588 addIt=false;
589 } 589 }
590 } 590 }
591 if(addIt) { 591 if(addIt) {
592 menuButton->insertItem(dir); 592 menuButton->insertItem(dir);
593// customDirMenu->insertItem(dir); 593// customDirMenu->insertItem(dir);
594 list << dir; 594 list << dir;
595 } 595 }