diff --git a/app/src/main/java/com/example/airquality/DetailsActivity.java b/app/src/main/java/com/example/airquality/DetailsActivity.java index f13f711..28d83c4 100644 --- a/app/src/main/java/com/example/airquality/DetailsActivity.java +++ b/app/src/main/java/com/example/airquality/DetailsActivity.java @@ -14,8 +14,8 @@ import com.example.airquality.databinding.ActivityDetailsBinding; import com.example.airquality.types.City; import com.example.airquality.types.FormattedTemperature; import com.example.airquality.types.Weather3h; -import com.example.airquality.utils.PreferencesManager; -import com.example.airquality.utils.ToolbarCompatActivity; +import com.example.airquality.utils.helpers.PreferencesManager; +import com.example.airquality.utils.base.ToolbarCompatActivity; public class DetailsActivity extends ToolbarCompatActivity { @@ -23,45 +23,64 @@ public class DetailsActivity extends ToolbarCompatActivity { private Weather3h weather3h; private City city; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - binding = ActivityDetailsBinding.inflate(getLayoutInflater()); - View view = binding.getRoot(); - setContentView(view); + setContentView(binding.getRoot()); - Intent intent = getIntent(); - weather3h = (Weather3h) intent.getSerializableExtra("WEATHER_3H"); - city = (City) intent.getSerializableExtra("CITY"); - - initToolbar(); - setToolbarTitle(weather3h.getDateTime()); - updateData(); + loadIntentData(); + setupToolbar(); + displayWeatherData(); } - protected void updateData() { - FormattedTemperature formattedTemperature = weather3h.formattedTemp(this); + private void loadIntentData() { + Intent intent = getIntent(); - if(checkInternet()) - { + if (intent != null) { + weather3h = (Weather3h) intent.getSerializableExtra("WEATHER_3H"); + city = (City) intent.getSerializableExtra("CITY"); + } + + if (weather3h == null || city == null) { + Toast.makeText(this, "Missing weather or city data", Toast.LENGTH_LONG).show(); + finish(); + } + } + + private void setupToolbar() { + initToolbar(); + if (weather3h != null) { + setToolbarTitle(weather3h.getDateTime()); + } + } + + private void displayWeatherData() { + if (weather3h == null || city == null) return; + + final FormattedTemperature temp = weather3h.formattedTemp(this); + + loadWeatherIcon(); + bindWeatherDetails(temp); + } + + private void loadWeatherIcon() { + if (hasNetworkConnection()) { Glide.with(this) .load(weather3h.getIconUrl()) .into(binding.icon); - binding.iconCode.setText(""); - } - else - { + } else { binding.icon.setImageDrawable(null); binding.iconCode.setText(weather3h.getIconCode()); } + } + private void bindWeatherDetails(FormattedTemperature temp) { binding.cityText.setText(city.toString()); binding.datetimeText.setText(weather3h.getDateTime()); - binding.tempWeatherText.setText(formattedTemperature.tempText + " | " + weather3h.getDescription()); - binding.tempText.setText(formattedTemperature.tempMinText + " ~ " + formattedTemperature.tempMaxText); + binding.tempWeatherText.setText(temp.tempText + " | " + weather3h.getDescription()); + binding.tempText.setText(temp.tempMinText + " ~ " + temp.tempMaxText); binding.pressureText.setText(weather3h.getPressure() + " hPa"); binding.humidityText.setText(weather3h.getHumidity() + "%"); binding.windSpeedText.setText(weather3h.getWindSpeed() + " m/s"); @@ -69,41 +88,34 @@ public class DetailsActivity extends ToolbarCompatActivity { @Override protected void onRefreshOptionToolbar() { - if(!checkInternet()) { - Toast.makeText(this, "You can't load data from internet on offline mode", Toast.LENGTH_SHORT).show(); + if (!hasNetworkConnection()) { + Toast.makeText(this, "Offline mode: can't update data", Toast.LENGTH_SHORT).show(); return; } - String units = PreferencesManager.getUnits(this); - RequestQueue queue = Volley.newRequestQueue(this); + final String units = PreferencesManager.getUnits(this); + final RequestQueue queue = Volley.newRequestQueue(this); - ForecastAPIRequest forecastAPI = new ForecastAPIRequest(this, city, units) { + ForecastAPIRequest forecastRequest = new ForecastAPIRequest(this, city, units) { @Override public void onSuccess(Weather3h[] weatherList) { - boolean isFound = false; - for (Weather3h w : weatherList) { - if (w.getDateTime().equals(weather3h.getDateTime())) { - // Update to new data - weather3h = w; - isFound = true; - break; + for (Weather3h item : weatherList) { + if (item.getDateTime().equals(weather3h.getDateTime())) { + weather3h = item; + Toast.makeText(DetailsActivity.this, "Weather updated", Toast.LENGTH_SHORT).show(); + displayWeatherData(); + return; } } - if(isFound) { - Toast.makeText(DetailsActivity.this, "Data was updated!", Toast.LENGTH_SHORT).show(); - updateData(); - } - else { - Toast.makeText(DetailsActivity.this, "This time is deprecated", Toast.LENGTH_SHORT).show(); - } + Toast.makeText(DetailsActivity.this, "This time is no longer available", Toast.LENGTH_SHORT).show(); } @Override public void onError(VolleyError error) { - Toast.makeText(DetailsActivity.this, "Failed to load weather data", Toast.LENGTH_SHORT).show(); + Toast.makeText(DetailsActivity.this, "Error loading weather data", Toast.LENGTH_SHORT).show(); } }; - queue.add(forecastAPI.getRequest()); + queue.add(forecastRequest.getRequest()); } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/example/airquality/FavoritesActivity.java b/app/src/main/java/com/example/airquality/FavoritesActivity.java index 1bf8f91..c872142 100644 --- a/app/src/main/java/com/example/airquality/FavoritesActivity.java +++ b/app/src/main/java/com/example/airquality/FavoritesActivity.java @@ -6,26 +6,25 @@ import android.view.View; import android.widget.Toast; import androidx.activity.EdgeToEdge; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.graphics.Insets; -import androidx.core.view.ViewCompat; -import androidx.core.view.WindowInsetsCompat; import androidx.recyclerview.widget.LinearLayoutManager; import com.example.airquality.databinding.ActivityFavoritesBinding; import com.example.airquality.types.City; -import com.example.airquality.utils.BaseCompatActivity; -import com.example.airquality.utils.CityAdapter; -import com.example.airquality.utils.DatabaseHelper; -import com.example.airquality.utils.PreferencesManager; -import com.example.airquality.utils.Weather3hAdapter; +import com.example.airquality.utils.base.BaseCompatActivity; +import com.example.airquality.utils.hooks.CityAdapter; +import com.example.airquality.utils.helpers.DatabaseManager; +import com.example.airquality.utils.helpers.PreferencesManager; +import java.text.SimpleDateFormat; import java.util.Arrays; +import java.util.Date; import java.util.List; +import java.util.Locale; public class FavoritesActivity extends BaseCompatActivity { private ActivityFavoritesBinding binding; + private CityAdapter cityAdapter; @Override protected void onCreate(Bundle savedInstanceState) { @@ -33,65 +32,63 @@ public class FavoritesActivity extends BaseCompatActivity { EdgeToEdge.enable(this); binding = ActivityFavoritesBinding.inflate(getLayoutInflater()); - View view = binding.getRoot(); - setContentView(view); + setContentView(binding.getRoot()); + setupRecyclerView(); + setListeners(); + } + + private void setupRecyclerView() { binding.cityFavoriteList.setLayoutManager(new LinearLayoutManager(this)); } - public void onSearchActivityBtn(View view) { - Intent intent = new Intent(this, SearchCityActivity.class); - startActivity(intent); + + private void setListeners() { + binding.newCityBtn.setOnClickListener(v -> openSearchActivity()); + } + + private void openSearchActivity() { + startActivity(new Intent(this, SearchCityActivity.class)); } @Override protected void onResume() { super.onResume(); - loadFavoriteList(); - } - private City[] getFavoriteList() - { - DatabaseHelper dbHelper = new DatabaseHelper(this); - List cityList = dbHelper.getAllCities(); - return cityList.toArray(new City[0]); - -// City[] cities = new City[] { -// new City("Belgrade", "RS", 44.7866, 20.4489, "2025-07-04 12:30"), -// new City("Novi Sad", "RS", 45.2671, 19.8335, "2025-07-03 09:15"), -// new City("Niš", "RS", 43.3209, 21.8958, "2025-07-02 18:45"), -// new City("Subotica", "RS", 46.1000, 19.6667, "2025-07-01 14:10"), -// new City("Kragujevac", "RS", 44.0128, 20.9110, "2025-06-30 07:50") -// }; -// -// return cities; + refreshFavoritesList(); } - private void setEnteredDateTime(City city) { - DatabaseHelper dbHelper = new DatabaseHelper(this); + private void refreshFavoritesList() { + List cities = getStoredCities(); - // Get current timestamp, e.g. "2025-07-05 16:45" - String currentTimestamp = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm", java.util.Locale.getDefault()).format(new java.util.Date()); - - boolean success = dbHelper.updateCityLastEnteredAt(city.name, city.country, currentTimestamp); - - Toast.makeText( - this, - success ? "Updated last entered time for " + city.name : "Failed to update last entered time for " + city.name, - Toast.LENGTH_SHORT - ).show(); - - } - - private void loadFavoriteList() { - List cities = Arrays.asList(getFavoriteList()); - - CityAdapter adapter = new CityAdapter(this, cities) { + cityAdapter = new CityAdapter(this, cities) { @Override public void onSelectCity(City city) { + if (!hasNetworkConnection()) { + Toast.makeText(FavoritesActivity.this, "Offline mode. Please connect to the Internet.", Toast.LENGTH_SHORT).show(); + return; + } + PreferencesManager.setCity(FavoritesActivity.this, city); - setEnteredDateTime(city); + updateLastAccessTime(city); finish(); } }; - binding.cityFavoriteList.setAdapter(adapter); + + binding.cityFavoriteList.setAdapter(cityAdapter); } -} \ No newline at end of file + + private List getStoredCities() { + DatabaseManager db = new DatabaseManager(this); + return db.getAllCities(); + } + + private void updateLastAccessTime(City city) { + String timestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault()).format(new Date()); + + DatabaseManager db = new DatabaseManager(this); + boolean updated = db.updateCityLastEnteredAt(city.name, city.country, timestamp); + + if (!updated) { + Toast.makeText(this, "Could not update visit time for " + city.name, Toast.LENGTH_SHORT).show(); + } + } +} diff --git a/app/src/main/java/com/example/airquality/MainActivity.java b/app/src/main/java/com/example/airquality/MainActivity.java index 6e862f6..648e6b9 100644 --- a/app/src/main/java/com/example/airquality/MainActivity.java +++ b/app/src/main/java/com/example/airquality/MainActivity.java @@ -14,10 +14,10 @@ import com.android.volley.toolbox.Volley; import com.example.airquality.api.ForecastAPIRequest; import com.example.airquality.types.City; import com.example.airquality.types.Weather3h; -import com.example.airquality.utils.DatabaseHelper; -import com.example.airquality.utils.PreferencesManager; -import com.example.airquality.utils.ToolbarCompatActivity; -import com.example.airquality.utils.Weather3hAdapter; +import com.example.airquality.utils.helpers.DatabaseManager; +import com.example.airquality.utils.helpers.PreferencesManager; +import com.example.airquality.utils.base.ToolbarCompatActivity; +import com.example.airquality.utils.hooks.Weather3hAdapter; import java.util.Arrays; import java.util.List; @@ -46,7 +46,7 @@ public class MainActivity extends ToolbarCompatActivity { } private void saveOffline(Weather3h[] weathers) { - DatabaseHelper dbHelper = new DatabaseHelper(this); // Make sure you have context here + DatabaseManager dbHelper = new DatabaseManager(this); dbHelper.deleteAllWeather(); @@ -60,17 +60,15 @@ public class MainActivity extends ToolbarCompatActivity { Toast.makeText(this, "Weather data saved successfully!", Toast.LENGTH_SHORT).show(); } private Weather3h[] loadOffline() { - DatabaseHelper dbHelper = new DatabaseHelper(this); + DatabaseManager dbHelper = new DatabaseManager(this); List weatherList = dbHelper.getAllWeather(); - Toast.makeText(this, "Loaded " + weatherList.size() + " weather entries", Toast.LENGTH_SHORT).show(); - return weatherList.toArray(new Weather3h[0]); } @Override protected void onRefreshOptionToolbar() { - if(!checkInternet()) { + if(!hasNetworkConnection()) { Toast.makeText(MainActivity.this, "You can't load data from internet on offline mode", Toast.LENGTH_SHORT).show(); return; } @@ -93,8 +91,7 @@ public class MainActivity extends ToolbarCompatActivity { setToolbarTitle(city.toString()); - // If no internet - if(!checkInternet()) { + if(!hasNetworkConnection()) { displayRecycler(loadOffline(), city, days); Toast.makeText(MainActivity.this, "You are on offline mode", Toast.LENGTH_SHORT).show(); return; diff --git a/app/src/main/java/com/example/airquality/SearchCityActivity.java b/app/src/main/java/com/example/airquality/SearchCityActivity.java index a5d2353..fc208a2 100644 --- a/app/src/main/java/com/example/airquality/SearchCityActivity.java +++ b/app/src/main/java/com/example/airquality/SearchCityActivity.java @@ -5,10 +5,6 @@ import android.view.View; import android.widget.Toast; import androidx.activity.EdgeToEdge; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.graphics.Insets; -import androidx.core.view.ViewCompat; -import androidx.core.view.WindowInsetsCompat; import androidx.recyclerview.widget.LinearLayoutManager; import com.android.volley.RequestQueue; @@ -17,17 +13,16 @@ import com.android.volley.toolbox.Volley; import com.example.airquality.api.CityAPIRequest; import com.example.airquality.databinding.ActivitySearchCityBinding; import com.example.airquality.types.City; -import com.example.airquality.utils.BaseCompatActivity; -import com.example.airquality.utils.CityAdapter; -import com.example.airquality.utils.DatabaseHelper; -import com.example.airquality.utils.PreferencesManager; -import com.example.airquality.utils.Weather3hAdapter; +import com.example.airquality.utils.base.BaseCompatActivity; +import com.example.airquality.utils.hooks.CityAdapter; +import com.example.airquality.utils.helpers.DatabaseManager; import java.util.Arrays; public class SearchCityActivity extends BaseCompatActivity { private ActivitySearchCityBinding binding; + private CityAdapter cityAdapter; @Override protected void onCreate(Bundle savedInstanceState) { @@ -37,49 +32,69 @@ public class SearchCityActivity extends BaseCompatActivity { binding = ActivitySearchCityBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); + setupRecyclerView(); + setListeners(); + } + + private void setupRecyclerView() { binding.citySearchResult.setLayoutManager(new LinearLayoutManager(this)); } - public void onSearchBtn(View view) { - loadCities(); + private void setListeners() { + binding.searchBtn.setOnClickListener(v -> searchCities()); } - private void addToFavorite(City city) { - DatabaseHelper dbHelper = new DatabaseHelper(this); - boolean success = dbHelper.addOneCity(city); - Toast.makeText(this, success ? "City added to favorites!" : "Failed to add city.", Toast.LENGTH_SHORT).show(); - } + private void searchCities() { + final String query = binding.searchEditText.getText().toString().trim(); - private void loadCities() { - String searchQuery = binding.searchEditText.getText().toString(); - - // If no internet - if(!checkInternet()) { - Toast.makeText(this, "You are on offline mode", Toast.LENGTH_SHORT).show(); + if (query.isEmpty()) { + Toast.makeText(this, "Please enter a city name", Toast.LENGTH_SHORT).show(); return; } - RequestQueue queue = Volley.newRequestQueue(this); - CityAPIRequest cityAPIRequest = new CityAPIRequest(this, searchQuery) { + if (!hasNetworkConnection()) { + Toast.makeText(this, "You are in offline mode. Online search is unavailable.", Toast.LENGTH_SHORT).show(); + return; + } + + fetchCitiesFromApi(query); + } + + private void fetchCitiesFromApi(String query) { + final RequestQueue queue = Volley.newRequestQueue(this); + + CityAPIRequest request = new CityAPIRequest(this, query) { @Override - public void onSuccess(City[] objectList) { - CityAdapter adapter = new CityAdapter(SearchCityActivity.this, Arrays.asList(objectList), "Add") { - @Override - public void onSelectCity(City city) { - addToFavorite(city); - finish(); - } - }; - - binding.citySearchResult.setAdapter(adapter); + public void onSuccess(City[] cities) { + displaySearchResults(cities); } @Override public void onError(VolleyError error) { - Toast.makeText(SearchCityActivity.this, "Failed to load weather data", Toast.LENGTH_SHORT).show(); + Toast.makeText(SearchCityActivity.this, "Failed to load city data", Toast.LENGTH_SHORT).show(); } }; - queue.add(cityAPIRequest.getRequest()); + queue.add(request.getRequest()); } -} \ No newline at end of file + + private void displaySearchResults(City[] cities) { + cityAdapter = new CityAdapter(this, Arrays.asList(cities), "Add") { + @Override + public void onSelectCity(City city) { + addCityToFavorites(city); + finish(); + } + }; + + binding.citySearchResult.setAdapter(cityAdapter); + } + + private void addCityToFavorites(City city) { + DatabaseManager db = new DatabaseManager(this); + boolean success = db.addOneCity(city); + + String message = success ? "City added to favorites!" : "Failed to add city."; + Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); + } +} diff --git a/app/src/main/java/com/example/airquality/SettingsActivity.java b/app/src/main/java/com/example/airquality/SettingsActivity.java index 9e4e30c..d550a19 100644 --- a/app/src/main/java/com/example/airquality/SettingsActivity.java +++ b/app/src/main/java/com/example/airquality/SettingsActivity.java @@ -1,19 +1,16 @@ package com.example.airquality; -import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; -import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.RadioGroup; import android.widget.Spinner; import android.widget.TextView; import com.example.airquality.types.City; -import com.example.airquality.utils.BaseCompatActivity; -import com.example.airquality.utils.PreferencesManager; +import com.example.airquality.utils.base.BaseCompatActivity; +import com.example.airquality.utils.helpers.PreferencesManager; public class SettingsActivity extends BaseCompatActivity { Spinner spinnerCity; diff --git a/app/src/main/java/com/example/airquality/api/CityAPIRequest.java b/app/src/main/java/com/example/airquality/api/CityAPIRequest.java index c9858d8..2761cef 100644 --- a/app/src/main/java/com/example/airquality/api/CityAPIRequest.java +++ b/app/src/main/java/com/example/airquality/api/CityAPIRequest.java @@ -7,13 +7,10 @@ import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonArrayRequest; -import com.android.volley.toolbox.JsonObjectRequest; import com.example.airquality.types.City; -import com.example.airquality.utils.CityParser; -import com.example.airquality.utils.Weather3hParser; +import com.example.airquality.utils.hooks.CityParser; import org.json.JSONArray; -import org.json.JSONObject; public class CityAPIRequest extends JsonAPIRequest { diff --git a/app/src/main/java/com/example/airquality/api/ForecastAPIRequest.java b/app/src/main/java/com/example/airquality/api/ForecastAPIRequest.java index 392f4d6..b6e045e 100644 --- a/app/src/main/java/com/example/airquality/api/ForecastAPIRequest.java +++ b/app/src/main/java/com/example/airquality/api/ForecastAPIRequest.java @@ -2,7 +2,6 @@ package com.example.airquality.api; import android.annotation.SuppressLint; import android.content.Context; -import android.widget.Toast; import com.android.volley.Request; import com.android.volley.Response; @@ -10,12 +9,10 @@ import com.android.volley.VolleyError; import com.android.volley.toolbox.JsonObjectRequest; import com.example.airquality.types.City; import com.example.airquality.types.Weather3h; -import com.example.airquality.utils.Weather3hParser; +import com.example.airquality.utils.hooks.Weather3hParser; import org.json.JSONObject; -import java.util.Arrays; - public class ForecastAPIRequest extends JsonAPIRequest { @SuppressLint("DefaultLocale") diff --git a/app/src/main/java/com/example/airquality/api/JsonAPIRequest.java b/app/src/main/java/com/example/airquality/api/JsonAPIRequest.java index b196f25..686f548 100644 --- a/app/src/main/java/com/example/airquality/api/JsonAPIRequest.java +++ b/app/src/main/java/com/example/airquality/api/JsonAPIRequest.java @@ -1,19 +1,9 @@ package com.example.airquality.api; import android.content.Context; -import android.widget.Toast; -import com.android.volley.Request; -import com.android.volley.Response; import com.android.volley.VolleyError; -import com.android.volley.toolbox.JsonObjectRequest; -import com.example.airquality.MainActivity; import com.example.airquality.R; -import com.example.airquality.types.Weather3h; -import com.example.airquality.utils.Weather3hAdapter; -import com.example.airquality.utils.Weather3hParser; - -import org.json.JSONObject; public abstract class JsonAPIRequest { diff --git a/app/src/main/java/com/example/airquality/types/FormattedTemperature.java b/app/src/main/java/com/example/airquality/types/FormattedTemperature.java index af59c90..edca6a8 100644 --- a/app/src/main/java/com/example/airquality/types/FormattedTemperature.java +++ b/app/src/main/java/com/example/airquality/types/FormattedTemperature.java @@ -2,7 +2,7 @@ package com.example.airquality.types; import android.content.Context; -import com.example.airquality.utils.PreferencesManager; +import com.example.airquality.utils.helpers.PreferencesManager; public class FormattedTemperature { public String tempText; diff --git a/app/src/main/java/com/example/airquality/utils/BaseCompatActivity.java b/app/src/main/java/com/example/airquality/utils/base/BaseCompatActivity.java similarity index 81% rename from app/src/main/java/com/example/airquality/utils/BaseCompatActivity.java rename to app/src/main/java/com/example/airquality/utils/base/BaseCompatActivity.java index 9d8da41..e4eb4f5 100644 --- a/app/src/main/java/com/example/airquality/utils/BaseCompatActivity.java +++ b/app/src/main/java/com/example/airquality/utils/base/BaseCompatActivity.java @@ -1,4 +1,4 @@ -package com.example.airquality.utils; +package com.example.airquality.utils.base; import android.content.Context; import android.net.ConnectivityManager; @@ -8,14 +8,14 @@ import android.view.View; import androidx.appcompat.app.AppCompatActivity; public class BaseCompatActivity extends AppCompatActivity { - public boolean checkInternet() + public boolean hasNetworkConnection() { ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); return activeNetwork != null && activeNetwork.isConnectedOrConnecting(); } - public void onBackButton(View view) + public void onBack(View view) { finish(); } diff --git a/app/src/main/java/com/example/airquality/utils/ToolbarCompatActivity.java b/app/src/main/java/com/example/airquality/utils/base/ToolbarCompatActivity.java similarity index 94% rename from app/src/main/java/com/example/airquality/utils/ToolbarCompatActivity.java rename to app/src/main/java/com/example/airquality/utils/base/ToolbarCompatActivity.java index ed033e2..4a66aa2 100644 --- a/app/src/main/java/com/example/airquality/utils/ToolbarCompatActivity.java +++ b/app/src/main/java/com/example/airquality/utils/base/ToolbarCompatActivity.java @@ -1,9 +1,8 @@ -package com.example.airquality.utils; +package com.example.airquality.utils.base; import android.content.Intent; import android.view.MenuInflater; -import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import com.example.airquality.R; diff --git a/app/src/main/java/com/example/airquality/utils/DatabaseHelper.java b/app/src/main/java/com/example/airquality/utils/helpers/DatabaseManager.java similarity index 97% rename from app/src/main/java/com/example/airquality/utils/DatabaseHelper.java rename to app/src/main/java/com/example/airquality/utils/helpers/DatabaseManager.java index 43aa2ae..b547010 100644 --- a/app/src/main/java/com/example/airquality/utils/DatabaseHelper.java +++ b/app/src/main/java/com/example/airquality/utils/helpers/DatabaseManager.java @@ -1,4 +1,4 @@ -package com.example.airquality.utils; +package com.example.airquality.utils.helpers; import android.content.ContentValues; @@ -13,7 +13,7 @@ import com.example.airquality.types.Weather3h; import java.util.ArrayList; import java.util.List; -public class DatabaseHelper extends SQLiteOpenHelper { +public class DatabaseManager extends SQLiteOpenHelper { //weather info public static final String DATABASE_NAME = "weather.db"; @@ -42,7 +42,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { public static final String COLUMN_CITY_LONGITUDE = "longitude"; public static final String COLUMN_CITY_LAST_ENTERED = "lastEnteredAt"; - public DatabaseHelper(Context context) { + public DatabaseManager(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @@ -86,7 +86,6 @@ public class DatabaseHelper extends SQLiteOpenHelper { } - //functions for weather info public boolean addOneWeather(Weather3h weather) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); @@ -150,7 +149,6 @@ public class DatabaseHelper extends SQLiteOpenHelper { db.close(); } - //functions for favorite cities public boolean addOneCity(City city) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); diff --git a/app/src/main/java/com/example/airquality/utils/PreferencesManager.java b/app/src/main/java/com/example/airquality/utils/helpers/PreferencesManager.java similarity index 95% rename from app/src/main/java/com/example/airquality/utils/PreferencesManager.java rename to app/src/main/java/com/example/airquality/utils/helpers/PreferencesManager.java index 2430b1d..970b058 100644 --- a/app/src/main/java/com/example/airquality/utils/PreferencesManager.java +++ b/app/src/main/java/com/example/airquality/utils/helpers/PreferencesManager.java @@ -1,4 +1,4 @@ -package com.example.airquality.utils; +package com.example.airquality.utils.helpers; import android.content.Context; import android.content.SharedPreferences; diff --git a/app/src/main/java/com/example/airquality/utils/CityAdapter.java b/app/src/main/java/com/example/airquality/utils/hooks/CityAdapter.java similarity index 98% rename from app/src/main/java/com/example/airquality/utils/CityAdapter.java rename to app/src/main/java/com/example/airquality/utils/hooks/CityAdapter.java index 2e65c85..715a3e4 100644 --- a/app/src/main/java/com/example/airquality/utils/CityAdapter.java +++ b/app/src/main/java/com/example/airquality/utils/hooks/CityAdapter.java @@ -1,4 +1,4 @@ -package com.example.airquality.utils; +package com.example.airquality.utils.hooks; import android.content.Context; import android.view.LayoutInflater; diff --git a/app/src/main/java/com/example/airquality/utils/CityParser.java b/app/src/main/java/com/example/airquality/utils/hooks/CityParser.java similarity index 91% rename from app/src/main/java/com/example/airquality/utils/CityParser.java rename to app/src/main/java/com/example/airquality/utils/hooks/CityParser.java index cd0c6ee..29a7362 100644 --- a/app/src/main/java/com/example/airquality/utils/CityParser.java +++ b/app/src/main/java/com/example/airquality/utils/hooks/CityParser.java @@ -1,7 +1,6 @@ -package com.example.airquality.utils; +package com.example.airquality.utils.hooks; import com.example.airquality.types.City; -import com.example.airquality.types.Weather3h; import org.json.JSONArray; import org.json.JSONObject; diff --git a/app/src/main/java/com/example/airquality/utils/Weather3hAdapter.java b/app/src/main/java/com/example/airquality/utils/hooks/Weather3hAdapter.java similarity index 98% rename from app/src/main/java/com/example/airquality/utils/Weather3hAdapter.java rename to app/src/main/java/com/example/airquality/utils/hooks/Weather3hAdapter.java index a2fb869..20e31c6 100644 --- a/app/src/main/java/com/example/airquality/utils/Weather3hAdapter.java +++ b/app/src/main/java/com/example/airquality/utils/hooks/Weather3hAdapter.java @@ -1,4 +1,4 @@ -package com.example.airquality.utils; +package com.example.airquality.utils.hooks; import android.content.Context; import android.content.Intent; diff --git a/app/src/main/java/com/example/airquality/utils/Weather3hParser.java b/app/src/main/java/com/example/airquality/utils/hooks/Weather3hParser.java similarity index 97% rename from app/src/main/java/com/example/airquality/utils/Weather3hParser.java rename to app/src/main/java/com/example/airquality/utils/hooks/Weather3hParser.java index c4be981..5f78c7d 100644 --- a/app/src/main/java/com/example/airquality/utils/Weather3hParser.java +++ b/app/src/main/java/com/example/airquality/utils/hooks/Weather3hParser.java @@ -1,4 +1,4 @@ -package com.example.airquality.utils; +package com.example.airquality.utils.hooks; import com.example.airquality.types.Weather3h; diff --git a/app/src/main/res/layout/activity_favorites.xml b/app/src/main/res/layout/activity_favorites.xml index e89b627..3767923 100644 --- a/app/src/main/res/layout/activity_favorites.xml +++ b/app/src/main/res/layout/activity_favorites.xml @@ -21,7 +21,7 @@