mirror of
https://github.com/nextcloud/android.git
synced 2024-11-23 13:45:35 +03:00
added possibility to enable/disable sync folder in the settings screen
This commit is contained in:
parent
d2d8352bac
commit
cc45b0f1e9
4 changed files with 59 additions and 47 deletions
|
@ -45,27 +45,13 @@
|
|||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/local_folder_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:baselineAligned="false"
|
||||
android:gravity="center_vertical"
|
||||
android:minHeight="?android:attr/listPreferredItemHeightSmall">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/local_folder_icon_frame"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="start|center_vertical"
|
||||
android:minWidth="58dip"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/local_folder_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="@dimen/standard_half_margin"
|
||||
android:src="@drawable/ic_cellphone"/>
|
||||
</LinearLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -95,17 +81,23 @@
|
|||
|
||||
</RelativeLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/local_folder_frame"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="end|center_vertical"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="@dimen/standard_padding">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/local_folder_status_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/ic_cloud_sync_off"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/settings_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="16dip"
|
||||
android:paddingTop="@dimen/standard_padding"
|
||||
android:text="@string/folder_sync_settings"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Body2"
|
||||
android:textColor="@color/color_accent"/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/remote_folder_container"
|
||||
|
@ -115,22 +107,6 @@
|
|||
android:gravity="center_vertical"
|
||||
android:minHeight="?android:attr/listPreferredItemHeightSmall">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/remote_folder_icon_frame"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="start|center_vertical"
|
||||
android:minWidth="58dip"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/remote_folder_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="@dimen/standard_half_margin"
|
||||
android:src="@drawable/ic_cloud_outline"/>
|
||||
</LinearLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
|
@ -354,9 +354,10 @@ public class FolderSyncActivity extends FileActivity implements FolderSyncAdapte
|
|||
@Override
|
||||
public void onSaveSyncedFolderPreference(SyncedFolderParcelable syncedFolder) {
|
||||
SyncedFolderDisplayItem item = syncFolderItems.get(syncedFolder.getSection());
|
||||
boolean dirty = !(item.isEnabled() == syncedFolder.getEnabled());
|
||||
item = updateSyncedFolderItem(item, syncedFolder.getLocalPath(), syncedFolder.getRemotePath(), syncedFolder
|
||||
.getWifiOnly(), syncedFolder.getChargingOnly(), syncedFolder.getSubfolderByDate(), syncedFolder
|
||||
.getUploadAction());
|
||||
.getUploadAction(), syncedFolder.getEnabled());
|
||||
|
||||
if (syncedFolder.getId() == UNPERSISTED_ID) {
|
||||
// newly set up folder sync config
|
||||
|
@ -366,6 +367,10 @@ public class FolderSyncActivity extends FileActivity implements FolderSyncAdapte
|
|||
mSyncedFolderProvider.updateSyncFolder(item);
|
||||
}
|
||||
mSyncedFolderPreferencesDialogFragment = null;
|
||||
|
||||
if(dirty) {
|
||||
mAdapter.setSyncFolderItem(syncedFolder.getSection(), item);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -383,6 +388,7 @@ public class FolderSyncActivity extends FileActivity implements FolderSyncAdapte
|
|||
* @param chargingOnly upload on charging only
|
||||
* @param subfolderByDate created sub folders
|
||||
* @param uploadAction upload action
|
||||
* @param enabled is sync enabled
|
||||
* @return the updated item
|
||||
*/
|
||||
private SyncedFolderDisplayItem updateSyncedFolderItem(SyncedFolderDisplayItem item,
|
||||
|
@ -391,13 +397,15 @@ public class FolderSyncActivity extends FileActivity implements FolderSyncAdapte
|
|||
Boolean wifiOnly,
|
||||
Boolean chargingOnly,
|
||||
Boolean subfolderByDate,
|
||||
Integer uploadAction) {
|
||||
Integer uploadAction,
|
||||
Boolean enabled) {
|
||||
item.setLocalPath(localPath);
|
||||
item.setRemotePath(remotePath);
|
||||
item.setWifiOnly(wifiOnly);
|
||||
item.setChargingOnly(chargingOnly);
|
||||
item.setSubfolderByDate(subfolderByDate);
|
||||
item.setUploadAction(uploadAction);
|
||||
item.setEnabled(enabled);
|
||||
return item;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -67,6 +67,11 @@ public class FolderSyncAdapter extends SectionedRecyclerViewAdapter<FolderSyncAd
|
|||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void setSyncFolderItem(int location, SyncedFolderDisplayItem syncFolderItem) {
|
||||
mSyncFolderItems.set(location, syncFolderItem);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSectionCount() {
|
||||
return mSyncFolderItems.size();
|
||||
|
|
|
@ -33,6 +33,7 @@ import android.view.View;
|
|||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.owncloud.android.R;
|
||||
|
@ -53,6 +54,8 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment {
|
|||
private CharSequence[] mUploadBehaviorItemStrings;
|
||||
|
||||
protected View mView = null;
|
||||
private boolean mEnabled;
|
||||
private ImageView mEnabledIcon;
|
||||
private CheckBox mUploadOnWifiCheckbox;
|
||||
private CheckBox mUploadOnChargingCheckbox;
|
||||
private CheckBox mUploadUseSubfoldersCheckbox;
|
||||
|
@ -105,9 +108,6 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment {
|
|||
|
||||
mView = inflater.inflate(R.layout.folder_sync_settings_layout, container, false);
|
||||
|
||||
((TextView) mView.findViewById(R.id.local_folder_summary)).setText(mSyncedFolder.getLocalPath());
|
||||
((TextView) mView.findViewById(R.id.remote_folder_summary)).setText(mSyncedFolder.getRemotePath());
|
||||
|
||||
setupDialogElements(mView);
|
||||
setupListeners(mView);
|
||||
|
||||
|
@ -121,6 +121,7 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment {
|
|||
*/
|
||||
private void setupDialogElements(View view) {
|
||||
// find/saves UI elements
|
||||
mEnabledIcon = (ImageView) view.findViewById(R.id.local_folder_status_icon);
|
||||
mLocalFolderSummary = (TextView) view.findViewById(R.id.local_folder_summary);
|
||||
mRemoteFolderSummary = (TextView) view.findViewById(R.id.remote_folder_summary);
|
||||
|
||||
|
@ -132,6 +133,7 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment {
|
|||
mUploadBehaviorSummary = (TextView) view.findViewById(R.id.setting_instant_behaviour_summary);
|
||||
|
||||
// Set values
|
||||
setEnabled(mSyncedFolder.getEnabled());
|
||||
mLocalFolderSummary.setText(mSyncedFolder.getLocalPath());
|
||||
mRemoteFolderSummary.setText(mSyncedFolder.getRemotePath());
|
||||
|
||||
|
@ -142,6 +144,20 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment {
|
|||
mUploadBehaviorSummary.setText(mUploadBehaviorItemStrings[mSyncedFolder.getUploadAction()]);
|
||||
}
|
||||
|
||||
/**
|
||||
* set correct icon/flag.
|
||||
*
|
||||
* @param enabled if enabled or disabled
|
||||
*/
|
||||
private void setEnabled(boolean enabled) {
|
||||
mSyncedFolder.setEnabled(enabled);
|
||||
if(enabled) {
|
||||
mEnabledIcon.setImageResource(R.drawable.ic_cloud_sync_on);
|
||||
} else {
|
||||
mEnabledIcon.setImageResource(R.drawable.ic_cloud_sync_off);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* set (new) remote path on activity result of the folder picker activity. The result gets originally propagated
|
||||
* to the underlying activity since the picker is an activity and the result can't get passed to the dialog
|
||||
|
@ -200,6 +216,13 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment {
|
|||
}
|
||||
});
|
||||
|
||||
view.findViewById(R.id.local_folder_container).setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
setEnabled(!mSyncedFolder.getEnabled());
|
||||
}
|
||||
});
|
||||
|
||||
view.findViewById(R.id.setting_instant_behaviour_container).setOnClickListener(
|
||||
new OnClickListener() {
|
||||
@Override
|
||||
|
|
Loading…
Reference in a new issue