void aq_main(int argc, char **argv) { QPalette p(QColor(229, 229, 229), QColor(229, 229, 229)); p.setColor(QPalette::Active, QColorGroup::Dark, QColor(246, 242, 246)); p.setColor(QPalette::Inactive, QColorGroup::Dark, QColor(246, 242, 246)); p.setColor(QPalette::Disabled, QColorGroup::Dark, QColor(246, 242, 246)); p.setColor(QPalette::Active, QColorGroup::Base, QColor(255, 255, 248)); p.setColor(QPalette::Inactive, QColorGroup::Base, QColor(255, 255, 248)); p.setColor(QPalette::Disabled, QColorGroup::Base, QColor(255, 255, 248)); p.setColor(QPalette::Active, QColorGroup::Highlight, QColor(95, 150, 205)); p.setColor(QPalette::Active, QColorGroup::HighlightedText, Qt::white); p.setColor(QPalette::Active, QColorGroup::Highlight, QColor(95, 150, 205)); p.setColor(QPalette::Inactive, QColorGroup::HighlightedText, Qt::white); p.setColor(QPalette::Active, QColorGroup::Highlight, QColor(95, 150, 205)); p.setColor(QPalette::Disabled, QColorGroup::HighlightedText, Qt::white); p.setColor(QPalette::Inactive, QColorGroup::Text, Qt::black); p.setColor(QPalette::Disabled, QColorGroup::Text, QColor(100, 100, 100)); p.setColor(QPalette::Active, QColorGroup::Foreground, QColor(30, 30, 30)); p.setColor(QPalette::Inactive, QColorGroup::Foreground, QColor(30, 30, 30)); p.setColor(QPalette::Disabled, QColorGroup::Foreground, QColor(100, 100, 100)); p.setColor(QPalette::Active, QColorGroup::ButtonText, QColor(30, 30, 30)); p.setColor(QPalette::Inactive, QColorGroup::ButtonText, QColor(30, 30, 30)); p.setColor(QPalette::Disabled, QColorGroup::ButtonText, QColor(100, 100, 100)); QString formAlone, callFunction, arguments, strConn, silentConn; bool quitAfterCall = false, autoLogin_ = false, noMax = false; for (int i = 1; i < argc; i++) { if (qstrcmp(argv[i], "-f") == 0) { if (i != argc - 1) { i++; formAlone = QString::fromLatin1(argv[i]); } } else if (qstrcmp(argv[i], "-c") == 0) { if (i != argc - 1) { i++; callFunction = QString::fromLatin1(argv[i]); } } else if (qstrcmp(argv[i], "-a") == 0) { if (i != argc - 1) { i++; arguments = QString::fromLatin1(argv[i]); } } else if (qstrcmp(argv[i], "-sc") == 0) { if (i != argc - 1) { i++; strConn = QString::fromLatin1(argv[i]); } } else if (qstrcmp(argv[i], "-silentconn") == 0) { if (i != argc - 1) { i++; silentConn = QString::fromLatin1(argv[i]); } } else if (qstrcmp(argv[i], "-q") == 0) { quitAfterCall = true; } else if (qstrcmp(argv[i], "-auto") == 0) { autoLogin_ = true; } else if (qstrcmp(argv[i], "-nomax") == 0) { noMax = true; } } FLApplication *AbanQ = aqApp; QFont appFont; QStringList paths(AbanQ->libraryPaths()); QString pathApp(AQ_PREFIX + "/plugins"); if (!paths.contains(pathApp)) paths << pathApp; if (!paths.contains(AQ_LIB)) paths << AQ_LIB; AbanQ->setLibraryPaths(paths); int pointSize = 8; #if defined (Q_OS_LINUX) appFont.setFamily(FLSettings::readEntry("font/family", "Verdana")); #endif #if defined(Q_OS_WIN32) appFont.setFamily(FLSettings::readEntry("font/family", "Tahoma")); #endif #if defined(Q_OS_MACX) appFont.setFamily(FLSettings::readEntry("font/family", "Lucida Grande")); pointSize = 12; QString envPath(getenv("PATH")); envPath = "/sw/sbin:/sw/bin:" + envPath + ":/usr/X11R6/bin"; setenv("PATH", envPath.local8Bit(), 1); #endif appFont.setPointSize(FLSettings::readNumEntry("font/pointSize", pointSize)); appFont.setBold(FLSettings::readBoolEntry("font/bold", false)); appFont.setItalic(FLSettings::readBoolEntry("font/italic", false)); appFont.setUnderline(FLSettings::readBoolEntry("font/underline", false)); appFont.setStrikeOut(FLSettings::readBoolEntry("font/strikeOut", false)); AbanQ->setFont(appFont); AbanQ->setStyle(FLSettings::readEntry("style", "QtCurve")); AbanQ->installTranslator(AbanQ->createSysTranslator(QString(QTextCodec::locale()).left(2), true)); AbanQ->installTranslator(AbanQ->createSysTranslator("multilang")); AbanQ->setPalette(p, true); FLConnectDBDialog *s = 0; QSplashScreen *splash = 0; if (silentConn.isEmpty()) { bool autoLogin = FLSettings::readBoolEntry("application/autoLogin", autoLogin_); s = new FLConnectDBDialog(autoLogin, 0, "FLConnectDBDialog", 0, strConn); static_cast<QWidget *>(s->child("frMore"))->hide(); s->adjustSize(); s->setPalette(p); int ret = -1; bool connectAttempts = 0; do { if (!s->isShown()) { s->show(); s->raise(); } if (autoLogin && !connectAttempts) { QTimer::singleShot(1000, s, SLOT(tryConnect())); connectAttempts++; } else s->exec(); } while (s->error()); ret = s->result(); QTimer::singleShot(0, s, SLOT(deleteLater())); if (ret != QDialog::Accepted) { QTimer::singleShot(0, AbanQ, SLOT(quit())); return; } splash = new QSplashScreen(QPixmap::fromMimeSource("splashabanq.png")); splash->show(); splash->message(QT_TR_NOOP("Inicializando..."), Qt::AlignRight, QColor(0, 0, 0)); } else if (!silentConnect(silentConn)) { QTimer::singleShot(0, AbanQ, SLOT(quit())); return; } AbanQ->setNotExit(FLSettings::readBoolEntry("application/notExit", false)); AbanQ->setPrintProgram(FLSettings::readEntry("printing/printProgram", QString::null)); AbanQ->flushX(); AbanQ->syncX(); AbanQ->processEvents(); AbanQ->init( FLSettings::readEntry("application/formAlone", formAlone), FLSettings::readEntry("application/callFunction", callFunction), FLSettings::readEntry("application/arguments", arguments), FLSettings::readBoolEntry("application/quitAfterCall", quitAfterCall), FLSettings::readBoolEntry("application/noMax", noMax) ); if (AbanQ->mainWidget()) { AbanQ->mainWidget()->show(); AbanQ->mainWidget()->raise(); if (splash) { splash->finish(AbanQ->mainWidget()); delete splash; } } else { if (splash) { QTimer::singleShot(0, splash, SLOT(deleteLater())); } } }
//----------------------------------------------------------------------------- //Function Name : void* __dlopen_r(const char* filename, int flag) //Description : To open the given dll filename. //Return Value : Valid handle value if no error, Null if dll couldn't be loaded //----------------------------------------------------------------------------- void* __dlopen_r(const char* filename,const int flag) { //convert filename to TFileName TPtrC8 ptr8( (unsigned char*)filename); TFileName fileNameBuf; CnvUtfConverter::ConvertToUnicodeFromUtf8(fileNameBuf, ptr8); TParsePtr filePathName(fileNameBuf); //if file name contains wild character if ( filePathName.IsWild() ) { SetError(KDlOpenErrNoSupport); return NULL; } //to load dll RLibrary library; TInt err; TBool isLibraryLoaded = EFalse; RFs fs; err = fs.Connect(); if ( KErrNone == err ) { TUint tempAtt; //if path is there load from this path if ( filePathName.PathPresent() ) { err = fs.Att(filePathName.FullName(), tempAtt); fs.Close(); if ( KErrNotFound != err && KErrPathNotFound != err) { err = library.Load(filePathName.FullName()); if ( KErrNone != err ) { SetError(KDlOpenErrLoading); return NULL; } isLibraryLoaded = ETrue; } } else//if there is no path its only file name { TPtrC fileName(filePathName.NameAndExt()); char* envPathName = getenv("LD_LIBRARY_PATH"); if ( envPathName ) { TPtrC8 tempPtr8((unsigned char*)envPathName); TFileName envPathBuf; CnvUtfConverter::ConvertToUnicodeFromUtf8(envPathBuf, tempPtr8); TPtrC envPath(envPathBuf); TChar delim(';'); TFileName fileToLoad; TInt pos = envPath.Locate(delim); //if delim does not found and still envPath contains value //i.e. this one is last path without delim(';') so take //this also, for this length is checked while ( KErrNotFound != pos || envPath.Length()) { //if there is no delim if (KErrNotFound == pos ) {// so last path without delim pos = envPath.Length(); } TPtrC thisPath(envPath.Left(pos)); fileToLoad = thisPath; fileToLoad.Trim(); //to check ";;" and "; ;" if (fileToLoad.Length()) { //if path does not conatin trailing \ add one if ( L'\\' != fileToLoad[fileToLoad.Length()-1] ) { fileToLoad.Append(TChar(L'\\')); } fileToLoad.Append(fileName); err = fs.Att(fileToLoad, tempAtt); if ( KErrNotFound != err && KErrPathNotFound != err) { //load file from this path err = library.Load(fileToLoad); if ( KErrNone == err ) { // dll loaded successfully from thispath isLibraryLoaded = ETrue; break; } } } if ( pos == envPath.Length()) { break; } else { envPath.Set(envPath.Mid(pos + 1)); } pos = envPath.Locate(delim); } fs.Close(); } else//load dll if only name is there and LD_LIBRARY_PATH path not set { fs.Close(); TInt err = library.Load(filePathName.NameAndExt()); if ( KErrNone != err ) { SetError(KDlOpenErrLoading); return NULL; } isLibraryLoaded = ETrue; } } //if library is loaded if ( isLibraryLoaded ) { //handle value to return void* handle = NULL; //lock list before any operation LoadedDlls()->Lock(); //is this dll already there TInt listIdx = LoadedDlls()->Find(library); //if not already open if ( KErrNotFound == listIdx ) { TDllEntry dllEntry(library, flag); dllEntry.iSymbolHeader = (TE32ExpSymInfoHdr*)library.Lookup(0); err = dllEntry.iLibrary.Duplicate(RThread()); //Close the library irrespective of the result of duplicate library.Close(); if ( KErrNone != err ) { SetError(KDlOpenErrLoading); LoadedDlls()->UnLock(); return NULL; } //add to list err = LoadedDlls()->Add(dllEntry); handle = (void*) dllEntry.iLibrary.Handle(); LoadedDlls()->UnLock(); if ( KErrNone != err ) { SetError(KDlOpenErrNoMemory); dllEntry.iLibrary.Close(); return NULL; } } else//if this dll is already in list. { //close library we already have loaded library.Close(); TDllEntry& dllEntry = LoadedDlls()->At(listIdx); //if flag is RTLD_GLOBAL store it otherwise ignore //as RTLD_LAZY and RTLD_NOW both means RTLD_NOW //so can be ignored. RTLD_LOCAL does not change previous flag if ( flag & RTLD_GLOBAL ) { dllEntry.iFlags |= RTLD_GLOBAL; } dllEntry.iRefCount++; handle = (void*) dllEntry.iLibrary.Handle(); LoadedDlls()->UnLock(); } return handle; } } SetError(KDlOpenErrLoading); return NULL; }