int main( int argc, char *argv[] ) { int ret = 0; MainWindow *mw; QDir d; #if defined(Q_OS_WIN32) SetUnhandledExceptionFilter(w32_segfault); #else signal(SIGSEGV, segv_handler_gui); #endif d.mkpath(getUserSettingsDir()); XCA_application a(argc, argv); mw = new MainWindow(NULL); try { a.setMainwin(mw); OpenDb::checkSqLite(); mw->read_cmdline(argc, argv); if (mw->exitApp == 0) { mw->load_history(); if (mw->open_default_db() != 2) { mw->show(); ret = a.exec(); } } } catch (errorEx &ex) { mw->Error(ex); } delete mw; return ret; }
void MainWindow::update_history(QString fname) { QFile file; int pos; QString name, dir = getUserSettingsDir(); QDir d; pos = history.indexOf(fname); if (pos == 0) return; /* no changes */ d.mkpath(dir); if (pos > 0) history.removeAt(pos); history.prepend(fname); while (history.size() > 10) history.removeLast(); name = dir + QDir::separator() + "dbhistory"; file.setFileName(name); if (!file.open(QIODevice::ReadWrite)) return; for (pos = 0; pos < history.size(); pos++) { QByteArray ba = filename2bytearray(history[pos]); ba.append('\n'); if (file.write(ba) <= 0) break; } file.close(); update_history_menu(); }
void MainWindow::load_history() { QFile file; QString name = getUserSettingsDir() + QDir::separator() + "dbhistory"; file.setFileName(name); if (!file.open(QIODevice::ReadOnly)) return; history.clear(); while (!file.atEnd()) { QString name; char buf[1024]; ssize_t size = file.readLine(buf, sizeof buf); if (size <= 0) break; name = filename2QString(buf); name = name.trimmed(); if (name.size() == 0) continue; if (history.indexOf(name) == -1) history << name; } file.close(); update_history_menu(); }
void MainWindow::default_database() { QFileInfo fi(dbfile); QString dir = getUserSettingsDir(); FILE *fp; QDir d; d.mkpath(dir); fp = fopen(QString2filename(dir +QDir::separator() +"defaultdb"), "w"); if (fp) { QByteArray ba; ba = filename2bytearray(fi.canonicalFilePath() + "\n"); fwrite(ba.constData(), ba.size(), 1, fp); fclose(fp); } }
int MainWindow::open_default_db() { if (!dbfile.isEmpty()) return 0; FILE *fp = fopen(QString2filename(getUserSettingsDir() + QDir::separator() + "defaultdb"), "r"); if (!fp) return 0; char buff[256]; size_t len = fread(buff, 1, 255, fp); fclose(fp); buff[len] = 0; dbfile = filename2QString(buff).trimmed(); if (QFile::exists(dbfile)) return init_database(); return 0; }
void XCA_application::switchLanguage(QAction* a) { QLocale lang = a->data().toLocale(); setupLanguage(lang); QString dir = getUserSettingsDir(); QFile file(dir +QDir::separator() +"defaultlang"); if (lang == QLocale::system()) { file.remove(); return; } QDir d; d.mkpath(dir); if (file.open(QIODevice::WriteOnly)) { file.write(lang.name().toUtf8()); } }
XCA_application::XCA_application(int &argc, char *argv[]) :QApplication(argc, argv) { qtTr = NULL; xcaTr = NULL; mainw = NULL; QFile file(getUserSettingsDir() + QDir::separator() + "defaultlang"); if (file.open(QIODevice::ReadOnly)) { lang = QLocale(QString(file.read(128))); } langAvail << QLocale::system(); langAvail << QString("en"); QDirIterator qmIt(getPrefix(), QStringList() << "*.qm", QDir::Files); while (qmIt.hasNext()) { XcaTranslator t; qmIt.next(); QString language = qmIt.fileInfo().baseName().mid(4, -1); if (t.load(language, "xca", getPrefix())) langAvail << QLocale(language); } setupLanguage(lang); #ifdef Q_OS_MAC QStringList libp = libraryPaths(); libp.prepend(applicationDirPath() + "/../Plugins"); setLibraryPaths(libp); #endif tableFont = QFont("Courier", QApplication::font().pointSize() #if defined (Q_OS_WIN32) +1 #else +2 #endif ); installEventFilter(this); }
void MainWindow::default_database() { QFileInfo fi(dbfile); QString dir = getUserSettingsDir(); QString file = dir +QDir::separator() +"defaultdb"; FILE *fp; QDir d; if (dbfile.isEmpty()) { QFile::remove(file); return; } d.mkpath(dir); fp = fopen_write(file); if (fp) { QByteArray ba; ba = filename2bytearray(fi.canonicalFilePath() + "\n"); fwrite(ba.constData(), ba.size(), 1, fp); fclose(fp); } }
static QString defaultlang() { return getUserSettingsDir() + QDir::separator() + "defaultlang"; }