35 Commits
Author SHA1 Message Date
me 081ac97b39 Merge pull request '1.0.2' (#4) from dev into main
Reviewed-on: #4
2026-10-01 16:48:20 -07:00
me 75747aa9e9 main, try to use some clip art for the tab icons but still not working, letting it continue not working silently. 2026-10-01 16:46:00 -07:00
me 308c86440f manifest, ensure the proper icon is being used. 2026-10-01 16:45:03 -07:00
me 3e8941f892 icons, remove more unused DR and Figsy references. 2026-10-01 16:44:47 -07:00
me 6d39c65b71 icon, add a file generated by Lumo and use it as the new launcher. 2026-10-01 16:25:38 -07:00
me 7329eef9cc icons, remove accidental creates. 2026-10-01 16:09:54 -07:00
me 7d48b7564d main, replace icons for tabs, not showing up but also not failing. 2026-10-01 15:57:01 -07:00
me 9b317f38dc strings, fix version. 2026-10-01 15:52:53 -07:00
me b781167f8d gradle, take all the upgrade suggestions. 2026-10-01 15:47:20 -07:00
me b4dba91aae build, update version and fix proguard filename. 2026-10-01 15:44:14 -07:00
me 602c235522 icon, change back to DR, accidentally went to Figsy. 2026-10-01 15:42:40 -07:00
me c65b5c6714 manifest, ensure the generated icons are being used. 2026-10-01 15:42:24 -07:00
me 18e2577375 icons, refactor their locations to be consistent. 2026-10-01 15:42:04 -07:00
me 1b5f1771cb icon, fix for newer versions of Android. 2026-10-01 15:34:28 -07:00
me 833e0e2776 fdroid, add specifier to email and put the field in the app-specific section. 2026-09-29 07:16:35 -07:00
me 0afb15da25 Add more fdroid details while refactoring the file. 2026-07-04 14:59:33 -07:00
me e90f3e381e Update issue tracker to be proper HTTP link, use contact page. Change website page to go directly to the app. 2026-07-04 10:48:14 -07:00
me 7195e99cbb Merge pull request 'Add manifest file for self-hosted F-Droid repo.' (#3) from dev into main
Reviewed-on: #3
2026-07-04 10:18:20 -07:00
me 2dd6fc1002 Add manifest file for self-hosted F-Droid repo. 2026-07-04 10:16:17 -07:00
me 48e88484cc Merge pull request 'Remove BETA' (#2) from dev into main
Reviewed-on: #2
2025-07-20 19:56:07 -07:00
me 49f02cc85d Update the app version. 2025-07-20 19:52:48 -07:00
me 299e3f721f Remove BETA from the app name. 2025-07-20 19:52:01 -07:00
me a9b0dd43d6 Merge pull request 'Update Target SDK' (#1) from dev into main
Reviewed-on: #1
2025-07-20 19:37:12 -07:00
me e2b00eda83 Fix URL. 2025-07-20 19:31:46 -07:00
me 85cc437b91 Stay with the NoActionBar theme, even though the bar did not show up with DarkActionBar set. 2025-07-20 19:28:36 -07:00
me 35c2e800b3 Fix the app theme for both new and old devices. Giving up on showing the tab icons in place of having light vs dark theme. 2025-07-20 19:19:46 -07:00
me 255e2c46d4 Set the round icon attribute. 2025-07-20 19:16:52 -07:00
me 3a46ef7f2a Properly sit under the status bar. 2025-07-12 13:15:54 -07:00
me 10c0e1bfff Adjust newlines. 2025-07-12 13:15:37 -07:00
me 0627aca876 Remove code for Ads, were not in use anyways after falling out of Google Play guidelines. 2025-07-12 13:15:22 -07:00
me fe32d063c8 Working on getting the style to work properly, currently showing black bars due to old theme. 2025-07-12 13:12:38 -07:00
me 0ce4099348 Fix the location of the view by accounting for the action bar size. 2025-07-12 13:12:01 -07:00
me f0b4008efa Update version string and remove ad IDs. 2025-07-12 13:11:34 -07:00
me 8433966f37 Remove the compile lines and add what Infinite Timer is doing. 2025-07-12 13:11:03 -07:00
me 31a48209d2 Add trailing newline. 2025-07-12 13:10:30 -07:00
74 changed files with 268 additions and 192 deletions

No files matched your search

+1 -1
View File
@@ -7,5 +7,5 @@ No new features planned, only updates are to keep the app available on newer And
## Update Notes
### 2025-07-11
(This article)[https://sijus.medium.com/resurrecting-a-5-year-old-android-app-a-developers-journey-59d8f5689e5b]
[This article](https://sijus.medium.com/resurrecting-a-5-year-old-android-app-a-developers-journey-59d8f5689e5b)
was very helpful in getting this app updated from SDK 25 to 36.
+13 -4
View File
@@ -5,21 +5,30 @@ android {
compileSdkVersion 36
defaultConfig {
applicationId "com.hyperling.carbupbeta"
minSdkVersion 8
minSdkVersion 14
targetSdkVersion 36
versionCode 7
versionName "1.0.0"
versionCode 8
versionName "1.0.2"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
/*
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.google.android.gms:play-services-ads:8.3.0'
*/
implementation fileTree(dir: 'libs', include: ['*.jar'])
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
// https://mvnrepository.com/artifact/com.android.support/appcompat-v7
implementation "com.android.support:appcompat-v7:28.0.0"
}
+5 -15
View File
@@ -7,40 +7,30 @@
<application
android:allowBackup="true"
android:icon="@drawable/dr_face_straight2_circle"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
android:theme="@style/CarbUp">
<activity
android:name=".Splash"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar">
android:exported="true"
android:screenOrientation="fullSensor">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Main"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Light.NoTitleBar"
android:screenOrientation="fullSensor"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
<activity
android:name=".Tab1"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light.NoTitleBar"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
<activity
android:name=".Tab2"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light.NoTitleBar"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
<activity
android:name=".MySettings"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light.NoTitleBar"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
<activity
android:name=".Home"
Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

@@ -7,14 +7,12 @@ import android.os.Bundle;
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
public class Home extends AppCompatActivity {
Resources recs;
@@ -56,23 +54,6 @@ public class Home extends AppCompatActivity {
btnWhyVegan = (Button) findViewById(R.id.btnWhyVegan);
////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////
// Finally, load ads >:)
if (Build.VERSION.SDK_INT >= 9) {
// Load an ad into the AdMob banner view.
AdView adView = (AdView) findViewById(R.id.adViewHome);
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("C6A494DC6E7C9AC29102694D48487084") // nexus 7
.addTestDevice("B8B7561B850A9AB24E0D5B560FC50628") // Moto G
.addTestDevice("") // Cappy, even though it doesn't support ads
.setRequestAgent("android_studio:ad_template")
.build();
adView.loadAd(adRequest);
}
////////////////////////////////////////////////////////////////////////////////////////////
}
@Override
@@ -1,6 +1,7 @@
package com.hyperling.carbupbeta;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Color;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
@@ -56,14 +57,27 @@ public class List extends ListInfo{
setName(listInfo.getName());
// ========== Style the buttons ==========
// Color!
linearLayout.setBackgroundColor(Color.BLACK);
btnDelete.setBackgroundColor(Color.LTGRAY);
btnDelete.setTextColor(Color.BLACK);
btnEdit.setBackgroundColor(Color.LTGRAY);
btnEdit.setTextColor(Color.BLACK);
btnItem.setBackgroundColor(Color.WHITE);
btnItem.setTextColor(getRandomColor());
/* Color! */
int currentNightMode =
context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK
;
switch (currentNightMode) {
// Light Mode
case Configuration.UI_MODE_NIGHT_NO:
linearLayout.setBackgroundColor(Color.BLACK);
btnDelete.setBackgroundColor(Color.LTGRAY);
btnDelete.setTextColor(Color.BLACK);
btnEdit.setBackgroundColor(Color.LTGRAY);
btnEdit.setTextColor(Color.BLACK);
btnItem.setBackgroundColor(Color.WHITE);
btnItem.setTextColor(getRandomColor());
break;// Dark Mode
case Configuration.UI_MODE_NIGHT_YES:
// Night mode is active, we're using dark theme
btnItem.setBackgroundColor(Color.DKGRAY);
break;
}
/* */
// Size!
//textSize = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth()/30;
btnDelete.setTextSize(16); //textSize-10);
@@ -1,6 +1,7 @@
package com.hyperling.carbupbeta;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Color;
import android.widget.LinearLayout;
import android.view.WindowManager;
@@ -64,13 +65,26 @@ public class ListItem extends ListItemInfo {
setName(listItemInfo.getName ());
// ========== Style the buttons ==========
// Color!
linearLayout.setBackgroundColor(Color.BLACK);
btnDelete.setBackgroundColor(Color.LTGRAY);
btnDelete.setTextColor(Color.BLACK);
btnEdit.setBackgroundColor(Color.LTGRAY);
btnEdit.setTextColor(Color.BLACK);
btnItem.setBackgroundColor(Color.WHITE);
/* Color! */
int currentNightMode =
context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK
;
switch (currentNightMode) {
// Light Mode
case Configuration.UI_MODE_NIGHT_NO:
linearLayout.setBackgroundColor(Color.BLACK);
btnDelete.setBackgroundColor(Color.LTGRAY);
btnDelete.setTextColor(Color.BLACK);
btnEdit.setBackgroundColor(Color.LTGRAY);
btnEdit.setTextColor(Color.BLACK);
btnItem.setBackgroundColor(Color.WHITE);
break;
// Dark Mode
case Configuration.UI_MODE_NIGHT_YES:
btnItem.setBackgroundColor(Color.DKGRAY);
break;
}
/* */
int[] colors = getColors(carbPerCal);
btnItem.setTextColor(Color.rgb(colors[0], colors[1], colors[2]));
// Size!
@@ -56,7 +56,7 @@ public class Main extends TabActivity {
// Tab1
TabHost.TabSpec createListSpec = tabHost.newTabSpec("Create List");
if (Build.VERSION.SDK_INT >= 21) {
createListSpec.setIndicator("Choose List", getDrawable(R.drawable.dr_face_straight2_circle));
createListSpec.setIndicator("Choose List", getDrawable(R.drawable.add));
}
else{
createListSpec.setIndicator("Choose List");
@@ -87,7 +87,7 @@ public class Main extends TabActivity {
// Settings/About Tab
TabHost.TabSpec mySettingsSpec = tabHost.newTabSpec("Settings");
if (Build.VERSION.SDK_INT >= 21) {
mySettingsSpec.setIndicator("Settings", getDrawable(R.drawable.figsy_grass_circle_small));
mySettingsSpec.setIndicator("Settings", getDrawable(R.drawable.settings));
}
else{
mySettingsSpec.setIndicator("Settings");
@@ -10,6 +10,7 @@ import android.widget.RelativeLayout;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
/**
* Created by ling on 1/1/16.
@@ -18,7 +19,7 @@ public class MySettingItem extends MySettingInfo{
private LinearLayout linearLayout;
private RelativeLayout relativeLayout;
Button btnItem;
TextView btnItem;
CheckBox checkBox;
private int textSize;
@@ -27,7 +28,7 @@ public class MySettingItem extends MySettingInfo{
// Instantiate the Views
linearLayout = new LinearLayout(context);
relativeLayout = new RelativeLayout(context);
btnItem = new Button(context);
btnItem = new TextView(context);
checkBox = new CheckBox(context);
// Give the views their required attributes (Wrap Content)
@@ -36,7 +37,7 @@ public class MySettingItem extends MySettingInfo{
LayoutParams item_lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
RelativeLayout.LayoutParams check_lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
lay_lp.setMargins(1, 1, 1, 1);
lay_lp.setMargins(4,4,4,4);
linearLayout.setLayoutParams(lay_lp);
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
@@ -55,15 +56,17 @@ public class MySettingItem extends MySettingInfo{
setName(info.getName());
setEnabled(info.getEnabled());
// ========== Style the buttons ==========
// Color!
/* ========== Style the buttons ========== */
/* Color! * /
linearLayout.setBackgroundColor(Color.LTGRAY);
relativeLayout.setBackgroundColor(Color.LTGRAY);
relativeLayout.setBackgroundColor(Color.DKGRAY);
btnItem.setBackgroundColor(Color.LTGRAY);
btnItem.setTextColor(Color.BLACK);
/* */
// Size!
//textSize = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth()/30;
btnItem.setTextSize(24); // textSize);
btnItem.setPadding(4,4,4,4);
// Add the items to the layout!
relativeLayout.addView(checkBox);
@@ -17,7 +17,7 @@ public class MySettings extends Activity {
Context context;
LinearLayout settingsArea;
MySettingItem quickLoad, adsEnabled, rainbowLists, whiteOnBlack;
MySettingItem quickLoad, rainbowLists, whiteOnBlack;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -35,16 +35,13 @@ public class MySettings extends Activity {
// Instantiate settings
quickLoad = new MySettingItem(context, new MySettingInfo());
adsEnabled = new MySettingItem(context, new MySettingInfo());
// Name them
quickLoad.setName("Quick Load:");
adsEnabled.setName("Ads Enabled:");
// Set the checkboxes
dalih.open();
quickLoad.setEnabled(dalih.getQuickLoad());
adsEnabled.setEnabled(dalih.getAdsEnabled());
dalih.close();
// Set the checkbox actions
@@ -62,26 +59,8 @@ public class MySettings extends Activity {
}
});
adsEnabled.btnItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dalih.setAdsEnabled(!dalih.getAdsEnabled());
adsEnabled.checkBox.setChecked(dalih.getAdsEnabled());
}
});
adsEnabled.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dalih.setAdsEnabled(adsEnabled.checkBox.isChecked());
}
});
// Throw them onto the screen
settingsArea.addView(quickLoad.getView());
if (Build.VERSION.SDK_INT >= 9) {
settingsArea.addView(adsEnabled.getView());
}
}
@Override
@@ -15,9 +15,6 @@ import android.widget.Toast;
import java.util.ArrayList;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
/**
* Created by usb on 9/28/14.
*
@@ -35,7 +32,6 @@ public class Tab1 extends Activity{
Button btnCreate;
LinearLayout layListArea;
TextView tvLeft, tvRight, selectHeader;
AdView mAdView;
// The lists!
ArrayList<List> lists = new ArrayList<List>();
@@ -58,7 +54,6 @@ public class Tab1 extends Activity{
tvLeft = (TextView) findViewById(R.id.leftEditView);
tvRight = (TextView) findViewById(R.id.rightEditView);
selectHeader = (TextView) findViewById(R.id.selectListHeader);
mAdView = (AdView) findViewById(R.id.adView);
return;
}
@@ -266,26 +261,6 @@ public class Tab1 extends Activity{
dalih.open();
if (Build.VERSION.SDK_INT >= 9) {
if (dalih.getAdsEnabled()) {
if (mAdView.getVisibility() != View.VISIBLE) {
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("C6A494DC6E7C9AC29102694D48487084") // nexus 7
.addTestDevice("B8B7561B850A9AB24E0D5B560FC50628") // Moto G
.addTestDevice("") // Cappy, even though it can't get ads
.build();
mAdView.setVisibility(View.VISIBLE);
mAdView.loadAd(adRequest);
}
}
else{
if (mAdView.getVisibility() == View.VISIBLE) {
mAdView.setVisibility(View.GONE);
}
}
}
setButtonInsert();
super.onResume();
@@ -11,9 +11,6 @@ import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import java.util.ArrayList;
/**
@@ -35,7 +32,6 @@ public class Tab2 extends Activity{
LinearLayout layListArea;
EditText txtName, txtCost, txtServings, txtCalories, txtCarbs, txtFiber;
Button btnClear, btnAdd;
AdView mAdView;
// List
ArrayList<ListItem> items = new ArrayList<ListItem>();
@@ -61,7 +57,6 @@ public class Tab2 extends Activity{
txtFiber = (EditText) findViewById(R.id.etItemFiber);
btnClear = (Button) findViewById(R.id.btnClear);
btnAdd = (Button) findViewById(R.id.btnAddToList);
mAdView = (AdView) findViewById(R.id.adView);
// Give the Buttons their power
btnClear.setOnClickListener(new View.OnClickListener() {
@@ -91,26 +86,6 @@ public class Tab2 extends Activity{
dalih.open();
if (Build.VERSION.SDK_INT >= 9) {
if (dalih.getAdsEnabled()) {
if (mAdView.getVisibility() != View.VISIBLE) {
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("C6A494DC6E7C9AC29102694D48487084") // nexus 7
.addTestDevice("B8B7561B850A9AB24E0D5B560FC50628") // Moto G
.addTestDevice("") // Cappy, even though it can't get ads
.build();
mAdView.setVisibility(View.VISIBLE);
mAdView.loadAd(adRequest);
}
}
else{
if (mAdView.getVisibility() == View.VISIBLE) {
mAdView.setVisibility(View.GONE);
}
}
}
setButtonInsert();
super.onResume();
+31
View File
@@ -0,0 +1,31 @@
<!--
~ Copyright (C) 2026 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="#333333"
android:alpha="0.6">
<group android:scaleX="1.7142857"
android:scaleY="1.7142857"
android:translateX="-342.85715"
android:translateY="-342.85715">
<path
android:fillColor="@android:color/white"
android:pathData="M440,520L200,520L200,440L440,440L440,200L520,200L520,440L760,440L760,520L520,520L520,760L440,760L440,520Z"/>
</group>
</vector>
@@ -0,0 +1,31 @@
<!--
~ Copyright (C) 2026 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="#333333"
android:alpha="0.6">
<group android:scaleX="1.2"
android:scaleY="1.2"
android:translateX="-2.4"
android:translateY="-2.4">
<path
android:fillColor="@android:color/white"
android:pathData="M19.14,12.94c0.04,-0.3 0.06,-0.61 0.06,-0.94c0,-0.32 -0.02,-0.64 -0.07,-0.94l2.03,-1.58c0.18,-0.14 0.23,-0.41 0.12,-0.61l-1.92,-3.32c-0.12,-0.22 -0.37,-0.29 -0.59,-0.22l-2.39,0.96c-0.5,-0.38 -1.03,-0.7 -1.62,-0.94L14.4,2.81c-0.04,-0.24 -0.24,-0.41 -0.48,-0.41h-3.84c-0.24,0 -0.43,0.17 -0.47,0.41L9.25,5.35C8.66,5.59 8.12,5.92 7.63,6.29L5.24,5.33c-0.22,-0.08 -0.47,0 -0.59,0.22L2.74,8.87C2.62,9.08 2.66,9.34 2.86,9.48l2.03,1.58C4.84,11.36 4.8,11.69 4.8,12s0.02,0.64 0.07,0.94l-2.03,1.58c-0.18,0.14 -0.23,0.41 -0.12,0.61l1.92,3.32c0.12,0.22 0.37,0.29 0.59,0.22l2.39,-0.96c0.5,0.38 1.03,0.7 1.62,0.94l0.36,2.54c0.05,0.24 0.24,0.41 0.48,0.41h3.84c0.24,0 0.44,-0.17 0.47,-0.41l0.36,-2.54c0.59,-0.24 1.13,-0.56 1.62,-0.94l2.39,0.96c0.22,0.08 0.47,0 0.59,-0.22l1.92,-3.32c0.12,-0.22 0.07,-0.47 -0.12,-0.61L19.14,12.94zM12,15.6c-1.98,0 -3.6,-1.62 -3.6,-3.6s1.62,-3.6 3.6,-3.6s3.6,1.62 3.6,3.6S13.98,15.6 12,15.6z"/>
</group>
</vector>
Binary file not shown.

After

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 941 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="353"
android:viewportHeight="168.75">
<group android:scaleX="0.4776923"
android:scaleY="0.22835858"
android:translateX="92.18731"
android:translateY="65.480446">
<group android:translateY="133.59375">
<path android:pathData="M73.6875,-32.5625L87.1875,-32.5625Q86.140625,-22.859375,81.640625,-15.1875Q77.140625,-7.53125,68.90625,-3.0625Q60.6875,1.40625,48.375,1.40625Q39.375,1.40625,32.03125,-1.96875Q24.6875,-5.34375,19.40625,-11.5625Q14.140625,-17.796875,11.28125,-26.546875Q8.4375,-35.296875,8.4375,-46.0625L8.4375,-56.25Q8.4375,-67.015625,11.28125,-75.765625Q14.140625,-84.515625,19.515625,-90.765625Q24.890625,-97.03125,32.484375,-100.40625Q40.078125,-103.78125,49.578125,-103.78125Q61.171875,-103.78125,69.1875,-99.421875Q77.203125,-95.0625,81.671875,-87.359375Q86.140625,-79.671875,87.1875,-69.546875L73.6875,-69.546875Q72.703125,-76.71875,70.03125,-81.875Q67.359375,-87.046875,62.4375,-89.859375Q57.515625,-92.671875,49.578125,-92.671875Q42.75,-92.671875,37.578125,-90.0625Q32.421875,-87.46875,28.9375,-82.6875Q25.453125,-77.90625,23.6875,-71.21875Q21.9375,-64.546875,21.9375,-56.390625L21.9375,-46.0625Q21.9375,-38.53125,23.515625,-31.921875Q25.109375,-25.3125,28.34375,-20.3125Q31.578125,-15.328125,36.5625,-12.484375Q41.5625,-9.640625,48.375,-9.640625Q57.03125,-9.640625,62.15625,-12.375Q67.296875,-15.125,69.921875,-20.25Q72.5625,-25.390625,73.6875,-32.5625Z"
android:fillColor="#000000"/>
<path android:pathData="M143.71875,-102.375L143.71875,0L130.35938,0L130.35938,-102.375L143.71875,-102.375ZM176.625,-102.375L176.625,-91.265625L97.515625,-91.265625L97.515625,-102.375L176.625,-102.375Z"
android:fillColor="#000000"/>
<path android:pathData="M205.45312,-102.375L205.45312,0L191.89062,0L191.89062,-102.375L205.45312,-102.375ZM248.34375,-56.328125L248.34375,-45.21875L202.5,-45.21875L202.5,-56.328125L248.34375,-56.328125ZM255.3125,-102.375L255.3125,-91.265625L202.5,-91.265625L202.5,-102.375L255.3125,-102.375Z"
android:fillColor="#000000"/>
<path android:pathData="M330.45312,-102.375L343.95312,-102.375L343.95312,-33.125Q343.95312,-21.59375,338.8125,-13.921875Q333.6875,-6.265625,325.21875,-2.421875Q316.75,1.40625,306.82812,1.40625Q296.42188,1.40625,288.01562,-2.421875Q279.625,-6.265625,274.73438,-13.921875Q269.84375,-21.59375,269.84375,-33.125L269.84375,-102.375L283.28125,-102.375L283.28125,-33.125Q283.28125,-25.109375,286.23438,-19.90625Q289.1875,-14.703125,294.48438,-12.171875Q299.79688,-9.640625,306.82812,-9.640625Q313.9375,-9.640625,319.23438,-12.171875Q324.54688,-14.703125,327.5,-19.90625Q330.45312,-25.109375,330.45312,-33.125L330.45312,-102.375Z"
android:fillColor="#000000"/>
</group>
</group>
</vector>
+6 -12
View File
@@ -50,7 +50,8 @@
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight=".45"
android:weightSum="1">
android:weightSum="1"
style="?android:attr/buttonBarStyle">
<Button
android:layout_width="match_parent"
@@ -64,7 +65,8 @@
android:text="Why High Carb?"
android:textColor="@color/textPrimaryInverse"
android:textAllCaps="false"
android:id="@+id/btnWhyHCLF"/>
android:id="@+id/btnWhyHCLF"
style="?android:attr/buttonBarButtonStyle" />
<Button
android:layout_width="match_parent"
@@ -78,17 +80,9 @@
android:text="Why Vegan?"
android:textColor="@color/textAccentInverse"
android:textAllCaps="false"
android:id="@+id/btnWhyVegan"/>
android:id="@+id/btnWhyVegan"
style="?android:attr/buttonBarButtonStyle" />
</LinearLayout>
<com.google.android.gms.ads.AdView
android:id="@+id/adViewHome"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight=".1"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_home">
</com.google.android.gms.ads.AdView>
</LinearLayout>
@@ -2,6 +2,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?android:actionBarSize"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
+3 -2
View File
@@ -2,12 +2,13 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:layout_marginTop="?android:actionBarSize">
<TabHost
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/title"
android:layout_alignParentTop="true"
android:id="@android:id/tabhost">
<RelativeLayout
-1
View File
@@ -3,7 +3,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+1 -13
View File
@@ -68,22 +68,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
ads:adSize="BANNER"
android:visibility="gone"
ads:adUnitId="@string/banner_ad_tab1">
</com.google.android.gms.ads.AdView>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_above="@+id/adView">
android:layout_alignParentTop="true">
<LinearLayout
android:layout_width="match_parent"
+1 -13
View File
@@ -97,22 +97,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
ads:adSize="BANNER"
android:visibility="gone"
ads:adUnitId="@string/banner_ad_tab2">
</com.google.android.gms.ads.AdView>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_above="@+id/adView">
android:layout_alignParentTop="true">
<LinearLayout
android:layout_width="match_parent"
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome android:drawable="@mipmap/ic_launcher_monochrome"/>
</adaptive-icon>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome android:drawable="@mipmap/ic_launcher_monochrome"/>
</adaptive-icon>
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#FFFFFF</color>
</resources>
+5 -13
View File
@@ -1,16 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Carb Up! BETA</string>
<string name="app_name">Carb Up!</string>
<string name="app_name_long">Carb Up! CTFU Helper</string>
<string name="app_name_short">Carb Up!</string>
<string name="action_settings">Settings</string>
<string name="title_activity_main">Main</string>
<string name="version_name">-=Version Banana=-</string>
<string name="version_number">-=Beta v0.10=-</string>
<string name="version_name">-= Version Mango =-</string>
<string name="version_number">-= v1.0.2 =-</string>
<string name="author">Hyperling</string>
<string name="title_activity_home">Home</string>
<!-- Tab1 Views -->
<string name="list_header">Create a New List:</string>
@@ -52,14 +54,4 @@
<string name="delete_dialog_ok">Delete</string>
<string name="delete_dialog_cancel">Cancel</string>
<!-- Ads -->
<string name="banner_ad_unit_id">ca-app-pub-9712416021907617/1895014881</string>
<string name="banner_ad_tab1">ca-app-pub-9712416021907617/1895014881</string>
<string name="banner_ad_tab2">ca-app-pub-9712416021907617/6325214486</string>
<string name="banner_ad_home">ca-app-pub-9712416021907617/4055112081</string>
<string name="interstitial_ad_splash">ca-app-pub-9712416021907617/9278680882</string>
<string name="title_activity_home">Home</string>
</resources>
+30
View File
@@ -14,4 +14,34 @@
<item name="windowNoTitle">true</item>
</style>
<style name="OriginalTheme"
parent="@android:style/Theme.Light.NoTitleBar">
</style>
<style name="CarbUp" parent="Theme.AppCompat.DayNight.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<!--
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:colorForeground">@color/colorPrimary</item>
-->
</style>
<style name="CarbUpTesting" parent="@android:style/Theme.DeviceDefault">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<!--
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:colorForeground">@color/colorPrimary</item>
-->
</style>
</resources>
View File
File renamed without changes.
File renamed without changes.
Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

+2 -2
View File
@@ -13,7 +13,7 @@ buildscript {
}
}
dependencies {
classpath 'com.android.tools.build:gradle:8.11.1'
classpath 'com.android.tools.build:gradle:9.4.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
@@ -27,6 +27,6 @@ allprojects {
}
}
task clean(type: Delete) {
tasks.register('clean', Delete) {
delete rootProject.buildDir
}
+16
View File
@@ -0,0 +1,16 @@
AuthorName: 'Chad Michael "Hyperling" Greenwood'
AuthorWebSite: 'https://hyperling.com/about/'
Donate: 'https://hyperling.com/donate/'
Liberapay: 'HyperVegan'
Bitcoin: 'bc1qsfe8dkvry3d34kztz449gkq67wq8fu2nkgfkh0'
Litecoin: 'ltc1qavmpu5d6ljntxsd6jj548m4yys83zwscl0dzkx'
IssueTracker: 'https://hyperling.com/contact/'
Categories:
- fdroid
- hyperling
- utilities
Name: Carb Up! Helper
AuthorEmail: 'me+carbup@hyperling.com'
Summary: 'Calculate cost-effective foods on a High Carb Low Fat lifestyle.'
SourceCode: 'https://git.hyperling.com/me/android-carb-up/'
WebSite: 'https://hyperling.com/apps/#ctfu'
+11
View File
@@ -16,3 +16,14 @@
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
android.builtInKotlin=false
android.defaults.buildfeatures.resvalues=true
android.dependency.useConstraints=true
android.enableAppCompileTimeRClass=false
android.newDsl=false
android.r8.optimizedResourceShrinking=false
android.r8.strictFullModeForKeepRules=false
android.sdk.defaultTargetSdkToCompileSdkIfUnset=false
android.uniquePackageNames=false
android.useAndroidX=false
android.usesSdkInManifest.disallowed=false
+13
View File
@@ -0,0 +1,13 @@
#This file is generated by updateDaemonJvm
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/491f83666ae7f4d6ebb28fee72ebb035/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/0d1a1acdc708062093673f65aa9aba4b/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/491f83666ae7f4d6ebb28fee72ebb035/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/0d1a1acdc708062093673f65aa9aba4b/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/7083b89563e7ce20943037b8cd2b8cc2/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/060bbb778a1f55ea705fdebd2ccfeab9/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/491f83666ae7f4d6ebb28fee72ebb035/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/0d1a1acdc708062093673f65aa9aba4b/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/d09679dc60fe5aa05ef7d03efdefac20/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/ed4e3bf2f5e7c5d9aabc4cbd8acd555e/redirect
toolchainVendor=JETBRAINS
toolchainVersion=21
+1 -1
View File
@@ -1,6 +1,6 @@
#Fri Jul 11 14:14:34 MST 2025
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.8.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
+3
View File
@@ -1 +1,4 @@
plugins {
id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0'
}
include ':app'