Skip to content

feat: added csv functionalities #2785

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Jul 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature android:name="android.hardware.usb.host" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<application
android:label="PSLab"
android:name="${applicationName}"
android:icon="@drawable/launcher_icon"
android:roundIcon="@drawable/launcher_icon_round">
android:roundIcon="@drawable/launcher_icon_round"
android:requestLegacyExternalStorage="true"
tools:ignore="ScopedStorage">
<activity
android:name=".MainActivity"
android:exported="true"
Expand Down Expand Up @@ -47,5 +54,6 @@
<action android:name="android.intent.action.PROCESS_TEXT"/>
<data android:mimeType="text/plain"/>
</intent>
<package android:name="com.android.externalstorage.documents" />
</queries>
</manifest>
4 changes: 4 additions & 0 deletions ios/Runner/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,9 @@
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>UIFileSharingEnabled</key>
<true/>
</dict>
</plist>
27 changes: 27 additions & 0 deletions lib/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,33 @@
"baroMeterBulletPoint2": "If you want to use the sensor BMP-180, connect the sensor to PSLab device as shown in the figure.",
"baroMeterBulletPoint3": "The above pin configuration has to be same except for the pin GND. GND is meant for Ground and any of the PSLab device GND pins can be used since they are common.",
"baroMeterBulletPoint4": "Select the sensor by going to the Configure tab from the bottom navigation bar and choose BMP-180 in the drop down menu under Select Sensor.",
"sharingMessage" : "Sharing PSLab Data",
"delete" : "Delete",
"deleteHint": "Are you sure you want to delete this file?",
"deleteFile" : "Delete File",
"deleteAllData" : "Delete All Data",
"deleteCautionMessage" : "Are you sure you want to delete all logged data for this instrument?",
"deleteAll" : "Delete All",
"noLoggedData" : "No logged data found.",
"importLog" : "Import Log",
"failedToSave" : "Failed to save file. No data was recorded.",
"fileSaved" : "File saved",
"save" : "Save",
"enterFileName" : "Enter filename (leave empty for auto-generated name)",
"fileName" : "Filename",
"saveRecording" : "Save Recording",
"recordingStarted" : "Recording started",
"noValidData" : "No valid data to display.",
"csvPickingError" : "Error picking or reading CSV file",
"csvReadingError" : "Error reading CSV from file",
"sharingError" : "Error sharing file",
"csvGettingError" : "Error getting saved files",
"unsupportedPlatform" : "Unsupported platform",
"noDataRecorded" : "No data recorded to save for",
"csvFileSaved" : "CSV file saved at",
"csvSavingError" : "Error saving CSV file",
"csvDeletingError" : "Error deleting file",
"fileDeleted" : "File deleted",
"soundmeterConfig" : "Soundmeter Configurations",
"barometerConfig" : "Barometer Configurations",
"baroUpdatePeriodHint" : "Please provide time interval at which data will be updated (100 ms to 2000 ms)",
Expand Down
162 changes: 162 additions & 0 deletions lib/l10n/app_localizations.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1930,6 +1930,168 @@ abstract class AppLocalizations {
/// **'Select the sensor by going to the Configure tab from the bottom navigation bar and choose BMP-180 in the drop down menu under Select Sensor.'**
String get baroMeterBulletPoint4;

/// No description provided for @sharingMessage.
///
/// In en, this message translates to:
/// **'Sharing PSLab Data'**
String get sharingMessage;

/// No description provided for @delete.
///
/// In en, this message translates to:
/// **'Delete'**
String get delete;

/// No description provided for @deleteHint.
///
/// In en, this message translates to:
/// **'Are you sure you want to delete this file?'**
String get deleteHint;

/// No description provided for @deleteFile.
///
/// In en, this message translates to:
/// **'Delete File'**
String get deleteFile;

/// No description provided for @deleteAllData.
///
/// In en, this message translates to:
/// **'Delete All Data'**
String get deleteAllData;

/// No description provided for @deleteCautionMessage.
///
/// In en, this message translates to:
/// **'Are you sure you want to delete all logged data for this instrument?'**
String get deleteCautionMessage;

/// No description provided for @deleteAll.
///
/// In en, this message translates to:
/// **'Delete All'**
String get deleteAll;

/// No description provided for @noLoggedData.
///
/// In en, this message translates to:
/// **'No logged data found.'**
String get noLoggedData;

/// No description provided for @importLog.
///
/// In en, this message translates to:
/// **'Import Log'**
String get importLog;

/// No description provided for @failedToSave.
///
/// In en, this message translates to:
/// **'Failed to save file. No data was recorded.'**
String get failedToSave;

/// No description provided for @fileSaved.
///
/// In en, this message translates to:
/// **'File saved'**
String get fileSaved;

/// No description provided for @save.
///
/// In en, this message translates to:
/// **'Save'**
String get save;

/// No description provided for @enterFileName.
///
/// In en, this message translates to:
/// **'Enter filename (leave empty for auto-generated name)'**
String get enterFileName;

/// No description provided for @fileName.
///
/// In en, this message translates to:
/// **'Filename'**
String get fileName;

/// No description provided for @saveRecording.
///
/// In en, this message translates to:
/// **'Save Recording'**
String get saveRecording;

/// No description provided for @recordingStarted.
///
/// In en, this message translates to:
/// **'Recording started'**
String get recordingStarted;

/// No description provided for @noValidData.
///
/// In en, this message translates to:
/// **'No valid data to display.'**
String get noValidData;

/// No description provided for @csvPickingError.
///
/// In en, this message translates to:
/// **'Error picking or reading CSV file'**
String get csvPickingError;

/// No description provided for @csvReadingError.
///
/// In en, this message translates to:
/// **'Error reading CSV from file'**
String get csvReadingError;

/// No description provided for @sharingError.
///
/// In en, this message translates to:
/// **'Error sharing file'**
String get sharingError;

/// No description provided for @csvGettingError.
///
/// In en, this message translates to:
/// **'Error getting saved files'**
String get csvGettingError;

/// No description provided for @unsupportedPlatform.
///
/// In en, this message translates to:
/// **'Unsupported platform'**
String get unsupportedPlatform;

/// No description provided for @noDataRecorded.
///
/// In en, this message translates to:
/// **'No data recorded to save for'**
String get noDataRecorded;

/// No description provided for @csvFileSaved.
///
/// In en, this message translates to:
/// **'CSV file saved at'**
String get csvFileSaved;

/// No description provided for @csvSavingError.
///
/// In en, this message translates to:
/// **'Error saving CSV file'**
String get csvSavingError;

/// No description provided for @csvDeletingError.
///
/// In en, this message translates to:
/// **'Error deleting file'**
String get csvDeletingError;

/// No description provided for @fileDeleted.
///
/// In en, this message translates to:
/// **'File deleted'**
String get fileDeleted;

/// No description provided for @soundmeterConfig.
///
/// In en, this message translates to:
Expand Down
82 changes: 82 additions & 0 deletions lib/l10n/app_localizations_en.dart
Original file line number Diff line number Diff line change
Expand Up @@ -987,6 +987,88 @@ class AppLocalizationsEn extends AppLocalizations {
'Select the sensor by going to the Configure tab from the bottom navigation bar and choose BMP-180 in the drop down menu under Select Sensor.';

@override
String get sharingMessage => 'Sharing PSLab Data';

@override
String get delete => 'Delete';

@override
String get deleteHint => 'Are you sure you want to delete this file?';

@override
String get deleteFile => 'Delete File';

@override
String get deleteAllData => 'Delete All Data';

@override
String get deleteCautionMessage =>
'Are you sure you want to delete all logged data for this instrument?';

@override
String get deleteAll => 'Delete All';

@override
String get noLoggedData => 'No logged data found.';

@override
String get importLog => 'Import Log';

@override
String get failedToSave => 'Failed to save file. No data was recorded.';

@override
String get fileSaved => 'File saved';

@override
String get save => 'Save';

@override
String get enterFileName =>
'Enter filename (leave empty for auto-generated name)';

@override
String get fileName => 'Filename';

@override
String get saveRecording => 'Save Recording';

@override
String get recordingStarted => 'Recording started';

@override
String get noValidData => 'No valid data to display.';

@override
String get csvPickingError => 'Error picking or reading CSV file';

@override
String get csvReadingError => 'Error reading CSV from file';

@override
String get sharingError => 'Error sharing file';

@override
String get csvGettingError => 'Error getting saved files';

@override
String get unsupportedPlatform => 'Unsupported platform';

@override
String get noDataRecorded => 'No data recorded to save for';

@override
String get csvFileSaved => 'CSV file saved at';

@override
String get csvSavingError => 'Error saving CSV file';

@override
String get csvDeletingError => 'Error deleting file';

@override
String get fileDeleted => 'File deleted';

String get soundmeterConfig => 'Soundmeter Configurations';

@override
Expand Down
Loading
Loading