# HG changeset patch # User Dan Podwall # Date 1240862855 18000 # Node ID c028612cc5554fa995871fcb56b042ff0717fe2b # Parent c937102a551076fa2d6d689ae977fd03b7f82f7d# Parent 4629a6a90ed53ce7948e74d31e71f2157a071c75 merge from RCL_2_0 to MCL diff -r c937102a5510 -r c028612cc555 .branch.txt --- a/.branch.txt Sat Apr 25 12:54:10 2009 -0500 +++ b/.branch.txt Mon Apr 27 15:07:35 2009 -0500 @@ -1,2 +1,2 @@ -default +default diff -r c937102a5510 -r c028612cc555 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/BuildArgumentsInfo.java diff -r c937102a5510 -r c028612cc555 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/EpocEngineHelper.java --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/EpocEngineHelper.java Sat Apr 25 12:54:10 2009 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/EpocEngineHelper.java Mon Apr 27 15:07:35 2009 -0500 @@ -171,7 +171,97 @@ for (IPath testPath : testFiles){ testExtensionPaths.add(testPath); } + } + + /** + * Return list of all named project extensions referenced by the given + * bld.inf full path. This function differentiates between PRJ_EXTENSIONS and PRJ_TESTEXTENSIONS + * @param bldInfFilePath - The IPath to the bld.inf file that is to be preprocessed. + * @param buildConfigs - List of build configuration to parse for. + * @param normalExtensions - The list of named PRJ_EXTENSIONS for the bld.inf + * @param testExtensions - The list of named PRJ_TESTEXTENSIONS for the bld.inf + * @param monitor + */ + public static void getNamedExtensions(final IPath bldInfFilePath, List buildConfigs, + List normalExtensions, List testExtensions, IProgressMonitor monitor) { + // get a bld.inf view for each build target. take the union of all extensions for each view + // of the bld.inf file. + final Set normalFiles = new LinkedHashSet(); + final Set testFiles = new LinkedHashSet(); + + monitor.beginTask("Scanning bld.inf project extensions", buildConfigs.size()); + + for (final ISymbianBuildContext context : buildConfigs) { + EpocEnginePlugin.runWithBldInfData(bldInfFilePath, + new DefaultViewConfiguration(context, bldInfFilePath, new AcceptedNodesViewFilter()), + new BldInfDataRunnableAdapter() { + public Object run(IBldInfData data) { + for (IExtension extension : data.getExtensions()) { + if (extension.getName() != null) { + normalFiles.add(extension); + } + } + for (IExtension extension : data.getTestExtensions()) { + if (extension.getName() != null) { + testFiles.add(extension); + } + } + return null; + } + }); + + monitor.worked(1); + } + + monitor.done(); + + for (IExtension normal : normalFiles){ + normalExtensions.add(normal); + } + for (IExtension test : testFiles){ + testExtensions.add(test); + } + } + + /** + * Determines if the given bld.inf file contains any unnamed project extensions + * @param bldInfFilePath - The IPath to the bld.inf file that is to be preprocessed. + * @param buildConfigs - List of build configuration to parse for. + * @param monitor + * @return + */ + public static boolean hasUnnamedExtensions(final IPath bldInfFilePath, List buildConfigs, IProgressMonitor monitor) { + + final Set extensions = new LinkedHashSet(); + + monitor.beginTask("Scanning bld.inf project extensions", buildConfigs.size()); + + for (final ISymbianBuildContext context : buildConfigs) { + EpocEnginePlugin.runWithBldInfData(bldInfFilePath, + new DefaultViewConfiguration(context, bldInfFilePath, new AcceptedNodesViewFilter()), + new BldInfDataRunnableAdapter() { + public Object run(IBldInfData data) { + for (IExtension extension : data.getExtensions()) { + if (extension.getName() == null) { + extensions.add(extension); + } + } + for (IExtension extension : data.getTestExtensions()) { + if (extension.getName() == null) { + extensions.add(extension); + } + } + return null; + } + }); + + monitor.worked(1); + } + + monitor.done(); + + return extensions.size() > 0; } /** diff -r c937102a5510 -r c028612cc555 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/builder/CarbideCPPBuilder.java --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/builder/CarbideCPPBuilder.java Sat Apr 25 12:54:10 2009 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/builder/CarbideCPPBuilder.java Mon Apr 27 15:07:35 2009 -0500 @@ -66,6 +66,7 @@ import com.nokia.carbide.cpp.epoc.engine.EpocEnginePlugin; import com.nokia.carbide.cpp.epoc.engine.MMPDataRunnableAdapter; import com.nokia.carbide.cpp.epoc.engine.PKGViewRunnableAdapter; +import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension; import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPLanguage; import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPStatement; import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPData; @@ -695,8 +696,23 @@ // get the list of mmp/make files for this build configuration EpocEngineHelper.getMakMakeFiles(cpi.getAbsoluteBldInfPath(), buildConfigList, normalMakMakePaths, testMakMakePaths, new NullProgressMonitor()); - - // if we're not supposed to build test components then clear the list + + if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(cpi.getProject())) { + // add any named extensions + List normalNamedExtensionsList = new ArrayList(); + List testNamedExtensionsList = new ArrayList(); + EpocEngineHelper.getNamedExtensions(cpi.getAbsoluteBldInfPath(), buildConfigList, + normalNamedExtensionsList, testNamedExtensionsList, new NullProgressMonitor()); + + for (IExtension extension : normalNamedExtensionsList) { + normalMakMakePaths.add(new Path(extension.getName())); + } + for (IExtension extension : testNamedExtensionsList) { + testMakMakePaths.add(new Path(extension.getName())); + } + } + + // if we're not supposed to build test components then clear the list if (cpi.isBuildingFromInf() && !cpi.isBuildingTestComps()) { testMakMakePaths.clear(); } @@ -722,16 +738,13 @@ } } - if (buildingSubset) { - List normalExtensionPaths = new ArrayList(); - List testExtensionPaths = new ArrayList(); - EpocEngineHelper.getExtensions(cpi.getAbsoluteBldInfPath(), buildConfigList, normalExtensionPaths, testExtensionPaths, new NullProgressMonitor()); - - if (normalExtensionPaths.size() > 0 || testExtensionPaths.size() > 0) { - String warningText = "WARNING: PRJ_EXTENSIONS and PRJ_TESTEXTENSIONS will be excluded because you've selected a subset of the bld.inf."; - launcher.writeToConsole(warningText + "\n"); - CarbideBuilderPlugin.createCarbideProjectMarker(cpi.getProject(), IMarker.SEVERITY_WARNING, warningText, IMarker.PRIORITY_LOW); + if (buildingSubset && EpocEngineHelper.hasUnnamedExtensions(cpi.getAbsoluteBldInfPath(), buildConfigList, new NullProgressMonitor())) { + String warningText = "WARNING: PRJ_EXTENSIONS and PRJ_TESTEXTENSIONS will be excluded from the build because you've selected to build a subset of the bld.inf, and there is no way to specify unnamed components."; + if (CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(cpi.getProject())) { + warningText = warningText + " If you name the extensions then you can select them to be built from the UI."; } + launcher.writeToConsole(warningText + "\n"); + CarbideBuilderPlugin.createCarbideProjectMarker(cpi.getProject(), IMarker.SEVERITY_WARNING, warningText, IMarker.PRIORITY_LOW); } } } diff -r c937102a5510 -r c028612cc555 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/MMPSelectionUI.java --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/MMPSelectionUI.java Sat Apr 25 12:54:10 2009 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/MMPSelectionUI.java Mon Apr 27 15:07:35 2009 -0500 @@ -18,6 +18,7 @@ import com.nokia.carbide.cdt.builder.EpocEngineHelper; import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo; +import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension; import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext; import com.nokia.cpp.internal.api.utils.core.Check; import com.nokia.cpp.internal.api.utils.core.ListenerList; @@ -169,12 +170,13 @@ private List buildConfigs; private IPath bldInfFile; private final IRunnableContext runnableContext; - private List data = Collections.EMPTY_LIST; - private boolean hasProjectExtensions; + private List data = Collections.emptyList(); + private boolean hasUnnamedProjectExtensions; private ViewerFilter testFileFilter; private ViewerFilter extMakFileFilter; private int lastSortColumn = BUILD_ORDER_COLUMN; // default private int sortDirection = 1; // default + private boolean useSBSv2Builder; /** * Create the composite @@ -367,12 +369,14 @@ * @param bldInfFile IPath * @param buildConfigs List */ - public void setBldInfFile(final IPath bldInfFile, final List buildConfigs) { + public void setBldInfFile(final IPath bldInfFile, final List buildConfigs, final boolean useSBSv2Builder) { if (bldInfFile.equals(this.bldInfFile) && buildConfigs.equals(this.buildConfigs)) return; this.bldInfFile = bldInfFile; this.buildConfigs = buildConfigs; + this.useSBSv2Builder = useSBSv2Builder; + try { runnableContext.run(true, true, new IRunnableWithProgress() { public void run(IProgressMonitor monitor) { @@ -388,11 +392,23 @@ for (IPath currPath : testMakMakeList) { data.add(new FileInfo(currPath, ++i, true)); } - List normalExtensionsList = new ArrayList(); - List testExtensionsList = new ArrayList(); - EpocEngineHelper.getExtensions(bldInfFile, buildConfigs, - normalExtensionsList, testExtensionsList, monitor); - hasProjectExtensions = normalExtensionsList.size() > 0 || testExtensionsList.size() > 0; + + // named extensions are only supported in SBSv2 + if (useSBSv2Builder) { + List normalNamedExtensionsList = new ArrayList(); + List testNamedExtensionsList = new ArrayList(); + EpocEngineHelper.getNamedExtensions(bldInfFile, buildConfigs, + normalNamedExtensionsList, testNamedExtensionsList, monitor); + + for (IExtension extension : normalNamedExtensionsList) { + data.add(new FileInfo(new Path(extension.getName()), ++i, false)); + } + for (IExtension extension : testNamedExtensionsList) { + data.add(new FileInfo(new Path(extension.getName()), ++i, true)); + } + } + + hasUnnamedProjectExtensions = EpocEngineHelper.hasUnnamedExtensions(bldInfFile, buildConfigs, monitor); } }); } catch (InvocationTargetException e) { @@ -468,14 +484,6 @@ updateCheckedStateFromViewer(); } - /** - * Return true if the current bld.inf file has project extensions - * @return boolean - */ - public boolean hasProjectExtensions() { - return hasProjectExtensions; - } - @Override protected void checkSubclass() { // Disable the check that prevents subclassing of SWT components @@ -566,4 +574,15 @@ return true; } + + public String getExtensionsWarningMessage() { + if (hasUnnamedProjectExtensions && !isCheckedAll()) { + if (useSBSv2Builder) { + return Messages.getString("MMPSelectionUI.prjExtensionsWarningSBSv2"); //$NON-NLS-1$ + } else { + return Messages.getString("MMPSelectionUI.prjExtensionsWarningSBSv1"); //$NON-NLS-1$ + } + } + return null; + } } diff -r c937102a5510 -r c028612cc555 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/messages.properties --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/messages.properties Sat Apr 25 12:54:10 2009 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/api/builder/ui/messages.properties Mon Apr 27 15:07:35 2009 -0500 @@ -12,3 +12,5 @@ MMPSelectionUI.DeselectAllLabel=Deselect All MMPSelectionUI.ExcludeExtMakefilesLabel=Exclude extension makefiles MMPSelectionUI.ExcludeTestCompsLabel=Exclude test components +MMPSelectionUI.prjExtensionsWarningSBSv1=Warning: This bld.inf contains project extensions (prj_extensions and/or prj_testextensions). These will only be built when building the entire bld.inf. +MMPSelectionUI.prjExtensionsWarningSBSv2=Warning: This bld.inf contains unnamed project extensions (prj_extensions and/or prj_testextensions). These will only be built when building the entire bld.inf.\r\nThis only applies to unnamed extensions, so if you provide a name in the extension, this will not be an issue. diff -r c937102a5510 -r c028612cc555 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/EnvironmentVarsInfo2.java --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/EnvironmentVarsInfo2.java Sat Apr 25 12:54:10 2009 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/EnvironmentVarsInfo2.java Mon Apr 27 15:07:35 2009 -0500 @@ -206,7 +206,10 @@ else { String epocRootStr = epocRoot.toOSString(); if (epocRootStr.indexOf(":") == 1) { - epocRootStr = epocRootStr.substring(2); + // only strip the drive for SBSv1 + if (!CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(projectTracker.getProject())) { + epocRootStr = epocRootStr.substring(2); + } } returnEnvArray[i] = EPOCROOT + EQUALS + epocRootStr; } @@ -286,7 +289,10 @@ else { String epocRootStr = epocRoot.toOSString(); if (epocRootStr.indexOf(":") == 1) { - epocRootStr = epocRootStr.substring(2); + // only strip the drive for SBSv1 + if (!CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(projectTracker.getProject())) { + epocRootStr = epocRootStr.substring(2); + } } returnEnvArray[i] = EPOCROOT + EQUALS + epocRootStr; } diff -r c937102a5510 -r c028612cc555 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/MakeSisErrorParser.java --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/MakeSisErrorParser.java Sat Apr 25 12:54:10 2009 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/error/parsers/MakeSisErrorParser.java Mon Apr 27 15:07:35 2009 -0500 @@ -22,19 +22,37 @@ public class MakeSisErrorParser extends CarbideBaseErrorParser { + String packageFile = null; + public MakeSisErrorParser() { } public boolean processLine(String aLine, ErrorParserManager aErrorParserManager) { - // Known patterns. + // Known patterns: + // // (a) // filename(lineno) : description + // OR + // (lineno) : description // // (b) // filename(lineno) : Warning: description + // OR + // (lineno) : Warning: description // // (c) // filename(lineno) : Error: description + // OR + // (lineno) : Error: description + + if ( aLine.contains("makesis.exe ")) { + int packageStart = aLine.indexOf("makesis.exe ") + "makesis.exe ".length(); + int packageEnd = aLine.indexOf(' ', packageStart); + // store the name of the package file for cases above where + // the line number is shown without the package filename + if (packageEnd != -1) + packageFile = aLine.substring(packageStart, packageEnd); + } if (aLine.equalsIgnoreCase("error: invalid destination file")){ msgSeverity = IMarkerGenerator.SEVERITY_ERROR_BUILD; @@ -46,6 +64,17 @@ aErrorParserManager.generateMarker(null, -1, aLine, msgSeverity, null); } + // if line starts with (lineno):, prefix it with the package file name + if ( aLine.indexOf(':') >= 2 + && aLine.charAt(0) == '(' + && aLine.charAt(aLine.indexOf(':') - 2) == ')') { + try { + Integer.parseInt(aLine.substring(1, aLine.indexOf(':') - 2)); + aLine = packageFile + aLine; + } catch (NumberFormatException nfe) { + } + } + if (!setFirstColon(aLine)) { return false; } diff -r c937102a5510 -r c028612cc555 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/CarbideCPPProjectSettingsPage.java --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/CarbideCPPProjectSettingsPage.java Sat Apr 25 12:54:10 2009 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/CarbideCPPProjectSettingsPage.java Mon Apr 27 15:07:35 2009 -0500 @@ -16,8 +16,43 @@ */ package com.nokia.carbide.cdt.internal.builder.ui; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; + +import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ITableColorProvider; +import org.eclipse.jface.viewers.ITableLabelProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Link; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.dialogs.PreferencesUtil; +import org.eclipse.ui.dialogs.PropertyPage; + import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin; -import com.nokia.carbide.cdt.builder.EpocEngineHelper; import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo; import com.nokia.carbide.cdt.internal.api.builder.ui.MMPSelectionUI; import com.nokia.carbide.cdt.internal.api.builder.ui.MMPSelectionUI.FileInfo; @@ -26,25 +61,6 @@ import com.nokia.carbide.cpp.internal.qt.core.QtCorePlugin; import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext; -import org.eclipse.cdt.core.model.ICProject; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.*; -import org.eclipse.jface.viewers.*; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.*; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.dialogs.PreferencesUtil; -import org.eclipse.ui.dialogs.PropertyPage; - -import java.util.*; -import java.util.List; - public class CarbideCPPProjectSettingsPage extends PropertyPage { private Label buildDirDynLabel; @@ -57,9 +73,6 @@ private Group optionsGroup; private BuildSettingsUI buildSettingsUI; - List normalExtensionPaths = new ArrayList(); - List testExtensionPaths = new ArrayList(); - protected Control createContents(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); @@ -107,7 +120,6 @@ } }); - // spacer new Label(composite, SWT.NONE).setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 2, 1)); @@ -137,7 +149,6 @@ optionsGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1)); boolean sbsv2Project = false; - IProject project = getProject(); if (project != null) { sbsv2Project = CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(project); @@ -344,10 +355,7 @@ List buildConfigList = new ArrayList(); buildConfigList.addAll(cpi.getBuildConfigurations()); - EpocEngineHelper.getExtensions(cpi.getAbsoluteBldInfPath(), buildConfigList, normalExtensionPaths, testExtensionPaths, new NullProgressMonitor()); - enableOrDisableControls(); - checkValid(); } } @@ -383,6 +391,8 @@ if (!CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(project)) { buildSettingsUI.setMMPChangedActionEnabledState(useProjectSettings && !isQtProject); } + + checkValid(); } private void initMMPSelectionUI(CarbideProjectInfo cpi) { @@ -395,7 +405,7 @@ selectionUI.setLayoutData(gridData); // set the data - selectionUI.setBldInfFile(cpi.getAbsoluteBldInfPath(), cpi.getBuildConfigurations()); + selectionUI.setBldInfFile(cpi.getAbsoluteBldInfPath(), cpi.getBuildConfigurations(), CarbideBuilderPlugin.getBuildManager().isCarbideSBSv2Project(cpi.getProject())); // set checked state selectionUI.setAllChecked(false); @@ -512,12 +522,11 @@ // if there are any new-style prj extensions, warn them that they won't be built // when not building the entire bld.inf. - if (normalExtensionPaths.size() > 0 || testExtensionPaths.size() > 0) { - if (selectedComponentsButton.getSelection()) { - if (!selectionUI.isCheckedAll()) { - setMessage(Messages.getString("CarbideCPPProjectSettingsPage.prjExtensionsWarning"), WARNING); //$NON-NLS-1$ - } - } + if (selectedComponentsButton.getSelection()) { + String warning = selectionUI.getExtensionsWarningMessage(); + if (warning != null) { + setMessage(warning, WARNING); + } } } diff -r c937102a5510 -r c028612cc555 builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/messages.properties --- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/messages.properties Sat Apr 25 12:54:10 2009 -0500 +++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/internal/builder/ui/messages.properties Mon Apr 27 15:07:35 2009 -0500 @@ -88,7 +88,6 @@ CarbideCPPProjectSettingsPage.ConfigureWorkspaceSetting=Configure Workspace Settings CarbideCPPProjectSettingsPage.ProjectSettingsGroup=Project Settings CarbideCPPProjectSettingsPage.ProjectSettingsGroupToolTip=These settings override the workspace settings for this project. -CarbideCPPProjectSettingsPage.prjExtensionsWarning=Warning: This bld.inf contains project extensions (prj_extensions and/or prj_testextensions). These will only be built when building the entire bld.inf. BuilderPreferencePage.EmulatorBuildGroup=Emulator Build Options BuilderPreferencePage.EmulatorEnvOption=Use built-in Nokia x86 environment variables for WINSCW builds diff -r c937102a5510 -r c028612cc555 carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/book.css --- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/book.css Sat Apr 25 12:54:10 2009 -0500 +++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/book.css Mon Apr 27 15:07:35 2009 -0500 @@ -1,184 +1,184 @@ -/* - Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - All rights reserved. - License: http://www.eclipse.org/legal/epl-v10.html -*/ - -/* Add whitespace around entire display to avoid crowding edges of view */ -/* 20070523-Removed top margin size to close gap between location breadcrumbs and page title */ -html { - margin: 2px 10px 10px 10px; - } - -/* Set default font to serif style, 12-pt and plain */ -body, p, table { - font-family: Georgia, "Times New Roman", Times, serif; - font-size: 13px; - font-weight: normal; -} - -/* Use sans-serif fonts for all title styles */ -h1, h2, h3, h4, h5, h6, strong, em { - font-family: Helvetica, sans-serif; - color: #000000; - } - -h1 { font-size:20px } -h2 { font-size:18px } -h3 { font-size:16px } -h4 { font-size:14px } -h5 { font-size:13px } -h6 { font-size:12px } - -/* For headlines at the top of a view, add space */ -/* 20090224-changed green fade to gold header image */ -h1, h2, h3 { - background-image: url(html/img/gold_header.png); - background-repeat: no-repeat; - padding:10px 0px 10px 12px; - } - -li { - margin-bottom:8px; - margin-top:8px; - } - -/* Footer includes space and a gray line above the company logo */ -#footer { - padding-top:10px; - margin-top:20px; - border-top:1px solid #999; - font-family: Helvetica, sans-serif; - font-size: 11px; - color:#333; - } - -.listing { - font-family: "Courier New", Courier, mono; - color: #000000; - background-color: #FFFFCC; - margin: 5px 0px; - } - -.code, pre { - font-family: "Courier New", Courier, mono; - font-size: 13px; - color: #000000; - } - -.step { - /* background-color: #EEE; */ - /* margin: 10px 0px; */ - color: #111; - /* border-bottom:2px solid #EEE; */ - } - -.substep { - background-color: #EEE; - } - - -/* Figure/Listing/Table titles are centered and gray */ -p.table { - color: #999; - font-weight: bold; - padding-top: 5px; - } - -table { - border: solid #999 1px; - table-layout: auto; - font-size: 13px; - } - -td, th { - border: solid #999 1px; - padding: 5px; - vertical-align:top; - } - -/* 20070522-replaced gray with green background to match gradiant color for title */ -th { - background-color:#FDDD1F; /* background-color:#acd79b; - background-color:#999; - color:#FFF; */ - } - -div.ol.p { - margin-left: 3em; - } - -/* Make all ordered/unordered list items appear in bold gray */ -div ol > li, div ul > li { - font-weight:bold; - color: #333; - } - -div ol > p, div ul > p, div li > p { - font-weight:normal; - } - -/* Make all H4 and H5 items appear in bold gray against a light green background */ -div h5, div h4 { - padding:5px 0px 5px 12px; - background-color:#FFFF66; - /* background-color: #EEE; */ - font-weight:bold; - color: #000000; - } - - -/* Notes stand out using a light top & bottom borders with dark gray text */ -p.note { - /* color: #03C; */ - /* background-color: #FFFF99; */ - color: #333; - padding: 5px; - margin-left: 1em; - margin-right: 1em; - border-top: solid #BBB thin; - border-bottom: solid #BBB thin; - } - - -/* Figure/Listing/Table titles are centered and gray */ -p.figure { - color: #333; - text-align: center; - font-weight: bold; - } - -/* highly visible red background and white text for things that need fixing before release */ -/* SHOULD NOT BE PRESENT IN RELEASED PRODUCTS */ -.fix { - background-color: red; - font-weight: bold; - color: white; - } - -.question { - font-style:italic; - font-weight:bold; - color: #555; - } - -.titleSmall { - font-family: Helvetica, sans-serif; - font-size: 11px; - } - - -.plain { - font-family: Helvetica, sans-serif; - font-size: 12px; - font-style: normal; - line-height: normal; - font-weight: normal; - font-variant: normal; - color: #000000; - text-decoration: none; - } - -a:link { color: #0033CC } -a:visited { color: #555555 } -a:hover { color: #0033CC } +/* + Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + All rights reserved. + License: http://www.eclipse.org/legal/epl-v10.html +*/ + +/* Add whitespace around entire display to avoid crowding edges of view */ +/* 20070523-Removed top margin size to close gap between location breadcrumbs and page title */ +html { + margin: 2px 10px 10px 10px; + } + +/* Set default font to serif style, 12-pt and plain */ +body, p, table { + font-family: Geneva, Arial, Helvetica, sans-serif; + font-size: 13px; + font-weight: normal; +} + +/* Use sans-serif fonts for all title styles */ +h1, h2, h3, h4, h5, h6, strong, em { + font-family: Helvetica, sans-serif; + color: #000000; + } + +h1 { font-size:20px } +h2 { font-size:18px } +h3 { font-size:16px } +h4 { font-size:14px } +h5 { font-size:13px } +h6 { font-size:12px } + +/* For headlines at the top of a view, add space */ +/* 20090224-changed green fade to gold header image */ +h1, h2, h3 { + background-image: url(html/img/gold_header.png); + background-repeat: no-repeat; + padding:10px 0px 10px 12px; + } + +li { + margin-bottom:8px; + margin-top:8px; + } + +/* Footer includes space and a gray line above the company logo */ +#footer { + padding-top:10px; + margin-top:20px; + border-top:1px solid #999; + font-family: Helvetica, sans-serif; + font-size: 11px; + color:#333; + } + +.listing { + font-family: "Courier New", Courier, mono; + color: #000000; + background-color: #FFFFCC; + margin: 5px 0px; + } + +.code, pre { + font-family: "Courier New", Courier, mono; + font-size: 13px; + color: #000000; + } + +.step { + /* background-color: #EEE; */ + /* margin: 10px 0px; */ + color: #111; + /* border-bottom:2px solid #EEE; */ + } + +.substep { + background-color: #EEE; + } + + +/* Figure/Listing/Table titles are centered and gray */ +p.table { + color: #999; + font-weight: bold; + padding-top: 5px; + } + +table { + border: solid #999 1px; + table-layout: auto; + font-size: 13px; + } + +td, th { + border: solid #999 1px; + padding: 5px; + vertical-align:top; + } + +/* 20070522-replaced gray with green background to match gradiant color for title */ +th { + background-color:#FDDD1F; /* background-color:#acd79b; + background-color:#999; + color:#FFF; */ + } + +div.ol.p { + margin-left: 3em; + } + +/* Make all ordered/unordered list items appear in bold gray */ +div ol > li, div ul > li { + font-weight:bold; + color: #333; + } + +div ol > p, div ul > p, div li > p { + font-weight:normal; + } + +/* Make all H4 and H5 items appear in bold gray against a light green background */ +div h5, div h4 { + padding:5px 0px 5px 12px; + background-color:#FFFF66; + /* background-color: #EEE; */ + font-weight:bold; + color: #000000; + } + + +/* Notes stand out using a light top & bottom borders with dark gray text */ +p.note { + /* color: #03C; */ + /* background-color: #FFFF99; */ + color: #333; + padding: 5px; + margin-left: 1em; + margin-right: 1em; + border-top: solid #BBB thin; + border-bottom: solid #BBB thin; + } + + +/* Figure/Listing/Table titles are centered and gray */ +p.figure { + color: #333; + text-align: center; + font-weight: bold; + } + +/* highly visible red background and white text for things that need fixing before release */ +/* SHOULD NOT BE PRESENT IN RELEASED PRODUCTS */ +.fix { + background-color: red; + font-weight: bold; + color: white; + } + +.question { + font-style:italic; + font-weight:bold; + color: #555; + } + +.titleSmall { + font-family: Helvetica, sans-serif; + font-size: 11px; + } + + +.plain { + font-family: Helvetica, sans-serif; + font-size: 12px; + font-style: normal; + line-height: normal; + font-weight: normal; + font-variant: normal; + color: #000000; + text-decoration: none; + } + +a:link { color: #0033CC } +a:visited { color: #555555 } +a:hover { color: #0033CC } diff -r c937102a5510 -r c028612cc555 carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/img/gold_header.png Binary file carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/img/gold_header.png has changed diff -r c937102a5510 -r c028612cc555 carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/reference/api_Change_Notes.htm --- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/reference/api_Change_Notes.htm Sat Apr 25 12:54:10 2009 -0500 +++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/reference/api_Change_Notes.htm Mon Apr 27 15:07:35 2009 -0500 @@ -126,3 +126,31 @@ + +

Removed APIs

+

The following Carbide APIs have been removed and are no longer available to plug-ins.

+

Since Carbide 1.2.0

+
    +
  • N/A
  • +
+

Since Carbide 1.2.1

+
    +
  • N/A
  • +
+

Since Carbide 1.2.2

+
    +
  • Some methods that were not intended to be made public were removed from the following classes and interfaces:
  • +
      +
    • com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder
    • +
    • com.nokia.carbide.cdt.builder.ICarbideBuildManager
    • +
    • com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo
    • +
    • com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration
    • +
    +
+

Since Carbide 2.0

+
    +
  • None
  • +
+ + + diff -r c937102a5510 -r c028612cc555 carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/tasks/carbide_adding_plugins.htm --- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/tasks/carbide_adding_plugins.htm Sat Apr 25 12:54:10 2009 -0500 +++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/tasks/carbide_adding_plugins.htm Mon Apr 27 15:07:35 2009 -0500 @@ -1,33 +1,34 @@ - - - - - - Installing Your Own Carbide Plug-ins - - - - -

Installing Your Own Carbide Plug-ins

- -

Many people want to create installers that automatically locate and install custom plug-ins into their Carbide installation. You can now query the Registry to locate Carbide installations and use the information there to correctly install your plug-ins into the Carbide / plugins folder.

-

When the Carbide Installer runs, it creates a Registry key that contains the name and location of the installed product. The Registry key location is:

-
-

Hkey Local Machine/Software/Nokia/Carbide.c++ v2.x

-
-

And it contains these two key values:

-
    -
  • Name — contains the name used to identify the program in the Start > Programs menu as specified during the Carbide installation
  • -
  • Location — contains the complete path to the Carbide installation (C:\Program Files\Nokia\Carbide.c++ v2.0)
  • -
-

For each new release of Carbide, the Carbide folder should not exist, so the installer creates it. Each folder name is unique in that it includes the major version number as part of the folder name.

-

For users that have multiple Carbide installations of the same version, the folder name also includes an additional identifier. The "Name" value in the key will reflect the unique name given to the Start > Programs shortcut (ie Carbide.c++ v2.0_[1]) as part of the install location. For example, if you installed three copies of version 2.0, the keys might look like this:

-
-

Hkey Local Machine/Software/Nokia/Carbide.c++ v2.0
- Hkey Local Machine/Software/Nokia/Carbide.c++ v2.0_[1]
- Hkey Local Machine/Software/Nokia/Carbide.c++ v2.0_[2]

-
-

Where the appended _[1], _[2] help to identify the different installs.

- + + + + + + Installing Your Own Carbide Plug-ins + + + + +

Installing Your Own Carbide Plug-ins

+ +

Many people want to create installers that automatically locate and install custom plug-ins into their Carbide installation. You can now query the Registry to locate Carbide installations and use the information there to correctly install your plug-ins into the Carbide / plugins folder.

+

When the Carbide Installer runs, it creates a Registry key that contains the name and location of the installed product. The Registry key location is:

+
+

Hkey Local Machine/Software/Nokia/Carbide.c++ v2.x

+
+

And it contains these two key values:

+
    +
  • Name — contains the name used to identify the program in the Start > Programs menu as specified during the Carbide installation
  • +
  • Location — contains the complete path to the Carbide installation (C:\Program Files\Nokia\Carbide.c++ v2.0)
  • +
+

For each new release of Carbide, the Carbide folder should not exist, so the installer creates it. Each folder name is unique in that it includes the major version number as part of the folder name.

+

For users that have multiple Carbide installations of the same version, the folder name also includes an additional identifier. The "Name" value in the key will reflect the unique name given to the Start > Programs shortcut (ie Carbide.c++ v2.0_[1]) as part of the install location. For example, if you installed three copies of version 2.0, the keys might look like this:

+
+

Hkey Local Machine/Software/Nokia/Carbide.c++ v2.0
+ Hkey Local Machine/Software/Nokia/Carbide.c++ v2.0_[1]
+ Hkey Local Machine/Software/Nokia/Carbide.c++ v2.0_[2]

+
+

Where the appended _[1], _[2] help to identify the different installs.

+ + \ No newline at end of file diff -r c937102a5510 -r c028612cc555 core/carbide_releases/readme/readme_sdks.html diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.codescanner/html/customizing_cs.htm diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.codescanner/html/images/brand/gold_header.png Binary file core/com.nokia.carbide.cpp.codescanner/html/images/brand/gold_header.png has changed diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.codescanner/html/pref_codescanner_03.htm --- a/core/com.nokia.carbide.cpp.codescanner/html/pref_codescanner_03.htm Sat Apr 25 12:54:10 2009 -0500 +++ b/core/com.nokia.carbide.cpp.codescanner/html/pref_codescanner_03.htm Mon Apr 27 15:07:35 2009 -0500 @@ -1,480 +1,492 @@ - -CodeScanner Rules preferences - - - - -
-

CodeScanner Rules preferences

-
-

Use the - CodeScanner Rules page in the Preferences window or the project's properties window to enable or disable the rules used to validate Symbian OS project files. Rules are divided by category and have a severity assigned to them by CodeScanner, but you can use the Edit control to change those settings to better suit your work environment. You can also sort the rules by clicking a column title.

-

-

Figure 1. Rules global settings

- - - - - - - - - - - - - - - - - - - - - - - - - - -
NameFunction
Configure Project Specific Settings...

Click to open the project Properties window and configure CodeScanner for that specific project.

-

NOTE Only visible in the global CodeScanner preference panels. This also applies to the File Filters and General pages

CodeScanner rules

The list of all CodeScanner rules and their active state.

Edit...Opens the currently selected rule in the edit rule dialog where you can set the categroy and severity of the rule.
Enable All Activates all the rules in the CodeScanner rules list.
Disable All Deactivates all the rules in the CodeScanner rules list.
DetailsDisplays helpful advice to help you avoid triggering the selected rule in your source code and projects.
-

 

-

The following table indicates an example of rules listed in the Rules tab and associated error messages that would be generated in the Problems view.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescription

accessArrayElementWithoutCheck

Array element accessed by At() function without checking index is within array range

accessArrayElementWithoutCheck2

Array element accessed by [] without checking range

activestart

Using CActiveScheduler::Start

activestop

Using CActiveScheduler::Stop

arraypassing

Passing arrays by value rather than reference

arrayptrcleanup

Using local CArrayPtr classes without cleanup items

assertdebuginvariant

__ASSERT_DEBUG with User::Invariant

baddefines

Lowercase definition names

baseconstruct

Leaving function called before BaseConstructL()

callActiveObjectWithoutCheckingOrStopping

Active object called without checking whether it is active or canceling it first

changenotification

Using RSAVarChangeNotify to see System Agent changes

cleanup

CleanupStack::Pop(AndDestroy) parameters

commentcode

Commented-out code

connect

Ignoring Connect() return value

ConnectAndDontCloseMemberVariable

Calling Connect() or Open() on a member variable without calling Close() in the destructor

constnames

Badly-named constants

consttdescptr

Const descriptor pointer as argument

controlornull

Accessing return value of ControlOrNull()

ctltargettype

Use of targettype ctl

debugrom

Debug components in ROM

declarename

Use of __DECLARE_NAME

deleteMemberVariable

Member variable deleted incorrectly

destructor

Pointer access in destructors

doubleSemiColon

Use of double semicolon

driveletters

Hard-coded drive letters

eikbuttons

Checks that the R_EIK_BUTTONS_* resources are not being used

eikonenvstatic

Using CEikonEnv::Static

enummembers

Enums with badly-named members

enumnames

Badly-named enums

exportinline

Exporting inline functions

exportpurevirtual

Exporting pure virtual functions

externaldriveletters

Hard-coded external drive letters

foff

Use of _FOFF

forbiddenwords

Use of forbidden words in header files

forgottoputptroncleanupstack

Neglected to put variable on cleanup stack

friend

Use of friends

goto

Use of goto

ifassignments

Assignment in an If statement

ifpreprocessor

Use of #if in .h files

inheritanceorder

Incorrect inheritance order of M and C classes

intleaves

Methods that leave AND return a TInt error

jmp

Use of setjmp and/or longjmp

leave

Leaving functions called in non-leaving functions

LeaveNoError

Leaving with KErrNone

leavingoperators

Leaving functions called in operator functions

LFunctionCantLeave

L-functions that cannot leave

longlines

Overly long lines of code

magicnumbers

Use of magic numbers

mclassdestructor

M class has destructor

memberlc

Assigning LC methods to member variables

membervariablecallld

Calling LD function on member variable

missingcancel

Cancel() not called in active object's destructor

missingcclass

C class not inheriting from another C class

mmpsourcepath

Use of absolute path names in MMP files

multilangrsc

Not using BaflUtils::NearestLanguageFile() when loading a resource file

multipledeclarations

Multiple declarations on one line

multipleinheritance

Non M-class multiple inheritance

mydocs

Hard-coded mydocs directory strings

namespace

Use of namespace

newlreferences

NewL() returning a reference

noleavetrap

TRAP used with no leaving functions

nonconsthbufc

Non-const HBufC* parameter passing

nonconsttdesc

Non-const TDesC& parameter passing

nonleavenew

Use of new without (ELeave)

nonunicodeskins

Non-Unicode skins

null

NULL equality check

open

Ignoring Open() return value

pointertoarrays

Pointer to arrays as members of a C class

pragmadisable

Use of #pragma warning

pragmamessage

Use of #pragma message

pragmaother

Use of #pragma other than warning and message

privateinheritance

Use of private inheritance

pushaddrvar

Pushing address of a variable onto the cleanup stack

pushmember

Pushing data members onto the cleanup stack

readresource

Using ReadResource() instead of ReadResourceL()

resourcenotoncleanupstack

Neglected to put resource objects on cleanup stack

resourcesonheap

Resource objects on the heap

returndescriptoroutofscope

Return descriptor out of scope

rfs

Use of non-pointer/reference RFs

rssnames

Duplicate RSS names

stringliterals

Use of _L string literals

stringsinresourcefiles

Strings in RSS or RA files

struct

Use of struct

tcclasses

T classes inheriting from C classes

tclassdestructor

T class has destructor

todocomments

"To do” comments

trapcleanup

Use of LC function in TRAPs

trapeleave

Trapping new(ELeave)

traprunl

Trapping of (Do)RunL() rather than using RunError()

trspassing

Passing TRequestStatus parameters by value

uids

Duplicate UIDs

uncompressedaif

Uncompressed AIFs in ROM

uncompressedbmp

Uncompressed bitmaps in ROM

unicodesource

Unicode source files

userafter

Use of User::After

userfree

Using User::Free directly

userWaitForRequest

Use of User::WaitForRequest

variablenames

Local variables with member/argument names

voidparameter

Void parameter explicitly declared

worryingcomments

Worrying comments

-

 

-

CodeScanner for projects

-

CodeScanner options can also be set at the project level in the Properties window. Right-click the project and choose Properties, then select the Carbide.c++ > Carbide CodeScanner element in the properties list. Click a tab to view the appropriate page and set its options.

-

CodeScanner options specific to the project:

- - - - - - - - - - - - - -
NameDescription
Enable Project Specific Settings Activate to set project specific CodeScanner settings. By default a project in the workspace uses the global CodeScanner settings unless this option is activated.
Configure Workspace Settings...

Click to open the Preferences window and configure CodeScanner for the workspace.

-

NOTE Only visible in the project CodeScanner property panels.

-

 

-
Other references
- - - - + +CodeScanner Rules preferences + + + + +
+

CodeScanner Rules preferences

+
+

Use the + CodeScanner Rules page in the Preferences window or the project's properties window to enable or disable the rules used to validate Symbian OS project files. Rules are divided by category and have a severity assigned to them by CodeScanner, but you can use the Edit control to change those settings to better suit your work environment. You can also sort the rules by clicking a column title.

+

+

Figure 1. Rules global settings

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameFunction
Configure Project Specific Settings...

Click to open the project Properties window and configure CodeScanner for that specific project.

+

NOTE Only visible in the global CodeScanner preference panels. This also applies to the File Filters and General pages

CodeScanner rules

The list of all CodeScanner rules and their active state.

Edit...Opens the currently selected rule in the edit rule dialog where you can set the categroy and severity of the rule.
Enable All Activates all the rules in the CodeScanner rules list.
Disable All Deactivates all the rules in the CodeScanner rules list.
DetailsDisplays helpful advice to help you avoid triggering the selected rule in your source code and projects.
+

 

+

The following table indicates an example of rules listed in the Rules tab and associated error messages that would be generated in the Problems view.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
accessArrayElementWithoutCheckArray element accessed by At() function without checking index is within array range
accessArrayElementWithoutCheck2Array element accessed by [] without checking range
activestartUsing CActiveScheduler::Start
activestopUsing CActiveScheduler::Stop
arraypassingPassing arrays by value rather than reference
arrayptrcleanupUsing local CArrayPtr classes without cleanup items
assertdebuginvariant__ASSERT_DEBUG with User::Invariant
baddefinesLowercase definition names
baseconstructLeaving function called before BaseConstructL()
callActiveObjectWithoutCheckingOrStoppingActive object called without checking whether it is active or canceling it first
changenotificationUsing RSAVarChangeNotify to see System Agent changes
cleanupCleanupStack::Pop(AndDestroy) parameters
commentcodeCommented-out code
connectIgnoring Connect() return value
ConnectAndDontCloseMemberVariableCalling Connect() or Open() on a member variable without calling Close() in the destructor
constnamesBadly-named constants
consttdescptrConst descriptor pointer as argument
controlornullAccessing return value of ControlOrNull()
crepositorieCheck for Central Repository usage
ctltargettypeUse of targettype ctl
customizableicons Check for customizable icons
debugromDebug components in ROM
declarenameUse of __DECLARE_NAME
deleteMemberVariableMember variable deleted incorrectly
destructorPointer access in destructors
doubleSemiColonUse of double semicolon
drivelettersHard-coded drive letters
eikbuttonsChecks that the R_EIK_BUTTONS_* resources are not being used
eikonenvstaticUsing CEikonEnv::Static
enummembersEnums with badly-named members
enumnamesBadly-named enums
exportinlineExporting inline functions
exportpurevirtualExporting pure virtual functions
externaldrivelettersHard-coded external drive letters
flagsCheck for flag usage
foffUse of _FOFF
forbiddenwordsUse of forbidden words in header files
forgottoputptroncleanupstackNeglected to put variable on cleanup stack
friendUse of friends
gotoUse of goto
ifassignmentsAssignment in an If statement
ifpreprocessorUse of #if in .h files
inheritanceorderIncorrect inheritance order of M and C classes
intleavesMethods that leave AND return a TInt error
jmpUse of setjmp and/or longjmp
leaveLeaving functions called in non-leaving functions
LeaveNoErrorLeaving with KErrNone
leavingoperatorsLeaving functions called in operator functions
LFunctionCantLeaveL-functions that cannot leave
longlinesOverly long lines of code
magicnumbersUse of magic numbers
mclassdestructorM class has destructor
memberlcAssigning LC methods to member variables
membervariablecallldCalling LD function on member variable
missingcancelCancel() not called in active object's destructor
missingcclassC class not inheriting from another C class
mmpsourcepathUse of absolute path names in MMP files
multilangrscNot using BaflUtils::NearestLanguageFile() when loading a resource file
multipledeclarationsMultiple declarations on one line
multipleinheritanceNon M-class multiple inheritance
mydocsHard-coded mydocs directory strings
namespaceUse of namespace
newlreferencesNewL() returning a reference
noleavetrapTRAP used with no leaving functions
nonconsthbufcNon-const HBufC* parameter passing
nonconsttdescNon-const TDesC& parameter passing
nonleavenewUse of new without (ELeave)
nonunicodeskinsNon-Unicode skins
nullNULL equality check
openIgnoring Open() return value
pointertoarraysPointer to arrays as members of a C class
pragmadisableUse of #pragma warning
pragmamessageUse of #pragma message
pragmaotherUse of #pragma other than warning and message
privateinheritanceUse of private inheritance
pushaddrvarPushing address of a variable onto the cleanup stack
pushmemberPushing data members onto the cleanup stack
readresourceUsing ReadResource() instead of ReadResourceL()
resourcenotoncleanupstackNeglected to put resource objects on cleanup stack
resourcesonheapResource objects on the heap
returndescriptoroutofscopeReturn descriptor out of scope
rfsUse of non-pointer/reference RFs
rssnamesDuplicate RSS names
stringliteralsUse of _L string literals
stringsinresourcefilesStrings in RSS or RA files
structUse of struct
tcclassesT classes inheriting from C classes
tclassdestructorT class has destructor
todocomments"To do” comments
trapcleanupUse of LC function in TRAPs
trapeleaveTrapping new(ELeave)
traprunlTrapping of (Do)RunL() rather than using RunError()
trspassingPassing TRequestStatus parameters by value
uidsDuplicate UIDs
uncompressedaifUncompressed AIFs in ROM
uncompressedbmpUncompressed bitmaps in ROM
unicodesourceUnicode source files
userafterUse of User::After
userfreeUsing User::Free directly
userWaitForRequestUse of User::WaitForRequest
variablenamesLocal variables with member/argument names
voidparameterVoid parameter explicitly declared
worryingcommentsWorrying comments
+  

+

CodeScanner for projects

+

CodeScanner options can also be set at the project level in the Properties window. Right-click the project and choose Properties, then select the Carbide.c++ > Carbide CodeScanner element in the properties list. Click a tab to view the appropriate page and set its options.

+

CodeScanner options specific to the project:

+ + + + + + + + + + + + + +
NameDescription
Enable Project Specific Settings Activate to set project specific CodeScanner settings. By default a project in the workspace uses the global CodeScanner settings unless this option is activated.
Configure Workspace Settings...

Click to open the Preferences window and configure CodeScanner for the workspace.

+

NOTE Only visible in the project CodeScanner property panels.

+

 

+
Other references
+ + + + \ No newline at end of file diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.codescanner/html/release_notes.htm --- a/core/com.nokia.carbide.cpp.codescanner/html/release_notes.htm Sat Apr 25 12:54:10 2009 -0500 +++ b/core/com.nokia.carbide.cpp.codescanner/html/release_notes.htm Mon Apr 27 15:07:35 2009 -0500 @@ -27,7 +27,6 @@

2.1.2

-
  • Added support for Knowledge Base Scanning, the ability to scan code and detect possible API issues related to a specific SDK, for example when porting to a new Touch UI SDK. For each SDK, specific porting information is defined as a set of rules specified in XML files. CodeScanner can merge these into the existing set of CodeScanner rules for scanning operations. The results are displayed in the Console view and as information markers in source code.

2.1.1

diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.codescanner/tocCodeScanner.xml --- a/core/com.nokia.carbide.cpp.codescanner/tocCodeScanner.xml Sat Apr 25 12:54:10 2009 -0500 +++ b/core/com.nokia.carbide.cpp.codescanner/tocCodeScanner.xml Mon Apr 27 15:07:35 2009 -0500 @@ -1,29 +1,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.compiler.doc.user/html/images/gold_header.png Binary file core/com.nokia.carbide.cpp.compiler.doc.user/html/images/gold_header.png has changed diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.doc.user/html/bugs_fixed.htm --- a/core/com.nokia.carbide.cpp.doc.user/html/bugs_fixed.htm Sat Apr 25 12:54:10 2009 -0500 +++ b/core/com.nokia.carbide.cpp.doc.user/html/bugs_fixed.htm Mon Apr 27 15:07:35 2009 -0500 @@ -25,10 +25,16 @@

Bugs Fixed in v2.0.4

    +
  • 8050 - Fixed an issue that preventing the building of a target when another target of the same project is being debugged.
  • 8282 - Fixed several issues with PRJ_EXTENSION that prevented resource building under SBSv1.
  • 8694 - Fixed an issue that prevented building a project using SBSv2 when the workspace and kit resided on different drives.
  • 8804 - Fixed a problem where the number of build errors reported wasn't consistent between the Console and Problem views.
  • +
  • 8816 - Bash errors from SBSv2 should now appear in the Problems view.
  • +
  • 8890 - The Mark All Read button in the Carbide News view now works as expected.
  • +
  • 8914 - Corrected an issue with scanning SDKs that cause the scan to repeat endlessly.
  • +
  • 8919 - Fixed a CORBA error with the Carbide symbol reading API that prevented its use.
  • +
  • 8923 - Added explicit notes on checking the proxy setting in the Network Connections preference panel when experiencing issues with Hover Help.

Bugs Fixed in v2.0.3

    diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.doc.user/html/images/gold_header.png Binary file core/com.nokia.carbide.cpp.doc.user/html/images/gold_header.png has changed diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.doc.user/html/reference/images/context_menu_remote_conn_view.png Binary file core/com.nokia.carbide.cpp.doc.user/html/reference/images/context_menu_remote_conn_view.png has changed diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.doc.user/html/reference/images/view_remote_connections.png Binary file core/com.nokia.carbide.cpp.doc.user/html/reference/images/view_remote_connections.png has changed diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.doc.user/html/reference/menus/menus.htm --- a/core/com.nokia.carbide.cpp.doc.user/html/reference/menus/menus.htm Sat Apr 25 12:54:10 2009 -0500 +++ b/core/com.nokia.carbide.cpp.doc.user/html/reference/menus/menus.htm Mon Apr 27 15:07:35 2009 -0500 @@ -1,37 +1,37 @@ - - - - - - -Carbide Menu Items - - - -

    Carbide Menus

    -

    Common menu and context menu commands used in Carbide.c++:

    - - - - - + + + + + + +Carbide Menu Items + + + +

    Carbide Menus

    +

    Common menu and context menu commands used in Carbide.c++:

    + + + + + diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.doc.user/html/reference/trk/view_remote_connection.htm --- a/core/com.nokia.carbide.cpp.doc.user/html/reference/trk/view_remote_connection.htm Sat Apr 25 12:54:10 2009 -0500 +++ b/core/com.nokia.carbide.cpp.doc.user/html/reference/trk/view_remote_connection.htm Mon Apr 27 15:07:35 2009 -0500 @@ -1,109 +1,123 @@ - - - - - - -Remote Connections view - - - - -

    Remote Connections view

    -

    Use the Remote Connections view to monitor, create, edit, or remove common connection settings for remote agents.The columns include:

    -
      -
    • Connection/Services - connection name defined by you and remote agent type
    • -
    • Type - connection type, i.e. Bluetooth, USB, TCP/IP, etc.
    • -
    • Status - current connection status, i.e. Available, Not available, etc.
    • -
    -

    -

    Figure 1 - Remote Connections view

    -

    Remote Connections view toolbar icons

    -

    The following commands appear on the toolbar within the Remote Connections view:

    - - - - - - - - - - - - - - - - - - - - - -
    ItemIconExplanation
    Refresh Connections
    - -

    Click to update the connection list status.

    New Connection
    - -
    Click to open the New Connection wizard to add a connection.
    Edit Connection
    - -

    Click to edit the selected remote connection.

    -

    Remote Connections view context menu options

    -

    Based on the current selection, one or more of the following commands appear on the context menu when you right-click within the Remote Connections view. For example, if no connections are defined, only the New Connection command is available on the context menu. Right-click on a connection name and the additional Enable Service Testing and Disable Service Testing are available.

    -

    -

    Figure 2 - Remote Connections context menu

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ItemIconExplanation
    New Connection
    - -
    Select to open the New Connection wizard to add a connection.
    Edit Connection Settings
    - -

    Select to edit the selected remote connection.

    Delete Connection
    - -

    Select to delete the selected connection from the connection list.

    Connection Documentation
    - -
    Select to open the Help view with connection information.
    Disable Service Testing Select to disable the connection testing. This releases the port so other connection services can use it.
    Enable Service Testing Select to re-enable testing of the connection.
    -
    Related references
    - - - - - + + + + + + +Remote Connections view + + + + + +

    Remote Connections view

    +

    Use the Remote Connections view to monitor, create, edit, or remove common connection settings for remote agents. The columns include:

    +
      +
    • Connection/Services - connection name defined by you and remote agent type
    • +
    • Type - connection type, i.e. Bluetooth, USB, TCP/IP, etc.
    • +
    • Status - current connection status, i.e. Available, Not available, In Use, etc.
    • +
    • Description - provides information on the current connection test status.
    • +
    +

    +

    Figure 1 - Remote Connections view

    +

    Remote Connections view toolbar icons

    +

    The following commands appear on the toolbar within the Remote Connections view:

    + + + + + + + + + + + + + + + + + + + + + +
    ItemIconExplanation
    Refresh Connections
    + +

    Click to update the connection list status.

    New Connection
    + +
    Click to open the New Connection wizard to add a connection.
    Edit Connection
    + +

    Click to edit the selected remote connection.

    +

    Remote Connections view context menu options

    +

    Based on the current selection, one or more of the following commands appear on the context menu when you right-click within the Remote Connections view. For example, if no connections are defined, only the New Connection command is available on the context menu. Right-click on a connection name and the additional Enable Service Testing and Disable Service Testing are available.

    +

    +

    Figure 2 - Remote Connections context menu

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ItemIconExplanation
    New Connection
    + +
    Select to open the New Connection wizard to add a connection.
    Rename Connection Select to rename the currently selected connection.
    Edit Connection Settings
    + +

    Select to edit the selected remote connection.

    Delete Connection
    + +

    Select to delete the selected connection from the connection list.

    Connection Documentation
    + +
    Select to open the Help view with connection information.
    Disable Service Testing Select to disable the connection testing. This releases the port so other connection services can use it.
    Enable Service Testing Select to re-enable testing of the connection.
    +
    Related references
    + + + + + diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.doc.user/html/tasks/carbide_tools.htm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/com.nokia.carbide.cpp.doc.user/html/tasks/carbide_tools.htm Mon Apr 27 15:07:35 2009 -0500 @@ -0,0 +1,45 @@ + + + + +Creating Carbide Tools + + + + +

    Creating Carbide Tools

    +

    Carbide.c++ provides a host of functionality when it comes to designing, writing, compiling, and debugging Symbian OS based applications for mobile devices. In addition there are tools for evaluating your applications performance, memory, and energy usage to make them run faster and use less resources.

    +

    However, while there are a lot of tools included with Carbide.c++ you may have ideas of your own that you'd like to develop and use. Since Carbide is based upon Eclipse, a highly extensible open framework, you can develop tools and employ them inside the Carbide environment where they can operate alongside the standard tools. Best of all, you can do this all within the famliiar Carbide IDE.

    +

    To effectively write Carbide tool plug-ins you will need:

    +
      +
    • The Carbide Development Kit (CDK) includes the resources, examples, and documentation necessary to create plug-ins within Carbide (required)
    • +
    • Knowledge and experience writing Java code and the Eclipse plug-in framework
    • +
    • Familiarity with writing and debugging Eclipse plug-ins
    • +
    • Some knowledge of the Carbide APIs
    • +
    +

    Download the CDK to get started developing your own Carbide tool plug-ins using the instructions below.

    +
    +

    Downloading the Carbide Development Kit

    +

    The CDK contains all the resources you need to write Carbide tool plug-ins. To download:

    +
      +
    1. Click Help > Software Updates > Find & Install.
    2. +
    3. Select the Search for new features to install option, click Next.
      +

      NOTE If you experience problems connecting to the updater site, verify that the connection settings are correct in the Network Connections preference panel before trying again. This is especially important if a proxy setting is required to connect to the internet.

      +
    4. +
    5. On the Update sites to search page, checkmark the Carbide.c++ Update Site option, click Finish.
    6. +
    7. On the Search results page, checkmark the Carbide.c++ Development Kit option, click Next.
    8. +
    9. On the Feature license page, accept the license agreement, click Next.
    10. +
    11. On the Optional features page, click Next.
    12. +
    13. On the Installation page, click Finish.
    14. +
    +
    +

    Carbide downloads and asks for permission to install the CDK. Once installed, it asks you to restart Carbide to load the new plug-ins.

    +

    To learn more about writing Carbide tool plug-ins, see the Help > Carbide Tools > Carbide.c++ Plug-in Developer Guide installed by the CDK. It provides more detailed information on writing Carbide tool plug-ins.

    +

    Other references

    +
      +
    • Carbide.c++ Plug-in Developer Guide
    • +
    + + + diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.doc.user/tocCarbide.xml --- a/core/com.nokia.carbide.cpp.doc.user/tocCarbide.xml Sat Apr 25 12:54:10 2009 -0500 +++ b/core/com.nokia.carbide.cpp.doc.user/tocCarbide.xml Mon Apr 27 15:07:35 2009 -0500 @@ -31,7 +31,7 @@ - + @@ -446,6 +446,7 @@ - - + + + diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.news.reader.tests/src/com/nokia/carbide/cpp/news/reader/tests/FeedManagerTest.java --- a/core/com.nokia.carbide.cpp.news.reader.tests/src/com/nokia/carbide/cpp/news/reader/tests/FeedManagerTest.java Sat Apr 25 12:54:10 2009 -0500 +++ b/core/com.nokia.carbide.cpp.news.reader.tests/src/com/nokia/carbide/cpp/news/reader/tests/FeedManagerTest.java Mon Apr 27 15:07:35 2009 -0500 @@ -120,19 +120,20 @@ } } - public void testRemoveNewsFeedEntry() { + public void testMarkEntryAsRead() { try { feedManager.loadFeeds(); List newsFeeds = feedManager.getNewsFeeds(); if (newsFeeds != null && newsFeeds.size() > 0) { CarbideSyndFeed feed = newsFeeds.get(0); - List feedEntries = feed.getEntries(); - if (feedEntries != null && feedEntries.size() > 0) { + List feedEntries = feed.getUnreadEntries(); + while (feedEntries != null && feedEntries.size() > 0) { int oldCount = feed.getUnreadEntries().size(); CarbideSyndEntry feedEntry = feedEntries.get(0); - feedManager.removeNewsFeedEntry(feedEntries, feedEntry.getTitle()); + feedManager.markEntryAsRead(feedEntries, feedEntry.getTitle()); int newCount = feed.getUnreadEntries().size(); - assertTrue(newCount > oldCount); + assertTrue(newCount < oldCount); + feedEntries = feed.getUnreadEntries(); } } } catch (Exception e) { diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/editor/NewsPage.java --- a/core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/editor/NewsPage.java Sat Apr 25 12:54:10 2009 -0500 +++ b/core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/editor/NewsPage.java Mon Apr 27 15:07:35 2009 -0500 @@ -557,7 +557,7 @@ private void handleMarkEntryRead(String feedTitle, String entryTitle) { CarbideSyndFeed feed = newsFeeds.get(currentFeed); if (feed != null) { - CarbideNewsReaderPlugin.getFeedManager().removeNewsFeedEntry(feed.getEntries(), entryTitle); + CarbideNewsReaderPlugin.getFeedManager().markEntryAsRead(feed.getEntries(), entryTitle); } newsBrowser.setText(createNewsContents()); newsFeedsTableViewer.refresh(); diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/feed/CarbideFeedFetcher.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/feed/CarbideFeedFetcher.java Mon Apr 27 15:07:35 2009 -0500 @@ -0,0 +1,57 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +package com.nokia.carbide.cpp.internal.news.reader.feed; + +import java.net.URLConnection; + +import com.sun.syndication.fetcher.impl.FeedFetcherCache; +import com.sun.syndication.fetcher.impl.HttpURLFeedFetcher; +import com.sun.syndication.fetcher.impl.SyndFeedInfo; + +/** + * A class to retrieve feed via HTTP connection. + * + */ +public class CarbideFeedFetcher extends HttpURLFeedFetcher { + + /** + * Constructor to enable CarbideFeedFetcher without caching feeds. + */ + public CarbideFeedFetcher() { + super(); + } + + /** + * Constructor to enable CarbideFeedFetcher to cache feeds + * @param feedCache - an instance of the FeedFetcherCache interface + */ + public CarbideFeedFetcher(FeedFetcherCache feedInfoCache) { + super(feedInfoCache); + } + + /* + * (non-Javadoc) + * @see com.sun.syndication.fetcher.impl.HttpURLFeedFetcher#setRequestHeaders(java.net.URLConnection, com.sun.syndication.fetcher.impl.SyndFeedInfo) + */ + protected void setRequestHeaders(URLConnection connection, SyndFeedInfo syndFeedInfo) { + super.setRequestHeaders(connection, syndFeedInfo); + // specify acceptable content types + connection.setRequestProperty("Accept", "*/xml"); + } + +} diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/feed/FeedManager.java --- a/core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/feed/FeedManager.java Sat Apr 25 12:54:10 2009 -0500 +++ b/core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/feed/FeedManager.java Mon Apr 27 15:07:35 2009 -0500 @@ -44,7 +44,6 @@ import com.sun.syndication.fetcher.FeedFetcher; import com.sun.syndication.fetcher.impl.FeedFetcherCache; import com.sun.syndication.fetcher.impl.HashMapFeedInfoCache; -import com.sun.syndication.fetcher.impl.HttpURLFeedFetcher; /** * A class to manage feeds for the Carbide.c++ news reader. @@ -96,7 +95,7 @@ @SuppressWarnings("static-access") public void loadFeeds() { try { - if (!loadFeedListing()) { + if (!loadFeedListing(false)) { return; } @@ -191,11 +190,11 @@ } /** - * Remove an entry from a feed. - * @param feed - feed object in question - * @param entryTitle - title of the entry to be removed + * Search for a feed entry by name and then mark it as read. + * @param entries - feed entries to be checked + * @param entryTitle - title of the entry to be marked as read */ - public void removeNewsFeedEntry(List entries, String entryTitle) { + public void markEntryAsRead(List entries, String entryTitle) { if (entries == null || entryTitle == null) { return; } @@ -204,7 +203,7 @@ CarbideSyndEntry entry = iterator.next(); String title = entry.getTitle(); title = title.replaceAll("\n", ""); - if (title.equals(entryTitle)) { + if (title.equals(entryTitle) && !entry.isRead()) { entry.setRead(true); break; } @@ -252,7 +251,7 @@ @SuppressWarnings("static-access") public void updateFeeds() { try { - if (!loadFeedListing()) { + if (!loadFeedListing(false)) { return; } @@ -333,7 +332,7 @@ } FeedFetcherCache feedInfoCache = HashMapFeedInfoCache.getInstance(); - FeedFetcher fetcher = new HttpURLFeedFetcher(feedInfoCache); + FeedFetcher fetcher = new CarbideFeedFetcher(feedInfoCache); SyndFeed sFeed = fetcher.retrieveFeed(feedUrl); CarbideSyndFeed feed = new CarbideSyndFeed(sFeed); if (feed != null) { @@ -384,11 +383,12 @@ } /** - * Load feed information from feed listing file. + * Load feed information from feed listing file. + * @param useLocal - use local copy of feed listing file? * @return true on success; false otherwise */ - private boolean loadFeedListing() throws Exception { - URL url = feedListingManager.getFeedInfoFileURL(); + private boolean loadFeedListing(boolean useLocalCopy) throws Exception { + URL url = feedListingManager.getFeedInfoFileURL(useLocalCopy); if (url != null) { return feedListingManager.loadFeedInfo(url); } @@ -458,9 +458,9 @@ * Reload feeds from cache if necessary. */ private void validateFeeds() { - if (newsFeeds == null || newsFeeds.size() == 0 || resourceFeed == null) { + if ((newsFeeds == null || newsFeeds.size() == 0) && resourceFeed == null) { try { - if (!loadFeedListing()) { + if (!loadFeedListing(true)) { return; } diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/gen/FeedInfo/FeedInfoManager.java --- a/core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/gen/FeedInfo/FeedInfoManager.java Sat Apr 25 12:54:10 2009 -0500 +++ b/core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/gen/FeedInfo/FeedInfoManager.java Mon Apr 27 15:07:35 2009 -0500 @@ -106,27 +106,40 @@ /** * Retrieve the feed info file from remote server, make a local copy of this file * and returns the URL to the local copy. + * @param useLocal - use local copy of feed listing file? * @return URL of local copy of feed info file * @throws Exception */ - public URL getFeedInfoFileURL() throws Exception { + public URL getFeedInfoFileURL(boolean useLocalCopy) throws Exception { + if (feedInfoFile == null) { + feedInfoFile = createFeedInfoFile(); + } + + if (useLocalCopy) { + // try to use local copy of the fee info file if it exists. + if (feedInfoFile != null && feedInfoFile.exists()) { + return feedInfoFile.toURL(); + } + else { + return null; + } + } + + // retrieve the feed info file from remote server and make a local copy of this file String pathStr = CarbideNewsReaderPlugin.getFeedManager().getProperty(FEED_INFO_FILE_KEY); if (pathStr != null) { URL fileUrl = new URL(pathStr); if (fileUrl != null) { - HttpURLConnection httpConnection = null; + HttpURLConnection connection = null; InputStream inputStream = null; try { - URLConnection connection = fileUrl.openConnection(); - httpConnection = (HttpURLConnection)connection; - httpConnection.connect(); - int responseCode = httpConnection.getResponseCode(); + connection = (HttpURLConnection) fileUrl.openConnection(); + setRequestHeaders(connection); + connection.connect(); + int responseCode = connection.getResponseCode(); handlesHttpErrorCode(responseCode); inputStream = connection.getInputStream(); if (inputStream != null) { - if (feedInfoFile == null) { - feedInfoFile = createFeedInfoFile(); - } if (feedInfoFile != null) { if (feedInfoFile.exists()) { feedInfoFile.delete(); @@ -138,8 +151,8 @@ } catch (Exception e) { CarbideNewsReaderPlugin.log(e); } finally { - if (httpConnection != null) { - httpConnection.disconnect(); + if (connection != null) { + connection.disconnect(); } if (inputStream != null) { inputStream.close(); @@ -147,6 +160,7 @@ } } } + return null; } @@ -205,8 +219,17 @@ } else if (responseCode >= 400 && responseCode < 500) { throw new Exception("The requested resource could not be found. HTTP Response code was:" + responseCode); } else if (responseCode >= 500 && responseCode < 600) { - throw new Exception("The server encounted an error. HTTP Response code was:" + responseCode); + throw new Exception("The server encountered an error. HTTP Response code was:" + responseCode); } } + /** + * Sets appropriate HTTP headers. + * @param connection - URL connection + */ + private void setRequestHeaders(URLConnection connection) { + // specify acceptable content types + connection.setRequestProperty("Accept", "*/xml"); + } + } diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SDKManager.java --- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SDKManager.java Sat Apr 25 12:54:10 2009 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SDKManager.java Mon Apr 27 15:07:35 2009 -0500 @@ -164,9 +164,6 @@ } } - // make sure we don't rescan over and over again - hasScannedSDKs = true; - } catch (MalformedURLException e) { e.printStackTrace(); } catch (URISyntaxException e) { @@ -176,6 +173,9 @@ } } + // make sure we don't rescan over and over again + hasScannedSDKs = true; + // tell others about it fireInstalledSdkChanged(SDKChangeEventType.eSDKScanned); scanCarbideSDKCache(); diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java --- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java Sat Apr 25 12:54:10 2009 -0500 +++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/model/SymbianSDK.java Mon Apr 27 15:07:35 2009 -0500 @@ -997,6 +997,17 @@ if (index > 0){ String osVersionString = versionTokens[2].substring(index+1, versionTokens[2].length()); + if (osVersionString.compareToIgnoreCase("tb91sf") == 0){ + setOSVersion(new Version("9.4.0")); + setSDKVersion(new Version("5.1.0")); + break; + } + + if (osVersionString.compareToIgnoreCase("tb92sf") == 0){ + setOSVersion(new Version("9.5.0")); + break; + } + if (osVersionString.endsWith(EKA1_A_BRANCH_IDENTIFIER) || osVersionString.endsWith(EKA2_B_BRANCH_IDENTIFIER) || osVersionString.endsWith(EKA1_S_BRANCH_IDENTIFIER)){ diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/sdk/core/processes/CheckS60CustKitSupport.java diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.sysdoc.hover/plugin.xml --- a/core/com.nokia.carbide.cpp.sysdoc.hover/plugin.xml Sat Apr 25 12:54:10 2009 -0500 +++ b/core/com.nokia.carbide.cpp.sysdoc.hover/plugin.xml Mon Apr 27 15:07:35 2009 -0500 @@ -52,7 +52,7 @@ class="com.nokia.carbide.cpp.sysdoc.internal.hover.view.DeveloperLibraryView" icon="icons/view.gif" id="com.nokia.carbide.cpp.sysdoc.internal.hover.view.DeveloperLibraryView" - name="Devloper Library"> + name="Developer Library"> diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.sysdoc.hover/resources/help context/dl_hover/html/getting_started.html --- a/core/com.nokia.carbide.cpp.sysdoc.hover/resources/help context/dl_hover/html/getting_started.html Sat Apr 25 12:54:10 2009 -0500 +++ b/core/com.nokia.carbide.cpp.sysdoc.hover/resources/help context/dl_hover/html/getting_started.html Mon Apr 27 15:07:35 2009 -0500 @@ -1,59 +1,58 @@ - - - - Overview in Hover Help Guide - - - - - - -
    - - -
    -
    -
    -
    - -
    -
    -

    Hover Help Overview

    - Hover Help provides a link - between the Carbide IDE and the Symbian OS C++ Developer Library. When activated, Hover Help - provides developers with easy access to the API reference documentation. When a - user hovers over a C++ API item, such as a class name, the editor shows the documentation for that API - reference. -

    - Hover Help uses Developer Library plug-ins. These are Eclipse - documentation plug-ins that contain the information displayed when an - API reference item is hovered over. -

    - You can download Developer Library plug-ins from the - Symbian Foundation website. -

    -
    - -
    -
    -

    - -
    -
    - - -
    -
    - -
    - + + + + Overview in Hover Help Guide + + + + + + +
    + + +
    +
    +
    +
    + +
    +
    +

    Hover Help Overview

    + Hover Help provides a link + between the Carbide IDE and the Symbian OS C++ Developer Library. When activated, Hover Help + provides developers with easy access to the API reference documentation. When a + user hovers over a C++ API item, such as a class name, the editor shows the documentation for that API + reference. +

    + Hover Help uses Developer Library plug-ins. These are Eclipse + documentation plug-ins that contain the information displayed when an + API reference item is hovered over. +

    + You can download Developer Library plug-ins from the + Symbian Foundation website. +

    +
    +

    NOTE If you experience problems connecting to the site, verify that the connection settings are correct in the Network Connections preference panel before trying again. This is especially important if a proxy setting is required to connect to the internet.

    +
    +
    +
    +
    +
    +

    + +
    +
    +
    +
    + +
    + diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp.sysdoc.hover/resources/help context/dl_hover/html/setup.html --- a/core/com.nokia.carbide.cpp.sysdoc.hover/resources/help context/dl_hover/html/setup.html Sat Apr 25 12:54:10 2009 -0500 +++ b/core/com.nokia.carbide.cpp.sysdoc.hover/resources/help context/dl_hover/html/setup.html Mon Apr 27 15:07:35 2009 -0500 @@ -1,105 +1,106 @@ - - - - Set Up in Hover Help Guide - - - - - - -
    - - - - -
    -
    -
    -
    - -
    -
    -

    Hover Help Set Up

    - This section describes the initial set up of Hover Help and how - to add a Developer Library plug-in. -

    -

    Developer Library Indexing

    - When the Carbide IDE starts, Hover Help automatically - prepares for its first use by indexing its Developer Library. -

    - This process takes a few seconds, and progress is displayed in the Progress view. -

    - If you cancel indexing from the Progress view, Hover Help will be - deactivated. You can reactivate Hover Help using - the preferences panel, - and the indexing will start again. -

    -
    -

    Adding a New Developer Library Plug-in

    - New versions of the Developer Library plug-in are published regularly. - You can configure Hover Help to use a new version as follows: -

      -
    1. - - - Obtain the latest Developer Library plug-in from the - Symbian Foundation website, - and copy the new plug-in into Carbide’s plugins directory. - -
    2. - -
    3. - - - Restart Carbide. - -
    4. - -
    5. - - - From the Window > Preferences > Carbide.c++ > Hover Help preferences panel, make sure the new added Developer Library - is selected. If not, select it from the Developer Libraries drop-down box. - -
    6. - -
    -
    -

    Activating Hover Help

    -

    - If Hover Help is deactivated, you can activate it from the - Window > Preferences > Carbide.c++ > Hover Help preferences panel by - unchecking the "Deactivate Hovering" option. -

    -

    - When you activate Hover Help, the checkbox - "Automatically select latest Developer Library" is automatically checked. -

    - If you need a particular Developer Library, uncheck the checkbox - "Automatically select latest Developer Library". - Then select a Developer Library from the Developer Libraries drop-down box. -
    -
    -
    -

    - -
    -
    -
    -
    -
    -
    -
    - - + + + + Set Up in Hover Help Guide + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +
    +

    Hover Help Set Up

    + This section describes the initial set up of Hover Help and how + to add a Developer Library plug-in. +

    +

    Developer Library Indexing

    + When the Carbide IDE starts, Hover Help automatically + prepares for its first use by indexing its Developer Library. +

    + This process takes a few seconds, and progress is displayed in the Progress view. +

    + If you cancel indexing from the Progress view, Hover Help will be + deactivated. You can reactivate Hover Help using + the preferences panel, + and the indexing will start again. +

    +
    +

    Adding a New Developer Library Plug-in

    + New versions of the Developer Library plug-in are published regularly. + You can configure Hover Help to use a new version as follows: +

      +
    1. + + + Obtain the latest Developer Library plug-in from the + Symbian Foundation website, + and copy the new plug-in into Carbide’s plugins directory. + +

      NOTE If you experience problems connecting to the site, verify that the connection settings are correct in the Network Connections preference panel before trying again. This is especially important if a proxy setting is required to connect to the internet.

      +
    2. + +
    3. + + + Restart Carbide. + +
    4. + +
    5. + + + From the Window > Preferences > Carbide.c++ > Hover Help preferences panel, make sure the new added Developer Library + is selected. If not, select it from the Developer Libraries drop-down box. + +
    6. + +
    +
    +

    Activating Hover Help

    +

    + If Hover Help is deactivated, you can activate it from the + Window > Preferences > Carbide.c++ > Hover Help preferences panel by + unchecking the "Deactivate Hovering" option. +

    +

    + When you activate Hover Help, the checkbox + "Automatically select latest Developer Library" is automatically checked. +

    + If you need a particular Developer Library, uncheck the checkbox + "Automatically select latest Developer Library". + Then select a Developer Library from the Developer Libraries drop-down box. +
    +
    +
    +

    + +
    +
    +
    +
    +
    +
    +
    + + diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp/icons/gold_header.png Binary file core/com.nokia.carbide.cpp/icons/gold_header.png has changed diff -r c937102a5510 -r c028612cc555 core/com.nokia.carbide.cpp/splash.bmp diff -r c937102a5510 -r c028612cc555 debuggercdi/com.nokia.carbide.cpp.debug.crashdebugger/html/gold_header.png Binary file debuggercdi/com.nokia.carbide.cpp.debug.crashdebugger/html/gold_header.png has changed diff -r c937102a5510 -r c028612cc555 debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/src/com/nokia/carbide/cpp/debug/kernelaware/testapi/SymbianOSViewTester.java --- a/debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/src/com/nokia/carbide/cpp/debug/kernelaware/testapi/SymbianOSViewTester.java Sat Apr 25 12:54:10 2009 -0500 +++ b/debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/src/com/nokia/carbide/cpp/debug/kernelaware/testapi/SymbianOSViewTester.java Mon Apr 27 15:07:35 2009 -0500 @@ -19,8 +19,7 @@ import com.freescale.cdt.debug.cw.core.CWPlugin; import com.nokia.carbide.cpp.debug.kernelaware.*; -import com.nokia.carbide.cpp.debug.kernelaware.ui.GenericTableTab; -import com.nokia.carbide.cpp.debug.kernelaware.ui.SymbianOSView; +import com.nokia.carbide.cpp.debug.kernelaware.ui.*; import org.eclipse.jface.viewers.*; import org.eclipse.swt.widgets.TabFolder; @@ -123,7 +122,13 @@ */ public static Text getFilterText(IViewPart viewPart) { Viewer viewer = getCurrentViewer(viewPart); - GenericTableTab tableTab = (GenericTableTab) viewer.getData("controller"); - return tableTab.getFilterText(); + Object data = viewer.getData("controller"); + if (data instanceof GenericTableTab) { + return ((GenericTableTab) data).getFilterText(); + } + else if (data instanceof OverviewTab) { + return ((OverviewTab) data).getFilterText(); + } + return null; } } diff -r c937102a5510 -r c028612cc555 debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/src/com/nokia/carbide/cpp/debug/kernelaware/ui/OverviewTab.java --- a/debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/src/com/nokia/carbide/cpp/debug/kernelaware/ui/OverviewTab.java Sat Apr 25 12:54:10 2009 -0500 +++ b/debuggercdi/com.nokia.carbide.cpp.debug.kernelaware/src/com/nokia/carbide/cpp/debug/kernelaware/ui/OverviewTab.java Mon Apr 27 15:07:35 2009 -0500 @@ -261,6 +261,7 @@ Tree tree = viewer.getTree(); tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1)); + viewer.setData("controller", this); //$NON-NLS-1$ return viewer; } @@ -277,4 +278,9 @@ viewer.refresh(); } } + + + public Text getFilterText() { + return filterText; + } } diff -r c937102a5510 -r c028612cc555 project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestBldInfView4.java --- a/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestBldInfView4.java Sat Apr 25 12:54:10 2009 -0500 +++ b/project/com.nokia.carbide.cpp.epoc.engine.tests/src/com/nokia/carbide/cpp/epoc/engine/tests/model/TestBldInfView4.java Mon Apr 27 15:07:35 2009 -0500 @@ -1257,5 +1257,54 @@ "AddingInsideConditional")); } + + public void testNamedExtension() throws Exception { + String text= "PRJ_MMPFILES\n"+ + "first.mmp\n"+ + "\n"+ + "PRJ_TESTEXTENSIONS\r\n" + + "start extension base\\config myExtension\r\n" + + "tool armcc\r\n"+ + "target zap_ma_ma\r\n"+ + "sources ..\\src\\file1.cpp sub\\file2.cpp\r\n"+ + "dependencies ..\\src\\file1 sub\\file2\r\n"+ + "\r\n" + + "end"; + + makeModel(text); + IBldInfView view = getView(config); + checkNoProblems(view); + + _testNamedExtension(view); + _testNamedExtension(view.getData()); + + commitTest(view, text); + } + + private void _testNamedExtension(IBldInfData bldInfData) { + IExtension ext = bldInfData.getTestExtensions().get(0); + assertNotNull(ext); + assertTrue(ext.isValid()); + assertNotNull(ext.getName()); + assertEquals("myExtension", ext.getName()); + } + + public void testModifyNamedExtension() { + makeModel("PRJ_EXTENSIONS\n"+ + "START EXTENSION base/graphics/svg\n"+ + "END\n"); + IBldInfView view = getView(config); + checkNoProblems(view); + + IExtension ext = view.getExtensions().get(0); + ext.setName("myExtension"); + assertNotNull(ext.getName()); + assertEquals("myExtension", ext.getName()); + commitTest(view, + "PRJ_EXTENSIONS\n"+ + "START EXTENSION base/graphics/svg myExtension\n"+ + "END\n"); + } + } diff -r c937102a5510 -r c028612cc555 project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/model/bldinf/IExtension.java --- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/model/bldinf/IExtension.java Sat Apr 25 12:54:10 2009 -0500 +++ b/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/model/bldinf/IExtension.java Mon Apr 27 15:07:35 2009 -0500 @@ -53,6 +53,12 @@ /** Access/modify the list of dependencies. No interpretation is performed. As in the bld.inf, no extension will be present. */ List getDependencies(); + /** Get the name associated with the extension, may be null for unnamed extension */ + String getName(); + + /** Set the name associated with the extension, may be null for unnamed extension */ + void setName(String name); + /** Get the tool name, may be null */ String getToolName(); diff -r c937102a5510 -r c028612cc555 project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/bldinf/Extension.java --- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/bldinf/Extension.java Sat Apr 25 12:54:10 2009 -0500 +++ b/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/bldinf/Extension.java Mon Apr 27 15:07:35 2009 -0500 @@ -33,6 +33,7 @@ private IPath targetPath; private IPath templatePath; private String toolName; + private String extensionName; public Extension() { } @@ -44,6 +45,7 @@ this.targetPath = other.targetPath; this.templatePath = other.templatePath; this.toolName = other.toolName; + this.extensionName = other.extensionName; } @Override @@ -60,6 +62,8 @@ + ((templatePath == null) ? 0 : templatePath.hashCode()); result = prime * result + ((toolName == null) ? 0 : toolName.hashCode()); + result = prime * result + + ((extensionName == null) ? 0 : extensionName.hashCode()); return result; } @@ -104,6 +108,11 @@ return false; } else if (!toolName.equalsIgnoreCase(other.toolName)) return false; + if (extensionName == null) { + if (other.extensionName != null) + return false; + } else if (!extensionName.equalsIgnoreCase(other.extensionName)) + return false; return true; } @@ -122,6 +131,14 @@ return dependencies; } + /* + * (non-Javadoc) + * @see com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension#getName() + */ + public String getName() { + return extensionName; + } + /* (non-Javadoc) * @see com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension#getOptions() */ @@ -157,6 +174,14 @@ return toolName; } + /* + * (non-Javadoc) + * @see com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension#setName(java.lang.String) + */ + public void setName(String name) { + extensionName = name; + } + /* (non-Javadoc) * @see com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension#setTargetPath(org.eclipse.core.runtime.IPath) */ diff -r c937102a5510 -r c028612cc555 project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/bldinf/ExtensionListConverter.java --- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/bldinf/ExtensionListConverter.java Sat Apr 25 12:54:10 2009 -0500 +++ b/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/internal/cpp/epoc/engine/model/bldinf/ExtensionListConverter.java Mon Apr 27 15:07:35 2009 -0500 @@ -77,6 +77,9 @@ return null; } extension.setTemplatePath(FileUtils.createPossiblyRelativePath(extensionStmt.getArguments().get(1).getValue())); + if (extensionStmt.getArguments().size() > 2) { + extension.setName(extensionStmt.getArguments().get(2).getValue()); + } for (IASTBldInfExtensionStatement stmt : extensionStmt.getList()) { if (stmt.getArguments() == null || stmt.getArguments().size() == 0) { bldInfView.addErrorMessage(Messages.getString("ExtensionListConverter.MissingArgumentsError"), stmt); //$NON-NLS-1$ @@ -137,6 +140,9 @@ IASTListNode arguments = ASTFactory.createListNode(" "); //$NON-NLS-1$ arguments.add(ASTFactory.createPreprocessorLiteralTextNode(EXTENSION_KEYWORD)); arguments.add(ASTFactory.createPreprocessorLiteralTextNode(bldInfView.pathString(extension.getTemplatePath()))); + if (extension.getName() != null) { + arguments.add(ASTFactory.createPreprocessorLiteralTextNode(extension.getName())); + } IASTListNode stmts = ASTBldInfFactory.createBldInfExtensionStatementList(); if (extension.getTargetPath() != null) { diff -r c937102a5510 -r c028612cc555 project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/BldInfImportWizard.java --- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/BldInfImportWizard.java Sat Apr 25 12:54:10 2009 -0500 +++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/BldInfImportWizard.java Mon Apr 27 15:07:35 2009 -0500 @@ -122,7 +122,7 @@ newProject = ProjectCorePlugin.createProject(projectName, rootDirectory.toOSString()); monitor.worked(1); - newProject.setSessionProperty(CarbideBuilderPlugin.SBSV2_PROJECT, Boolean.valueOf(bldInfSelectionPage.useSBSv2Builder())); + newProject.setSessionProperty(CarbideBuilderPlugin.SBSV2_PROJECT, Boolean.valueOf(useSBSv2Builder())); // TODO pass PKG file path to postProjectCreatedActions, currently passing null ProjectCorePlugin.postProjectCreatedActions(newProject, projectRelativePath, selectedConfigs, components, debugMMP, null, monitor); @@ -188,4 +188,8 @@ // setting the last page is good enough projectPropertiesPage.setPageComplete(false); } + + public boolean useSBSv2Builder() { + return bldInfSelectionPage.useSBSv2Builder(); + } } diff -r c937102a5510 -r c028612cc555 project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/MMPSelectionPage.java --- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/MMPSelectionPage.java Sat Apr 25 12:54:10 2009 -0500 +++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/MMPSelectionPage.java Mon Apr 27 15:07:35 2009 -0500 @@ -93,12 +93,11 @@ setErrorMessage(Messages.MMPSelectionPage_noMMPsSelectedError); return false; } - // if there are any new-style prj extensions, warn them that they won't be built + // if there are any unnamed new-style prj extensions, warn them that they won't be built // when not building the entire bld.inf. - boolean hasProjectExtensions = selectionUI.hasProjectExtensions(); - if (hasProjectExtensions && !areAllMakMakeReferencesChecked()) { - setMessage(Messages.MMPSelectionPage_prjExtensionsWarning, WARNING); - return true; + String warning = selectionUI.getExtensionsWarningMessage(); + if (warning != null) { + setMessage(warning, WARNING); } return true; } @@ -111,7 +110,7 @@ // know if we need to re-parse again if either of these changes, e.g. the user // hits back and selects a different bld.inf or set of configs if (visible) { - selectionUI.setBldInfFile(new Path(theWizard.getBldInfFile()), theWizard.getSelectedConfigs()); + selectionUI.setBldInfFile(new Path(theWizard.getBldInfFile()), theWizard.getSelectedConfigs(), theWizard.useSBSv2Builder()); } super.setVisible(visible); } diff -r c937102a5510 -r c028612cc555 project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/Messages.java --- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/Messages.java Sat Apr 25 12:54:10 2009 -0500 +++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/Messages.java Mon Apr 27 15:07:35 2009 -0500 @@ -71,8 +71,6 @@ public static String MMPSelectionPage_noMMPsSelectedError; - public static String MMPSelectionPage_prjExtensionsWarning; - public static String ProjectPropertiesPage_noProjectSpecifiedError; public static String ProjectPropertiesPage_projectExistsError; diff -r c937102a5510 -r c028612cc555 project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/messages.properties --- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/messages.properties Sat Apr 25 12:54:10 2009 -0500 +++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/importWizards/messages.properties Mon Apr 27 15:07:35 2009 -0500 @@ -29,7 +29,6 @@ MMPSelectionPage_sortByMMPNameCheckboxTooltip=Sorts the list alphabetically by name. Otherwise they are displayed in the order listed in the bld.inf file. MMPSelectionPage_noMMPsFoundWarning=Note: No mmp or extension make files were found in the bld.inf file. MMPSelectionPage_noMMPsSelectedError=Please select at least one mmp or extension makefile. -MMPSelectionPage_prjExtensionsWarning=Warning: This bld.inf contains project extensions (prj_extensions and/or prj_testextensions). These will only be built when building the entire bld.inf. BldInfImportWizard_title=File Import Wizard BldInfSelectionPage_title=Symbian OS Bld.inf file BldInfSelectionPage_description=Import an existing Symbian OS project diff -r c937102a5510 -r c028612cc555 qt/com.nokia.carbide.cpp.qt.core/META-INF/MANIFEST.MF --- a/qt/com.nokia.carbide.cpp.qt.core/META-INF/MANIFEST.MF Sat Apr 25 12:54:10 2009 -0500 +++ b/qt/com.nokia.carbide.cpp.qt.core/META-INF/MANIFEST.MF Mon Apr 27 15:07:35 2009 -0500 @@ -11,7 +11,7 @@ org.eclipse.jface, com.nokia.carbide.cpp.sdk.core, com.nokia.carbide.cpp.sdk.ui, - com.trolltech.qtcppproject;bundle-version="1.4.3" + com.trolltech.qtcppproject;bundle-version="1.5.0" Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-ActivationPolicy: lazy Export-Package: com.nokia.carbide.cpp.internal.qt.core diff -r c937102a5510 -r c028612cc555 qt/com.nokia.carbide.cpp.qt.test/META-INF/MANIFEST.MF --- a/qt/com.nokia.carbide.cpp.qt.test/META-INF/MANIFEST.MF Sat Apr 25 12:54:10 2009 -0500 +++ b/qt/com.nokia.carbide.cpp.qt.test/META-INF/MANIFEST.MF Mon Apr 27 15:07:35 2009 -0500 @@ -15,7 +15,7 @@ org.eclipse.core.resources, com.nokia.carbide.cpp.project.core, org.eclipse.cdt.core, - com.trolltech.qtcppproject;bundle-version="1.4.3", + com.trolltech.qtcppproject;bundle-version="1.5.0", com.nokia.carbide.cdt.builder Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-ActivationPolicy: lazy diff -r c937102a5510 -r c028612cc555 qt/com.nokia.carbide.cpp.qt.ui/META-INF/MANIFEST.MF --- a/qt/com.nokia.carbide.cpp.qt.ui/META-INF/MANIFEST.MF Sat Apr 25 12:54:10 2009 -0500 +++ b/qt/com.nokia.carbide.cpp.qt.ui/META-INF/MANIFEST.MF Mon Apr 27 15:07:35 2009 -0500 @@ -22,6 +22,6 @@ com.nokia.carbide.cdt.builder, org.eclipse.cdt.core, org.eclipse.ui.ide, - com.trolltech.qtcppproject;bundle-version="1.4.3" + com.trolltech.qtcppproject;bundle-version="1.5.0" Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-ActivationPolicy: lazy diff -r c937102a5510 -r c028612cc555 uidesigner/com.nokia.carbide.cpp.uidesigner.doc.user/html/images/gold_header.png Binary file uidesigner/com.nokia.carbide.cpp.uidesigner.doc.user/html/images/gold_header.png has changed diff -r c937102a5510 -r c028612cc555 uidesigner/com.nokia.carbide.cpp.uiq.doc.user/html/images/gold_header.png Binary file uidesigner/com.nokia.carbide.cpp.uiq.doc.user/html/images/gold_header.png has changed diff -r c937102a5510 -r c028612cc555 uidesigner/com.nokia.carbide.cpp.uiq.ui/src/com/nokia/carbide/cpp/uiq/ui/viewwizard/ViewWizardManager.java --- a/uidesigner/com.nokia.carbide.cpp.uiq.ui/src/com/nokia/carbide/cpp/uiq/ui/viewwizard/ViewWizardManager.java Sat Apr 25 12:54:10 2009 -0500 +++ b/uidesigner/com.nokia.carbide.cpp.uiq.ui/src/com/nokia/carbide/cpp/uiq/ui/viewwizard/ViewWizardManager.java Mon Apr 27 15:07:35 2009 -0500 @@ -17,9 +17,13 @@ /* START_USECASES: CU1, CU2 END_USECASES */ package com.nokia.carbide.cpp.uiq.ui.viewwizard; +import com.nokia.carbide.cpp.uiq.ui.UIQUserInterfacePlugin; import com.nokia.carbide.internal.api.templatewizard.ui.IWizardDataPage; import com.nokia.carbide.internal.api.templatewizard.ui.TemplateWizard; import com.nokia.carbide.template.engine.ITemplate; +import com.nokia.cpp.internal.api.utils.core.Check; +import com.nokia.cpp.internal.api.utils.core.Logging; +import com.nokia.cpp.internal.api.utils.ui.UITaskUtils; import com.nokia.sdt.component.*; import com.nokia.sdt.component.adapter.CommonAttributes; import com.nokia.sdt.component.adapter.IAttributes; @@ -34,16 +38,11 @@ import com.nokia.sdt.editor.EditorServices; import com.nokia.sdt.editor.IDesignerDataModelEditor; import com.nokia.sdt.emf.dm.*; -import com.nokia.carbide.cpp.internal.featureTracker.FeatureUseTrackerConsts; -import com.nokia.carbide.cpp.internal.featureTracker.FeatureUseTrackerPlugin; -import com.nokia.carbide.cpp.uiq.ui.UIQUserInterfacePlugin; import com.nokia.sdt.sourcegen.*; import com.nokia.sdt.symbian.dm.*; import com.nokia.sdt.symbian.ui.UIPlugin; import com.nokia.sdt.symbian.workspace.ISymbianProjectContext; import com.nokia.sdt.symbian.workspace.impl.ProjectContextProvider; -import com.nokia.cpp.internal.api.utils.core.*; -import com.nokia.cpp.internal.api.utils.ui.UITaskUtils; import com.nokia.sdt.workspace.*; import org.eclipse.cdt.core.model.*; @@ -271,7 +270,6 @@ * */ public ViewWizardManager() { - FeatureUseTrackerPlugin.getFeatureUseProxy().startUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER); dataModelProvider = new DesignerDataModelProvider(); ComponentSystem cs = ComponentSystem.getComponentSystem(); try { @@ -1023,7 +1021,6 @@ disposeStoredModel(ROOT_MODEL_KEY); } disposeStoredModel(VIEW_MODEL_KEY); - FeatureUseTrackerPlugin.getFeatureUseProxy().stopUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER); } public void disposeStoredModel(String modelKey) { diff -r c937102a5510 -r c028612cc555 uidesigner/com.nokia.sdt.series60.componentlibrary/src/com/nokia/sdt/series60/viewwizard/ViewWizardManager.java --- a/uidesigner/com.nokia.sdt.series60.componentlibrary/src/com/nokia/sdt/series60/viewwizard/ViewWizardManager.java Sat Apr 25 12:54:10 2009 -0500 +++ b/uidesigner/com.nokia.sdt.series60.componentlibrary/src/com/nokia/sdt/series60/viewwizard/ViewWizardManager.java Mon Apr 27 15:07:35 2009 -0500 @@ -228,7 +228,6 @@ * */ public ViewWizardManager() { - FeatureUseTrackerPlugin.getFeatureUseProxy().startUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER); dataModelProvider = new DesignerDataModelProvider(); ComponentSystem cs = ComponentSystem.getComponentSystem(); try { @@ -916,7 +915,6 @@ disposeStoredModel(ROOT_MODEL_KEY); } disposeStoredModel(VIEW_MODEL_KEY); - FeatureUseTrackerPlugin.getFeatureUseProxy().stopUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER); } public void disposeStoredModel(String modelKey) { diff -r c937102a5510 -r c028612cc555 uidesigner/com.nokia.sdt.symbian.ui/src/com/nokia/sdt/symbian/ui/appeditor/ApplicationEditor.java --- a/uidesigner/com.nokia.sdt.symbian.ui/src/com/nokia/sdt/symbian/ui/appeditor/ApplicationEditor.java Sat Apr 25 12:54:10 2009 -0500 +++ b/uidesigner/com.nokia.sdt.symbian.ui/src/com/nokia/sdt/symbian/ui/appeditor/ApplicationEditor.java Mon Apr 27 15:07:35 2009 -0500 @@ -155,7 +155,8 @@ } protected IStatus preLoadInput(IProgressMonitor monitor) { - FeatureUseTrackerPlugin.getFeatureUseProxy().startUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER); + if (!EditorServices.isAnyEditorOpen()) + FeatureUseTrackerPlugin.getFeatureUseProxy().startUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER); IFile file = ResourceUtil.getFile(getEditorInput()); WorkspaceContext wc = WorkspaceContext.getContext(); IDesignerDataModelSpecifier modelSpecifier = wc.findSpecifierForResource(file); @@ -292,8 +293,9 @@ * Subclasses may extend. */ public void dispose() { - FeatureUseTrackerPlugin.getFeatureUseProxy().stopUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER); super.dispose(); + if (!EditorServices.isAnyEditorOpen()) + FeatureUseTrackerPlugin.getFeatureUseProxy().stopUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER); } /** diff -r c937102a5510 -r c028612cc555 uidesigner/com.nokia.sdt.uidesigner/src/com/nokia/sdt/uidesigner/ui/DesignerEditor.java --- a/uidesigner/com.nokia.sdt.uidesigner/src/com/nokia/sdt/uidesigner/ui/DesignerEditor.java Sat Apr 25 12:54:10 2009 -0500 +++ b/uidesigner/com.nokia.sdt.uidesigner/src/com/nokia/sdt/uidesigner/ui/DesignerEditor.java Mon Apr 27 15:07:35 2009 -0500 @@ -20,6 +20,7 @@ import com.nokia.carbide.cpp.internal.featureTracker.FeatureUseTrackerConsts; import com.nokia.carbide.cpp.internal.featureTracker.FeatureUseTrackerPlugin; +import com.nokia.sdt.editor.EditorServices; import com.nokia.sdt.uidesigner.ui.utils.Strings; import com.nokia.cpp.internal.api.utils.core.Logging; import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils; @@ -56,7 +57,8 @@ @Override protected IStatus doLoadInput(IProgressMonitor monitor) { - FeatureUseTrackerPlugin.getFeatureUseProxy().startUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER); + if (!EditorServices.isAnyEditorOpen()) + FeatureUseTrackerPlugin.getFeatureUseProxy().startUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER); return super.doLoadInput(monitor); } @@ -64,7 +66,8 @@ public void dispose() { super.dispose(); designerEditorPage = null; // page will be disposed by superclass - FeatureUseTrackerPlugin.getFeatureUseProxy().stopUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER); + if (!EditorServices.isAnyEditorOpen()) + FeatureUseTrackerPlugin.getFeatureUseProxy().stopUsingFeature(FeatureUseTrackerConsts.CARBIDE_UI_DESIGNER); } @Override