From 9ec5cac8eff0198a278aa3196fdaccdaeb38ac16 Mon Sep 17 00:00:00 2001
From: maxwen <max.weninger@gmail.com>
Date: Fri, 06 Oct 2017 14:14:16 +0200
Subject: [PATCH] OmniJaws: add setup column to settings query

will be set to 0 until location perms have been granted
or at least one valid weather data has been received
means user has entered settings once which is required
to get things working

can be used to check if settings should be openend to make
things easier for the user

Change-Id: I061bd24270004eb0b6efd45ec2bc73aaade8a13a
---

diff --git a/src/org/omnirom/omnijaws/Config.java b/src/org/omnirom/omnijaws/Config.java
index 2199a75..fea0514 100644
--- a/src/org/omnirom/omnijaws/Config.java
+++ b/src/org/omnirom/omnijaws/Config.java
@@ -17,8 +17,10 @@
  */
 package org.omnirom.omnijaws;
 
+import android.Manifest;
 import android.content.Context;
 import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
 import android.preference.PreferenceManager;
 import android.provider.Settings;
 
@@ -208,4 +210,12 @@
 
         prefs.edit().putBoolean(PREF_KEY_UPDATE_ERROR, value).commit();
     }
+
+    public static boolean isSetupDone(Context context) {
+        if (context.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)
+                == PackageManager.PERMISSION_GRANTED) {
+            return true;
+        }
+        return false;
+    }
 }
diff --git a/src/org/omnirom/omnijaws/WeatherContentProvider.java b/src/org/omnirom/omnijaws/WeatherContentProvider.java
index 40b5ec7..7652d82 100644
--- a/src/org/omnirom/omnijaws/WeatherContentProvider.java
+++ b/src/org/omnirom/omnijaws/WeatherContentProvider.java
@@ -57,6 +57,7 @@
     private static final String COLUMN_INTERVAL = "interval";
     private static final String COLUMN_UNITS = "units";
     private static final String COLUMN_LOCATION = "location";
+    private static final String COLUMN_SETUP = "setup";
 
     private static final String[] PROJECTION_DEFAULT_WEATHER = new String[] {
             COLUMN_CURRENT_CITY_ID,
@@ -81,7 +82,8 @@
             COLUMN_PROVIDER,
             COLUMN_INTERVAL,
             COLUMN_UNITS,
-            COLUMN_LOCATION
+            COLUMN_LOCATION,
+            COLUMN_SETUP
     };
 
     public static final String AUTHORITY = "org.omnirom.omnijaws.provider";
@@ -121,7 +123,8 @@
                     .add(COLUMN_PROVIDER, Config.getProviderId(mContext))
                     .add(COLUMN_INTERVAL, Config.getUpdateInterval(mContext))
                     .add(COLUMN_UNITS, Config.isMetric(mContext) ? 0 : 1)
-                    .add(COLUMN_LOCATION, Config.isCustomLocation(mContext) ? Config.getLocationName(mContext) : "");
+                    .add(COLUMN_LOCATION, Config.isCustomLocation(mContext) ? Config.getLocationName(mContext) : "")
+                    .add(COLUMN_SETUP, !Config.isSetupDone(mContext) && sCachedWeatherInfo == null ? 0 : 1);
 
             return result;
         } else if (projectionType == URI_TYPE_WEATHER) {
