From 6df88a4c02f15b0e4d6fc06587ce7cee841b52d4 Mon Sep 17 00:00:00 2001 From: Thodoris1999 Date: Fri, 17 Aug 2018 20:25:57 +0300 Subject: [PATCH 01/18] ui adjustments --- .../activities/upload/UploadActivity.java | 8 ---- .../upload/UploadFieldsBuilderActivity.java | 2 +- app/src/main/res/layout/activity_upload.xml | 46 +++++++++++-------- app/src/main/res/values/strings.xml | 3 +- 4 files changed, 30 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java index 61a02884..051af6ea 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java @@ -5,16 +5,12 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ResolveInfo; -import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.provider.MediaStore; -import android.provider.OpenableColumns; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import android.support.v7.app.AlertDialog; import android.support.v7.content.res.AppCompatResources; import android.support.v7.preference.PreferenceManager; @@ -37,12 +33,8 @@ import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java index 0cd8eb70..6b8426b5 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java @@ -87,7 +87,7 @@ public class UploadFieldsBuilderActivity extends AppCompatActivity { //Initialize toolbar Toolbar toolbar = findViewById(R.id.toolbar); - toolbar.setTitle("Upload fields builder"); + toolbar.setTitle(R.string.upload_fields_builder_toolbar_title); setSupportActionBar(toolbar); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); diff --git a/app/src/main/res/layout/activity_upload.xml b/app/src/main/res/layout/activity_upload.xml index c80c3ada..70cbbed2 100644 --- a/app/src/main/res/layout/activity_upload.xml +++ b/app/src/main/res/layout/activity_upload.xml @@ -117,25 +117,33 @@ android:maxLines="3" /> - - - + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 879671a4..b3b51708 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -129,7 +129,7 @@ September Select year Year - Build + Generate Settings @@ -156,4 +156,5 @@ Uploading App signature If enabled, an \"uploaded from mTHMMY\" message will be inserted at the end of your uploads descriptions + Upload fields generator From 4fb0c2837632abc93856a18f33f2c4091eb83e2f Mon Sep 17 00:00:00 2001 From: Apostolof Date: Fri, 31 Aug 2018 22:30:39 +0300 Subject: [PATCH 02/18] Uploads fixes --- .../activities/upload/UploadActivity.java | 218 +++++++----------- .../activities/upload/UploadsHelper.java | 34 ++- 2 files changed, 113 insertions(+), 139 deletions(-) diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java index 61a02884..23a1f6b1 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java @@ -4,17 +4,12 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.content.pm.ResolveInfo; -import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.provider.MediaStore; -import android.provider.OpenableColumns; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import android.support.v7.app.AlertDialog; import android.support.v7.content.res.AppCompatResources; import android.support.v7.preference.PreferenceManager; @@ -37,17 +32,12 @@ import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; -import java.util.List; import java.util.Locale; import gr.thmmy.mthmmy.R; @@ -73,12 +63,15 @@ public class UploadActivity extends BaseActivity { */ public static final String BUNDLE_UPLOAD_CATEGORY = "UPLOAD_CATEGORY"; private static final String uploadIndexUrl = "https://www.thmmy.gr/smf/index.php?action=tpmod;dl=upload"; - private static final String uploadedFrommThmmyPromptHtml = "
uploaded from mTHMMY"; - private static final int REQUEST_CODE_CHOOSE_FILE = 8; - private static final int REQUEST_CODE_CAMERA = 4; - private static final int REQUEST_CODE_FIELDS_BUILDER = 74; + private static final String uploadedFromThmmyPromptHtml = "
uploaded from mTHMMY"; + /** + * Request codes used in activities for result (AFR) calls + */ + private static final int AFR_REQUEST_CODE_CHOOSE_FILE = 8; + private static final int AFR_REQUEST_CODE_CAMERA = 4; + private static final int AFR_REQUEST_CODE_FIELDS_BUILDER = 74; - private static ArrayList uploadRootCategories = new ArrayList<>(); + private ArrayList uploadRootCategories = new ArrayList<>(); private ParseUploadPageTask parseUploadPageTask; private ArrayList bundleCategory; private String categorySelected = "-1"; @@ -95,7 +88,6 @@ public class UploadActivity extends BaseActivity { private EditText uploadDescription; private AppCompatButton titleDescriptionBuilderButton; private AppCompatButton selectFileButton; - //private static AppCompatButton titleDescriptionBuilderButton; @Override protected void onCreate(Bundle savedInstanceState) { @@ -141,7 +133,7 @@ public class UploadActivity extends BaseActivity { titleDescriptionBuilderButton = findViewById(R.id.upload_title_description_builder); titleDescriptionBuilderButton.setOnClickListener(view -> { if (categorySelected.equals("-1")) { - Toast.makeText(view.getContext(), "Please choose category first", Toast.LENGTH_SHORT).show(); + Toast.makeText(view.getContext(), "Please choose a category first", Toast.LENGTH_SHORT).show(); return; } @@ -186,15 +178,15 @@ public class UploadActivity extends BaseActivity { } //Fixes course and semester - maybeCourse = maybeCourse.replaceAll("-", "").replace("(ΝΠΣ)", "").trim(); - maybeSemester = maybeSemester.replaceAll("-", "").trim().substring(0, 1); + String course = maybeCourse.replaceAll("-", "").replace("(ΝΠΣ)", "").trim(); + String semester = maybeSemester.replaceAll("-", "").trim().substring(0, 1); Intent intent = new Intent(UploadActivity.this, UploadFieldsBuilderActivity.class); Bundle builderExtras = new Bundle(); - builderExtras.putString(BUNDLE_UPLOAD_FIELD_BUILDER_COURSE, maybeCourse); - builderExtras.putString(BUNDLE_UPLOAD_FIELD_BUILDER_SEMESTER, maybeSemester); + builderExtras.putString(BUNDLE_UPLOAD_FIELD_BUILDER_COURSE, course); + builderExtras.putString(BUNDLE_UPLOAD_FIELD_BUILDER_SEMESTER, semester); intent.putExtras(builderExtras); - startActivityForResult(intent, REQUEST_CODE_FIELDS_BUILDER); + startActivityForResult(intent, AFR_REQUEST_CODE_FIELDS_BUILDER); }); titleDescriptionBuilderButton.setEnabled(false); @@ -211,21 +203,11 @@ public class UploadActivity extends BaseActivity { builder.setTitle("Upload file"); builder.setItems(options, (dialog, item) -> { if (options[item].equals("Take photo")) { - /*Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); - startActivityForResult(intent, REQUEST_CODE_CAMERA);*/ - Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); takePhotoIntent.putExtra("return-data", true); - takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(UploadsHelper.getTempFile(this))); - - Intent targetedIntent = new Intent(takePhotoIntent); - List resInfo = this.getPackageManager().queryIntentActivities(takePhotoIntent, 0); - for (ResolveInfo resolveInfo : resInfo) { - String packageName = resolveInfo.activityInfo.packageName; - targetedIntent.setPackage(packageName); - } - startActivityForResult(takePhotoIntent, REQUEST_CODE_CAMERA); + takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(UploadsHelper.getCacheFile(this))); + startActivityForResult(takePhotoIntent, AFR_REQUEST_CODE_CAMERA); } else if (options[item].equals("Choose file")) { String[] mimeTypes = {"image/jpeg", "text/html", "image/png", "image/jpg", "image/gif", "application/pdf", "application/rar", "application/x-tar", "application/zip", @@ -236,7 +218,7 @@ public class UploadActivity extends BaseActivity { .setType("image/jpeg") .putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes); - startActivityForResult(intent, REQUEST_CODE_CHOOSE_FILE); + startActivityForResult(intent, AFR_REQUEST_CODE_CHOOSE_FILE); } else if (options[item].equals("Cancel")) { dialog.dismiss(); } @@ -245,6 +227,8 @@ public class UploadActivity extends BaseActivity { }); findViewById(R.id.upload_upload_button).setOnClickListener(view -> { + progressBar.setVisibility(View.VISIBLE); + String uploadTitleText = uploadTitle.getText().toString(); String uploadDescriptionText = uploadDescription.getText().toString(); @@ -262,15 +246,14 @@ public class UploadActivity extends BaseActivity { return; } - String tmpDescriptionText = uploadDescriptionText; - SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(view.getContext()); if (sharedPrefs.getBoolean(UPLOADING_APP_SIGNATURE_ENABLE_KEY, true)) { - tmpDescriptionText += uploadedFrommThmmyPromptHtml; + uploadDescriptionText += uploadedFromThmmyPromptHtml; } String tempFilePath = null; if (uploadFilename != null) { + //File should be uploaded with a certain name. Temporarily copies the file and renames it tempFilePath = UploadsHelper.createTempFile(this, fileUri, uploadFilename); if (tempFilePath == null) { //Something went wrong, abort @@ -279,12 +262,11 @@ public class UploadActivity extends BaseActivity { } try { - final String finalTempFilePath = tempFilePath; new MultipartUploadRequest(view.getContext(), uploadIndexUrl) .setUtf8Charset() .addParameter("tp-dluploadtitle", uploadTitleText) .addParameter("tp-dluploadcat", categorySelected) - .addParameter("tp-dluploadtext", tmpDescriptionText) + .addParameter("tp-dluploadtext", uploadDescriptionText) .addFileToUpload(tempFilePath == null ? fileUri.toString() : tempFilePath @@ -302,29 +284,21 @@ public class UploadActivity extends BaseActivity { public void onError(Context context, UploadInfo uploadInfo, ServerResponse serverResponse, Exception exception) { Toast.makeText(context, "Upload failed", Toast.LENGTH_SHORT).show(); - if (finalTempFilePath != null) { - if (!UploadsHelper.deleteTempFile(finalTempFilePath)) { - Toast.makeText(context, "Failed to delete temporary file", Toast.LENGTH_SHORT).show(); - } - } + UploadsHelper.deleteTempFiles(); + progressBar.setVisibility(View.GONE); } @Override public void onCompleted(Context context, UploadInfo uploadInfo, ServerResponse serverResponse) { - if (finalTempFilePath != null) { - if (!UploadsHelper.deleteTempFile(finalTempFilePath)) { - Toast.makeText(context, "Failed to delete temporary file", Toast.LENGTH_SHORT).show(); - } - } + Toast.makeText(context, "Upload completed successfully", Toast.LENGTH_SHORT).show(); + UploadsHelper.deleteTempFiles(); + progressBar.setVisibility(View.GONE); } @Override public void onCancelled(Context context, UploadInfo uploadInfo) { - if (finalTempFilePath != null) { - if (!UploadsHelper.deleteTempFile(finalTempFilePath)) { - Toast.makeText(context, "Failed to delete temporary file", Toast.LENGTH_SHORT).show(); - } - } + UploadsHelper.deleteTempFiles(); + progressBar.setVisibility(View.GONE); } }) .startUpload(); @@ -334,36 +308,12 @@ public class UploadActivity extends BaseActivity { }); if (uploadRootCategories.isEmpty()) { + //Parses the uploads page parseUploadPageTask = new ParseUploadPageTask(); parseUploadPageTask.execute(uploadIndexUrl); } else { - String[] tmpSpinnerArray = new String[uploadRootCategories.size()]; - for (int i = 0; i < uploadRootCategories.size(); ++i) { - tmpSpinnerArray[i] = uploadRootCategories.get(i).getCategoryTitle(); - } - - ArrayAdapter spinnerArrayAdapter = new ArrayAdapter<>(BaseApplication.getInstance().getApplicationContext(), - android.R.layout.simple_spinner_dropdown_item, tmpSpinnerArray); - spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - rootCategorySpinner.setAdapter(spinnerArrayAdapter); - - //Sets bundle selection - if (bundleCategory != null) { - int bundleSelectionIndex = -1, currentIndex = 0; - for (UploadCategory category : uploadRootCategories) { - if (bundleCategory.get(0).contains(category.getCategoryTitle())) { - bundleSelectionIndex = currentIndex; - break; - } - ++currentIndex; - } - - if (bundleSelectionIndex != -1) { - rootCategorySpinner.setSelection(bundleSelectionIndex, true); - bundleCategory.remove(0); - } - } - + //Renders the already parsed data + updateUIElements(); titleDescriptionBuilderButton.setEnabled(true); } } @@ -392,8 +342,8 @@ public class UploadActivity extends BaseActivity { @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == REQUEST_CODE_CHOOSE_FILE && data != null) { - if (resultCode == Activity.RESULT_CANCELED) { + if (requestCode == AFR_REQUEST_CODE_CHOOSE_FILE) { + if (resultCode == Activity.RESULT_CANCELED || data == null) { return; } @@ -422,38 +372,39 @@ public class UploadActivity extends BaseActivity { fileIcon = "blank.gif"; } } - } else if (requestCode == REQUEST_CODE_CAMERA) { + } else if (requestCode == AFR_REQUEST_CODE_CAMERA) { if (resultCode == Activity.RESULT_CANCELED) { return; } Bitmap bitmap; - File cacheImageFile = UploadsHelper.getTempFile(this); - if (resultCode == Activity.RESULT_OK) { - fileUri = Uri.fromFile(cacheImageFile); - fileIcon = "jpg_image.gif"; - - bitmap = UploadsHelper.getImageResized(this, fileUri); - int rotation = UploadsHelper.getRotation(this, fileUri); - bitmap = UploadsHelper.rotate(bitmap, rotation); - - try { - FileOutputStream out = new FileOutputStream(cacheImageFile); - bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); - out.flush(); - out.close(); - } catch (Exception e) { - e.printStackTrace(); - } + File cacheImageFile = UploadsHelper.getCacheFile(this); - String newFilename = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.FRANCE). - format(new Date()); - fileUri = Uri.parse(UploadsHelper.createTempFile(this, fileUri, newFilename)); + Uri cacheFileUri = Uri.fromFile(cacheImageFile); + fileIcon = "jpg_image.gif"; - newFilename += ".jpg"; - selectFileButton.setText(newFilename); + bitmap = UploadsHelper.getImageResized(this, cacheFileUri); + int rotation = UploadsHelper.getRotation(this, cacheFileUri); + bitmap = UploadsHelper.rotate(bitmap, rotation); + + try { + FileOutputStream out = new FileOutputStream(cacheImageFile); + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); + out.flush(); + out.close(); + } catch (Exception e) { + e.printStackTrace(); } - } else if (requestCode == REQUEST_CODE_FIELDS_BUILDER) { + + String newFilename = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.FRANCE). + format(new Date()); + fileUri = Uri.parse(UploadsHelper.createTempFile(this, cacheFileUri, newFilename)); + + newFilename += ".jpg"; + selectFileButton.setText(newFilename); + + UploadsHelper.deleteCacheFiles(this); + } else if (requestCode == AFR_REQUEST_CODE_FIELDS_BUILDER) { if (resultCode == Activity.RESULT_CANCELED) { return; } @@ -578,7 +529,7 @@ public class UploadActivity extends BaseActivity { UploadCategory secondLevelCategory = firstLevelCategory.getSubCategories().get(firstLevelCategory.getSubCategories().size() - 1); secondLevelCategory.addSubCategory(categoryValue, categoryText); } else if (categoryText.startsWith("---- ")) { - //This is a level three subcategory + //This is a level four subcategory UploadCategory rootLevelCategory = uploadRootCategories.get(uploadRootCategories.size() - 1); UploadCategory firstLevelCategory = rootLevelCategory.getSubCategories().get(rootLevelCategory.getSubCategories().size() - 1); UploadCategory secondLevelCategory = firstLevelCategory.getSubCategories().get(firstLevelCategory.getSubCategories().size() - 1); @@ -593,36 +544,39 @@ public class UploadActivity extends BaseActivity { @Override protected void postExecution(ResultCode result) { - String[] tmpSpinnerArray = new String[uploadRootCategories.size()]; - for (int i = 0; i < uploadRootCategories.size(); ++i) { - tmpSpinnerArray[i] = uploadRootCategories.get(i).getCategoryTitle(); - } + updateUIElements(); + titleDescriptionBuilderButton.setEnabled(true); + progressBar.setVisibility(ProgressBar.GONE); + } + } - ArrayAdapter spinnerArrayAdapter = new ArrayAdapter<>(BaseApplication.getInstance().getApplicationContext(), - android.R.layout.simple_spinner_dropdown_item, tmpSpinnerArray); - spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - rootCategorySpinner.setAdapter(spinnerArrayAdapter); + private void updateUIElements() { + String[] tmpSpinnerArray = new String[uploadRootCategories.size()]; + for (int i = 0; i < uploadRootCategories.size(); ++i) { + tmpSpinnerArray[i] = uploadRootCategories.get(i).getCategoryTitle(); + } - //Sets bundle selection - if (bundleCategory != null) { - int bundleSelectionIndex = -1, currentIndex = 0; + ArrayAdapter spinnerArrayAdapter = new ArrayAdapter<>(BaseApplication.getInstance().getApplicationContext(), + android.R.layout.simple_spinner_dropdown_item, tmpSpinnerArray); + spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + rootCategorySpinner.setAdapter(spinnerArrayAdapter); - for (UploadCategory category : uploadRootCategories) { - if (bundleCategory.get(0).contains(category.getCategoryTitle())) { - bundleSelectionIndex = currentIndex; - break; - } - ++currentIndex; - } + //Sets bundle selection + if (bundleCategory != null) { + int bundleSelectionIndex = -1, currentIndex = 0; - if (bundleSelectionIndex != -1) { - rootCategorySpinner.setSelection(bundleSelectionIndex, true); - bundleCategory.remove(0); + for (UploadCategory category : uploadRootCategories) { + if (bundleCategory.get(0).contains(category.getCategoryTitle())) { + bundleSelectionIndex = currentIndex; + break; } + ++currentIndex; } - titleDescriptionBuilderButton.setEnabled(true); - progressBar.setVisibility(ProgressBar.GONE); + if (bundleSelectionIndex != -1) { + rootCategorySpinner.setSelection(bundleSelectionIndex, true); + bundleCategory.remove(0); + } } } } \ No newline at end of file diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadsHelper.java b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadsHelper.java index 9a2be209..9529d402 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadsHelper.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadsHelper.java @@ -8,6 +8,7 @@ import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.media.ExifInterface; import android.net.Uri; +import android.os.Environment; import android.provider.OpenableColumns; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -25,7 +26,7 @@ import timber.log.Timber; class UploadsHelper { private static final int DEFAULT_MIN_WIDTH_QUALITY = 400; - private static final String TEMP_IMAGE_NAME = "tempUploadFile.jpg"; + private static final String CACHE_IMAGE_NAME = "tempUploadFile.jpg"; @NonNull static String filenameFromUri(Context context, Uri uri) { @@ -53,7 +54,7 @@ class UploadsHelper { static String createTempFile(Context context, Uri fileUri, String newFilename) { String oldFilename = filenameFromUri(context, fileUri); String fileExtension = oldFilename.substring(oldFilename.indexOf(".")); - String destinationFilename = android.os.Environment.getExternalStorageDirectory().getPath() + + String destinationFilename = Environment.getExternalStorageDirectory().getPath() + File.separatorChar + "~tmp_mThmmy_uploads" + File.separatorChar + newFilename + fileExtension; File tempDirectory = new File(android.os.Environment.getExternalStorageDirectory().getPath() + @@ -99,16 +100,35 @@ class UploadsHelper { return destinationFilename; } - static File getTempFile(Context context) { - File imageFile = new File(context.getExternalCacheDir(), TEMP_IMAGE_NAME); + static File getCacheFile(Context context) { + File imageFile = new File(context.getExternalCacheDir(), CACHE_IMAGE_NAME); //noinspection ResultOfMethodCallIgnored imageFile.getParentFile().mkdirs(); return imageFile; } - static boolean deleteTempFile(String destinationFilename) { - File file = new File(destinationFilename); - return file.delete(); + @SuppressWarnings("ResultOfMethodCallIgnored") + static void deleteTempFiles() { + File tempFilesDirectory = new File(Environment.getExternalStorageDirectory().getPath() + + File.separatorChar + "~tmp_mThmmy_uploads"); + + if (tempFilesDirectory.isDirectory()) { + String[] tempFilesArray = tempFilesDirectory.list(); + for (String tempFile : tempFilesArray) { + new File(tempFilesDirectory, tempFile).delete(); + } + tempFilesDirectory.delete(); + } + } + + @SuppressWarnings("ResultOfMethodCallIgnored") + static void deleteCacheFiles(Context context) { + File cacheFilesDirectory = context.getExternalCacheDir(); + assert cacheFilesDirectory != null; + String[] tempFilesArray = cacheFilesDirectory.list(); + for (String tempFile : tempFilesArray) { + new File(cacheFilesDirectory, tempFile).delete(); + } } /** From 94276638065ec051a9c9e60896ff80a91af67d2d Mon Sep 17 00:00:00 2001 From: Apostolof Date: Sat, 1 Sep 2018 12:08:07 +0300 Subject: [PATCH 03/18] Board parsing minor fix --- .../java/gr/thmmy/mthmmy/activities/board/BoardActivity.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/board/BoardActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/board/BoardActivity.java index d5d8f593..75d0bea8 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/board/BoardActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/board/BoardActivity.java @@ -286,9 +286,11 @@ public class BoardActivity extends BaseActivity implements BoardAdapter.OnLoadMo if (pLastPost.contains("by")) { pLastPost = pLastPost.substring(0, pLastPost.indexOf("by")) + "\n" + pLastPost.substring(pLastPost.indexOf("by")); - } else { + } else if (pLastPost.contains("από")) { pLastPost = pLastPost.substring(0, pLastPost.indexOf("από")) + "\n" + pLastPost.substring(pLastPost.indexOf("από")); + } else { + Timber.wtf("Board parsing about to fail. pLastPost came with: %s", pLastPost); } pLastPostUrl = topicColumns.last().select("a:has(img)").first().attr("href"); parsedTopics.add(new Topic(pTopicUrl, pSubject, pStartedBy, pLastPost, pLastPostUrl, From 93b0c4b328da003fa8c61217598839158efb77f7 Mon Sep 17 00:00:00 2001 From: Thodoris1999 Date: Sat, 1 Sep 2018 12:33:04 +0300 Subject: [PATCH 04/18] improve uploads UI --- app/src/main/res/layout/activity_upload.xml | 40 ++++++--------------- app/src/main/res/values/strings.xml | 6 ++-- 2 files changed, 13 insertions(+), 33 deletions(-) diff --git a/app/src/main/res/layout/activity_upload.xml b/app/src/main/res/layout/activity_upload.xml index 70cbbed2..3ee745a4 100644 --- a/app/src/main/res/layout/activity_upload.xml +++ b/app/src/main/res/layout/activity_upload.xml @@ -41,16 +41,6 @@ android:focusableInTouchMode="true" android:orientation="vertical"> - - - - - - + + @@ -129,6 +110,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end" + android:layout_marginEnd="16dp" android:drawablePadding="5dp" android:gravity="center_vertical" android:text="@string/upload_select_file" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b3b51708..1c904e1d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -109,12 +109,10 @@ Upload - Select the correct category for the file - Fill in the title and description\nor - build them automatically + Generate title and description Title Description - Select file to upload + Select file Upload Select a category From fb8a9d3974c7539582683020155ea241e716a1fc Mon Sep 17 00:00:00 2001 From: Apostolof Date: Sat, 1 Sep 2018 12:39:05 +0300 Subject: [PATCH 05/18] Uploads minor fixes --- .../gr/thmmy/mthmmy/activities/upload/UploadActivity.java | 5 ++++- app/src/main/res/layout/activity_upload_fields_builder.xml | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java index 4350d01b..a847d0e2 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java @@ -4,7 +4,6 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.content.pm.ResolveInfo; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.net.Uri; @@ -244,6 +243,7 @@ public class UploadActivity extends BaseActivity { } if (categorySelected.equals("-1") || uploadTitleText.equals("") || fileUri == null) { + progressBar.setVisibility(View.GONE); return; } @@ -258,6 +258,8 @@ public class UploadActivity extends BaseActivity { tempFilePath = UploadsHelper.createTempFile(this, fileUri, uploadFilename); if (tempFilePath == null) { //Something went wrong, abort + Toast.makeText(this, "Could not create temporary file for renaming", Toast.LENGTH_SHORT).show(); + progressBar.setVisibility(View.GONE); return; } } @@ -305,6 +307,7 @@ public class UploadActivity extends BaseActivity { .startUpload(); } catch (Exception exception) { Timber.e(exception, "AndroidUploadService: %s", exception.getMessage()); + progressBar.setVisibility(View.GONE); } }); diff --git a/app/src/main/res/layout/activity_upload_fields_builder.xml b/app/src/main/res/layout/activity_upload_fields_builder.xml index 80966eaa..af3daae6 100644 --- a/app/src/main/res/layout/activity_upload_fields_builder.xml +++ b/app/src/main/res/layout/activity_upload_fields_builder.xml @@ -37,6 +37,7 @@ android:id="@+id/upload_fields_builder_content_linear" android:layout_width="match_parent" android:layout_height="wrap_content" + android:focusableInTouchMode="true" android:orientation="vertical"> Date: Sat, 1 Sep 2018 14:09:42 +0300 Subject: [PATCH 06/18] Add missing values for course names in uploads fields builder --- .../upload/UploadFieldsBuilderActivity.java | 451 ++++++++++-------- 1 file changed, 244 insertions(+), 207 deletions(-) diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java index 6b8426b5..247f9935 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java @@ -215,263 +215,300 @@ public class UploadFieldsBuilderActivity extends AppCompatActivity { @Nullable private String getGreeklishOrMinifiedCourseName(boolean greeklish) { - //TODO fill missing values - if (course.contains("Συστήματα Υπολογιστών (Υπολογιστικά Συστήματα)")) { - return greeklish ? "sys_ypologistwn" : "Συσ. Υπολογιστών"; - } else if (course.contains("Τεχνική Μηχανική")) { - return greeklish ? "texn_mhxan" : "Τεχν. Μηχαν."; - } else if (course.contains("Διαφορικές Εξισώσεις")) { - return greeklish ? "diaforikes" : "Διαφορικές"; - } else if (course.contains("Θεωρία Πιθανοτήτων και Στατιστική")) { - return greeklish ? "pithanothtes" : "Πιθανότητες"; - } else if (course.contains("Εφαρμοσμένα Μαθηματικά Ι")) { - return greeklish ? "efarmosmena_math_I" : "Εφαρμοσμένα 1"; - } else if (course.contains("Ηλεκτρικά Κυκλώματα ΙΙ")) { - return greeklish ? "kyklwmata_II" : "Κυκλώματα 2"; - } else if (course.contains("Ηλεκτρολογικά Υλικά")) { - return greeklish ? "ylika" : "Ηλεκτρ. Υλικά"; - } else if (course.contains("Ηλεκτρομαγνητικό Πεδίο Ι")) { - return greeklish ? "pedio_I" : "Πεδίο 1"; - } else if (course.contains("Θεωρία Σημάτων και Γραμμικών Συστημάτων")) { - return greeklish ? "analog_shma" : "Σύματα & Συστήματα"; - } else if (course.contains("Προγραμματιστικές Τεχνικές")) { - return greeklish ? "cpp" : "Προγραμματ. Τεχν."; + if (course.contains("Ακουστική Ι")) { + return greeklish ? "akoystikh_I" : "Ακουστική 1"; + } else if (course.contains("Ακουστική ΙΙ")) { + return greeklish ? "akoystikh_II" : "Ακουστική 2"; + } else if (course.contains("Ανάλυση Ηλεκτρικών Κυκλωμάτων με Υπολογιστή")) { + return greeklish ? "analysh_hlektr_kykl" : "Ανάλυση Ηλεκτρικ. Κυκλ. με Υπολογιστή"; + } else if (course.contains("Ανάλυση Συστημάτων Ηλεκτρικής Ενέργειας")) { + return greeklish ? "ASHE" : "ΑΣΗΕ"; + } else if (course.contains("Ανάλυση Χρονοσειρών")) { + return greeklish ? "xronoseires" : "Χρονοσειρές"; + } else if (course.contains("Ανάλυση και Σχεδίαση Αλγορίθμων")) { + return greeklish ? "algorithms" : "Αλγόριθμοι"; + } else if (course.contains("Αναγνώριση Προτύπων")) { + return greeklish ? "protipa" : "Αναγνώριση Προτύπων"; + } else if (course.contains("Αναλογικές Τηλεπικοινωνίες (πρώην Τηλεπικοινωνιακά Συστήματα Ι)")) { + return greeklish ? "anal_thlep" : "Αναλογικές Τηλεπ."; + } else if (course.contains("Αντικειμενοστραφής Προγραμματισμός")) { + return greeklish ? "OOP" : "Αντικειμενοστραφής"; + } else if (course.contains("Αξιοπιστία Συστημάτων")) { + return greeklish ? "aksiopistia_systhmatwn" : "Αξιοπιστία Συστημάτων"; } else if (course.contains("Αριθμητική Ανάλυση")) { return greeklish ? "arith_anal" : "Αριθμ. Ανάλυση"; + } else if (course.contains("Αρχές Οικονομίας")) { + return greeklish ? "arx_oikonomias" : "Αρχές Οικονομίας"; + } else if (course.contains("Αρχές Παράλληλης Επεξεργασίας")) { + return greeklish ? "arxes_parall_epeksergasias" : "Αρχές Παράλληλης Επεξεργασίας"; } else if (course.contains("Αρχιτεκτονική Υπολογιστών")) { return greeklish ? "arx_ypologistwn" : "Αρχ. Υπολογιστών"; - } else if (course.contains("Εισαγωγή στην Ενεργειακή Τεχνολογία Ι")) { - return greeklish ? "EET_I" : "ΕΕΤ 1"; - } else if (course.contains("Ηλεκτρικά Κυκλώματα ΙΙΙ")) { - return greeklish ? "kyklwmata_I" : "Κυκλώματα 3"; - } else if (course.contains("Ηλεκτρομαγνητικό Πεδίο ΙΙ")) { - return greeklish ? "pedio_II" : "Πεδίο 2"; - } else if (course.contains("Στοχαστικό Σήμα")) { - return greeklish ? "stox_shma" : "Στοχ. Σήμα"; - } else if (course.contains("Ψηφιακά Συστήματα Ι")) { - return greeklish ? "pshfiaka_I" : "Ψηφιακά 1"; - } else if (course.contains("Αναλογικές Τηλεπικοινωνίες (πρώην Τηλεπικοινωνιακά Συστήματα Ι)")) { - return greeklish ? "anal_thlep" : "Αναλογικές Τηλεπ."; + } else if (course.contains("Ασαφή Συστήματα")) { + return greeklish ? "asafh" : "Ασαφή"; + } else if (course.contains("Ασφάλεια Πληροφοριακών Συστημάτων")) { + return greeklish ? "asfaleia" : "Ασφάλεια"; + } else if (course.contains("Ασύρματος Τηλεπικοινωνία Ι")) { + return greeklish ? "asyrmatos_I" : "Ασύρματος 1"; + } else if (course.contains("Ασύρματος Τηλεπικοινωνία ΙΙ")) { + return greeklish ? "asyrmatos_II" : "Ασύρματος 2"; + } else if (course.contains("Βάσεις Δεδομένων")) { + return greeklish ? "vaseis" : "Βάσεις"; + } else if (course.contains("Βιομηχανικά Ηλεκτρονικά")) { + return greeklish ? "bhomix_hlektronika" : "Βιομηχανικά Ηλεκτρονικά"; + } else if (course.contains("Βιομηχανική Πληροφορική")) { + return greeklish ? "viomix_plir" : "Βιομηχανική Πληρ"; + } else if (course.contains("Βιοϊατρική Τεχνολογία")) { + return greeklish ? "vioiatriki" : "Βιοιατρική"; + } else if (course.contains("Γεωηλεκτρομαγνητισμός")) { + return greeklish ? "geohlektromagnitismos" : "Γεωηλεκτρομαγνητισμός"; + } else if (course.contains("Γραμμική Άλγεβρα")) { + return greeklish ? "grammikh_algebra" : "Γραμμ. Άλγεβρ."; + } else if (course.contains("Γραφική με Υπολογιστές")) { + return greeklish ? "grafikh" : "Γραφική"; + } else if (course.contains("Δίκτυα Τηλεπικοινωνιών")) { + return greeklish ? "diktya_thlep" : "Δίκτυα Τηλέπ."; + } else if (course.contains("Δίκτυα Υπολογιστών Ι")) { + return greeklish ? "diktya_I" : "Δίκτυα 1"; + } else if (course.contains("Δίκτυα Υπολογιστών ΙΙ")) { + return greeklish ? "diktya_II" : "Δίκτυα 2"; + } else if (course.contains("Διάδοση Η/Μ Κύματος ΙΙ")) { + return greeklish ? "diadosi_II" : "Διάδοση 2"; } else if (course.contains("Διάδοση Ηλεκτρομαγνητικού Κύματος Ι (πρώην Πεδίο ΙΙΙ)")) { return greeklish ? "diadosi_1" : "Διάδοση 1"; + } else if (course.contains("Διακριτά Μαθηματικά")) { + return greeklish ? "diakrita" : "Διακριτά Μαθηματικά"; + } else if (course.contains("Διακριτά μαθηματικά")) { + return greeklish ? "diakrita" : "Διακριτά Μαθηματικά"; + } else if (course.contains("Διανεμημένη Παραγωγή")) { + return greeklish ? "dian_paragwgh" : "Διανεμημένη Παραγωγή"; + } else if (course.contains("Διαφορικές Εξισώσεις")) { + return greeklish ? "diaforikes" : "Διαφορικές"; + } else if (course.contains("Διαχείριση Συστημάτων Ηλεκτρικής Ενέργειας")) { + return greeklish ? "dshe" : "ΔΣΗΕ"; } else if (course.contains("Δομές Δεδομένων")) { return greeklish ? "dom_dedomenwn" : "Δομ. Δεδομ."; - } else if (course.contains("Εισαγωγή στην Ενεργειακή Τεχνολογία ΙΙ")) { - return greeklish ? "EET_2" : "ΕΕΤ2"; - } else if (course.contains("Ηλεκτρικές Μετρήσεις Ι")) { - return greeklish ? "metrhseis_1" : "Μετρήσεις 1"; - } else if (course.contains("Ηλεκτρονική ΙΙ")) { - return greeklish ? "hlektronikh_2" : "Ηλεκτρονική 2"; - } else if (course.contains("Συστήματα Αυτομάτου Ελέγχου Ι")) { - return greeklish ? "SAE_1" : "ΣΑΕ 1"; - } else if (course.contains("Γραμμική Άλγεβρα")) { - return greeklish ? "grammikh_algebra" : "Γραμμ. Άλγεβρ."; } else if (course.contains("Δομημένος Προγραμματισμός")) { return greeklish ? "C" : "Δομ. Προγραμμ."; - } else if (course.contains("Λογική Σχεδίαση")) { - return greeklish ? "logiki_sxediash" : "Λογική Σχεδίαση"; - } else if (course.contains("Λογισμός Ι")) { - return greeklish ? "logismos_I" : "Λογισμός 1"; - } else if (course.contains("Τεχνικές Σχεδίασης με Η/Υ")) { - return greeklish ? "sxedio" : "Σχέδιο"; - } else if (course.contains("Φυσική Ι")) { - return greeklish ? "fysikh_I" : "Φυσική 1"; - } else if (course.contains("Αντικειμενοστραφής Προγραμματισμός")) { - return greeklish ? "OOP" : "Αντικειμενοστραφής"; - } else if (course.contains("Εφαρμοσμένη Θερμοδυναμική")) { - return greeklish ? "thermodynamikh" : "Θερμοδυναμική"; - } else if (course.contains("Ηλεκτρικά Κυκλώματα Ι")) { - return greeklish ? "kyklwmata_I" : "Κυκλώματα 1"; - } else if (course.contains("Λογισμός ΙΙ")) { - return greeklish ? "logismos_II" : "Λογισμός 2"; - } else if (course.contains("Οργάνωση Υπολογιστών")) { - return greeklish ? "org_ypol" : "Οργάνωση Υπολ."; - } else if (course.contains("Ηλεκτρονική Ι")) { - return greeklish ? "hlektronikh_1" : "Ηλεκτρονική 1"; - } else if (course.contains("Διακριτά μαθηματικά")) { - return greeklish ? "diakrita" : "Διακριτά Μαθηματικά"; - } else if (course.contains("Σήματα και Συστήματα")) { - return greeklish ? "analog_shma" : "Σύματα & Συστήματα"; + } else if (course.contains("Ειδικά Κεφάλαια Διαφορικών Εξισώσεων")) { + return greeklish ? "eidika_kef_diaf_eksis" : "Ειδικά Κεφάλαια Διαφορικών Εξισώσεων"; + } else if (course.contains("Ειδικά Κεφάλαια Ηλεκτρομαγνητικού Πεδίου Ι")) { + return greeklish ? "eidika_kef_HM_pedioy_I" : "Ειδικά Κεφάλαια Ηλεκτρομαγνητικού Πεδίου Ι"; + } else if (course.contains("Ειδικά Κεφάλαια Συστημάτων Ηλεκτρικής Ενέργειας")) { + return greeklish ? "ekshe" : "ΕΚΣΗΕ"; + } else if (course.contains("Ειδικές Αρχιτεκτονικές Υπολογιστών")) { + return greeklish ? "eidikes_arx_ypolog" : "Ειδικές Αρχιτεκτονικές Υπολογιστών"; + } else if (course.contains("Ειδικές Κεραίες, Σύνθεση Κεραιών")) { + return greeklish ? "eidikes_keraies" : "Ειδικές Κεραίες, Σύνθεση Κεραιών"; + } else if (course.contains("Εισαγωγή στην Ενεργειακή Τεχνολογία Ι")) { + return greeklish ? "EET_I" : "ΕΕΤ 1"; + } else if (course.contains("Εισαγωγή στην Ενεργειακή Τεχνολογία ΙΙ")) { + return greeklish ? "EET_2" : "ΕΕΤ2"; + } else if (course.contains("Εισαγωγή στην Πολιτική Οικονομία")) { + return greeklish ? "polit_oik" : "Πολιτική Οικονομία"; } else if (course.contains("Εισαγωγή στις εφαρμογές Πυρηνικής Τεχνολογίας")) { return greeklish ? "Intro_Purhnikh_Texn" : "Εισ. Πυρηνικη Τεχν."; + } else if (course.contains("Ενσωματωμένα Συστήματα Πραγματικού Χρόνου")) { + return greeklish ? "enswmatwmena" : "Ενσωματωμένα"; } else if (course.contains("Επιχειρησιακή Έρευνα")) { return greeklish ? "epixeirisiaki" : "Επιχειρησιακή Έρευνα"; - } else if (course.contains("Ημιαγωγά Υλικά: Θεωρία-Διατάξεις")) { - return greeklish ? "Hmiagwga_Ylika" : "Ημιαγωγά Υλικά"; - } else if (course.contains("Μετάδοση Θερμότητας")) { - return greeklish ? "metadosi_therm" : "Μετάδοση Θερμ."; - } else if (course.contains("Συστήματα Ηλεκτρικής Ενέργειας Ι")) { - return greeklish ? "SHE_I" : "ΣΗΕ 1"; - } else if (course.contains("Υψηλές Τάσεις Ι")) { - return greeklish ? "ypshles_I" : "Υψηλές 1"; - } else if (course.contains("Θεωρία και Τεχνολογία Πυρηνικών Αντιδραστήρων")) { - return greeklish ? "texn_antidrasthrwn" : "Τεχνολογία Αντιδραστήρων"; - } else if (course.contains("Τεχνολογία Ηλεκτροτεχνικών Υλικών")) { - return greeklish ? "Hlektrotexnika_Ylika" : "Ηλεκτροτεχνικά Υλικά"; + } else if (course.contains("Ευρυζωνικά Δίκτυα")) { + return greeklish ? "eyryzwnika" : "Ευρυζωνικά"; + } else if (course.contains("Ευφυή Συστήματα Ρομπότ")) { + return greeklish ? "eufuh" : "Ευφυή"; + } else if (course.contains("Εφαρμογές Τηλεπικοινωνιακών Διατάξεων")) { + return greeklish ? "efarm_thlep_diataksewn" : "Εφαρμογές Τηλεπ. Διατάξεων"; + } else if (course.contains("Εφαρμοσμένα Μαθηματικά Ι")) { + return greeklish ? "efarmosmena_math_I" : "Εφαρμοσμένα 1"; + } else if (course.contains("Εφαρμοσμένα Μαθηματικά ΙΙ")) { + return greeklish ? "efarmosmena_math_II" : "Εφαρμοσμένα 2"; + } else if (course.contains("Εφαρμοσμένη Θερμοδυναμική")) { + return greeklish ? "thermodynamikh" : "Θερμοδυναμική"; + } else if (course.contains("Ηλεκτρακουστική Ι")) { + return greeklish ? "hlektroakoystikh_I" : "Ηλεκτροακουστική 1"; + } else if (course.contains("Ηλεκτρακουστική ΙΙ")) { + return greeklish ? "hlektroakoystikh_II" : "Ηλεκτροακουστική 2"; + } else if (course.contains("Ηλεκτρικά Κυκλώματα Ι")) { + return greeklish ? "kyklwmata_I" : "Κυκλώματα 1"; + } else if (course.contains("Ηλεκτρικά Κυκλώματα ΙΙ")) { + return greeklish ? "kyklwmata_II" : "Κυκλώματα 2"; + } else if (course.contains("Ηλεκτρικά Κυκλώματα ΙΙΙ")) { + return greeklish ? "kyklwmata_I" : "Κυκλώματα 3"; + } else if (course.contains("Ηλεκτρικές Μετρήσεις Ι")) { + return greeklish ? "metrhseis_1" : "Μετρήσεις 1"; + } else if (course.contains("Ηλεκτρικές Μετρήσεις ΙΙ")) { + return greeklish ? "metrhseis_II" : "Μετρήσεις 2"; } else if (course.contains("Ηλεκτρικές Μηχανές Α'")) { return greeklish ? "mhxanes_A" : "Μηχανές Α"; - } else if (course.contains("Σταθμοί Παραγωγής Ηλεκτρικής Ενέργειας")) { - return greeklish ? "SPHE" : "ΣΠΗΕ"; - } else if (course.contains("Συστήματα Ηλεκτρικής Ενέργειας ΙΙ")) { - return greeklish ? "SHE_II" : "ΣΗΕ 2"; - } else if (course.contains("Υψηλές Τάσεις ΙΙ")) { - return greeklish ? "ypshles_II" : "Υψηλές 2"; - } else if (course.contains("Αρχές Οικονομίας")) { - return greeklish ? "arx_oikonomias" : "Αρχές Οικονομίας"; - } else if (course.contains("Διανεμημένη Παραγωγή")) { - return greeklish ? "dian_paragwgh" : "Διανεμημένη Παραγωγή"; - } else if (course.contains("Διαχείριση Συστημάτων Ηλεκτρικής Ενέργειας")) { - return greeklish ? "dshe" : "ΔΣΗΕ"; - } else if (course.contains("Υψηλές Τάσεις ΙΙΙ")) { - return greeklish ? "ypshles_III" : "Υψηλές 3"; - } else if (course.contains("Ανάλυση Συστημάτων Ηλεκτρικής Ενέργειας")) { - return greeklish ? "ASHE" : "ΑΣΗΕ"; } else if (course.contains("Ηλεκτρικές Μηχανές Β'")) { return greeklish ? "mhxanes_B" : "Μηχανές Β"; - } else if (course.contains("Ηλεκτρονικά Ισχύος Ι")) { - return greeklish ? "isxyos_I" : "Ισχύος 1"; - } else if (course.contains("Συστήματα Ηλεκτρικής Ενέργειας ΙΙΙ")) { - return greeklish ? "SHE_III" : "ΣΗΕ 3"; - } else if (course.contains("Σερβοκινητήρια Συστήματα")) { - return greeklish ? "servo" : "Σέρβο"; - } else if (course.contains("Συστήματα Ηλεκτροκίνησης")) { - return greeklish ? "hlektrokinhsh" : "Ηλεκτροκίνηση"; - } else if (course.contains("Υπολογιστικές Μέθοδοι στα Ενεργειακά Συστήματα")) { - return greeklish ? "ymes" : "ΥΜΕΣ"; - } else if (course.contains("Υψηλές Τάσεις 4")) { - return greeklish ? "ypshles_IV" : "Υψηλές 4"; } else if (course.contains("Ηλεκτρικές Μηχανές Γ'")) { return greeklish ? "mhxanes_C" : "Μηχανές Γ"; } else if (course.contains("Ηλεκτρική Οικονομία")) { return greeklish ? "hlektr_oikonomia" : "Ηλεκτρική Οικονομία"; + } else if (course.contains("Ηλεκτρολογικά Υλικά")) { + return greeklish ? "ylika" : "Ηλεκτρ. Υλικά"; + } else if (course.contains("Ηλεκτρομαγνητική Συμβατότητα")) { + return greeklish ? "HM_symvatothta" : "H/M Συμβατότητα"; + } else if (course.contains("Ηλεκτρομαγνητικό Πεδίο Ι")) { + return greeklish ? "pedio_I" : "Πεδίο 1"; + } else if (course.contains("Ηλεκτρομαγνητικό Πεδίο ΙΙ")) { + return greeklish ? "pedio_II" : "Πεδίο 2"; + } else if (course.contains("Ηλεκτρονικά Ισχύος Ι")) { + return greeklish ? "isxyos_I" : "Ισχύος 1"; } else if (course.contains("Ηλεκτρονικά Ισχύος ΙΙ")) { return greeklish ? "isxyos_II" : "Ισχύος 2"; - } else if (course.contains("Ανάλυση και Σχεδίαση Αλγορίθμων")) { - return greeklish ? "algorithms" : "Αλγόριθμοι"; - } else if (course.contains("Διακριτά Μαθηματικά")) { - return greeklish ? "diakrita" : "Διακριτά Μαθηματικά"; - } else if (course.contains("Κβαντική Φυσική")) { - return greeklish ? "kvantikh" : "Κβαντική"; - } else if (course.contains("Ρομποτική")) { - return greeklish ? "rompotikh" : "Ρομποτική"; - } else if (course.contains("Τεχνικές Βελτιστοποίησης")) { - return greeklish ? "veltistopoihsh" : "Βελτιστοποίηση"; - } else if (course.contains("Ηλεκτρικές Μετρήσεις ΙΙ")) { - return greeklish ? "metrhseis_II" : "Μετρήσεις 2"; + } else if (course.contains("Ηλεκτρονικές Διατάξεις και Μετρήσεις")) { + return greeklish ? "hlektron_diatakseis_metrhseis" : "Ηλεκτρονικές Διατάξεις και Μετρήσεις"; + } else if (course.contains("Ηλεκτρονική Ι")) { + return greeklish ? "hlektronikh_1" : "Ηλεκτρονική 1"; + } else if (course.contains("Ηλεκτρονική ΙΙ")) { + return greeklish ? "hlektronikh_2" : "Ηλεκτρονική 2"; } else if (course.contains("Ηλεκτρονική ΙΙΙ")) { return greeklish ? "hlektronikh_III" : "Ηλεκτρονική 3"; - } else if (course.contains("Συστήματα Αυτομάτου Ελέγχου ΙΙ")) { - return greeklish ? "SAE_II" : "ΣΑΕ 2"; - } else if (course.contains("Ψηφιακά Συστήματα ΙΙ")) { - return greeklish ? "pshfiaka_II" : "Ψηφιακά 2"; - } else if (course.contains("Ανάλυση Χρονοσειρών")) { - return greeklish ? "xronoseires" : "Χρονοσειρές"; + } else if (course.contains("Ημιαγωγά Υλικά: Θεωρία-Διατάξεις")) { + return greeklish ? "Hmiagwga_Ylika" : "Ημιαγωγά Υλικά"; + } else if (course.contains("Θεωρία Πιθανοτήτων και Στατιστική")) { + return greeklish ? "pithanothtes" : "Πιθανότητες"; + } else if (course.contains("Θεωρία Πληροφοριών")) { + return greeklish ? "theoria_plir" : "Θεωρία Πληρ."; + } else if (course.contains("Θεωρία Σημάτων και Γραμμικών Συστημάτων")) { + return greeklish ? "analog_shma" : "Σύματα & Συστήματα"; + } else if (course.contains("Θεωρία Σκέδασης")) { + return greeklish ? "skedash" : "Σκέδαση"; } else if (course.contains("Θεωρία Υπολογισμών και Αλγορίθμων")) { return greeklish ? "thya" : "ΘΥΑ"; + } else if (course.contains("Θεωρία και Τεχνολογία Πυρηνικών Αντιδραστήρων")) { + return greeklish ? "texn_antidrasthrwn" : "Τεχνολογία Αντιδραστήρων"; + } else if (course.contains("Κβαντική Φυσική")) { + return greeklish ? "kvantikh" : "Κβαντική"; + } else if (course.contains("Κινητές και Δορυφορικές Επικοινωνίες")) { + return greeklish ? "kinhtes_doryforikes_epik" : "Κινητές & Δορυφορικές Επικοινωνίες"; + } else if (course.contains("Λειτουργικά Συστήματα")) { + return greeklish ? "OS" : "Λειτουργικά"; + } else if (course.contains("Λογική Σχεδίαση")) { + return greeklish ? "logiki_sxediash" : "Λογική Σχεδίαση"; + } else if (course.contains("Λογισμός Ι")) { + return greeklish ? "logismos_I" : "Λογισμός 1"; + } else if (course.contains("Λογισμός ΙΙ")) { + return greeklish ? "logismos_II" : "Λογισμός 2"; + } else if (course.contains("Μετάδοση Θερμότητας")) { + return greeklish ? "metadosi_therm" : "Μετάδοση Θερμ."; + } else if (course.contains("Μικροεπεξεργαστές και Περιφερειακά")) { + return greeklish ? "mikro_II" : "Μίκρο 2"; + } else if (course.contains("Μικροκυματική Τηλεπισκόπηση")) { + return greeklish ? "thlepiskophsh" : "Τηλεπισκόπηση"; + } else if (course.contains("Μικροκύματα I")) { + return greeklish ? "mikrokymata_I" : "Μικροκύματα 1"; + } else if (course.contains("Μικροκύματα II")) { + return greeklish ? "mikrokymata_II" : "Μικροκύματα 2"; + } else if (course.contains("Οπτικές Επικοινωνίες")) { + return greeklish ? "optikes_thlep" : "Οπτικές Τηλεπ."; + } else if (course.contains("Οπτική Ι")) { + return greeklish ? "optikh_I" : "Οπτική 1"; + } else if (course.contains("Οπτική ΙΙ")) { + return greeklish ? "optikh_II" : "Οπτική 2"; + } else if (course.contains("Οργάνωση Υπολογιστών")) { + return greeklish ? "org_ypol" : "Οργάνωση Υπολ."; + } else if (course.contains("Οργάνωση και Διοίκηση Εργοστασίων")) { + return greeklish ? "organ_dioik_ergostasiwn" : "Οργάνωση και Διοίκηση Εργοστασίων"; } else if (course.contains("Παράλληλα και Κατανεμημένα Συστήματα")) { return greeklish ? "parallhla" : "Παράλληλα"; } else if (course.contains("Προγραμματιζόμενα Κυκλώματα ASIC")) { return greeklish ? "asic" : "ASIC"; + } else if (course.contains("Προγραμματιστικές Τεχνικές")) { + return greeklish ? "cpp" : "Προγραμματ. Τεχν."; + } else if (course.contains("Προηγμένες Τεχνικές Επεξεργασίας Σήματος")) { + return greeklish ? "ptes" : "ΠΤΕΣ"; } else if (course.contains("Προσομοίωση και Μοντελοποίηση Συστημάτων")) { return greeklish ? "montelopoihsh" : "Μοντελοποίηση"; + } else if (course.contains("Ρομποτική")) { + return greeklish ? "rompotikh" : "Ρομποτική"; + } else if (course.contains("Σήματα και Συστήματα")) { + return greeklish ? "analog_shma" : "Σύματα & Συστήματα"; + } else if (course.contains("Σερβοκινητήρια Συστήματα")) { + return greeklish ? "servo" : "Σέρβο"; + } else if (course.contains("Σταθμοί Παραγωγής Ηλεκτρικής Ενέργειας")) { + return greeklish ? "SPHE" : "ΣΠΗΕ"; + } else if (course.contains("Στοχαστικό Σήμα")) { + return greeklish ? "stox_shma" : "Στοχ. Σήμα"; + } else if (course.contains("Συστήματα Αυτομάτου Ελέγχου Ι")) { + return greeklish ? "SAE_1" : "ΣΑΕ 1"; + } else if (course.contains("Συστήματα Αυτομάτου Ελέγχου ΙΙ")) { + return greeklish ? "SAE_II" : "ΣΑΕ 2"; } else if (course.contains("Συστήματα Αυτομάτου Ελέγχου ΙΙI")) { return greeklish ? "SAE_III" : "ΣΑΕ 3"; - } else if (course.contains("Σύνθεση Ενεργών και Παθητικών Κυκλωμάτων")) { - return greeklish ? "synthesh" : "Σύνθεση"; - } else if (course.contains("Δίκτυα Υπολογιστών Ι")) { - return greeklish ? "diktya_I" : "Δίκτυα 1"; - } else if (course.contains("Λειτουργικά Συστήματα")) { - return greeklish ? "OS" : "Λειτουργικά"; + } else if (course.contains("Συστήματα Ηλεκτρικής Ενέργειας Ι")) { + return greeklish ? "SHE_I" : "ΣΗΕ 1"; + } else if (course.contains("Συστήματα Ηλεκτρικής Ενέργειας ΙΙ")) { + return greeklish ? "SHE_II" : "ΣΗΕ 2"; + } else if (course.contains("Συστήματα Ηλεκτρικής Ενέργειας ΙΙΙ")) { + return greeklish ? "SHE_III" : "ΣΗΕ 3"; + } else if (course.contains("Συστήματα Ηλεκτροκίνησης")) { + return greeklish ? "hlektrokinhsh" : "Ηλεκτροκίνηση"; } else if (course.contains("Συστήματα Μικροϋπολογιστών")) { return greeklish ? "mikro_I" : "Μίκρο 1"; - } else if (course.contains("Ασαφή Συστήματα")) { - return greeklish ? "asafh" : "Ασαφή"; - } else if (course.contains("Γραφική με Υπολογιστές")) { - return greeklish ? "grafikh" : "Γραφική"; - } else if (course.contains("Ενσωματωμένα Συστήματα Πραγματικού Χρόνου")) { - return greeklish ? "enswmatwmena" : "Ενσωματωμένα"; + } else if (course.contains("Συστήματα Πολυμέσων και Εικονική Πραγματικότητα")) { + return greeklish ? "polymesa" : "Πολυμέσα"; + } else if (course.contains("Συστήματα Υπολογιστών (Υπολογιστικά Συστήματα)")) { + return greeklish ? "sys_ypologistwn" : "Συσ. Υπολογιστών"; + } else if (course.contains("Σχεδίαση Συστημάτων VLSI")) { + return greeklish ? "VLSI" : "VLSI"; + } else if (course.contains("Σύνθεση Ενεργών και Παθητικών Κυκλωμάτων")) { + return greeklish ? "synthesh" : "Σύνθεση"; + } else if (course.contains("Σύνθεση Τηλεπικοινωνιακών Διατάξεων")) { + return greeklish ? "synth_thlep_diataksewn" : "Σύνθεση Τηλεπ. Διατάξεων"; + } else if (course.contains("Τεχνικές Βελτιστοποίησης")) { + return greeklish ? "veltistopoihsh" : "Βελτιστοποίηση"; + } else if (course.contains("Τεχνικές Κωδικοποίησης")) { + return greeklish ? "texn_kwdikopoihshs" : "Τεχνικές Κωδικοποίησης"; + } else if (course.contains("Τεχνικές Σχεδίασης με Η/Υ")) { + return greeklish ? "sxedio" : "Σχέδιο"; + } else if (course.contains("Τεχνικές μη Καταστρεπτικών Δοκιμών")) { + return greeklish ? "non_destructive_tests" : "Μη Καταστρεπτικές Δοκιμές"; + } else if (course.contains("Τεχνική Μηχανική")) { + return greeklish ? "texn_mhxan" : "Τεχν. Μηχαν."; + } else if (course.contains("Τεχνολογία Ήχου και Εικόνας")) { + return greeklish ? "texn_hxoy_eikonas" : "Τεχνολογία Ήχου και Εικόνας"; + } else if (course.contains("Τεχνολογία Ηλεκτροτεχνικών Υλικών")) { + return greeklish ? "Hlektrotexnika_Ylika" : "Ηλεκτροτεχνικά Υλικά"; + } else if (course.contains("Τεχνολογία Λογισμικού")) { + return greeklish ? "SE" : "Τεχνολογία Λογισμικού"; + } else if (course.contains("Τηλεοπτικά Συστήματα")) { + return greeklish ? "tileoptika" : "Τηλεοπτικά"; } else if (course.contains("Τηλεπικοινωνιακή Ηλεκτρονική")) { return greeklish ? "tilep_ilektr" : "Τηλεπ. Ηλεκτρ."; + } else if (course.contains("Υπολογιστικές Μέθοδοι στα Ενεργειακά Συστήματα")) { + return greeklish ? "ymes" : "ΥΜΕΣ"; + } else if (course.contains("Υπολογιστικός Ηλεκτρομαγνητισμός")) { + return greeklish ? "ypologistikos_HM" : "Υπολογιστικός Η/Μ"; + } else if (course.contains("Υψηλές Τάσεις 4")) { + return greeklish ? "ypshles_IV" : "Υψηλές 4"; + } else if (course.contains("Υψηλές Τάσεις Ι")) { + return greeklish ? "ypshles_I" : "Υψηλές 1"; + } else if (course.contains("Υψηλές Τάσεις ΙΙ")) { + return greeklish ? "ypshles_II" : "Υψηλές 2"; + } else if (course.contains("Υψηλές Τάσεις ΙΙΙ")) { + return greeklish ? "ypshles_III" : "Υψηλές 3"; + } else if (course.contains("Φυσική Ι")) { + return greeklish ? "fysikh_I" : "Φυσική 1"; + } else if (course.contains("Φωτονική Τεχνολογία")) { + return greeklish ? "fwtonikh" : "Φωτονική"; + } else if (course.contains("Ψηφιακά Συστήματα Ι")) { + return greeklish ? "pshfiaka_I" : "Ψηφιακά 1"; + } else if (course.contains("Ψηφιακά Συστήματα ΙΙ")) { + return greeklish ? "pshfiaka_II" : "Ψηφιακά 2"; } else if (course.contains("Ψηφιακά Συστήματα ΙΙΙ")) { return greeklish ? "pshfiaka_III" : "Ψηφιακά 3"; - } else if (course.contains("Ψηφιακή Επεξεργασία Εικόνας")) { - return greeklish ? "psee" : "ΨΕΕ"; - } else if (course.contains("Δίκτυα Υπολογιστών ΙΙ")) { - return greeklish ? "diktya_II" : "Δίκτυα 2"; - } else if (course.contains("Μικροεπεξεργαστές και Περιφερειακά")) { - return greeklish ? "mikro_II" : "Μίκρο 2"; - } else if (course.contains("Τεχνολογία Λογισμικού")) { - return greeklish ? "SE" : "Τεχνολογία Λογισμικού"; } else if (course.contains("Ψηφιακά Φίλτρα")) { return greeklish ? "filtra" : "Φίλτρα"; - } else if (course.contains("Αναγνώριση Προτύπων")) { - return greeklish ? "protipa" : "Αναγνώριση Προτύπων"; - } else if (course.contains("Ασφάλεια Πληροφοριακών Συστημάτων")) { - return greeklish ? "asfaleia" : "Ασφάλεια"; - } else if (course.contains("Βάσεις Δεδομένων")) { - return greeklish ? "vaseis" : "Βάσεις"; - } else if (course.contains("Βιομηχανική Πληροφορική")) { - return greeklish ? "viomix_plir" : "Βιομηχανική Πληρ"; - } else if (course.contains("Ευφυή Συστήματα Ρομπότ")) { - return greeklish ? "eufuh" : "Ευφυή"; - } else if (course.contains("Συστήματα Πολυμέσων και Εικονική Πραγματικότητα")) { - return greeklish ? "polymesa" : "Πολυμέσα"; - } else if (course.contains("Σχεδίαση Συστημάτων VLSI")) { - return greeklish ? "VLSI" : "VLSI"; - } else if (course.contains("Ακουστική Ι")) { - return greeklish ? "akoystikh_I" : "Ακουστική 1"; - } else if (course.contains("Εφαρμοσμένα Μαθηματικά ΙΙ")) { - return greeklish ? "efarmosmena_math_II" : "Εφαρμοσμένα 2"; - } else if (course.contains("Ηλεκτρακουστική Ι")) { - return greeklish ? "hlektroakoystikh_I" : "Ηλεκτροακουστική 1"; - } else if (course.contains("Οπτική Ι")) { - return greeklish ? "optikh_I" : "Οπτική 1"; - } else if (course.contains("Διάδοση Η/Μ Κύματος ΙΙ")) { - return greeklish ? "diadosi_II" : "Διάδοση 2"; } else if (course.contains("Ψηφιακές Τηλεπικοινωνίες Ι")) { return greeklish ? "pshf_thlep_I" : "Ψηφιακές Τηλεπ. 1"; - } else if (course.contains("Ακουστική ΙΙ")) { - return greeklish ? "akoystikh_II" : "Ακουστική 2"; - } else if (course.contains("Βιοϊατρική Τεχνολογία")) { - return greeklish ? "vioiatriki" : "Βιοιατρική"; - } else if (course.contains("Ηλεκτρακουστική ΙΙ")) { - return greeklish ? "hlektroakoystikh_II" : "Ηλεκτροακουστική 2"; - } else if (course.contains("Οπτική ΙΙ")) { - return greeklish ? "optikh_II" : "Οπτική 2"; - } else if (course.contains("Ασύρματος Τηλεπικοινωνία Ι")) { - return greeklish ? "asyrmatos_I" : "Ασύρματος 1"; - } else if (course.contains("Μικροκύματα I")) { - return greeklish ? "mikrokymata_I" : "Μικροκύματα 1"; } else if (course.contains("Ψηφιακές Τηλεπικοινωνίες ΙΙ")) { return greeklish ? "pshf_thlep_II" : "Ψηφιακές Τηλεπ. 2"; + } else if (course.contains("Ψηφιακή Επεξεργασία Εικόνας")) { + return greeklish ? "psee" : "ΨΕΕ"; } else if (course.contains("Ψηφιακή Επεξεργασία Σήματος")) { return greeklish ? "PSES" : "ΨΕΣ"; - } else if (course.contains("Εισαγωγή στην Πολιτική Οικονομία")) { - return greeklish ? "polit_oik" : "Πολιτική Οικονομία"; - } else if (course.contains("Θεωρία Σκέδασης")) { - return greeklish ? "skedash" : "Σκέδαση"; - } else if (course.contains("Προηγμένες Τεχνικές Επεξεργασίας Σήματος")) { - return greeklish ? "ptes" : "ΠΤΕΣ"; - } else if (course.contains("Τηλεοπτικά Συστήματα")) { - return greeklish ? "tileoptika" : "Τηλεοπτικά"; - } else if (course.contains("Ασύρματος Τηλεπικοινωνία ΙΙ")) { - return greeklish ? "asyrmatos_II" : "Ασύρματος 2"; - } else if (course.contains("Δίκτυα Τηλεπικοινωνιών")) { - return greeklish ? "diktya_thlep" : "Δίκτυα Τηλέπ."; - } else if (course.contains("Θεωρία Πληροφοριών")) { - return greeklish ? "theoria_plir" : "Θεωρία Πληρ."; - } else if (course.contains("Οπτικές Επικοινωνίες")) { - return greeklish ? "optikes_thlep" : "Οπτικές Τηλεπ."; - } else if (course.contains("Ευρυζωνικά Δίκτυα")) { - return greeklish ? "eyryzwnika" : "Ευρυζωνικά"; - } else if (course.contains("Τεχνικές μη Καταστρεπτικών Δοκιμών")) { - return greeklish ? "non_destructive_tests" : "Μη Καταστρεπτικές Δοκιμές"; - } else if (course.contains("Φωτονική Τεχνολογία")) { - return greeklish ? "fwtonikh" : "Φωτονική"; - } else if (course.contains("Μικροκυματική Τηλεπισκόπηση")) { - return greeklish ? "thlepiskophsh" : "Τηλεπισκόπηση"; - } else if (course.contains("Μικροκύματα II")) { - return greeklish ? "mikrokymata_II" : "Μικροκύματα 2"; } else { return null; } From 8bf27d7de885ca3380b3bb859cf28ffced084e8c Mon Sep 17 00:00:00 2001 From: Apostolof Date: Sat, 1 Sep 2018 14:22:22 +0300 Subject: [PATCH 07/18] Rearrange values for course names to avoid ninja bug --- .../upload/UploadFieldsBuilderActivity.java | 580 +++++++++--------- 1 file changed, 290 insertions(+), 290 deletions(-) diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java index 247f9935..c5ab4829 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadFieldsBuilderActivity.java @@ -215,300 +215,300 @@ public class UploadFieldsBuilderActivity extends AppCompatActivity { @Nullable private String getGreeklishOrMinifiedCourseName(boolean greeklish) { - if (course.contains("Ακουστική Ι")) { - return greeklish ? "akoystikh_I" : "Ακουστική 1"; - } else if (course.contains("Ακουστική ΙΙ")) { - return greeklish ? "akoystikh_II" : "Ακουστική 2"; - } else if (course.contains("Ανάλυση Ηλεκτρικών Κυκλωμάτων με Υπολογιστή")) { - return greeklish ? "analysh_hlektr_kykl" : "Ανάλυση Ηλεκτρικ. Κυκλ. με Υπολογιστή"; - } else if (course.contains("Ανάλυση Συστημάτων Ηλεκτρικής Ενέργειας")) { - return greeklish ? "ASHE" : "ΑΣΗΕ"; - } else if (course.contains("Ανάλυση Χρονοσειρών")) { - return greeklish ? "xronoseires" : "Χρονοσειρές"; - } else if (course.contains("Ανάλυση και Σχεδίαση Αλγορίθμων")) { - return greeklish ? "algorithms" : "Αλγόριθμοι"; - } else if (course.contains("Αναγνώριση Προτύπων")) { - return greeklish ? "protipa" : "Αναγνώριση Προτύπων"; - } else if (course.contains("Αναλογικές Τηλεπικοινωνίες (πρώην Τηλεπικοινωνιακά Συστήματα Ι)")) { - return greeklish ? "anal_thlep" : "Αναλογικές Τηλεπ."; - } else if (course.contains("Αντικειμενοστραφής Προγραμματισμός")) { - return greeklish ? "OOP" : "Αντικειμενοστραφής"; - } else if (course.contains("Αξιοπιστία Συστημάτων")) { - return greeklish ? "aksiopistia_systhmatwn" : "Αξιοπιστία Συστημάτων"; - } else if (course.contains("Αριθμητική Ανάλυση")) { - return greeklish ? "arith_anal" : "Αριθμ. Ανάλυση"; - } else if (course.contains("Αρχές Οικονομίας")) { - return greeklish ? "arx_oikonomias" : "Αρχές Οικονομίας"; - } else if (course.contains("Αρχές Παράλληλης Επεξεργασίας")) { - return greeklish ? "arxes_parall_epeksergasias" : "Αρχές Παράλληλης Επεξεργασίας"; - } else if (course.contains("Αρχιτεκτονική Υπολογιστών")) { - return greeklish ? "arx_ypologistwn" : "Αρχ. Υπολογιστών"; - } else if (course.contains("Ασαφή Συστήματα")) { - return greeklish ? "asafh" : "Ασαφή"; - } else if (course.contains("Ασφάλεια Πληροφοριακών Συστημάτων")) { - return greeklish ? "asfaleia" : "Ασφάλεια"; - } else if (course.contains("Ασύρματος Τηλεπικοινωνία Ι")) { - return greeklish ? "asyrmatos_I" : "Ασύρματος 1"; - } else if (course.contains("Ασύρματος Τηλεπικοινωνία ΙΙ")) { - return greeklish ? "asyrmatos_II" : "Ασύρματος 2"; - } else if (course.contains("Βάσεις Δεδομένων")) { - return greeklish ? "vaseis" : "Βάσεις"; - } else if (course.contains("Βιομηχανικά Ηλεκτρονικά")) { - return greeklish ? "bhomix_hlektronika" : "Βιομηχανικά Ηλεκτρονικά"; - } else if (course.contains("Βιομηχανική Πληροφορική")) { - return greeklish ? "viomix_plir" : "Βιομηχανική Πληρ"; - } else if (course.contains("Βιοϊατρική Τεχνολογία")) { - return greeklish ? "vioiatriki" : "Βιοιατρική"; - } else if (course.contains("Γεωηλεκτρομαγνητισμός")) { - return greeklish ? "geohlektromagnitismos" : "Γεωηλεκτρομαγνητισμός"; - } else if (course.contains("Γραμμική Άλγεβρα")) { - return greeklish ? "grammikh_algebra" : "Γραμμ. Άλγεβρ."; - } else if (course.contains("Γραφική με Υπολογιστές")) { - return greeklish ? "grafikh" : "Γραφική"; - } else if (course.contains("Δίκτυα Τηλεπικοινωνιών")) { - return greeklish ? "diktya_thlep" : "Δίκτυα Τηλέπ."; - } else if (course.contains("Δίκτυα Υπολογιστών Ι")) { - return greeklish ? "diktya_I" : "Δίκτυα 1"; - } else if (course.contains("Δίκτυα Υπολογιστών ΙΙ")) { - return greeklish ? "diktya_II" : "Δίκτυα 2"; - } else if (course.contains("Διάδοση Η/Μ Κύματος ΙΙ")) { - return greeklish ? "diadosi_II" : "Διάδοση 2"; - } else if (course.contains("Διάδοση Ηλεκτρομαγνητικού Κύματος Ι (πρώην Πεδίο ΙΙΙ)")) { - return greeklish ? "diadosi_1" : "Διάδοση 1"; - } else if (course.contains("Διακριτά Μαθηματικά")) { - return greeklish ? "diakrita" : "Διακριτά Μαθηματικά"; - } else if (course.contains("Διακριτά μαθηματικά")) { - return greeklish ? "diakrita" : "Διακριτά Μαθηματικά"; - } else if (course.contains("Διανεμημένη Παραγωγή")) { - return greeklish ? "dian_paragwgh" : "Διανεμημένη Παραγωγή"; - } else if (course.contains("Διαφορικές Εξισώσεις")) { - return greeklish ? "diaforikes" : "Διαφορικές"; - } else if (course.contains("Διαχείριση Συστημάτων Ηλεκτρικής Ενέργειας")) { - return greeklish ? "dshe" : "ΔΣΗΕ"; - } else if (course.contains("Δομές Δεδομένων")) { - return greeklish ? "dom_dedomenwn" : "Δομ. Δεδομ."; - } else if (course.contains("Δομημένος Προγραμματισμός")) { - return greeklish ? "C" : "Δομ. Προγραμμ."; - } else if (course.contains("Ειδικά Κεφάλαια Διαφορικών Εξισώσεων")) { - return greeklish ? "eidika_kef_diaf_eksis" : "Ειδικά Κεφάλαια Διαφορικών Εξισώσεων"; - } else if (course.contains("Ειδικά Κεφάλαια Ηλεκτρομαγνητικού Πεδίου Ι")) { - return greeklish ? "eidika_kef_HM_pedioy_I" : "Ειδικά Κεφάλαια Ηλεκτρομαγνητικού Πεδίου Ι"; - } else if (course.contains("Ειδικά Κεφάλαια Συστημάτων Ηλεκτρικής Ενέργειας")) { - return greeklish ? "ekshe" : "ΕΚΣΗΕ"; - } else if (course.contains("Ειδικές Αρχιτεκτονικές Υπολογιστών")) { - return greeklish ? "eidikes_arx_ypolog" : "Ειδικές Αρχιτεκτονικές Υπολογιστών"; - } else if (course.contains("Ειδικές Κεραίες, Σύνθεση Κεραιών")) { - return greeklish ? "eidikes_keraies" : "Ειδικές Κεραίες, Σύνθεση Κεραιών"; - } else if (course.contains("Εισαγωγή στην Ενεργειακή Τεχνολογία Ι")) { - return greeklish ? "EET_I" : "ΕΕΤ 1"; - } else if (course.contains("Εισαγωγή στην Ενεργειακή Τεχνολογία ΙΙ")) { - return greeklish ? "EET_2" : "ΕΕΤ2"; - } else if (course.contains("Εισαγωγή στην Πολιτική Οικονομία")) { - return greeklish ? "polit_oik" : "Πολιτική Οικονομία"; - } else if (course.contains("Εισαγωγή στις εφαρμογές Πυρηνικής Τεχνολογίας")) { - return greeklish ? "Intro_Purhnikh_Texn" : "Εισ. Πυρηνικη Τεχν."; - } else if (course.contains("Ενσωματωμένα Συστήματα Πραγματικού Χρόνου")) { - return greeklish ? "enswmatwmena" : "Ενσωματωμένα"; - } else if (course.contains("Επιχειρησιακή Έρευνα")) { - return greeklish ? "epixeirisiaki" : "Επιχειρησιακή Έρευνα"; - } else if (course.contains("Ευρυζωνικά Δίκτυα")) { - return greeklish ? "eyryzwnika" : "Ευρυζωνικά"; - } else if (course.contains("Ευφυή Συστήματα Ρομπότ")) { - return greeklish ? "eufuh" : "Ευφυή"; - } else if (course.contains("Εφαρμογές Τηλεπικοινωνιακών Διατάξεων")) { - return greeklish ? "efarm_thlep_diataksewn" : "Εφαρμογές Τηλεπ. Διατάξεων"; - } else if (course.contains("Εφαρμοσμένα Μαθηματικά Ι")) { - return greeklish ? "efarmosmena_math_I" : "Εφαρμοσμένα 1"; - } else if (course.contains("Εφαρμοσμένα Μαθηματικά ΙΙ")) { - return greeklish ? "efarmosmena_math_II" : "Εφαρμοσμένα 2"; - } else if (course.contains("Εφαρμοσμένη Θερμοδυναμική")) { - return greeklish ? "thermodynamikh" : "Θερμοδυναμική"; - } else if (course.contains("Ηλεκτρακουστική Ι")) { - return greeklish ? "hlektroakoystikh_I" : "Ηλεκτροακουστική 1"; - } else if (course.contains("Ηλεκτρακουστική ΙΙ")) { - return greeklish ? "hlektroakoystikh_II" : "Ηλεκτροακουστική 2"; - } else if (course.contains("Ηλεκτρικά Κυκλώματα Ι")) { - return greeklish ? "kyklwmata_I" : "Κυκλώματα 1"; - } else if (course.contains("Ηλεκτρικά Κυκλώματα ΙΙ")) { - return greeklish ? "kyklwmata_II" : "Κυκλώματα 2"; - } else if (course.contains("Ηλεκτρικά Κυκλώματα ΙΙΙ")) { - return greeklish ? "kyklwmata_I" : "Κυκλώματα 3"; - } else if (course.contains("Ηλεκτρικές Μετρήσεις Ι")) { - return greeklish ? "metrhseis_1" : "Μετρήσεις 1"; - } else if (course.contains("Ηλεκτρικές Μετρήσεις ΙΙ")) { - return greeklish ? "metrhseis_II" : "Μετρήσεις 2"; - } else if (course.contains("Ηλεκτρικές Μηχανές Α'")) { - return greeklish ? "mhxanes_A" : "Μηχανές Α"; - } else if (course.contains("Ηλεκτρικές Μηχανές Β'")) { - return greeklish ? "mhxanes_B" : "Μηχανές Β"; - } else if (course.contains("Ηλεκτρικές Μηχανές Γ'")) { - return greeklish ? "mhxanes_C" : "Μηχανές Γ"; - } else if (course.contains("Ηλεκτρική Οικονομία")) { - return greeklish ? "hlektr_oikonomia" : "Ηλεκτρική Οικονομία"; - } else if (course.contains("Ηλεκτρολογικά Υλικά")) { - return greeklish ? "ylika" : "Ηλεκτρ. Υλικά"; - } else if (course.contains("Ηλεκτρομαγνητική Συμβατότητα")) { - return greeklish ? "HM_symvatothta" : "H/M Συμβατότητα"; - } else if (course.contains("Ηλεκτρομαγνητικό Πεδίο Ι")) { - return greeklish ? "pedio_I" : "Πεδίο 1"; - } else if (course.contains("Ηλεκτρομαγνητικό Πεδίο ΙΙ")) { - return greeklish ? "pedio_II" : "Πεδίο 2"; - } else if (course.contains("Ηλεκτρονικά Ισχύος Ι")) { - return greeklish ? "isxyos_I" : "Ισχύος 1"; - } else if (course.contains("Ηλεκτρονικά Ισχύος ΙΙ")) { - return greeklish ? "isxyos_II" : "Ισχύος 2"; - } else if (course.contains("Ηλεκτρονικές Διατάξεις και Μετρήσεις")) { - return greeklish ? "hlektron_diatakseis_metrhseis" : "Ηλεκτρονικές Διατάξεις και Μετρήσεις"; - } else if (course.contains("Ηλεκτρονική Ι")) { - return greeklish ? "hlektronikh_1" : "Ηλεκτρονική 1"; - } else if (course.contains("Ηλεκτρονική ΙΙ")) { - return greeklish ? "hlektronikh_2" : "Ηλεκτρονική 2"; - } else if (course.contains("Ηλεκτρονική ΙΙΙ")) { - return greeklish ? "hlektronikh_III" : "Ηλεκτρονική 3"; - } else if (course.contains("Ημιαγωγά Υλικά: Θεωρία-Διατάξεις")) { - return greeklish ? "Hmiagwga_Ylika" : "Ημιαγωγά Υλικά"; - } else if (course.contains("Θεωρία Πιθανοτήτων και Στατιστική")) { - return greeklish ? "pithanothtes" : "Πιθανότητες"; - } else if (course.contains("Θεωρία Πληροφοριών")) { - return greeklish ? "theoria_plir" : "Θεωρία Πληρ."; - } else if (course.contains("Θεωρία Σημάτων και Γραμμικών Συστημάτων")) { + if (course.contains("Ψηφιακή Επεξεργασία Σήματος")) { + return greeklish ? "PSES" : "ΨΕΣ"; + } else if (course.contains("Ψηφιακή Επεξεργασία Εικόνας")) { + return greeklish ? "psee" : "ΨΕΕ"; + } else if (course.contains("Ψηφιακές Τηλεπικοινωνίες ΙΙ")) { + return greeklish ? "pshf_thlep_II" : "Ψηφιακές Τηλεπ. 2"; + } else if (course.contains("Ψηφιακές Τηλεπικοινωνίες Ι")) { + return greeklish ? "pshf_thlep_I" : "Ψηφιακές Τηλεπ. 1"; + } else if (course.contains("Ψηφιακά Φίλτρα")) { + return greeklish ? "filtra" : "Φίλτρα"; + } else if (course.contains("Ψηφιακά Συστήματα ΙΙΙ")) { + return greeklish ? "pshfiaka_III" : "Ψηφιακά 3"; + } else if (course.contains("Ψηφιακά Συστήματα ΙΙ")) { + return greeklish ? "pshfiaka_II" : "Ψηφιακά 2"; + } else if (course.contains("Ψηφιακά Συστήματα Ι")) { + return greeklish ? "pshfiaka_I" : "Ψηφιακά 1"; + } else if (course.contains("Φωτονική Τεχνολογία")) { + return greeklish ? "fwtonikh" : "Φωτονική"; + } else if (course.contains("Φυσική Ι")) { + return greeklish ? "fysikh_I" : "Φυσική 1"; + } else if (course.contains("Υψηλές Τάσεις ΙΙΙ")) { + return greeklish ? "ypshles_III" : "Υψηλές 3"; + } else if (course.contains("Υψηλές Τάσεις ΙΙ")) { + return greeklish ? "ypshles_II" : "Υψηλές 2"; + } else if (course.contains("Υψηλές Τάσεις Ι")) { + return greeklish ? "ypshles_I" : "Υψηλές 1"; + } else if (course.contains("Υψηλές Τάσεις 4")) { + return greeklish ? "ypshles_IV" : "Υψηλές 4"; + } else if (course.contains("Υπολογιστικός Ηλεκτρομαγνητισμός")) { + return greeklish ? "ypologistikos_HM" : "Υπολογιστικός Η/Μ"; + } else if (course.contains("Υπολογιστικές Μέθοδοι στα Ενεργειακά Συστήματα")) { + return greeklish ? "ymes" : "ΥΜΕΣ"; + } else if (course.contains("Τηλεπικοινωνιακή Ηλεκτρονική")) { + return greeklish ? "tilep_ilektr" : "Τηλεπ. Ηλεκτρ."; + } else if (course.contains("Τηλεοπτικά Συστήματα")) { + return greeklish ? "tileoptika" : "Τηλεοπτικά"; + } else if (course.contains("Τεχνολογία Λογισμικού")) { + return greeklish ? "SE" : "Τεχνολογία Λογισμικού"; + } else if (course.contains("Τεχνολογία Ηλεκτροτεχνικών Υλικών")) { + return greeklish ? "Hlektrotexnika_Ylika" : "Ηλεκτροτεχνικά Υλικά"; + } else if (course.contains("Τεχνολογία Ήχου και Εικόνας")) { + return greeklish ? "texn_hxoy_eikonas" : "Τεχνολογία Ήχου και Εικόνας"; + } else if (course.contains("Τεχνική Μηχανική")) { + return greeklish ? "texn_mhxan" : "Τεχν. Μηχαν."; + } else if (course.contains("Τεχνικές μη Καταστρεπτικών Δοκιμών")) { + return greeklish ? "non_destructive_tests" : "Μη Καταστρεπτικές Δοκιμές"; + } else if (course.contains("Τεχνικές Σχεδίασης με Η/Υ")) { + return greeklish ? "sxedio" : "Σχέδιο"; + } else if (course.contains("Τεχνικές Κωδικοποίησης")) { + return greeklish ? "texn_kwdikopoihshs" : "Τεχνικές Κωδικοποίησης"; + } else if (course.contains("Τεχνικές Βελτιστοποίησης")) { + return greeklish ? "veltistopoihsh" : "Βελτιστοποίηση"; + } else if (course.contains("Σύνθεση Τηλεπικοινωνιακών Διατάξεων")) { + return greeklish ? "synth_thlep_diataksewn" : "Σύνθεση Τηλεπ. Διατάξεων"; + } else if (course.contains("Σύνθεση Ενεργών και Παθητικών Κυκλωμάτων")) { + return greeklish ? "synthesh" : "Σύνθεση"; + } else if (course.contains("Σχεδίαση Συστημάτων VLSI")) { + return greeklish ? "VLSI" : "VLSI"; + } else if (course.contains("Συστήματα Υπολογιστών (Υπολογιστικά Συστήματα)")) { + return greeklish ? "sys_ypologistwn" : "Συσ. Υπολογιστών"; + } else if (course.contains("Συστήματα Πολυμέσων και Εικονική Πραγματικότητα")) { + return greeklish ? "polymesa" : "Πολυμέσα"; + } else if (course.contains("Συστήματα Μικροϋπολογιστών")) { + return greeklish ? "mikro_I" : "Μίκρο 1"; + } else if (course.contains("Συστήματα Ηλεκτροκίνησης")) { + return greeklish ? "hlektrokinhsh" : "Ηλεκτροκίνηση"; + } else if (course.contains("Συστήματα Ηλεκτρικής Ενέργειας ΙΙΙ")) { + return greeklish ? "SHE_III" : "ΣΗΕ 3"; + } else if (course.contains("Συστήματα Ηλεκτρικής Ενέργειας ΙΙ")) { + return greeklish ? "SHE_II" : "ΣΗΕ 2"; + } else if (course.contains("Συστήματα Ηλεκτρικής Ενέργειας Ι")) { + return greeklish ? "SHE_I" : "ΣΗΕ 1"; + } else if (course.contains("Συστήματα Αυτομάτου Ελέγχου ΙΙI")) { + return greeklish ? "SAE_III" : "ΣΑΕ 3"; + } else if (course.contains("Συστήματα Αυτομάτου Ελέγχου ΙΙ")) { + return greeklish ? "SAE_II" : "ΣΑΕ 2"; + } else if (course.contains("Συστήματα Αυτομάτου Ελέγχου Ι")) { + return greeklish ? "SAE_1" : "ΣΑΕ 1"; + } else if (course.contains("Στοχαστικό Σήμα")) { + return greeklish ? "stox_shma" : "Στοχ. Σήμα"; + } else if (course.contains("Σταθμοί Παραγωγής Ηλεκτρικής Ενέργειας")) { + return greeklish ? "SPHE" : "ΣΠΗΕ"; + } else if (course.contains("Σερβοκινητήρια Συστήματα")) { + return greeklish ? "servo" : "Σέρβο"; + } else if (course.contains("Σήματα και Συστήματα")) { return greeklish ? "analog_shma" : "Σύματα & Συστήματα"; - } else if (course.contains("Θεωρία Σκέδασης")) { - return greeklish ? "skedash" : "Σκέδαση"; - } else if (course.contains("Θεωρία Υπολογισμών και Αλγορίθμων")) { - return greeklish ? "thya" : "ΘΥΑ"; - } else if (course.contains("Θεωρία και Τεχνολογία Πυρηνικών Αντιδραστήρων")) { - return greeklish ? "texn_antidrasthrwn" : "Τεχνολογία Αντιδραστήρων"; - } else if (course.contains("Κβαντική Φυσική")) { - return greeklish ? "kvantikh" : "Κβαντική"; - } else if (course.contains("Κινητές και Δορυφορικές Επικοινωνίες")) { - return greeklish ? "kinhtes_doryforikes_epik" : "Κινητές & Δορυφορικές Επικοινωνίες"; - } else if (course.contains("Λειτουργικά Συστήματα")) { - return greeklish ? "OS" : "Λειτουργικά"; - } else if (course.contains("Λογική Σχεδίαση")) { - return greeklish ? "logiki_sxediash" : "Λογική Σχεδίαση"; - } else if (course.contains("Λογισμός Ι")) { - return greeklish ? "logismos_I" : "Λογισμός 1"; - } else if (course.contains("Λογισμός ΙΙ")) { - return greeklish ? "logismos_II" : "Λογισμός 2"; - } else if (course.contains("Μετάδοση Θερμότητας")) { - return greeklish ? "metadosi_therm" : "Μετάδοση Θερμ."; - } else if (course.contains("Μικροεπεξεργαστές και Περιφερειακά")) { - return greeklish ? "mikro_II" : "Μίκρο 2"; - } else if (course.contains("Μικροκυματική Τηλεπισκόπηση")) { - return greeklish ? "thlepiskophsh" : "Τηλεπισκόπηση"; - } else if (course.contains("Μικροκύματα I")) { - return greeklish ? "mikrokymata_I" : "Μικροκύματα 1"; - } else if (course.contains("Μικροκύματα II")) { - return greeklish ? "mikrokymata_II" : "Μικροκύματα 2"; - } else if (course.contains("Οπτικές Επικοινωνίες")) { - return greeklish ? "optikes_thlep" : "Οπτικές Τηλεπ."; - } else if (course.contains("Οπτική Ι")) { - return greeklish ? "optikh_I" : "Οπτική 1"; - } else if (course.contains("Οπτική ΙΙ")) { - return greeklish ? "optikh_II" : "Οπτική 2"; - } else if (course.contains("Οργάνωση Υπολογιστών")) { - return greeklish ? "org_ypol" : "Οργάνωση Υπολ."; - } else if (course.contains("Οργάνωση και Διοίκηση Εργοστασίων")) { - return greeklish ? "organ_dioik_ergostasiwn" : "Οργάνωση και Διοίκηση Εργοστασίων"; - } else if (course.contains("Παράλληλα και Κατανεμημένα Συστήματα")) { - return greeklish ? "parallhla" : "Παράλληλα"; - } else if (course.contains("Προγραμματιζόμενα Κυκλώματα ASIC")) { - return greeklish ? "asic" : "ASIC"; - } else if (course.contains("Προγραμματιστικές Τεχνικές")) { - return greeklish ? "cpp" : "Προγραμματ. Τεχν."; - } else if (course.contains("Προηγμένες Τεχνικές Επεξεργασίας Σήματος")) { - return greeklish ? "ptes" : "ΠΤΕΣ"; - } else if (course.contains("Προσομοίωση και Μοντελοποίηση Συστημάτων")) { - return greeklish ? "montelopoihsh" : "Μοντελοποίηση"; } else if (course.contains("Ρομποτική")) { return greeklish ? "rompotikh" : "Ρομποτική"; - } else if (course.contains("Σήματα και Συστήματα")) { + } else if (course.contains("Προσομοίωση και Μοντελοποίηση Συστημάτων")) { + return greeklish ? "montelopoihsh" : "Μοντελοποίηση"; + } else if (course.contains("Προηγμένες Τεχνικές Επεξεργασίας Σήματος")) { + return greeklish ? "ptes" : "ΠΤΕΣ"; + } else if (course.contains("Προγραμματιστικές Τεχνικές")) { + return greeklish ? "cpp" : "Προγραμματ. Τεχν."; + } else if (course.contains("Προγραμματιζόμενα Κυκλώματα ASIC")) { + return greeklish ? "asic" : "ASIC"; + } else if (course.contains("Παράλληλα και Κατανεμημένα Συστήματα")) { + return greeklish ? "parallhla" : "Παράλληλα"; + } else if (course.contains("Οργάνωση και Διοίκηση Εργοστασίων")) { + return greeklish ? "organ_dioik_ergostasiwn" : "Οργάνωση και Διοίκηση Εργοστασίων"; + } else if (course.contains("Οργάνωση Υπολογιστών")) { + return greeklish ? "org_ypol" : "Οργάνωση Υπολ."; + } else if (course.contains("Οπτική ΙΙ")) { + return greeklish ? "optikh_II" : "Οπτική 2"; + } else if (course.contains("Οπτική Ι")) { + return greeklish ? "optikh_I" : "Οπτική 1"; + } else if (course.contains("Οπτικές Επικοινωνίες")) { + return greeklish ? "optikes_thlep" : "Οπτικές Τηλεπ."; + } else if (course.contains("Μικροκύματα II")) { + return greeklish ? "mikrokymata_II" : "Μικροκύματα 2"; + } else if (course.contains("Μικροκύματα I")) { + return greeklish ? "mikrokymata_I" : "Μικροκύματα 1"; + } else if (course.contains("Μικροκυματική Τηλεπισκόπηση")) { + return greeklish ? "thlepiskophsh" : "Τηλεπισκόπηση"; + } else if (course.contains("Μικροεπεξεργαστές και Περιφερειακά")) { + return greeklish ? "mikro_II" : "Μίκρο 2"; + } else if (course.contains("Μετάδοση Θερμότητας")) { + return greeklish ? "metadosi_therm" : "Μετάδοση Θερμ."; + } else if (course.contains("Λογισμός ΙΙ")) { + return greeklish ? "logismos_II" : "Λογισμός 2"; + } else if (course.contains("Λογισμός Ι")) { + return greeklish ? "logismos_I" : "Λογισμός 1"; + } else if (course.contains("Λογική Σχεδίαση")) { + return greeklish ? "logiki_sxediash" : "Λογική Σχεδίαση"; + } else if (course.contains("Λειτουργικά Συστήματα")) { + return greeklish ? "OS" : "Λειτουργικά"; + } else if (course.contains("Κινητές και Δορυφορικές Επικοινωνίες")) { + return greeklish ? "kinhtes_doryforikes_epik" : "Κινητές & Δορυφορικές Επικοινωνίες"; + } else if (course.contains("Κβαντική Φυσική")) { + return greeklish ? "kvantikh" : "Κβαντική"; + } else if (course.contains("Θεωρία και Τεχνολογία Πυρηνικών Αντιδραστήρων")) { + return greeklish ? "texn_antidrasthrwn" : "Τεχνολογία Αντιδραστήρων"; + } else if (course.contains("Θεωρία Υπολογισμών και Αλγορίθμων")) { + return greeklish ? "thya" : "ΘΥΑ"; + } else if (course.contains("Θεωρία Σκέδασης")) { + return greeklish ? "skedash" : "Σκέδαση"; + } else if (course.contains("Θεωρία Σημάτων και Γραμμικών Συστημάτων")) { return greeklish ? "analog_shma" : "Σύματα & Συστήματα"; - } else if (course.contains("Σερβοκινητήρια Συστήματα")) { - return greeklish ? "servo" : "Σέρβο"; - } else if (course.contains("Σταθμοί Παραγωγής Ηλεκτρικής Ενέργειας")) { - return greeklish ? "SPHE" : "ΣΠΗΕ"; - } else if (course.contains("Στοχαστικό Σήμα")) { - return greeklish ? "stox_shma" : "Στοχ. Σήμα"; - } else if (course.contains("Συστήματα Αυτομάτου Ελέγχου Ι")) { - return greeklish ? "SAE_1" : "ΣΑΕ 1"; - } else if (course.contains("Συστήματα Αυτομάτου Ελέγχου ΙΙ")) { - return greeklish ? "SAE_II" : "ΣΑΕ 2"; - } else if (course.contains("Συστήματα Αυτομάτου Ελέγχου ΙΙI")) { - return greeklish ? "SAE_III" : "ΣΑΕ 3"; - } else if (course.contains("Συστήματα Ηλεκτρικής Ενέργειας Ι")) { - return greeklish ? "SHE_I" : "ΣΗΕ 1"; - } else if (course.contains("Συστήματα Ηλεκτρικής Ενέργειας ΙΙ")) { - return greeklish ? "SHE_II" : "ΣΗΕ 2"; - } else if (course.contains("Συστήματα Ηλεκτρικής Ενέργειας ΙΙΙ")) { - return greeklish ? "SHE_III" : "ΣΗΕ 3"; - } else if (course.contains("Συστήματα Ηλεκτροκίνησης")) { - return greeklish ? "hlektrokinhsh" : "Ηλεκτροκίνηση"; - } else if (course.contains("Συστήματα Μικροϋπολογιστών")) { - return greeklish ? "mikro_I" : "Μίκρο 1"; - } else if (course.contains("Συστήματα Πολυμέσων και Εικονική Πραγματικότητα")) { - return greeklish ? "polymesa" : "Πολυμέσα"; - } else if (course.contains("Συστήματα Υπολογιστών (Υπολογιστικά Συστήματα)")) { - return greeklish ? "sys_ypologistwn" : "Συσ. Υπολογιστών"; - } else if (course.contains("Σχεδίαση Συστημάτων VLSI")) { - return greeklish ? "VLSI" : "VLSI"; - } else if (course.contains("Σύνθεση Ενεργών και Παθητικών Κυκλωμάτων")) { - return greeklish ? "synthesh" : "Σύνθεση"; - } else if (course.contains("Σύνθεση Τηλεπικοινωνιακών Διατάξεων")) { - return greeklish ? "synth_thlep_diataksewn" : "Σύνθεση Τηλεπ. Διατάξεων"; - } else if (course.contains("Τεχνικές Βελτιστοποίησης")) { - return greeklish ? "veltistopoihsh" : "Βελτιστοποίηση"; - } else if (course.contains("Τεχνικές Κωδικοποίησης")) { - return greeklish ? "texn_kwdikopoihshs" : "Τεχνικές Κωδικοποίησης"; - } else if (course.contains("Τεχνικές Σχεδίασης με Η/Υ")) { - return greeklish ? "sxedio" : "Σχέδιο"; - } else if (course.contains("Τεχνικές μη Καταστρεπτικών Δοκιμών")) { - return greeklish ? "non_destructive_tests" : "Μη Καταστρεπτικές Δοκιμές"; - } else if (course.contains("Τεχνική Μηχανική")) { - return greeklish ? "texn_mhxan" : "Τεχν. Μηχαν."; - } else if (course.contains("Τεχνολογία Ήχου και Εικόνας")) { - return greeklish ? "texn_hxoy_eikonas" : "Τεχνολογία Ήχου και Εικόνας"; - } else if (course.contains("Τεχνολογία Ηλεκτροτεχνικών Υλικών")) { - return greeklish ? "Hlektrotexnika_Ylika" : "Ηλεκτροτεχνικά Υλικά"; - } else if (course.contains("Τεχνολογία Λογισμικού")) { - return greeklish ? "SE" : "Τεχνολογία Λογισμικού"; - } else if (course.contains("Τηλεοπτικά Συστήματα")) { - return greeklish ? "tileoptika" : "Τηλεοπτικά"; - } else if (course.contains("Τηλεπικοινωνιακή Ηλεκτρονική")) { - return greeklish ? "tilep_ilektr" : "Τηλεπ. Ηλεκτρ."; - } else if (course.contains("Υπολογιστικές Μέθοδοι στα Ενεργειακά Συστήματα")) { - return greeklish ? "ymes" : "ΥΜΕΣ"; - } else if (course.contains("Υπολογιστικός Ηλεκτρομαγνητισμός")) { - return greeklish ? "ypologistikos_HM" : "Υπολογιστικός Η/Μ"; - } else if (course.contains("Υψηλές Τάσεις 4")) { - return greeklish ? "ypshles_IV" : "Υψηλές 4"; - } else if (course.contains("Υψηλές Τάσεις Ι")) { - return greeklish ? "ypshles_I" : "Υψηλές 1"; - } else if (course.contains("Υψηλές Τάσεις ΙΙ")) { - return greeklish ? "ypshles_II" : "Υψηλές 2"; - } else if (course.contains("Υψηλές Τάσεις ΙΙΙ")) { - return greeklish ? "ypshles_III" : "Υψηλές 3"; - } else if (course.contains("Φυσική Ι")) { - return greeklish ? "fysikh_I" : "Φυσική 1"; - } else if (course.contains("Φωτονική Τεχνολογία")) { - return greeklish ? "fwtonikh" : "Φωτονική"; - } else if (course.contains("Ψηφιακά Συστήματα Ι")) { - return greeklish ? "pshfiaka_I" : "Ψηφιακά 1"; - } else if (course.contains("Ψηφιακά Συστήματα ΙΙ")) { - return greeklish ? "pshfiaka_II" : "Ψηφιακά 2"; - } else if (course.contains("Ψηφιακά Συστήματα ΙΙΙ")) { - return greeklish ? "pshfiaka_III" : "Ψηφιακά 3"; - } else if (course.contains("Ψηφιακά Φίλτρα")) { - return greeklish ? "filtra" : "Φίλτρα"; - } else if (course.contains("Ψηφιακές Τηλεπικοινωνίες Ι")) { - return greeklish ? "pshf_thlep_I" : "Ψηφιακές Τηλεπ. 1"; - } else if (course.contains("Ψηφιακές Τηλεπικοινωνίες ΙΙ")) { - return greeklish ? "pshf_thlep_II" : "Ψηφιακές Τηλεπ. 2"; - } else if (course.contains("Ψηφιακή Επεξεργασία Εικόνας")) { - return greeklish ? "psee" : "ΨΕΕ"; - } else if (course.contains("Ψηφιακή Επεξεργασία Σήματος")) { - return greeklish ? "PSES" : "ΨΕΣ"; + } else if (course.contains("Θεωρία Πληροφοριών")) { + return greeklish ? "theoria_plir" : "Θεωρία Πληρ."; + } else if (course.contains("Θεωρία Πιθανοτήτων και Στατιστική")) { + return greeklish ? "pithanothtes" : "Πιθανότητες"; + } else if (course.contains("Ημιαγωγά Υλικά: Θεωρία-Διατάξεις")) { + return greeklish ? "Hmiagwga_Ylika" : "Ημιαγωγά Υλικά"; + } else if (course.contains("Ηλεκτρονική ΙΙΙ")) { + return greeklish ? "hlektronikh_III" : "Ηλεκτρονική 3"; + } else if (course.contains("Ηλεκτρονική ΙΙ")) { + return greeklish ? "hlektronikh_2" : "Ηλεκτρονική 2"; + } else if (course.contains("Ηλεκτρονική Ι")) { + return greeklish ? "hlektronikh_1" : "Ηλεκτρονική 1"; + } else if (course.contains("Ηλεκτρονικές Διατάξεις και Μετρήσεις")) { + return greeklish ? "hlektron_diatakseis_metrhseis" : "Ηλεκτρονικές Διατάξεις και Μετρήσεις"; + } else if (course.contains("Ηλεκτρονικά Ισχύος ΙΙ")) { + return greeklish ? "isxyos_II" : "Ισχύος 2"; + } else if (course.contains("Ηλεκτρονικά Ισχύος Ι")) { + return greeklish ? "isxyos_I" : "Ισχύος 1"; + } else if (course.contains("Ηλεκτρομαγνητικό Πεδίο ΙΙ")) { + return greeklish ? "pedio_II" : "Πεδίο 2"; + } else if (course.contains("Ηλεκτρομαγνητικό Πεδίο Ι")) { + return greeklish ? "pedio_I" : "Πεδίο 1"; + } else if (course.contains("Ηλεκτρομαγνητική Συμβατότητα")) { + return greeklish ? "HM_symvatothta" : "H/M Συμβατότητα"; + } else if (course.contains("Ηλεκτρολογικά Υλικά")) { + return greeklish ? "ylika" : "Ηλεκτρ. Υλικά"; + } else if (course.contains("Ηλεκτρική Οικονομία")) { + return greeklish ? "hlektr_oikonomia" : "Ηλεκτρική Οικονομία"; + } else if (course.contains("Ηλεκτρικές Μηχανές Γ'")) { + return greeklish ? "mhxanes_C" : "Μηχανές Γ"; + } else if (course.contains("Ηλεκτρικές Μηχανές Β'")) { + return greeklish ? "mhxanes_B" : "Μηχανές Β"; + } else if (course.contains("Ηλεκτρικές Μηχανές Α'")) { + return greeklish ? "mhxanes_A" : "Μηχανές Α"; + } else if (course.contains("Ηλεκτρικές Μετρήσεις ΙΙ")) { + return greeklish ? "metrhseis_II" : "Μετρήσεις 2"; + } else if (course.contains("Ηλεκτρικές Μετρήσεις Ι")) { + return greeklish ? "metrhseis_1" : "Μετρήσεις 1"; + } else if (course.contains("Ηλεκτρικά Κυκλώματα ΙΙΙ")) { + return greeklish ? "kyklwmata_I" : "Κυκλώματα 3"; + } else if (course.contains("Ηλεκτρικά Κυκλώματα ΙΙ")) { + return greeklish ? "kyklwmata_II" : "Κυκλώματα 2"; + } else if (course.contains("Ηλεκτρικά Κυκλώματα Ι")) { + return greeklish ? "kyklwmata_I" : "Κυκλώματα 1"; + } else if (course.contains("Ηλεκτρακουστική ΙΙ")) { + return greeklish ? "hlektroakoystikh_II" : "Ηλεκτροακουστική 2"; + } else if (course.contains("Ηλεκτρακουστική Ι")) { + return greeklish ? "hlektroakoystikh_I" : "Ηλεκτροακουστική 1"; + } else if (course.contains("Εφαρμοσμένη Θερμοδυναμική")) { + return greeklish ? "thermodynamikh" : "Θερμοδυναμική"; + } else if (course.contains("Εφαρμοσμένα Μαθηματικά ΙΙ")) { + return greeklish ? "efarmosmena_math_II" : "Εφαρμοσμένα 2"; + } else if (course.contains("Εφαρμοσμένα Μαθηματικά Ι")) { + return greeklish ? "efarmosmena_math_I" : "Εφαρμοσμένα 1"; + } else if (course.contains("Εφαρμογές Τηλεπικοινωνιακών Διατάξεων")) { + return greeklish ? "efarm_thlep_diataksewn" : "Εφαρμογές Τηλεπ. Διατάξεων"; + } else if (course.contains("Ευφυή Συστήματα Ρομπότ")) { + return greeklish ? "eufuh" : "Ευφυή"; + } else if (course.contains("Ευρυζωνικά Δίκτυα")) { + return greeklish ? "eyryzwnika" : "Ευρυζωνικά"; + } else if (course.contains("Επιχειρησιακή Έρευνα")) { + return greeklish ? "epixeirisiaki" : "Επιχειρησιακή Έρευνα"; + } else if (course.contains("Ενσωματωμένα Συστήματα Πραγματικού Χρόνου")) { + return greeklish ? "enswmatwmena" : "Ενσωματωμένα"; + } else if (course.contains("Εισαγωγή στις εφαρμογές Πυρηνικής Τεχνολογίας")) { + return greeklish ? "Intro_Purhnikh_Texn" : "Εισ. Πυρηνικη Τεχν."; + } else if (course.contains("Εισαγωγή στην Πολιτική Οικονομία")) { + return greeklish ? "polit_oik" : "Πολιτική Οικονομία"; + } else if (course.contains("Εισαγωγή στην Ενεργειακή Τεχνολογία ΙΙ")) { + return greeklish ? "EET_2" : "ΕΕΤ2"; + } else if (course.contains("Εισαγωγή στην Ενεργειακή Τεχνολογία Ι")) { + return greeklish ? "EET_I" : "ΕΕΤ 1"; + } else if (course.contains("Ειδικές Κεραίες, Σύνθεση Κεραιών")) { + return greeklish ? "eidikes_keraies" : "Ειδικές Κεραίες, Σύνθεση Κεραιών"; + } else if (course.contains("Ειδικές Αρχιτεκτονικές Υπολογιστών")) { + return greeklish ? "eidikes_arx_ypolog" : "Ειδικές Αρχιτεκτονικές Υπολογιστών"; + } else if (course.contains("Ειδικά Κεφάλαια Συστημάτων Ηλεκτρικής Ενέργειας")) { + return greeklish ? "ekshe" : "ΕΚΣΗΕ"; + } else if (course.contains("Ειδικά Κεφάλαια Ηλεκτρομαγνητικού Πεδίου Ι")) { + return greeklish ? "eidika_kef_HM_pedioy_I" : "Ειδικά Κεφάλαια Ηλεκτρομαγνητικού Πεδίου Ι"; + } else if (course.contains("Ειδικά Κεφάλαια Διαφορικών Εξισώσεων")) { + return greeklish ? "eidika_kef_diaf_eksis" : "Ειδικά Κεφάλαια Διαφορικών Εξισώσεων"; + } else if (course.contains("Δομημένος Προγραμματισμός")) { + return greeklish ? "C" : "Δομ. Προγραμμ."; + } else if (course.contains("Δομές Δεδομένων")) { + return greeklish ? "dom_dedomenwn" : "Δομ. Δεδομ."; + } else if (course.contains("Διαχείριση Συστημάτων Ηλεκτρικής Ενέργειας")) { + return greeklish ? "dshe" : "ΔΣΗΕ"; + } else if (course.contains("Διαφορικές Εξισώσεις")) { + return greeklish ? "diaforikes" : "Διαφορικές"; + } else if (course.contains("Διανεμημένη Παραγωγή")) { + return greeklish ? "dian_paragwgh" : "Διανεμημένη Παραγωγή"; + } else if (course.contains("Διακριτά μαθηματικά")) { + return greeklish ? "diakrita" : "Διακριτά Μαθηματικά"; + } else if (course.contains("Διακριτά Μαθηματικά")) { + return greeklish ? "diakrita" : "Διακριτά Μαθηματικά"; + } else if (course.contains("Διάδοση Ηλεκτρομαγνητικού Κύματος Ι (πρώην Πεδίο ΙΙΙ)")) { + return greeklish ? "diadosi_1" : "Διάδοση 1"; + } else if (course.contains("Διάδοση Η/Μ Κύματος ΙΙ")) { + return greeklish ? "diadosi_II" : "Διάδοση 2"; + } else if (course.contains("Δίκτυα Υπολογιστών ΙΙ")) { + return greeklish ? "diktya_II" : "Δίκτυα 2"; + } else if (course.contains("Δίκτυα Υπολογιστών Ι")) { + return greeklish ? "diktya_I" : "Δίκτυα 1"; + } else if (course.contains("Δίκτυα Τηλεπικοινωνιών")) { + return greeklish ? "diktya_thlep" : "Δίκτυα Τηλέπ."; + } else if (course.contains("Γραφική με Υπολογιστές")) { + return greeklish ? "grafikh" : "Γραφική"; + } else if (course.contains("Γραμμική Άλγεβρα")) { + return greeklish ? "grammikh_algebra" : "Γραμμ. Άλγεβρ."; + } else if (course.contains("Γεωηλεκτρομαγνητισμός")) { + return greeklish ? "geohlektromagnitismos" : "Γεωηλεκτρομαγνητισμός"; + } else if (course.contains("Βιοϊατρική Τεχνολογία")) { + return greeklish ? "vioiatriki" : "Βιοιατρική"; + } else if (course.contains("Βιομηχανική Πληροφορική")) { + return greeklish ? "viomix_plir" : "Βιομηχανική Πληρ"; + } else if (course.contains("Βιομηχανικά Ηλεκτρονικά")) { + return greeklish ? "bhomix_hlektronika" : "Βιομηχανικά Ηλεκτρονικά"; + } else if (course.contains("Βάσεις Δεδομένων")) { + return greeklish ? "vaseis" : "Βάσεις"; + } else if (course.contains("Ασύρματος Τηλεπικοινωνία ΙΙ")) { + return greeklish ? "asyrmatos_II" : "Ασύρματος 2"; + } else if (course.contains("Ασύρματος Τηλεπικοινωνία Ι")) { + return greeklish ? "asyrmatos_I" : "Ασύρματος 1"; + } else if (course.contains("Ασφάλεια Πληροφοριακών Συστημάτων")) { + return greeklish ? "asfaleia" : "Ασφάλεια"; + } else if (course.contains("Ασαφή Συστήματα")) { + return greeklish ? "asafh" : "Ασαφή"; + } else if (course.contains("Αρχιτεκτονική Υπολογιστών")) { + return greeklish ? "arx_ypologistwn" : "Αρχ. Υπολογιστών"; + } else if (course.contains("Αρχές Παράλληλης Επεξεργασίας")) { + return greeklish ? "arxes_parall_epeksergasias" : "Αρχές Παράλληλης Επεξεργασίας"; + } else if (course.contains("Αρχές Οικονομίας")) { + return greeklish ? "arx_oikonomias" : "Αρχές Οικονομίας"; + } else if (course.contains("Αριθμητική Ανάλυση")) { + return greeklish ? "arith_anal" : "Αριθμ. Ανάλυση"; + } else if (course.contains("Αξιοπιστία Συστημάτων")) { + return greeklish ? "aksiopistia_systhmatwn" : "Αξιοπιστία Συστημάτων"; + } else if (course.contains("Αντικειμενοστραφής Προγραμματισμός")) { + return greeklish ? "OOP" : "Αντικειμενοστραφής"; + } else if (course.contains("Αναλογικές Τηλεπικοινωνίες (πρώην Τηλεπικοινωνιακά Συστήματα Ι)")) { + return greeklish ? "anal_thlep" : "Αναλογικές Τηλεπ."; + } else if (course.contains("Αναγνώριση Προτύπων")) { + return greeklish ? "protipa" : "Αναγνώριση Προτύπων"; + } else if (course.contains("Ανάλυση και Σχεδίαση Αλγορίθμων")) { + return greeklish ? "algorithms" : "Αλγόριθμοι"; + } else if (course.contains("Ανάλυση Χρονοσειρών")) { + return greeklish ? "xronoseires" : "Χρονοσειρές"; + } else if (course.contains("Ανάλυση Συστημάτων Ηλεκτρικής Ενέργειας")) { + return greeklish ? "ASHE" : "ΑΣΗΕ"; + } else if (course.contains("Ανάλυση Ηλεκτρικών Κυκλωμάτων με Υπολογιστή")) { + return greeklish ? "analysh_hlektr_kykl" : "Ανάλυση Ηλεκτρικ. Κυκλ. με Υπολογιστή"; + } else if (course.contains("Ακουστική ΙΙ")) { + return greeklish ? "akoystikh_II" : "Ακουστική 2"; + } else if (course.contains("Ακουστική Ι")) { + return greeklish ? "akoystikh_I" : "Ακουστική 1"; } else { return null; } From 45ec9e042ad99d6421c946129beb928e3f6eaa5b Mon Sep 17 00:00:00 2001 From: Thodoris1999 Date: Sat, 1 Sep 2018 14:23:09 +0300 Subject: [PATCH 08/18] add edit functionality for greek --- .../java/gr/thmmy/mthmmy/activities/topic/TopicParser.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicParser.java b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicParser.java index 6563a715..83b2dfe5 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicParser.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicParser.java @@ -249,6 +249,10 @@ public class TopicParser { p_deletePostURL = postDelete.attr("href"); } + Element postEdit = thisRow.select("a:has(img[alt='Αλλαγή'])").first(); + if (postEdit != null) + p_editPostURL = postEdit.attr("href"); + //Finds post's submit date Element postDate = thisRow.select("div.smalltext:matches(στις:)").first(); p_postDate = postDate.text(); From 9a9633e3e3e93443a64712794b427adee33b5cdf Mon Sep 17 00:00:00 2001 From: Apostolof Date: Sat, 1 Sep 2018 15:02:44 +0300 Subject: [PATCH 09/18] Uploads UI fixes --- .../activities/upload/UploadActivity.java | 77 +++++++++---------- .../drawable/ic_photo_camera_white_24dp.xml | 5 ++ app/src/main/res/layout/activity_upload.xml | 35 ++++++++- app/src/main/res/values/strings.xml | 2 + 4 files changed, 74 insertions(+), 45 deletions(-) create mode 100644 app/src/main/res/drawable/ic_photo_camera_white_24dp.xml diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java index 051af6ea..41fd9b53 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/upload/UploadActivity.java @@ -11,7 +11,6 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.provider.MediaStore; -import android.support.v7.app.AlertDialog; import android.support.v7.content.res.AppCompatResources; import android.support.v7.preference.PreferenceManager; import android.support.v7.widget.AppCompatButton; @@ -21,6 +20,7 @@ import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.ProgressBar; +import android.widget.TextView; import android.widget.Toast; import net.gotev.uploadservice.MultipartUploadRequest; @@ -86,8 +86,7 @@ public class UploadActivity extends BaseActivity { private EditText uploadTitle; private EditText uploadDescription; private AppCompatButton titleDescriptionBuilderButton; - private AppCompatButton selectFileButton; - //private static AppCompatButton titleDescriptionBuilderButton; + private TextView filenameHolder; @Override protected void onCreate(Bundle savedInstanceState) { @@ -193,47 +192,39 @@ public class UploadActivity extends BaseActivity { uploadTitle = findViewById(R.id.upload_title); uploadDescription = findViewById(R.id.upload_description); - selectFileButton = findViewById(R.id.upload_select_file_button); + filenameHolder = findViewById(R.id.upload_filename); + + AppCompatButton selectFileButton = findViewById(R.id.upload_select_file_button); Drawable selectStartDrawable = AppCompatResources.getDrawable(this, R.drawable.ic_insert_drive_file_white_24dp); selectFileButton.setCompoundDrawablesRelativeWithIntrinsicBounds(selectStartDrawable, null, null, null); selectFileButton.setOnClickListener(v -> { - final CharSequence[] options = {"Take photo", "Choose file", - "Cancel"}; - AlertDialog.Builder builder = new AlertDialog.Builder(UploadActivity.this); - builder.setTitle("Upload file"); - builder.setItems(options, (dialog, item) -> { - if (options[item].equals("Take photo")) { - /*Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); - startActivityForResult(intent, REQUEST_CODE_CAMERA);*/ - - Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); - takePhotoIntent.putExtra("return-data", true); - takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(UploadsHelper.getTempFile(this))); - - Intent targetedIntent = new Intent(takePhotoIntent); - List resInfo = this.getPackageManager().queryIntentActivities(takePhotoIntent, 0); - for (ResolveInfo resolveInfo : resInfo) { - String packageName = resolveInfo.activityInfo.packageName; - targetedIntent.setPackage(packageName); - } - startActivityForResult(takePhotoIntent, REQUEST_CODE_CAMERA); + String[] mimeTypes = {"image/jpeg", "text/html", "image/png", "image/jpg", "image/gif", + "application/pdf", "application/rar", "application/x-tar", "application/zip", + "application/msword", "image/vnd.djvu", "application/gz", "application/tar.gz"}; - } else if (options[item].equals("Choose file")) { - String[] mimeTypes = {"image/jpeg", "text/html", "image/png", "image/jpg", "image/gif", - "application/pdf", "application/rar", "application/x-tar", "application/zip", - "application/msword", "image/vnd.djvu", "application/gz", "application/tar.gz"}; + Intent intent = new Intent(Intent.ACTION_GET_CONTENT) + //.setType("*/*") + .setType("image/jpeg") + .putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes); - Intent intent = new Intent(Intent.ACTION_GET_CONTENT) - //.setType("*/*") - .setType("image/jpeg") - .putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes); + startActivityForResult(intent, REQUEST_CODE_CHOOSE_FILE); + }); - startActivityForResult(intent, REQUEST_CODE_CHOOSE_FILE); - } else if (options[item].equals("Cancel")) { - dialog.dismiss(); - } - }); - builder.show(); + AppCompatButton takePhotoButton = findViewById(R.id.upload_take_photo_button); + Drawable takePhotoDrawable = AppCompatResources.getDrawable(this, R.drawable.ic_photo_camera_white_24dp); + takePhotoButton.setCompoundDrawablesRelativeWithIntrinsicBounds(takePhotoDrawable, null, null, null); + takePhotoButton.setOnClickListener(v -> { + Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); + takePhotoIntent.putExtra("return-data", true); + takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(UploadsHelper.getTempFile(this))); + + Intent targetedIntent = new Intent(takePhotoIntent); + List resInfo = this.getPackageManager().queryIntentActivities(takePhotoIntent, 0); + for (ResolveInfo resolveInfo : resInfo) { + String packageName = resolveInfo.activityInfo.packageName; + targetedIntent.setPackage(packageName); + } + startActivityForResult(takePhotoIntent, REQUEST_CODE_CAMERA); }); findViewById(R.id.upload_upload_button).setOnClickListener(view -> { @@ -244,7 +235,7 @@ public class UploadActivity extends BaseActivity { uploadTitle.setError("Required"); } if (fileUri == null) { - selectFileButton.setError("Required"); + filenameHolder.setError("Required"); } if (categorySelected.equals("-1")) { Toast.makeText(view.getContext(), "Please choose category first", Toast.LENGTH_SHORT).show(); @@ -308,6 +299,10 @@ public class UploadActivity extends BaseActivity { Toast.makeText(context, "Failed to delete temporary file", Toast.LENGTH_SHORT).show(); } } + + uploadTitle.setText(null); + uploadDescription.setText(null); + filenameHolder.setText(R.string.upload_filename); } @Override @@ -392,7 +387,7 @@ public class UploadActivity extends BaseActivity { fileUri = data.getData(); if (fileUri != null) { String filename = UploadsHelper.filenameFromUri(this, fileUri); - selectFileButton.setText(filename); + filenameHolder.setText(filename); filename = filename.toLowerCase(); if (filename.endsWith(".jpg")) { @@ -443,7 +438,7 @@ public class UploadActivity extends BaseActivity { fileUri = Uri.parse(UploadsHelper.createTempFile(this, fileUri, newFilename)); newFilename += ".jpg"; - selectFileButton.setText(newFilename); + filenameHolder.setText(newFilename); } } else if (requestCode == REQUEST_CODE_FIELDS_BUILDER) { if (resultCode == Activity.RESULT_CANCELED) { diff --git a/app/src/main/res/drawable/ic_photo_camera_white_24dp.xml b/app/src/main/res/drawable/ic_photo_camera_white_24dp.xml new file mode 100644 index 00000000..9835771a --- /dev/null +++ b/app/src/main/res/drawable/ic_photo_camera_white_24dp.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/layout/activity_upload.xml b/app/src/main/res/layout/activity_upload.xml index 3ee745a4..3cc89d2f 100644 --- a/app/src/main/res/layout/activity_upload.xml +++ b/app/src/main/res/layout/activity_upload.xml @@ -98,13 +98,26 @@ android:textAlignment="center" android:textColor="@color/accent" /> + + + + + + + android:text="@string/upload_select_file" + android:textColor="@color/primary_text" /> + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1c904e1d..acccc404 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -112,7 +112,9 @@ Generate title and description Title Description + Filename Select file + Take photo Upload Select a category From e4eebd7f2b076326ec7d1526fa5db30bbe73320f Mon Sep 17 00:00:00 2001 From: Ezerous Date: Sat, 1 Sep 2018 16:09:15 +0300 Subject: [PATCH 10/18] Accent color to settings switches, up libs & minor changes --- README.md | 2 +- app/build.gradle | 6 +++--- .../gr/thmmy/mthmmy/activities/topic/tasks/ReplyTask.java | 2 +- app/src/main/res/values-v21/styles.xml | 1 + app/src/main/res/values/styles.xml | 1 + build.gradle | 2 +- 6 files changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index c69fe09d..4118864b 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Please refer to [CONTRIBUTING.md](/CONTRIBUTING.md) for details. ## Contact -Do not hesitate to contact us for any matter, either by sending an email to `thmmynolife@gmail.com`, or by joining our [Discord server][discord-server]. +Do not hesitate to contact us for any matter, either by sending an email to [thmmynolife@gmail.com](mailto:thmmynolife@gmail.com), or by joining our [Discord server][discord-server]. **Legal attribution: Google Play and the Google Play logo are trademarks of Google Inc.* diff --git a/app/build.gradle b/app/build.gradle index dd59ec42..97d3e679 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -41,9 +41,9 @@ dependencies { implementation 'com.android.support:support-v4:27.1.1' implementation 'com.android.support:cardview-v7:27.1.1' implementation 'com.android.support:recyclerview-v7:27.1.1' - implementation 'com.google.firebase:firebase-core:16.0.1' - implementation 'com.google.firebase:firebase-messaging:17.1.0' - implementation 'com.crashlytics.sdk.android:crashlytics:2.9.4' + implementation 'com.google.firebase:firebase-core:16.0.3' + implementation 'com.google.firebase:firebase-messaging:17.3.0' + implementation 'com.crashlytics.sdk.android:crashlytics:2.9.5' implementation 'com.squareup.okhttp3:okhttp:3.10.0' implementation 'com.squareup.picasso:picasso:2.5.2' implementation 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0' diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/tasks/ReplyTask.java b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/tasks/ReplyTask.java index 69bd0035..55be056d 100644 --- a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/tasks/ReplyTask.java +++ b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/tasks/ReplyTask.java @@ -31,7 +31,7 @@ public class ReplyTask extends AsyncTask { @Override protected Boolean doInBackground(String... args) { final String sentFrommTHMMY = includeAppSignature - ? "\n[right][size=7pt][i]sent from [url=https://play.google.com/store/apps/details?id=gr.thmmy.mthmmy]mTHMMY [/url][/i][/size][/right]" + ? "\n[right][size=7pt][i]sent from [url=https://play.google.com/store/apps/details?id=gr.thmmy.mthmmy]mTHMMY[/url][/i] [/size][/right]" : ""; RequestBody postBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml index 628b2a36..d4df3c74 100644 --- a/app/src/main/res/values-v21/styles.xml +++ b/app/src/main/res/values-v21/styles.xml @@ -25,5 +25,6 @@ true @android:color/transparent @style/PreferenceThemeOverlay.v14.Material + @color/accent diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 4ffe55a1..8e9f47f2 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -25,6 +25,7 @@ false true @style/PreferenceThemeOverlay.v14.Material + @color/accent + + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 8e9f47f2..bab8b574 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -24,6 +24,9 @@ + +