It fucking compiles. Still a whole lot of stuff to be done

This commit is contained in:
LucasGGamerM
2022-12-30 14:12:10 -03:00
parent db88de206b
commit 16c0866f7f
16 changed files with 106 additions and 18 deletions

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:pathData="M22 6.5c0 3.038-2.462 5.5-5.5 5.5S11 9.538 11 6.5 13.462 1 16.5 1 22 3.462 22 6.5zm-7.146-2.354c-0.196-0.195-0.512-0.195-0.708 0-0.195 0.196-0.195 0.512 0 0.708L15.793 6.5l-1.647 1.646c-0.195 0.196-0.195 0.512 0 0.707 0.196 0.196 0.512 0.196 0.708 0L16.5 7.208l1.646 1.647c0.196 0.195 0.512 0.195 0.708 0 0.195-0.196 0.195-0.512 0-0.707L17.207 6.5l1.647-1.646c0.195-0.196 0.195-0.512 0-0.708-0.196-0.195-0.512-0.195-0.708 0L16.5 5.793l-1.646-1.647zM19.5 14v-1.732c0.551-0.287 1.056-0.651 1.5-1.078v7.56c0 1.733-1.357 3.15-3.066 3.245L17.75 22H6.25c-1.733 0-3.15-1.357-3.245-3.066L3 18.75V7.25C3 5.517 4.356 4.1 6.066 4.005L6.25 4h4.248c-0.198 0.474-0.34 0.977-0.422 1.5H6.25c-0.918 0-1.671 0.707-1.744 1.606L4.5 7.25V14H9c0.38 0 0.694 0.282 0.743 0.648L9.75 14.75C9.75 15.993 10.757 17 12 17c1.19 0 2.166-0.925 2.245-2.096l0.005-0.154c0-0.38 0.282-0.694 0.648-0.743L15 14h4.5zm-15 1.5v3.25c0 0.918 0.707 1.671 1.606 1.744L6.25 20.5h11.5c0.918 0 1.671-0.707 1.744-1.607L19.5 18.75V15.5h-3.825c-0.335 1.648-1.75 2.904-3.475 2.995L12 18.5c-1.747 0-3.215-1.195-3.632-2.812L8.325 15.5H4.5z" android:fillColor="@color/fluent_default_icon_tint"/>
</vector>

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="28dp" android:height="28dp" android:viewportWidth="28" android:viewportHeight="28">
<path android:pathData="M26 7.5c0 3.59-2.91 6.5-6.5 6.5S13 11.09 13 7.5 15.91 1 19.5 1 26 3.91 26 7.5zm-9.146-3.354c-0.196-0.195-0.512-0.195-0.708 0-0.195 0.196-0.195 0.512 0 0.708L18.793 7.5l-2.647 2.646c-0.195 0.196-0.195 0.512 0 0.708 0.196 0.195 0.512 0.195 0.708 0L19.5 8.207l2.646 2.647c0.196 0.195 0.512 0.195 0.708 0 0.195-0.196 0.195-0.512 0-0.708L20.207 7.5l2.647-2.646c0.195-0.196 0.195-0.512 0-0.708-0.196-0.195-0.512-0.195-0.708 0L19.5 6.793l-2.646-2.647zM25 22.75V12.6c-0.443 0.476-0.947 0.896-1.5 1.245V16h-6l-0.102 0.007c-0.366 0.05-0.648 0.363-0.648 0.743 0 1.519-1.231 2.75-2.75 2.75s-2.75-1.231-2.75-2.75l-0.007-0.102C11.193 16.282 10.88 16 10.5 16h-6V7.25c0-0.966 0.784-1.75 1.75-1.75h6.02c0.145-0.525 0.345-1.028 0.595-1.5H6.25C4.455 4 3 5.455 3 7.25v15.5C3 24.545 4.455 26 6.25 26h15.5c1.795 0 3.25-1.455 3.25-3.25zm-20.5 0V17.5h5.316l0.041 0.204C10.291 19.592 11.982 21 14 21l0.215-0.005c1.994-0.1 3.627-1.574 3.969-3.495H23.5v5.25c0 0.966-0.784 1.75-1.75 1.75H6.25c-0.966 0-1.75-0.784-1.75-1.75z" android:fillColor="@color/fluent_default_icon_tint"/>
</vector>

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:pathData="M6.25 4.5C5.283 4.5 4.5 5.284 4.5 6.25v11.5c0 0.966 0.783 1.75 1.75 1.75h11.5c0.966 0 1.75-0.784 1.75-1.75v-4c0-0.414 0.335-0.75 0.75-0.75 0.414 0 0.75 0.336 0.75 0.75v4c0 1.795-1.456 3.25-3.25 3.25H6.25C4.455 21 3 19.545 3 17.75V6.25C3 4.455 4.455 3 6.25 3h4C10.664 3 11 3.336 11 3.75S10.664 4.5 10.25 4.5h-4zM13 3.75C13 3.336 13.335 3 13.75 3h6.5C20.664 3 21 3.336 21 3.75v6.5c0 0.414-0.336 0.75-0.75 0.75s-0.75-0.336-0.75-0.75V5.56l-5.22 5.22c-0.293 0.293-0.768 0.293-1.06 0-0.293-0.293-0.293-0.768 0-1.06l5.22-5.22h-4.69C13.335 4.5 13 4.164 13 3.75z" android:fillColor="@color/fluent_default_icon_tint"/>
</vector>

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:pathData="M8.502 11.5c0.554 0 1.002 0.448 1.002 1.002 0 0.553-0.448 1.002-1.002 1.002-0.553 0-1.002-0.449-1.002-1.002 0-0.554 0.449-1.003 1.002-1.003zM12 4.353v6.651h7.442L17.72 9.28c-0.267-0.266-0.29-0.683-0.073-0.977L17.72 8.22c0.266-0.266 0.683-0.29 0.976-0.072L18.78 8.22l2.997 2.998c0.266 0.266 0.29 0.682 0.073 0.976l-0.073 0.084-2.996 3.003c-0.293 0.294-0.767 0.294-1.06 0.002-0.267-0.266-0.292-0.683-0.075-0.977l0.073-0.084 1.713-1.717h-7.431L12 19.25c0 0.466-0.421 0.82-0.88 0.738l-8.5-1.501C2.26 18.424 2 18.112 2 17.748V5.75c0-0.368 0.266-0.681 0.628-0.74l8.5-1.396C11.585 3.539 12 3.89 12 4.354zm-1.5 0.883l-7 1.15v10.732l7 1.236V5.237zM13 18.5h0.765l0.102-0.007c0.366-0.05 0.649-0.364 0.648-0.744l-0.007-4.25H13v5zm0.002-8.502L13 8.726V5h0.745c0.38 0 0.693 0.281 0.743 0.647l0.007 0.101L14.502 10h-1.5z" android:fillColor="@color/fluent_default_icon_tint"/>
</vector>

View File

@@ -30,6 +30,7 @@ public class GlobalUserPreferences{
public static boolean voteButtonForSingleChoice; public static boolean voteButtonForSingleChoice;
public static boolean showDifferentiatedPushNoticationIcons; public static boolean showDifferentiatedPushNoticationIcons;
public static boolean relocatePublishButton; public static boolean relocatePublishButton;
public static boolean enableDeleteNotifications;
public static ThemePreference theme; public static ThemePreference theme;
public static ColorPreference color; public static ColorPreference color;
@@ -62,6 +63,7 @@ public class GlobalUserPreferences{
disableDividers=prefs.getBoolean("disableDividers", true); disableDividers=prefs.getBoolean("disableDividers", true);
relocatePublishButton=prefs.getBoolean("relocatePublishButton", true); relocatePublishButton=prefs.getBoolean("relocatePublishButton", true);
voteButtonForSingleChoice=prefs.getBoolean("voteButtonForSingleChoice", true); voteButtonForSingleChoice=prefs.getBoolean("voteButtonForSingleChoice", true);
enableDeleteNotifications=prefs.getBoolean("enableDeleteNotifications", true);
theme=ThemePreference.values()[prefs.getInt("theme", 0)]; theme=ThemePreference.values()[prefs.getInt("theme", 0)];
recentLanguages=fromJson(prefs.getString("recentLanguages", "{}"), recentLanguagesType, new HashMap<>()); recentLanguages=fromJson(prefs.getString("recentLanguages", "{}"), recentLanguagesType, new HashMap<>());
@@ -93,6 +95,7 @@ public class GlobalUserPreferences{
.putBoolean("disableDividers", disableDividers) .putBoolean("disableDividers", disableDividers)
.putBoolean("relocatePublishButton", relocatePublishButton) .putBoolean("relocatePublishButton", relocatePublishButton)
.putBoolean("showDifferentiatedPushNoticationIcons", showDifferentiatedPushNoticationIcons) .putBoolean("showDifferentiatedPushNoticationIcons", showDifferentiatedPushNoticationIcons)
.putBoolean("enableDeleteNotifications", enableDeleteNotifications)
.putInt("theme", theme.ordinal()) .putInt("theme", theme.ordinal())
.putString("color", color.name()) .putString("color", color.name())
.putString("recentLanguages", gson.toJson(recentLanguages)) .putString("recentLanguages", gson.toJson(recentLanguages))

View File

@@ -19,12 +19,18 @@ import me.grishka.appkit.api.ErrorResponse;
public class StatusInteractionController{ public class StatusInteractionController{
private final String accountID; private final String accountID;
private final boolean updateCounters;
private final HashMap<String, SetStatusFavorited> runningFavoriteRequests=new HashMap<>(); private final HashMap<String, SetStatusFavorited> runningFavoriteRequests=new HashMap<>();
private final HashMap<String, SetStatusReblogged> runningReblogRequests=new HashMap<>(); private final HashMap<String, SetStatusReblogged> runningReblogRequests=new HashMap<>();
private final HashMap<String, SetStatusBookmarked> runningBookmarkRequests=new HashMap<>(); private final HashMap<String, SetStatusBookmarked> runningBookmarkRequests=new HashMap<>();
public StatusInteractionController(String accountID){ public StatusInteractionController(String accountID, boolean updateCounters) {
this.accountID=accountID; this.accountID=accountID;
this.updateCounters=updateCounters;
}
public StatusInteractionController(String accountID){
this(accountID, true);
} }
public void setFavorited(Status status, boolean favorited, Consumer<Status> cb){ public void setFavorited(Status status, boolean favorited, Consumer<Status> cb){
@@ -42,7 +48,7 @@ public class StatusInteractionController{
runningFavoriteRequests.remove(status.id); runningFavoriteRequests.remove(status.id);
result.favouritesCount = Math.max(0, status.favouritesCount) + (favorited ? 1 : -1); result.favouritesCount = Math.max(0, status.favouritesCount) + (favorited ? 1 : -1);
cb.accept(result); cb.accept(result);
E.post(new StatusCountersUpdatedEvent(result)); if (updateCounters) E.post(new StatusCountersUpdatedEvent(result));
} }
@Override @Override
@@ -51,13 +57,13 @@ public class StatusInteractionController{
error.showToast(MastodonApp.context); error.showToast(MastodonApp.context);
status.favourited=!favorited; status.favourited=!favorited;
cb.accept(status); cb.accept(status);
E.post(new StatusCountersUpdatedEvent(status)); if (updateCounters) E.post(new StatusCountersUpdatedEvent(status));
} }
}) })
.exec(accountID); .exec(accountID);
runningFavoriteRequests.put(status.id, req); runningFavoriteRequests.put(status.id, req);
status.favourited=favorited; status.favourited=favorited;
E.post(new StatusCountersUpdatedEvent(status)); if (updateCounters) E.post(new StatusCountersUpdatedEvent(status));
} }
public void setReblogged(Status status, boolean reblogged, StatusPrivacy visibility, Consumer<Status> cb){ public void setReblogged(Status status, boolean reblogged, StatusPrivacy visibility, Consumer<Status> cb){
@@ -76,7 +82,7 @@ public class StatusInteractionController{
runningReblogRequests.remove(status.id); runningReblogRequests.remove(status.id);
result.reblogsCount = Math.max(0, status.reblogsCount) + (reblogged ? 1 : -1); result.reblogsCount = Math.max(0, status.reblogsCount) + (reblogged ? 1 : -1);
cb.accept(result); cb.accept(result);
E.post(new StatusCountersUpdatedEvent(result)); if (updateCounters) E.post(new StatusCountersUpdatedEvent(result));
} }
@Override @Override
@@ -85,13 +91,13 @@ public class StatusInteractionController{
error.showToast(MastodonApp.context); error.showToast(MastodonApp.context);
status.reblogged=!reblogged; status.reblogged=!reblogged;
cb.accept(status); cb.accept(status);
E.post(new StatusCountersUpdatedEvent(status)); if (updateCounters) E.post(new StatusCountersUpdatedEvent(status));
} }
}) })
.exec(accountID); .exec(accountID);
runningReblogRequests.put(status.id, req); runningReblogRequests.put(status.id, req);
status.reblogged=reblogged; status.reblogged=reblogged;
E.post(new StatusCountersUpdatedEvent(status)); if (updateCounters) E.post(new StatusCountersUpdatedEvent(status));
} }
public void setBookmarked(Status status, boolean bookmarked){ public void setBookmarked(Status status, boolean bookmarked){
@@ -112,7 +118,7 @@ public class StatusInteractionController{
public void onSuccess(Status result){ public void onSuccess(Status result){
runningBookmarkRequests.remove(status.id); runningBookmarkRequests.remove(status.id);
cb.accept(result); cb.accept(result);
E.post(new StatusCountersUpdatedEvent(result)); if (updateCounters) E.post(new StatusCountersUpdatedEvent(result));
} }
@Override @Override
@@ -121,12 +127,12 @@ public class StatusInteractionController{
error.showToast(MastodonApp.context); error.showToast(MastodonApp.context);
status.bookmarked=!bookmarked; status.bookmarked=!bookmarked;
cb.accept(status); cb.accept(status);
E.post(new StatusCountersUpdatedEvent(status)); if (updateCounters) E.post(new StatusCountersUpdatedEvent(status));
} }
}) })
.exec(accountID); .exec(accountID);
runningBookmarkRequests.put(status.id, req); runningBookmarkRequests.put(status.id, req);
status.bookmarked=bookmarked; status.bookmarked=bookmarked;
E.post(new StatusCountersUpdatedEvent(status)); if (updateCounters) E.post(new StatusCountersUpdatedEvent(status));
} }
} }

View File

@@ -0,0 +1,17 @@
package org.joinmastodon.android.api.requests.notifications;
import com.google.gson.reflect.TypeToken;
import org.joinmastodon.android.api.ApiUtils;
import org.joinmastodon.android.api.MastodonAPIRequest;
import org.joinmastodon.android.model.Notification;
import java.util.EnumSet;
import java.util.List;
public class DismissNotification extends MastodonAPIRequest<Object>{
public DismissNotification(String id){
super(HttpMethod.POST, "/notifications/" + (id != null ? id + "/dismiss" : "clear"), Object.class);
setRequestBody(new Object());
}
}

View File

@@ -32,7 +32,7 @@ public class AccountSession{
public Preferences preferences; public Preferences preferences;
public AccountActivationInfo activationInfo; public AccountActivationInfo activationInfo;
private transient MastodonAPIController apiController; private transient MastodonAPIController apiController;
private transient StatusInteractionController statusInteractionController; private transient StatusInteractionController statusInteractionController, remoteStatusInteractionController;
private transient CacheController cacheController; private transient CacheController cacheController;
private transient PushSubscriptionManager pushSubscriptionManager; private transient PushSubscriptionManager pushSubscriptionManager;
@@ -52,6 +52,10 @@ public class AccountSession{
return domain+"_"+self.id; return domain+"_"+self.id;
} }
public String getFullUsername() {
return "@"+self.username+"@"+domain;
}
public MastodonAPIController getApiController(){ public MastodonAPIController getApiController(){
if(apiController==null) if(apiController==null)
apiController=new MastodonAPIController(this); apiController=new MastodonAPIController(this);
@@ -64,6 +68,12 @@ public class AccountSession{
return statusInteractionController; return statusInteractionController;
} }
public StatusInteractionController getRemoteStatusInteractionController(){
if(remoteStatusInteractionController==null)
remoteStatusInteractionController=new StatusInteractionController(getID(), false);
return remoteStatusInteractionController;
}
public CacheController getCacheController(){ public CacheController getCacheController(){
if(cacheController==null) if(cacheController==null)
cacheController=new CacheController(getID()); cacheController=new CacheController(getID());

View File

@@ -292,11 +292,11 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList
followingBtn.setOnClickListener(this::onFollowersOrFollowingClick); followingBtn.setOnClickListener(this::onFollowersOrFollowingClick);
username.setOnLongClickListener(v->{ username.setOnLongClickListener(v->{
String username=account.acct; String usernameString=account.acct;
if(!username.contains("@")){ if(!usernameString.contains("@")){
username+="@"+AccountSessionManager.getInstance().getAccount(accountID).domain; usernameString+="@"+AccountSessionManager.getInstance().getAccount(accountID).domain;
} }
UiUtils.copyText(getActivity(), '@'+username); UiUtils.copyText(username, '@'+usernameString);
return true; return true;
}); });

View File

@@ -24,9 +24,10 @@ public class ClickableLinksDelegate {
private TextView view; private TextView view;
private final Runnable longClickRunnable = () -> { private final Runnable longClickRunnable = () -> {
if (selectedSpan != null) selectedSpan.onLongClick(view.getContext()); if (selectedSpan != null) selectedSpan.onLongClick(view);
}; };
public ClickableLinksDelegate(TextView view) { public ClickableLinksDelegate(TextView view) {
this.view=view; this.view=view;
hlPaint=new Paint(); hlPaint=new Paint();

View File

@@ -3,6 +3,7 @@ package org.joinmastodon.android.ui.text;
import android.content.Context; import android.content.Context;
import android.text.TextPaint; import android.text.TextPaint;
import android.text.style.CharacterStyle; import android.text.style.CharacterStyle;
import android.view.View;
import org.joinmastodon.android.ui.utils.UiUtils; import org.joinmastodon.android.ui.utils.UiUtils;
@@ -40,10 +41,11 @@ public class LinkSpan extends CharacterStyle {
} }
} }
public void onLongClick(Context context) { public void onLongClick(View view) {
UiUtils.copyText(context, getType() == Type.URL ? link : text); UiUtils.copyText(view, getType() == Type.URL ? link : text);
} }
public String getLink(){ public String getLink(){
return link; return link;
} }

View File

@@ -55,6 +55,7 @@ import org.joinmastodon.android.api.requests.accounts.SetAccountMuted;
import org.joinmastodon.android.api.requests.accounts.SetDomainBlocked; import org.joinmastodon.android.api.requests.accounts.SetDomainBlocked;
import org.joinmastodon.android.api.requests.accounts.AuthorizeFollowRequest; import org.joinmastodon.android.api.requests.accounts.AuthorizeFollowRequest;
import org.joinmastodon.android.api.requests.accounts.RejectFollowRequest; import org.joinmastodon.android.api.requests.accounts.RejectFollowRequest;
//import org.joinmastodon.android.api.requests.notification.DismissNotification;
import org.joinmastodon.android.api.requests.notifications.DismissNotification; import org.joinmastodon.android.api.requests.notifications.DismissNotification;
import org.joinmastodon.android.api.requests.search.GetSearchResults; import org.joinmastodon.android.api.requests.search.GetSearchResults;
import org.joinmastodon.android.api.requests.statuses.DeleteStatus; import org.joinmastodon.android.api.requests.statuses.DeleteStatus;

View File

@@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
<path android:pathData="M15.75 13.997c0.981 0 1.815 0.628 2.123 1.503h-2.056l-0.066-0.003H4.249c-0.414 0-0.749 0.335-0.749 0.75v0.577c0 0.535 0.191 1.054 0.539 1.46 1.253 1.469 3.22 2.214 5.957 2.214h0.168c0.086 0.183 0.203 0.352 0.35 0.498l0.934 0.933c-0.464 0.046-0.948 0.07-1.452 0.07-3.145 0-5.531-0.906-7.098-2.74C2.318 18.58 2 17.717 2 16.824v-0.578c0-1.242 1.007-2.249 2.249-2.249H15.75zM9.997 2.002c2.762 0 5 2.239 5 5s-2.238 5-5 5c-2.761 0-5-2.239-5-5s2.239-5 5-5zm0 1.5c-1.933 0-3.5 1.567-3.5 3.5s1.567 3.5 3.5 3.5c1.934 0 3.5-1.567 3.5-3.5s-1.566-3.5-3.5-3.5zm4.784 14.282c0.293-0.293 0.293-0.768 0-1.061-0.293-0.293-0.768-0.293-1.06 0l-2.5 2.501c-0.141 0.14-0.22 0.332-0.22 0.53 0 0.2 0.079 0.39 0.22 0.53l2.5 2.5c0.292 0.293 0.767 0.293 1.06 0 0.293-0.293 0.293-0.768 0-1.061l-1.22-1.22h6.88l-1.22 1.22c-0.293 0.293-0.293 0.768 0 1.06 0.292 0.293 0.767 0.294 1.06 0l2.5-2.498c0.14-0.14 0.22-0.33 0.22-0.53 0-0.199-0.08-0.39-0.22-0.53l-2.5-2.502c-0.293-0.293-0.767-0.293-1.06 0-0.293 0.293-0.293 0.768 0 1.06l1.218 1.22h-6.877l1.22-1.22z" android:fillColor="@color/fluent_default_icon_tint"/>
</vector>

View File

@@ -78,6 +78,20 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_marginVertical="8dp" android:layout_marginVertical="8dp"
android:background="?colorPollVoted" /> android:background="?colorPollVoted" />
<TextView
android:id="@+id/reblog_as"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="36dp"
android:paddingVertical="12dp"
android:paddingHorizontal="24dp"
android:gravity="center_vertical"
android:textSize="16sp"
android:textColor="?android:textColorPrimary"
android:drawablePadding="16dp"
android:background="?android:selectableItemBackground"
android:text="@string/sk_reblog_as"
android:drawableStart="@drawable/ic_fluent_person_swap_24_regular" />
<TextView <TextView
android:id="@+id/quote" android:id="@+id/quote"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@@ -6,4 +6,10 @@
android:showAsAction="always" android:showAsAction="always"
android:visible="false" android:visible="false"
android:title="@string/sk_follow_requests" /> android:title="@string/sk_follow_requests" />
<item
android:id="@+id/clear_notifications"
android:icon="@drawable/ic_fluent_mail_inbox_dismiss_24_regular"
android:showAsAction="collapseActionView"
android:visible="false"
android:title="@string/sk_clear_all_notifications" />
</menu> </menu>

View File

@@ -94,4 +94,17 @@
<string name="sk_hashtags_you_follow">Hashtags you follow</string> <string name="sk_hashtags_you_follow">Hashtags you follow</string>
<string name="sk_copy_link_to_post">Copy link to post</string> <string name="sk_copy_link_to_post">Copy link to post</string>
<string name="sk_open_in_account">Open in other account</string> <string name="sk_open_in_account">Open in other account</string>
<string name="sk_open_with_account">Open with other account</string>
<string name="sk_bookmark_as">Bookmark in other account</string>
<string name="sk_bookmarked_as">Bookmarked as %s</string>
<string name="sk_already_bookmarked">Already bookmarked</string>
<string name="sk_favorite_as">Favorite from other account</string>
<string name="sk_favorited_as">Favorited as %s</string>
<string name="sk_already_favorited">Already favorited</string>
<string name="sk_reblog_as">Reblog from other account</string>
<string name="sk_reblogged_as">Reblogged as %s</string>
<string name="sk_already_reblogged">Already reblogged</string>
<string name="sk_reply_as">Reply with other account</string>
<string name="sk_resource_not_found">Resource could not be found</string>
<string name="sk_loading_resource_on_instance_title">Looking it up on %s</string>
</resources> </resources>